00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_BCP_EFF_DECAY
00017 #define ROO_BCP_EFF_DECAY
00018
00019 #include "RooAbsAnaConvPdf.h"
00020 #include "RooRealProxy.h"
00021 #include "RooCategoryProxy.h"
00022
00023 class RooBCPEffDecay : public RooAbsAnaConvPdf {
00024 public:
00025
00026 enum DecayType { SingleSided, DoubleSided, Flipped };
00027
00028
00029 inline RooBCPEffDecay() { }
00030 RooBCPEffDecay(const char *name, const char *title,
00031 RooRealVar& t, RooAbsCategory& tag,
00032 RooAbsReal& tau, RooAbsReal& dm,
00033 RooAbsReal& avgMistag, RooAbsReal& CPeigenval,
00034 RooAbsReal& a, RooAbsReal& b,
00035 RooAbsReal& effRatio, RooAbsReal& delMistag,
00036 const RooResolutionModel& model, DecayType type=DoubleSided) ;
00037
00038 RooBCPEffDecay(const RooBCPEffDecay& other, const char* name=0);
00039 virtual TObject* clone(const char* newname) const { return new RooBCPEffDecay(*this,newname) ; }
00040 virtual ~RooBCPEffDecay();
00041
00042 virtual Double_t coefficient(Int_t basisIndex) const ;
00043
00044 virtual Int_t getCoefAnalyticalIntegral(Int_t coef, RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
00045 virtual Double_t coefAnalyticalIntegral(Int_t coef, Int_t code, const char* rangeName=0) const ;
00046
00047 Int_t getGenerator(const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) const;
00048 void initGenerator(Int_t code) ;
00049 void generateEvent(Int_t code) ;
00050
00051 protected:
00052
00053 RooRealProxy _absLambda ;
00054 RooRealProxy _argLambda ;
00055 RooRealProxy _effRatio ;
00056 RooRealProxy _CPeigenval ;
00057 RooRealProxy _avgMistag ;
00058 RooRealProxy _delMistag ;
00059 RooRealProxy _t ;
00060 RooRealProxy _tau ;
00061 RooRealProxy _dm ;
00062 RooCategoryProxy _tag ;
00063 Double_t _genB0Frac ;
00064
00065 DecayType _type ;
00066 Int_t _basisExp ;
00067 Int_t _basisSin ;
00068 Int_t _basisCos ;
00069
00070 ClassDef(RooBCPEffDecay,1)
00071 };
00072
00073 #endif