Line data Source code
1 : //--------------------------------------------------------------------------
2 : //
3 : // Environment:
4 : // This software is part of the EvtGen package developed jointly
5 : // for the BaBar and CLEO collaborations. If you use all or part
6 : // of it, please give an appropriate acknowledgement.
7 : //
8 : // Copyright Information: See EvtGen/COPYRIGHT
9 : // Copyright (C) 1998 Caltech, UCSB
10 : //
11 : // Module: EvtGen/EvtCPUtil.hh
12 : //
13 : // Description:Class to hold CP physics utilities.
14 : //
15 : // Modification history:
16 : //
17 : // RYD March 24, 1998 Module created
18 : //
19 : //------------------------------------------------------------------------
20 :
21 : #ifndef EVTCPUTIL_HH
22 : #define EVTCPUTIL_HH
23 :
24 : #include "EvtGenBase/EvtComplex.hh"
25 : #include "EvtGenBase/EvtPatches.hh"
26 : class EvtParticle;
27 : class EvtId;
28 :
29 : class EvtCPUtil {
30 :
31 : public:
32 :
33 : EvtCPUtil(int mixingType);
34 : ~EvtCPUtil();
35 :
36 : enum MixingType {Coherent = 0, Incoherent = 1};
37 :
38 : static EvtCPUtil* getInstance();
39 :
40 0 : void setMixingType(int mixingType) {_mixingType = mixingType;}
41 : int getMixingType() {return _mixingType;}
42 :
43 : void fractB0CP(EvtComplex Af, EvtComplex Abarf,
44 : double deltam, double beta, double &fract);
45 :
46 : void fractB0nonCP(EvtComplex Af, EvtComplex Abarf,
47 : EvtComplex Afbar, EvtComplex Abarfbar,
48 : double deltam, double beta, int flip,
49 : double &fract);
50 :
51 : // Mark Whitehead 7/12/2009
52 : // Add required lines from EvtIncoherentMixing.hh to fix CPV
53 :
54 : // Functions to check if a B has mixed (comes from a B)
55 : bool isB0Mixed( EvtParticle * ) ;
56 : bool isBsMixed( EvtParticle * ) ;
57 :
58 : bool flipIsEnabled() ;
59 : void enableFlip() ;
60 : void disableFlip() ;
61 :
62 : void OtherB(EvtParticle *p, double &t, EvtId &otherb);
63 :
64 : void OtherCoherentB(EvtParticle *p, double &t, EvtId &otherb, double probB0);
65 : void OtherIncoherentB(EvtParticle *p, double &t, EvtId &otherb, double probB0);
66 :
67 : void OtherB(EvtParticle *p, double &t, EvtId &otherb, double probB0);
68 :
69 : //id is the produced particle
70 : //t returns the lifetime of the particle
71 : //and mix will be 1 if it mixed otherwise 0
72 : void incoherentMix(const EvtId id, double &t, int &mix);
73 :
74 : double getDeltaGamma(const EvtId id);
75 : double getDeltaM(const EvtId id);
76 :
77 : private:
78 :
79 : bool _enableFlip;
80 : int _mixingType;
81 :
82 : };
83 :
84 :
85 : #endif
86 :
|