1 #ifndef __EVTMTREE_HH__
2 #define __EVTMTREE_HH__
4 #include "EvtGenBase/EvtPDL.hh"
5 #include "EvtGenBase/EvtSpinAmp.hh"
6 #include "EvtGenBase/EvtComplex.hh"
7 #include "EvtGenBase/EvtVector4R.hh"
9 #include "EvtGenBase/EvtMNode.hh"
10 #include "EvtGenBase/EvtMParticle.hh"
11 #include "EvtGenBase/EvtMRes.hh"
19 typedef string::const_iterator ptype;
27 EvtMTree( const EvtId * , unsigned int );
30 // return the invariant amplitude of the entire tree
31 EvtSpinAmp amplitude( EvtParticle * ) const;
33 // add a decay tree to the list of trees that we posess
34 void addtree( const string& );
38 vector< EvtMNode * > _root;
39 vector<string> _lbltbl;
42 bool parsecheck( char , const string& );
43 void parseerror( bool, ptype&, ptype&, ptype& );
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;
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 * >& );
61 EvtSpinAmp getrotation( EvtParticle * ) const;