00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ROO_NONCPEIGEN_DECAY
00027 #define ROO_NONCPEIGEN_DECAY
00028
00029 #include "RooAbsAnaConvPdf.h"
00030 #include "RooRealProxy.h"
00031 #include "RooCategoryProxy.h"
00032
00033 class RooNonCPEigenDecay : public RooAbsAnaConvPdf {
00034
00035 public:
00036
00037 enum DecayType { SingleSided, DoubleSided, Flipped };
00038
00039
00040 inline RooNonCPEigenDecay( void ) { }
00041
00042
00043 RooNonCPEigenDecay( const char *name, const char *title,
00044 RooRealVar& t,
00045 RooAbsCategory& tag,
00046 RooAbsReal& tau,
00047 RooAbsReal& dm,
00048 RooAbsReal& avgW,
00049 RooAbsReal& delW,
00050 RooAbsCategory& rhoQ,
00051 RooAbsReal& correctQ,
00052 RooAbsReal& wQ,
00053 RooAbsReal& a,
00054 RooAbsReal& C,
00055 RooAbsReal& delC,
00056 RooAbsReal& S,
00057 RooAbsReal& delS,
00058 const RooResolutionModel& model,
00059 DecayType type = DoubleSided );
00060
00061
00062 RooNonCPEigenDecay( const char *name, const char *title,
00063 RooRealVar& t,
00064 RooAbsCategory& tag,
00065 RooAbsReal& tau,
00066 RooAbsReal& dm,
00067 RooAbsReal& avgW,
00068 RooAbsReal& delW,
00069 RooAbsCategory& rhoQ,
00070 RooAbsReal& correctQ,
00071 RooAbsReal& a,
00072 RooAbsReal& C,
00073 RooAbsReal& delC,
00074 RooAbsReal& S,
00075 RooAbsReal& delS,
00076 const RooResolutionModel& model,
00077 DecayType type = DoubleSided );
00078
00079 RooNonCPEigenDecay(const RooNonCPEigenDecay& other, const char* name=0);
00080 virtual TObject* clone(const char* newname) const {
00081 return new RooNonCPEigenDecay(*this,newname);
00082 }
00083 virtual ~RooNonCPEigenDecay( void );
00084
00085 virtual Double_t coefficient( Int_t basisIndex ) const;
00086
00087 virtual Int_t getCoefAnalyticalIntegral( Int_t coef, RooArgSet& allVars,
00088 RooArgSet& analVars, const char* rangeName=0 ) const;
00089 virtual Double_t coefAnalyticalIntegral( Int_t coef, Int_t code, const char* rangeName=0 ) const;
00090
00091 Int_t getGenerator( const RooArgSet& directVars,
00092 RooArgSet& generateVars, Bool_t staticInitOK=kTRUE ) const;
00093 void initGenerator( Int_t code );
00094 void generateEvent( Int_t code );
00095
00096 protected:
00097
00098 RooRealProxy _acp ;
00099 RooRealProxy _avgC ;
00100 RooRealProxy _delC ;
00101 RooRealProxy _avgS ;
00102 RooRealProxy _delS ;
00103 RooRealProxy _avgW ;
00104 RooRealProxy _delW ;
00105 RooRealProxy _t ;
00106 RooRealProxy _tau;
00107 RooRealProxy _dm;
00108 RooCategoryProxy _tag;
00109 RooCategoryProxy _rhoQ;
00110 RooRealProxy _correctQ;
00111 RooRealProxy _wQ;
00112 Double_t _genB0Frac;
00113 Double_t _genRhoPlusFrac;
00114
00115 DecayType _type;
00116 Int_t _basisExp;
00117 Int_t _basisSin;
00118 Int_t _basisCos;
00119
00120 ClassDef(RooNonCPEigenDecay,1)
00121 };
00122
00123 #endif