StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
EvtMTree.hh
1 #ifndef __EVTMTREE_HH__
2 #define __EVTMTREE_HH__
3 
4 #include "EvtGenBase/EvtPDL.hh"
5 #include "EvtGenBase/EvtSpinAmp.hh"
6 #include "EvtGenBase/EvtComplex.hh"
7 #include "EvtGenBase/EvtVector4R.hh"
8 
9 #include "EvtGenBase/EvtMNode.hh"
10 #include "EvtGenBase/EvtMParticle.hh"
11 #include "EvtGenBase/EvtMRes.hh"
12 
13 #include <vector>
14 using std::vector;
15 
16 #include <string>
17 using std::string;
18 
19 typedef string::const_iterator ptype;
20 
21 class EvtParticle;
22 
23 class EvtMTree {
24 
25  public:
26 
27  EvtMTree( const EvtId * , unsigned int );
28  ~EvtMTree( );
29 
30  // return the invariant amplitude of the entire tree
31  EvtSpinAmp amplitude( EvtParticle * ) const;
32 
33  // add a decay tree to the list of trees that we posess
34  void addtree( const string& );
35 
36  private:
37 
38  vector< EvtMNode * > _root;
39  vector<string> _lbltbl;
40  double _norm;
41 
42  bool parsecheck( char , const string& );
43  void parseerror( bool, ptype&, ptype&, ptype& );
44 
45  string parseId( ptype&, ptype&, ptype& );
46  string parseKey( ptype&, ptype&, ptype& );
47  vector<string> parseArg( ptype&, ptype&, ptype& );
48  vector<EvtComplex> parseAmps( ptype&, ptype&, ptype& );
49  vector<EvtMNode *> duplicate( const vector<EvtMNode *>& ) const;
50  vector<vector<EvtMNode * > > unionChildren( const string&,
51  vector<vector<EvtMNode * > >& );
52  vector<vector<EvtMNode * > > parseChildren( ptype&, ptype&, ptype& );
53  vector<EvtMNode *> parsenode( const string& , bool );
54  bool validTree( const EvtMNode * ) const;
55 
56  vector<EvtMNode *> makeparticles( const string& );
57  EvtMRes * makeresonance( const EvtId&, const string &, const
58  vector<string>&, const string& , const vector<EvtComplex>& ,
59  const vector<EvtMNode * >& );
60 
61  EvtSpinAmp getrotation( EvtParticle * ) const;
62 };
63 
64 #endif
Definition: EvtId.hh:27