StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
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
Definition: EvtId.hh:27