Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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
28 enum Type { Normal, Flipped };
29
30 // Constructors, assignment etc
31 RooGExpModel() = default;
32
33 RooGExpModel(const char *name, const char *title, RooAbsRealLValue& x,
35 RooAbsReal& meanSF, RooAbsReal& sigmaSF, RooAbsReal& rlifeSF,
36 bool nlo=false, Type type=Normal) ;
37
38 RooGExpModel(const char *name, const char *title, RooAbsRealLValue& x,
40 bool nlo=false, Type type=Normal) ;
41
42 RooGExpModel(const char *name, const char *title, RooAbsRealLValue& x,
44 RooAbsReal& srSF,
45 bool nlo=false, Type type=Normal) ;
46
47 RooGExpModel(const char *name, const char *title, RooAbsRealLValue& x,
49 RooAbsReal& sigmaSF, RooAbsReal& rlifeSF,
50 bool nlo=false, Type type=Normal) ;
51
52
53
54 RooGExpModel(const RooGExpModel& other, const char* name=nullptr);
55 TObject* clone(const char* newname) const override { return new RooGExpModel(*this,newname) ; }
56
57 Int_t basisCode(const char* name) const override ;
58 Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=nullptr) const override ;
59 double analyticalIntegral(Int_t code, const char* rangeName=nullptr) const override ;
60
61 Int_t getGenerator(const RooArgSet& directVars, RooArgSet &generateVars, bool staticInitOK=true) const override;
62 void generateEvent(Int_t code) override;
63
64 void advertiseFlatScaleFactorIntegral(bool flag) { _flatSFInt = flag ; }
65
66 void advertiseAsymptoticIntegral(bool flag) { _asympInt = flag ; } // added FMV,07/24/03
67
68protected:
69 double evaluate() const override ;
70
71private:
72 //double calcDecayConv(double sign, double tau, double sig, double rtau) const ;
73 double calcDecayConv(double sign, double tau, double sig, double rtau, double fsign) const ;
74 // modified FMV,08/13/03
75 std::complex<double> calcSinConv(double sign, double sig, double tau, double omega, double rtau, double fsign) const ;
76 double calcSinConv(double sign, double sig, double tau, double rtau, double fsign) const ;
77 std::complex<double> calcSinConvNorm(double sign, double tau, double omega,
78 double sig, double rtau, double fsign, const char* rangeName) const ; // modified FMV,07/24/03
79 double calcSinConvNorm(double sign, double tau,
80 double sig, double rtau, double fsign, const char* rangeName) const ; // added FMV,08/18/03
81 //double calcSinhConv(double sign, double sign1, double sign2, double tau, double dgamma, double sig, double rtau, double fsign) const ;
82 //double calcCoshConv(double sign, double tau, double dgamma, double sig, double rtau, double fsign) const ;
83
84 static std::complex<double> evalCerfApprox(double swt, double u, double c);
85
86 // Calculate common normalization factors
87 // added FMV,07/24/03
88 std::complex<double> evalCerfInt(double sign, double wt, double tau, double umin, double umax, double c) const ;
89 double evalCerfInt(double sign, double tau, double umin, double umax, double c) const ;
90
97
98 bool _flip ;
99 bool _nlo ;
100 bool _flatSFInt = false;
101 bool _asympInt = false; // added FMV,07/24/03
102
103 ClassDefOverride(RooGExpModel,2) // Gauss (x) Exponential resolution model
104};
105
106#endif
#define c(i)
Definition RSha256.hxx:101
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
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
Abstract base class for objects that represent a real value that may appear on the left hand side of ...
Abstract base class for objects that represent a real value and implements functionality common to al...
Definition RooAbsReal.h:59
RooAbsMoment * mean(RooRealVar &obs)
Definition RooAbsReal.h:366
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:55
The RooGExpModel is a RooResolutionModel implementation that models a resolution function that is the...
RooRealProxy ssf
RooGExpModel()=default
std::complex< double > evalCerfInt(double sign, double wt, double tau, double umin, double umax, double c) const
void advertiseAsymptoticIntegral(bool flag)
std::complex< double > calcSinConv(double sign, double sig, double tau, double omega, double rtau, double fsign) const
RooRealProxy rlife
static std::complex< double > evalCerfApprox(double swt, double u, double c)
void advertiseFlatScaleFactorIntegral(bool flag)
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
RooRealProxy rsf
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
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*...
double analyticalIntegral(Int_t code, const char *rangeName=nullptr) const override
Implements the actual analytical integral(s) advertised by getAnalyticalIntegral.
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=nullptr) const override
Interface function getAnalyticalIntergral advertises the analytical integrals that are supported.
TObject * clone(const char *newname) const override
RooRealProxy _mean
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:41