Line data Source code
1 : //-----------------------------------------------------------------------
2 : // File and Version Information:
3 : // $Id: EvtMultiChannelParser.hh,v 1.2 2009-03-16 16:41:09 robbep Exp $
4 : //
5 : // Environment:
6 : // This software is part of the EvtGen package developed jointly
7 : // for the BaBar and CLEO collaborations. If you use all or part
8 : // of it, please give an appropriate acknowledgement.
9 : //
10 : // Copyright Information:
11 : // Copyright (C) 1998 Caltech, UCSB
12 : //
13 : // Module creator:
14 : // Alexei Dvoretskii, Caltech, 2001-2002.
15 : //-----------------------------------------------------------------------
16 :
17 : // Parse decay file tokens from a file or a vector
18 :
19 : #ifndef EVT_MULTI_CHANNEL_PARSER
20 : #define EVT_MULTI_CHANNEL_PARSER
21 :
22 :
23 : #include <vector>
24 : #include <string>
25 : #include "EvtGenBase/EvtComplex.hh"
26 :
27 : class EvtDecayMode;
28 :
29 : enum {POLAR_RAD,POLAR_DEG,CARTESIAN};
30 :
31 : class EvtMultiChannelParser {
32 :
33 : public:
34 :
35 0 : EvtMultiChannelParser() : _pdfMax(-1.), _nScan(0), _dm(0.) {}
36 0 : ~EvtMultiChannelParser() {}
37 :
38 : static EvtDecayMode getDecayMode(const char* file);
39 :
40 : void parse(const char* file, const char* model);
41 : void parse(const std::vector<std::string>& v);
42 :
43 : static void parseComplexCoef(size_t& i, const std::vector<std::string>& v,
44 : EvtComplex& c, int& format);
45 : static double parseRealCoef(int& i, const std::vector<std::string>& v);
46 : static bool isKeyword(const std::string& s);
47 :
48 0 : inline double pdfMax() const { return _pdfMax; }
49 0 : inline int nScan() const { return _nScan; }
50 0 : inline double dm() const { return _dm; }
51 0 : inline double mixPhase() const { return _mixPhase; }
52 0 : inline double mixAmpli() const { return _mixAmpli; }
53 :
54 0 : inline std::vector<std::string> amp(int i) const { return _amp[i]; }
55 0 : inline std::vector<std::string> ampConj(int i) const { return _ampConj[i]; }
56 0 : inline EvtComplex ampCoef(int i) const { return _ampCoef[i]; }
57 0 : inline EvtComplex ampConjCoef(int i) const { return _ampConjCoef[i]; }
58 :
59 : inline int coefFormat(int i) const { return _coefFormat[i]; }
60 : inline int coefConjFormat(int i) const { return _coefConjFormat[i]; }
61 :
62 0 : inline int getNAmp() const { return _amp.size(); }
63 0 : inline int getNAmpConj() const { return _ampConj.size(); }
64 :
65 : private:
66 :
67 : double _pdfMax;
68 : int _nScan;
69 : double _dm;
70 : double _mixPhase;
71 : double _mixAmpli;
72 :
73 : std::vector<std::vector<std::string> > _amp;
74 : std::vector<std::vector<std::string> > _ampConj;
75 : std::vector<EvtComplex> _ampCoef;
76 : std::vector<int> _coefFormat;
77 : std::vector<EvtComplex> _ampConjCoef;
78 : std::vector<int> _coefConjFormat;
79 : };
80 :
81 : #endif
82 :
83 :
84 :
85 :
86 :
|