]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenBase/EvtPto3PAmp.hh
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / EvtPto3PAmp.hh
1 /*******************************************************************************
2  * Project: BaBar detector at the SLAC PEP-II B-factory
3  * Package: EvtGenBase
4  *    File: $Id: EvtPto3PAmp.hh,v 1.14 2008/03/04 20:02:16 apwagner Exp $
5  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
6  *
7  * Copyright (C) 2002 Caltech
8  *******************************************************************************/
9
10 #ifndef EVT_PTO3P_AMP_HH
11 #define EVT_PTO3P_AMP_HH
12
13 #include "EvtGenBase/EvtCyclic3.hh"
14 #include "EvtGenBase/EvtSpinType.hh"
15 #include <vector>
16 using std::vector;
17 #include "EvtGenBase/EvtAmplitude.hh"
18 #include "EvtGenBase/EvtTwoBodyVertex.hh"
19 #include "EvtGenBase/EvtPropagator.hh"
20 #include "EvtGenBase/EvtDalitzPoint.hh"
21
22 class EvtComplex;
23 class EvtBlattWeisskopf;
24
25 class EvtPto3PAmp : public EvtAmplitude<EvtDalitzPoint> {
26   
27
28 public:
29
30   // Numerator type
31   enum NumType {NBW=0, RBW_ZEMACH=1, RBW_KUEHN=2, RBW_CLEO=3, FLATTE, GAUSS, DOUBLE_GAUSS,
32                 NONRES, NONRES_LIN, NONRES_EXP, NONRES_EXP_ADD, NONRES_CCS, NONRES_LAURA, 
33                 LASS, GS};
34
35
36   EvtPto3PAmp(EvtDalitzPlot dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes,  
37               EvtSpinType::spintype spin, 
38               const EvtPropagator& prop, NumType typeN);
39   
40
41   EvtPto3PAmp(const EvtPto3PAmp& other);
42
43   ~EvtPto3PAmp();
44
45   virtual EvtAmplitude<EvtDalitzPoint>* clone() const
46   { return new EvtPto3PAmp(*this); }
47
48
49   virtual EvtComplex amplitude(const EvtDalitzPoint& p) const;
50   EvtComplex numerator(const EvtDalitzPoint& p) const;
51   double angDep(const EvtDalitzPoint& p) const;
52
53   void set_fd(double R);
54   void set_fb(double R);
55
56   void setmin(double min) {_min = min;}
57   void setmax(double max) {_max = max;}
58
59   virtual EvtComplex evalPropagator(double m) const  { return _prop->evaluate(m); }
60
61 private:
62
63   // Pairing indices:
64
65   EvtCyclic3::Pair _pairAng;    // angular  
66   EvtCyclic3::Pair _pairRes;    // resonance
67
68   // Spin
69
70   EvtSpinType::spintype _spin;                                  
71
72   // Numerator type
73
74   NumType _typeN;
75
76
77   // _Owned_ pointer to propagator factor
78
79   EvtPropagator* _prop;                  
80   double _g0; // nominal width
81   double _min; //min and max values on which
82   double _max; //the resonance is defined
83
84   // Vertices
85
86   EvtTwoBodyVertex _vb;
87   EvtTwoBodyVertex _vd;
88
89 };
90
91 #endif
92
93
94
95
96
97
98
99