StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
EvtMultiChannelParser.hh
1 //-----------------------------------------------------------------------
2 // File and Version Information:
3 // $Id: EvtMultiChannelParser.hh,v 1.1 2016/09/23 18:37:31 jwebb 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 
32 
33 public:
34 
35  EvtMultiChannelParser() : _pdfMax(-1.), _nScan(0), _dm(0.) {}
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  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; }
53 
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]; }
58 
59  inline int coefFormat(int i) const { return _coefFormat[i]; }
60  inline int coefConjFormat(int i) const { return _coefConjFormat[i]; }
61 
62  inline int getNAmp() const { return _amp.size(); }
63  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