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