StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
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 
Definition: EvtId.hh:27