Line data Source code
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 0 : report( Severity::Error, "EvtD0mixDalitz" ) << "EvtD0mixDalitz: Invalid mode." << std::endl;
99 0 : exit( 1 );
100 : }
101 : public:
102 0 : EvtD0mixDalitz() : _d1( 0 ), _d2( 0 ), _d3( 0 ),
103 0 : _x( 0. ), _y( 0. ), _qp( 1. ),
104 0 : _isKsPiPi( false ), _isRBWmodel( true )
105 0 : {}
106 :
107 0 : virtual ~EvtD0mixDalitz() {};
108 :
109 : // One-line inline functions.
110 0 : std::string getName() { return "D0MIXDALITZ"; }
111 0 : EvtDecayBase* clone() { return new EvtD0mixDalitz; }
112 0 : void initProbMax() { setProbMax( 5200. ); }
113 :
114 : void init();
115 : void decay( EvtParticle* p );
116 : };
117 :
118 : #endif
119 :
|