]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenBase/EvtMNode.hh
An effective FD corretion
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / EvtMNode.hh
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