1 //-----------------------------------------------------------------------
2 // File and Version Information:
3 // $Id: EvtMultiChannelParser.hh,v 1.7 2009/02/19 03:22:30 ryd Exp $
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.
10 // Copyright Information:
11 // Copyright (C) 1998 Caltech, UCSB
14 // Alexei Dvoretskii, Caltech, 2001-2002.
15 //-----------------------------------------------------------------------
17 // Parse decay file tokens from a file or a vector
19 #ifndef EVT_MULTI_CHANNEL_PARSER
20 #define EVT_MULTI_CHANNEL_PARSER
25 #include "EvtGenBase/EvtComplex.hh"
29 enum {POLAR_RAD,POLAR_DEG,CARTESIAN};
31 class EvtMultiChannelParser {
35 EvtMultiChannelParser() : _pdfMax(-1.), _nScan(0), _dm(0.) {}
36 ~EvtMultiChannelParser() {}
38 static EvtDecayMode getDecayMode(const char* file);
40 void parse(const char* file, const char* model);
41 void parse(const std::vector<std::string>& v);
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);
48 inline double pdfMax() const { return _pdfMax; }
49 inline int nScan() const { return _nScan; }
50 inline double dm() const { return _dm; }
51 inline double mixPhase() const { return _mixPhase; }
52 inline double mixAmpli() const { return _mixAmpli; }
54 inline std::vector<std::string> amp(int i) const { return _amp[i]; }
55 inline std::vector<std::string> ampConj(int i) const { return _ampConj[i]; }
56 inline EvtComplex ampCoef(int i) const { return _ampCoef[i]; }
57 inline EvtComplex ampConjCoef(int i) const { return _ampConjCoef[i]; }
59 inline int coefFormat(int i) const { return _coefFormat[i]; }
60 inline int coefConjFormat(int i) const { return _coefConjFormat[i]; }
62 inline int getNAmp() const { return _amp.size(); }
63 inline int getNAmpConj() const { return _ampConj.size(); }
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;