Line data Source code
1 : #ifndef __EVTMNODE_HH__
2 : #define __EVTMNODE_HH__
3 :
4 : #include "EvtGenBase/EvtVector4R.hh"
5 : #include "EvtGenBase/EvtComplex.hh"
6 : #include "EvtGenBase/EvtPDL.hh"
7 :
8 : #include "EvtGenBase/EvtSymTable.hh"
9 : #include "EvtGenBase/EvtSpinAmp.hh"
10 :
11 : #include <vector>
12 : using std::vector;
13 :
14 : #include <string>
15 : using std::string;
16 :
17 : class EvtMNode {
18 :
19 : public:
20 :
21 0 : EvtMNode() {}
22 0 : virtual ~EvtMNode() {};
23 :
24 : // calculate the amplitude associated event this->children return a
25 : // vector of the form A_{\lambda this} and sum over allowed angular
26 : // momenta of the children
27 : virtual EvtSpinAmp amplitude( const vector<EvtVector4R>
28 : &product ) const = 0;
29 :
30 : // get the 4 vector associated with this node
31 : EvtVector4R get4vector( const vector<EvtVector4R> &product ) const;
32 :
33 : // get twice the spin of the particle
34 : int getspin() const { return _twospin; }
35 0 : EvtSpinType::spintype getspintype() const { return EvtPDL::getSpinType( _id ); }
36 :
37 : // get the id of this node
38 0 : EvtId getid() const { return _id; }
39 :
40 : // return which particles this is a combination of
41 0 : const vector<int> & getresonance() const { return _resonance; }
42 :
43 0 : void setparent( EvtMNode * parent ) { _parent = parent; }
44 0 : EvtMNode * getparent() const { return _parent; }
45 :
46 : // get the number of children that this node has
47 : virtual int getnchild() const = 0;
48 :
49 : // return the value of the resonance shape
50 : virtual EvtComplex line( const vector<EvtVector4R>& product ) const=0;
51 :
52 : // return a pointer node
53 : virtual EvtMNode * duplicate() const=0;
54 : protected:
55 :
56 : // store the EvtId of the particle (just in case we need it to access
57 : // further informatoin about it)
58 : EvtId _id;
59 :
60 : // store TWICE the spin of this resonance (this is to deal with spin 1/2
61 : int _twospin;
62 :
63 : // store the particles that form this resonance, this should match up
64 : // with the child nodes from below, and is calculated internally
65 : vector<int> _resonance;
66 :
67 : // store the parent node of this one
68 : EvtMNode * _parent;
69 :
70 : };
71 :
72 : #endif
|