00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef ROO_BDECAY
00019 #define ROO_BDECAY
00020
00021 #include "RooAbsAnaConvPdf.h"
00022 #include "RooRealProxy.h"
00023
00024 class RooBDecay : public RooAbsAnaConvPdf
00025 {
00026
00027 public:
00028
00029 enum DecayType { SingleSided, DoubleSided, Flipped };
00030
00031
00032 inline RooBDecay() { }
00033 RooBDecay(const char *name, const char *title, RooRealVar& t,
00034 RooAbsReal& tau, RooAbsReal& dgamma,
00035 RooAbsReal& f0,
00036 RooAbsReal& f1, RooAbsReal& f2,
00037 RooAbsReal& f3, RooAbsReal& dm,
00038 const RooResolutionModel& model,
00039 DecayType type);
00040 RooBDecay(const RooBDecay& other, const char* name=0);
00041 virtual TObject* clone(const char* newname) const
00042 {
00043 return new RooBDecay(*this,newname);
00044 }
00045 virtual ~RooBDecay();
00046
00047 virtual Double_t coefficient(Int_t basisIndex) const;
00048 RooArgSet* coefVars(Int_t coefIdx) const ;
00049
00050 Int_t getCoefAnalyticalIntegral(Int_t coef, RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
00051 Double_t coefAnalyticalIntegral(Int_t coef, Int_t code, const char* rangeName=0) const ;
00052
00053 Int_t getGenerator(const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) const;
00054 void generateEvent(Int_t code);
00055
00056 protected:
00057
00058 RooRealProxy _t;
00059 RooRealProxy _tau;
00060 RooRealProxy _dgamma;
00061 RooRealProxy _f0;
00062 RooRealProxy _f1;
00063 RooRealProxy _f2;
00064 RooRealProxy _f3;
00065 RooRealProxy _dm;
00066 Int_t _basisCosh;
00067 Int_t _basisSinh;
00068 Int_t _basisCos;
00069 Int_t _basisSin;
00070 Int_t _basisB;
00071 DecayType _type;
00072
00073 ClassDef(RooBDecay, 1)
00074 };
00075
00076 #endif
00077