]>
Commit | Line | Data |
---|---|---|
da0e9ce3 | 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 | EvtMNode() {} | |
22 | 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 | EvtSpinType::spintype getspintype() const { return EvtPDL::getSpinType( _id ); } | |
36 | ||
37 | // get the id of this node | |
38 | EvtId getid() const { return _id; } | |
39 | ||
40 | // return which particles this is a combination of | |
41 | const vector<int> & getresonance() const { return _resonance; } | |
42 | ||
43 | void setparent( EvtMNode * parent ) { _parent = parent; } | |
44 | 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 |