]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenBase/EvtMTree.hh
New plots for trending injector efficiencies (Melinda)
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / 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