]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/EvtGenBase/EvtMTree.hh
New plots for trending injector efficiencies (Melinda)
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / EvtMTree.hh
CommitLineData
da0e9ce3 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>
14using std::vector;
15
16#include <string>
17using std::string;
18
19typedef string::const_iterator ptype;
20
21class EvtParticle;
22
23class 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