1 //--------------------------------------------------------------------------
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.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 1998 Caltech, UCSB
11 // Module: EvtGen/EvtCPUtil.hh
13 // Description:Class to hold CP physics utilities.
15 // Modification history:
17 // RYD March 24, 1998 Module created
19 //------------------------------------------------------------------------
24 #include "EvtGenBase/EvtComplex.hh"
25 #include "EvtGenBase/EvtPatches.hh"
33 EvtCPUtil(int mixingType);
36 enum MixingType {Coherent = 0, Incoherent = 1};
38 static EvtCPUtil* getInstance();
40 void setMixingType(int mixingType) {_mixingType = mixingType;}
41 int getMixingType() {return _mixingType;}
43 void fractB0CP(EvtComplex Af, EvtComplex Abarf,
44 double deltam, double beta, double &fract);
46 void fractB0nonCP(EvtComplex Af, EvtComplex Abarf,
47 EvtComplex Afbar, EvtComplex Abarfbar,
48 double deltam, double beta, int flip,
51 // Mark Whitehead 7/12/2009
52 // Add required lines from EvtIncoherentMixing.hh to fix CPV
54 // Functions to check if a B has mixed (comes from a B)
55 bool isB0Mixed( EvtParticle * ) ;
56 bool isBsMixed( EvtParticle * ) ;
58 bool flipIsEnabled() ;
62 void OtherB(EvtParticle *p, double &t, EvtId &otherb);
64 void OtherCoherentB(EvtParticle *p, double &t, EvtId &otherb, double probB0);
65 void OtherIncoherentB(EvtParticle *p, double &t, EvtId &otherb, double probB0);
67 void OtherB(EvtParticle *p, double &t, EvtId &otherb, double probB0);
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);
74 double getDeltaGamma(const EvtId id);
75 double getDeltaM(const EvtId id);