Logo ROOT  
Reference Guide
RooGExpModel.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitModels *
4 * File: $Id: RooGExpModel.h,v 1.16 2007/05/11 09:13:07 verkerke Exp $
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16#ifndef ROO_GEXP_MODEL
17#define ROO_GEXP_MODEL
18
19#include "Rtypes.h"
20#include "RooResolutionModel.h"
21#include "RooRealProxy.h"
22
23#include <complex>
24
26public:
27
33
34
35
37 enum BasisSign { Both=0, Plus=+1, Minus=-1 } ;
38 enum Type { Normal, Flipped };
39
40 // Constructors, assignment etc
41 inline RooGExpModel() {
42 // coverity[UNINIT_CTOR]
43 }
44
45 RooGExpModel(const char *name, const char *title, RooAbsRealLValue& x,
47 RooAbsReal& meanSF, RooAbsReal& sigmaSF, RooAbsReal& rlifeSF,
48 bool nlo=false, Type type=Normal) ;
49
50 RooGExpModel(const char *name, const char *title, RooAbsRealLValue& x,
52 bool nlo=false, Type type=Normal) ;
53
54 RooGExpModel(const char *name, const char *title, RooAbsRealLValue& x,
56 RooAbsReal& srSF,
57 bool nlo=false, Type type=Normal) ;
58
59 RooGExpModel(const char *name, const char *title, RooAbsRealLValue& x,
61 RooAbsReal& sigmaSF, RooAbsReal& rlifeSF,
62 bool nlo=false, Type type=Normal) ;
63
64
65
66 RooGExpModel(const RooGExpModel& other, const char* name=0);
67 TObject* clone(const char* newname) const override { return new RooGExpModel(*this,newname) ; }
68 ~RooGExpModel() override;
69
70 Int_t basisCode(const char* name) const override ;
71 Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const override ;
72 double analyticalIntegral(Int_t code, const char* rangeName=0) const override ;
73
74 Int_t getGenerator(const RooArgSet& directVars, RooArgSet &generateVars, bool staticInitOK=true) const override;
75 void generateEvent(Int_t code) override;
76
77 void advertiseFlatScaleFactorIntegral(bool flag) { _flatSFInt = flag ; }
78
79 void advertiseAsymptoticIntegral(bool flag) { _asympInt = flag ; } // added FMV,07/24/03
80
81protected:
82 double evaluate() const override ;
83
84private:
85 //double calcDecayConv(double sign, double tau, double sig, double rtau) const ;
86 double calcDecayConv(double sign, double tau, double sig, double rtau, double fsign) const ;
87 // modified FMV,08/13/03
88 std::complex<double> calcSinConv(double sign, double sig, double tau, double omega, double rtau, double fsign) const ;
89 double calcSinConv(double sign, double sig, double tau, double rtau, double fsign) const ;
90 std::complex<double> calcSinConvNorm(double sign, double tau, double omega,
91 double sig, double rtau, double fsign, const char* rangeName) const ; // modified FMV,07/24/03
92 double calcSinConvNorm(double sign, double tau,
93 double sig, double rtau, double fsign, const char* rangeName) const ; // added FMV,08/18/03
94 //double calcSinhConv(double sign, double sign1, double sign2, double tau, double dgamma, double sig, double rtau, double fsign) const ;
95 //double calcCoshConv(double sign, double tau, double dgamma, double sig, double rtau, double fsign) const ;
96
97 static std::complex<double> evalCerfApprox(double swt, double u, double c);
98
99 // Calculate common normalization factors
100 // added FMV,07/24/03
101 std::complex<double> evalCerfInt(double sign, double wt, double tau, double umin, double umax, double c) const ;
102 double evalCerfInt(double sign, double tau, double umin, double umax, double c) const ;
103
110
111 bool _flip ;
112 bool _nlo ;
114 bool _asympInt ; // added FMV,07/24/03
115
116 ClassDefOverride(RooGExpModel,2) // Gauss (x) Exponential resolution model
117};
118
119#endif
#define c(i)
Definition: RSha256.hxx:101
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
char name[80]
Definition: TGX11.cxx:110
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:64
RooAbsMoment * mean(RooRealVar &obs)
Definition: RooAbsReal.h:361
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:57
The RooGExpModel is a RooResolutionModel implementation that models a resolution function that is the...
Definition: RooGExpModel.h:25
RooRealProxy ssf
Definition: RooGExpModel.h:108
std::complex< double > evalCerfInt(double sign, double wt, double tau, double umin, double umax, double c) const
void advertiseAsymptoticIntegral(bool flag)
Definition: RooGExpModel.h:79
std::complex< double > calcSinConv(double sign, double sig, double tau, double omega, double rtau, double fsign) const
RooRealProxy rlife
Definition: RooGExpModel.h:106
static std::complex< double > evalCerfApprox(double swt, double u, double c)
void advertiseFlatScaleFactorIntegral(bool flag)
Definition: RooGExpModel.h:77
double calcDecayConv(double sign, double tau, double sig, double rtau, double fsign) const
double evaluate() const override
Evaluate this PDF / function / constant. Needs to be overridden by all derived classes.
void generateEvent(Int_t code) override
Interface for generation of an event using the algorithm corresponding to the specified code.
RooRealProxy sigma
Definition: RooGExpModel.h:105
RooRealProxy rsf
Definition: RooGExpModel.h:109
Int_t getGenerator(const RooArgSet &directVars, RooArgSet &generateVars, bool staticInitOK=true) const override
Load generatedVars with the subset of directVars that we can generate events for, and return a code t...
RooRealProxy _meanSF
Definition: RooGExpModel.h:107
std::complex< double > calcSinConvNorm(double sign, double tau, double omega, double sig, double rtau, double fsign, const char *rangeName) const
old code (asymptotic normalization only) std::complex<double> z(1/tau,sign*omega); return z*2/(omega*...
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=0) const override
Interface function getAnalyticalIntergral advertises the analytical integrals that are supported.
double analyticalIntegral(Int_t code, const char *rangeName=0) const override
Implements the actual analytical integral(s) advertised by getAnalyticalIntegral.
TObject * clone(const char *newname) const override
Definition: RooGExpModel.h:67
RooRealProxy _mean
Definition: RooGExpModel.h:104
~RooGExpModel() override
Destructor.
Int_t basisCode(const char *name) const override
RooResolutionModel is the base class for PDFs that represent a resolution model that can be convolute...
RooTemplateProxy< RooAbsRealLValue > x
Dependent/convolution variable.
Mother of all ROOT objects.
Definition: TObject.h:37