]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenBase/EvtMultiChannelParser.hh
AliDecayer realisation for the EvtGen code and EvtGen itself.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / EvtMultiChannelParser.hh
1 //-----------------------------------------------------------------------
2 // File and Version Information: 
3 //      $Id: EvtMultiChannelParser.hh,v 1.7 2009/02/19 03:22:30 ryd 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   EvtMultiChannelParser() : _pdfMax(-1.), _nScan(0), _dm(0.) {}
36   ~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   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