Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
RooNonCPEigenDecay.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitModels *
4  * File: $Id: RooNonCPEigenDecay.h,v 1.13 2007/05/11 09:13:07 verkerke Exp $
5  * Authors: *
6  * AH, Andreas Hoecker, Orsay, hoecker@slac.stanford.edu *
7  * SL, Sandrine Laplace, Orsay, laplace@slac.stanford.edu *
8  * JS, Jan Stark, Paris, stark@slac.stanford.edu *
9  * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
10  * *
11  * Copyright (c) 2000-2005, Regents of the University of California, *
12  * IN2P3. All rights reserved. *
13  * *
14  * History *
15  * Nov-2001 WV Created initial version *
16  * Dec-2001 SL mischarge correction, direct CPV *
17  * Jan-2002 AH built dedicated generator + code cleaning *
18  * Mar-2002 JS committed debugged version to CVS *
19  * Apr-2002 AH allow prompt (ie, non-Pdf) mischarge treatment *
20  * May-2002 JS Changed the set of CP parameters (mathematically equiv.) *
21  * *
22  * Redistribution and use in source and binary forms, *
23  * with or without modification, are permitted according to the terms *
24  * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
25  *****************************************************************************/
26 #ifndef ROO_NONCPEIGEN_DECAY
27 #define ROO_NONCPEIGEN_DECAY
28 
29 #include "RooAbsAnaConvPdf.h"
30 #include "RooRealProxy.h"
31 #include "RooCategoryProxy.h"
32 
33 class RooNonCPEigenDecay : public RooAbsAnaConvPdf {
34 
35 public:
36 
37  enum DecayType { SingleSided, DoubleSided, Flipped };
38 
39  // Constructors, assignment etc
40  inline RooNonCPEigenDecay( void ) { }
41 
42  // with explicit mischarge
43  RooNonCPEigenDecay( const char *name, const char *title,
44  RooRealVar& t,
45  RooAbsCategory& tag,
46  RooAbsReal& tau,
47  RooAbsReal& dm,
48  RooAbsReal& avgW,
49  RooAbsReal& delW,
50  RooAbsCategory& rhoQ,
51  RooAbsReal& correctQ,
52  RooAbsReal& wQ,
53  RooAbsReal& a,
54  RooAbsReal& C,
55  RooAbsReal& delC,
56  RooAbsReal& S,
57  RooAbsReal& delS,
58  const RooResolutionModel& model,
59  DecayType type = DoubleSided );
60 
61  // no explicit mischarge (=> set to zero)
62  RooNonCPEigenDecay( const char *name, const char *title,
63  RooRealVar& t,
64  RooAbsCategory& tag,
65  RooAbsReal& tau,
66  RooAbsReal& dm,
67  RooAbsReal& avgW,
68  RooAbsReal& delW,
69  RooAbsCategory& rhoQ,
70  RooAbsReal& correctQ,
71  RooAbsReal& a,
72  RooAbsReal& C,
73  RooAbsReal& delC,
74  RooAbsReal& S,
75  RooAbsReal& delS,
76  const RooResolutionModel& model,
77  DecayType type = DoubleSided );
78 
79  RooNonCPEigenDecay(const RooNonCPEigenDecay& other, const char* name=0);
80  virtual TObject* clone(const char* newname) const {
81  return new RooNonCPEigenDecay(*this,newname);
82  }
83  virtual ~RooNonCPEigenDecay( void );
84 
85  virtual Double_t coefficient( Int_t basisIndex ) const;
86 
87  virtual Int_t getCoefAnalyticalIntegral( Int_t coef, RooArgSet& allVars,
88  RooArgSet& analVars, const char* rangeName=0 ) const;
89  virtual Double_t coefAnalyticalIntegral( Int_t coef, Int_t code, const char* rangeName=0 ) const;
90 
91  Int_t getGenerator( const RooArgSet& directVars,
92  RooArgSet& generateVars, Bool_t staticInitOK=kTRUE ) const;
93  void initGenerator( Int_t code );
94  void generateEvent( Int_t code );
95 
96 protected:
97 
98  RooRealProxy _acp ;
99  RooRealProxy _avgC ;
100  RooRealProxy _delC ;
101  RooRealProxy _avgS ;
102  RooRealProxy _delS ;
103  RooRealProxy _avgW ;
104  RooRealProxy _delW ;
105  RooRealProxy _t ;
106  RooRealProxy _tau;
107  RooRealProxy _dm;
108  RooCategoryProxy _tag;
109  RooCategoryProxy _rhoQ;
110  RooRealProxy _correctQ;
111  RooRealProxy _wQ;
112  Double_t _genB0Frac;
113  Double_t _genRhoPlusFrac;
114 
115  DecayType _type;
116  Int_t _basisExp;
117  Int_t _basisSin;
118  Int_t _basisCos;
119 
120  ClassDef(RooNonCPEigenDecay,1) // PDF to model CP-violating decays to final states which are not CP eigenstates
121 };
122 
123 #endif