Fix bug in building local list of valid files.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtD0mixDalitz.hh
1 /*****************************************************************************
2  * Project: BaBar detector at the SLAC PEP-II B-factory
3  * Package: EvtGenModels
4  *    File: $Id: EvtD0mixDalitz.hh,v 1.1 2009-03-16 16:49:00 robbep Exp $
5  *
6  * Description:
7  *   The D0mixDalitz model, with many resonances and mixing implemented.
8  *
9  * Modification history:
10  *   Jordi Garra Tic√≥     2008/07/03         File created
11  *****************************************************************************/
12
13 #ifndef __EVTD0MIXDALITZ_HH__
14 #define __EVTD0MIXDALITZ_HH__
15
16 #include "EvtGenBase/EvtComplex.hh"
17 #include "EvtGenBase/EvtPDL.hh"
18 #include "EvtGenBase/EvtId.hh"
19 #include "EvtGenBase/EvtDecayAmp.hh"
20 #include "EvtGenBase/EvtDalitzPoint.hh"
21 #include "EvtGenBase/EvtSpinType.hh"
22 #include "EvtGenBase/EvtDalitzReso.hh"
23 #include "EvtGenBase/EvtCyclic3.hh"
24
25
26 class EvtD0mixDalitz : public EvtDecayAmp
27 {
28 private:
29   int _d1;
30   int _d2;
31   int _d3;
32
33   // Mixing parameters.
34   double _x;
35   double _y;
36
37   // q/p CP violation in the mixing.
38   EvtComplex _qp;
39
40   // Checker of the decay mode.
41   bool _isKsPiPi;
42   bool _isRBWmodel;
43
44   // Useful constants.
45   static const EvtSpinType::spintype& _SCALAR;
46   static const EvtSpinType::spintype& _VECTOR;
47   static const EvtSpinType::spintype& _TENSOR;
48
49   static const EvtDalitzReso::CouplingType& _EtaPic;
50   static const EvtDalitzReso::CouplingType& _PicPicKK;
51
52   static const EvtDalitzReso::NumType& _RBW;
53   static const EvtDalitzReso::NumType& _GS;
54   static const EvtDalitzReso::NumType& _KMAT;
55
56   static const EvtCyclic3::Pair& _AB;
57   static const EvtCyclic3::Pair& _AC;
58   static const EvtCyclic3::Pair& _BC;
59
60   // Values to be read or computed based on values in the evt.pdl file.
61   // IDs of the relevant particles.
62   EvtId _D0;
63   EvtId _D0B;
64   EvtId _KM;
65   EvtId _KP;
66   EvtId _K0;
67   EvtId _K0B;
68   EvtId _KL;
69   EvtId _KS;
70   EvtId _PIM;
71   EvtId _PIP;
72
73   // Masses of the relevant particles.
74   double _mD0;
75   double _mKs;
76   double _mPi;
77   double _mK;
78
79   // Life time and decay rate.
80   double _ctau;
81   double _gamma;
82
83   // Some useful integrals over the Dalitz plot.
84   EvtComplex _iChi;
85   EvtComplex _iChi2;
86
87   void readPDGValues();
88   EvtComplex dalitzKsPiPi( const EvtDalitzPoint& point );
89   EvtComplex dalitzKsKK  ( const EvtDalitzPoint& point );
90
91   // Time evolution functions for hamiltonian eigenstates.
92   //    Negative exponential part removed.
93   EvtComplex h1( const double& ct ) const;
94   EvtComplex h2( const double& ct ) const;
95
96   void reportInvalidAndExit() const
97   {
98     report( ERROR, "EvtD0mixDalitz" ) << "EvtD0mixDalitz: Invalid mode." << std::endl;
99     exit( 1 );
100   }
101 public:
102   EvtD0mixDalitz() : _d1( 0 ), _d2( 0 ), _d3( 0 ),
103                      _x( 0. ), _y( 0. ), _qp( 1. ),
104                      _isKsPiPi( false ), _isRBWmodel( true )
105   {}
106
107   virtual ~EvtD0mixDalitz() {};
108
109   // One-line inline functions.
110   std::string   getName() { return "D0MIXDALITZ";      }
111   EvtDecayBase* clone()   { return new EvtD0mixDalitz; }
112   void initProbMax()      { setProbMax( 5200. );       }
113
114   void init();
115   void decay( EvtParticle* p );
116 };
117
118 #endif
119