41 RooDecay::RooDecay(
const char *name,
const char *title,
42 RooRealVar& t, RooAbsReal& tau,
43 const RooResolutionModel& model, DecayType type) :
44 RooAbsAnaConvPdf(name,title,model,t),
45 _t(
"t",
"time",this,t),
46 _tau(
"tau",
"decay time",this,tau),
51 _basisExp = declareBasis(
"exp(-@0/@1)",tau) ;
54 _basisExp = declareBasis(
"exp(@0/@1)",tau) ;
57 _basisExp = declareBasis(
"exp(-abs(@0)/@1)",tau) ;
65 RooDecay::RooDecay(
const RooDecay& other,
const char* name) :
66 RooAbsAnaConvPdf(other,name),
67 _t(
"t",this,other._t),
68 _tau(
"tau",this,other._tau),
70 _basisExp(other._basisExp)
83 Double_t RooDecay::coefficient(Int_t )
const
90 Int_t RooDecay::getGenerator(
const RooArgSet& directVars, RooArgSet &generateVars, Bool_t )
const
92 if (matchArgs(directVars,generateVars,_t))
return 1 ;
98 void RooDecay::generateEvent(Int_t code)
104 Double_t rand = RooRandom::uniform() ;
109 tval = -_tau*log(rand);
112 tval= +_tau*log(rand);
115 tval = (rand<=0.5) ? -_tau*log(2*rand) : +_tau*log(2*(rand-0.5)) ;
119 if (tval<_t.max() && tval>_t.min()) {