159 if ((basisSign==
Minus &&
x>0) ||
160 (basisSign==
Plus &&
x<0))
return 0 ;
180 return exp(-tscaled)*tscaled ;
184 return exp(-tscaled)*tscaled*tscaled;
267 if (tau==0)
return 1 ;
268 if ((basisSign !=
Minus) && (
x.
max(rangeName)>0)) {
269 result += tau*(-
exp(-
x.
max(rangeName)/tau) - -
exp(-max(0.,
x.
min(rangeName))/tau) ) ;
271 if ((basisSign !=
Plus) && (
x.
min(rangeName)<0)) {
272 result -= tau*(-
exp(-max(0.,
x.
min(rangeName))/tau)) - -tau*
exp(-
x.
max(rangeName)/tau) ;
280 if (tau==0)
return 0 ;
282 if (basisSign !=
Minus) result +=
exp(-
x.
max(rangeName)/tau)*(-1/tau*
sin(dm*
x.
max(rangeName)) - dm*
cos(dm*
x.
max(rangeName))) + dm;
283 if (basisSign !=
Plus) result -=
exp(
x.
min(rangeName)/tau)*(-1/tau*
sin(dm*(-
x.
min(rangeName))) - dm*
cos(dm*(-
x.
min(rangeName)))) + dm ;
284 return result / (1/(tau*tau) + dm*dm) ;
289 if (tau==0)
return 1 ;
291 if (basisSign !=
Minus) result +=
exp(-
x.
max(rangeName)/tau)*(-1/tau*
cos(dm*
x.
max(rangeName)) + dm*
sin(dm*
x.
max(rangeName))) + 1/tau ;
292 if (basisSign !=
Plus) result +=
exp(
x.
min(rangeName)/tau)*(-1/tau*
cos(dm*(-
x.
min(rangeName))) + dm*
sin(dm*(-
x.
min(rangeName)))) + 1/tau ;
293 return result / (1/(tau*tau) + dm*dm) ;
297 if (tau==0)
return 0 ;
299 return tau*( 1 - (1 + t_max)*
exp(-t_max) ) ;
303 if (tau==0)
return 0 ;
305 return tau*( 2 - (2 + (2 + t_max)*t_max)*
exp(-t_max) ) ;
310 if (tau==0)
return 0 ;
314 if (basisSign !=
Minus) result += 0.5*( taup*(1-
exp(-
x.
max(rangeName)/taup)) - taum*(1-
exp(-
x.
max(rangeName)/taum)) ) ;
315 if (basisSign !=
Plus) result -= 0.5*( taup*(1-
exp(
x.
min(rangeName)/taup)) - taum*(1-
exp(
x.
min(rangeName)/taum)) ) ;
321 if (tau==0)
return 1 ;
325 if (basisSign !=
Minus) result += 0.5*( taup*(1-
exp(-
x.
max(rangeName)/taup)) + taum*(1-
exp(-
x.
max(rangeName)/taum)) ) ;
326 if (basisSign !=
Plus) result += 0.5*( taup*(1-
exp(
x.
min(rangeName)/taup)) + taum*(1-
exp(
x.
min(rangeName)/taum)) ) ;
346 auxProto,
verbose, &forceDirect) ;
356 if (
matchArgs(directVars,generateVars,
x))
return 1 ;
RooAbsAnaConvPdf is the base class for PDFs that represent a physics model that can be analytically c...
void addServer(RooAbsArg &server, Bool_t valueProp=kTRUE, Bool_t shapeProp=kFALSE, std::size_t refCount=1)
Register another RooAbsArg as a server to us, ie, declare that we depend on it.
void removeServer(RooAbsArg &server, Bool_t force=kFALSE)
Unregister another RooAbsArg as a server to us, ie, declare that we no longer depend on its value and...
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Bool_t matchArgs(const RooArgSet &allDeps, RooArgSet &numDeps, const RooArgProxy &a) const
Utility function for use in getAnalyticalIntegral().
Double_t getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooDataSet is a container class to hold unbinned data.
Class RooGenContext implement a universal generator context for all RooAbsPdf classes that do not hav...
RooRealVar represents a variable that can be changed from the outside.
RooResolutionModel is the base class for PDFs that represent a resolution model that can be convolute...
RooRealVar & convVar() const
Return the convolution variable of the resolution model.
const RooFormulaVar & basis() const
Double_t min(const char *rname=0) const
Query lower limit of range. This requires the payload to be RooAbsRealLValue or derived.
Double_t max(const char *rname=0) const
Query upper limit of range. This requires the payload to be RooAbsRealLValue or derived.
RooTruthModel is an implementation of RooResolution model that provides a delta-function resolution m...
virtual Int_t basisCode(const char *name) const
Return basis code for given basis definition string.
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=0) const
Advertise analytical integrals for compiled basis functions and when used as p.d.f without basis func...
virtual ~RooTruthModel()
Destructor.
virtual void changeBasis(RooFormulaVar *basis)
Changes associated bases function to 'inBasis'.
void generateEvent(Int_t code)
Implement internal generator for observable x, x=0 for all events following definition of delta funct...
Int_t getGenerator(const RooArgSet &directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) const
Advertise internal generator for observable x.
Double_t analyticalIntegral(Int_t code, const char *rangeName=0) const
Implement analytical integrals when used as p.d.f and for compiled basis functions.
virtual Double_t evaluate() const
Evaluate the truth model: a delta function when used as PDF, the basis function itself,...
virtual RooAbsGenContext * modelGenContext(const RooAbsAnaConvPdf &convPdf, const RooArgSet &vars, const RooDataSet *prototype=0, const RooArgSet *auxProto=0, Bool_t verbose=kFALSE) const
virtual const char * GetTitle() const
Returns title of object.
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)