]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGen/EvtGenBase/EvtCPUtil.hh
Fix for definitions for CINT
[u/mrichter/AliRoot.git] / TEvtGen / EvtGen / EvtGenBase / EvtCPUtil.hh
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   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