StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
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 2016/09/23 18:37:37 jwebb 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 
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  EvtGenReport(EVTGEN_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 
Definition: EvtId.hh:27