00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_BCPGEN_DECAY
00017 #define ROO_BCPGEN_DECAY
00018
00019 #include "RooAbsAnaConvPdf.h"
00020 #include "RooRealProxy.h"
00021 #include "RooCategoryProxy.h"
00022
00023 class RooBCPGenDecay : public RooAbsAnaConvPdf {
00024 public:
00025
00026 enum DecayType { SingleSided, DoubleSided, Flipped };
00027
00028
00029 inline RooBCPGenDecay() { }
00030 RooBCPGenDecay(const char *name, const char *title,
00031 RooRealVar& t, RooAbsCategory& tag,
00032 RooAbsReal& tau, RooAbsReal& dm,
00033 RooAbsReal& avgMistag,
00034 RooAbsReal& a, RooAbsReal& b,
00035 RooAbsReal& delMistag,
00036 RooAbsReal& mu,
00037 const RooResolutionModel& model, DecayType type=DoubleSided) ;
00038
00039 RooBCPGenDecay(const RooBCPGenDecay& other, const char* name=0);
00040 virtual TObject* clone(const char* newname) const { return new RooBCPGenDecay(*this,newname) ; }
00041 virtual ~RooBCPGenDecay();
00042
00043 virtual Double_t coefficient(Int_t basisIndex) const ;
00044
00045 virtual Int_t getCoefAnalyticalIntegral(Int_t coef, RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
00046 virtual Double_t coefAnalyticalIntegral(Int_t coef, Int_t code, const char* rangeName=0) const ;
00047
00048 Int_t getGenerator(const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) const;
00049 void initGenerator(Int_t code) ;
00050 void generateEvent(Int_t code) ;
00051
00052 protected:
00053
00054 RooRealProxy _avgC ;
00055 RooRealProxy _avgS ;
00056 RooRealProxy _avgMistag ;
00057 RooRealProxy _delMistag ;
00058 RooRealProxy _mu ;
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(RooBCPGenDecay,1)
00071 };
00072
00073 #endif