ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitHzz4l/Efficiency/interface/ZBackgrounds.h
Revision: 1.1
Committed: Tue Jun 12 21:31:43 2012 UTC (12 years, 11 months ago) by dkralph
Content type: text/plain
Branch: MAIN
CVS Tags: compiled, HEAD
Log Message:
First commit: A tag and probe selector for id, iso, or trigger efficiencies and a port of Kevin's fitting code.

File Contents

# User Rev Content
1 dkralph 1.1 #include "RooAbsPdf.h"
2     #include "RooAddPdf.h"
3     #include "RooRealVar.h"
4     #include "RooExponential.h"
5     #include "RooCMSShape.h"
6     #include "RooGenericPdf.h"
7    
8     class CBackgroundModel
9     {
10     public:
11     CBackgroundModel():model(0){}
12     virtual ~CBackgroundModel() { delete model; }
13     RooAbsPdf *model;
14     };
15    
16     class CExponential : public CBackgroundModel
17     {
18     public:
19     CExponential(RooRealVar &m, const Bool_t pass);
20     ~CExponential();
21     RooRealVar *t;
22     };
23    
24     class CErfExpo : public CBackgroundModel
25     {
26     public:
27     CErfExpo(RooRealVar &m, const Bool_t pass);
28     ~CErfExpo();
29     RooRealVar *alfa, *beta, *gamma, *peak;
30     };
31    
32     class CDoubleExp : public CBackgroundModel
33     {
34     public:
35     CDoubleExp(RooRealVar &m, const Bool_t pass);
36     ~CDoubleExp();
37     RooExponential *exp1, *exp2;
38     RooRealVar *t1, *t2, *frac;
39     };
40    
41     class CLinearExp : public CBackgroundModel
42     {
43     public:
44     CLinearExp(RooRealVar &m, const Bool_t pass);
45     ~CLinearExp();
46     RooRealVar *a, *t;
47     };
48    
49     class CQuadraticExp : public CBackgroundModel
50     {
51     public:
52     CQuadraticExp(RooRealVar &m, const Bool_t pass);
53     ~CQuadraticExp();
54     RooRealVar *a1, *a2, *t;
55     };
56    
57     //--------------------------------------------------------------------------------------------------
58     CExponential::CExponential(RooRealVar &m, const Bool_t pass)
59     {
60     char name[10];
61     if(pass) sprintf(name,"%s","Pass");
62     else sprintf(name,"%s","Fail");
63    
64     char vname[50];
65    
66     sprintf(vname,"t%s",name);
67     if(pass)
68     t = new RooRealVar(vname,vname,-0.1,-1.,0.);
69     else
70     t = new RooRealVar(vname,vname,-0.1,-1.,0.);
71    
72     sprintf(vname,"background%s",name);
73     model = new RooExponential(vname,vname,m,*t);
74     }
75    
76     CExponential::~CExponential()
77     {
78     delete t;
79     }
80    
81     //--------------------------------------------------------------------------------------------------
82     CErfExpo::CErfExpo(RooRealVar &m, const Bool_t pass)
83     {
84     char name[10];
85     if(pass) sprintf(name,"%s","Pass");
86     else sprintf(name,"%s","Fail");
87    
88     char vname[50];
89    
90     if(pass) {
91     sprintf(vname,"alfa%s",name); alfa = new RooRealVar(vname,vname,50,5,200);
92     sprintf(vname,"beta%s",name); beta = new RooRealVar(vname,vname,0.01,0,10);
93     sprintf(vname,"gamma%s",name); gamma = new RooRealVar(vname,vname,0.1,0,1);
94     } else {
95     sprintf(vname,"alfa%s",name); alfa = new RooRealVar(vname,vname,50,5,200);
96     sprintf(vname,"beta%s",name); beta = new RooRealVar(vname,vname,0.01,0,10);
97     sprintf(vname,"gamma%s",name); gamma = new RooRealVar(vname,vname,0.1,0,1);
98     }
99    
100     sprintf(vname,"peak%s",name);
101     peak = new RooRealVar(vname,vname,91.1876,85,97);
102     peak->setVal(91.1876);
103     peak->setConstant(kTRUE);
104    
105     sprintf(vname,"background%s",name);
106     model = new RooCMSShape(vname,vname,m,*alfa,*beta,*gamma,*peak);
107     }
108    
109     CErfExpo::~CErfExpo()
110     {
111     delete alfa;
112     delete beta;
113     delete gamma;
114     delete peak;
115     }
116    
117     //--------------------------------------------------------------------------------------------------
118     CDoubleExp::CDoubleExp(RooRealVar &m, const Bool_t pass)
119     {
120     char name[10];
121     if(pass) sprintf(name,"%s","Pass");
122     else sprintf(name,"%s","Fail");
123    
124     char vname[50];
125    
126     if(pass) {
127     sprintf(vname,"t1%s",name); t1 = new RooRealVar(vname,vname,-0.20,-1.,0.);
128     sprintf(vname,"t2%s",name); t2 = new RooRealVar(vname,vname,-0.05,-1.,0.);
129     sprintf(vname,"frac%s",name); frac = new RooRealVar(vname,vname, 0.50, 0.,1.);
130     } else {
131     sprintf(vname,"t1%s",name); t1 = new RooRealVar(vname,vname,-0.20,-1.,0.);
132     sprintf(vname,"t2%s",name); t2 = new RooRealVar(vname,vname,-0.05,-1.,0.);
133     sprintf(vname,"frac%s",name); frac = new RooRealVar(vname,vname, 0.50, 0.,1.);
134     }
135    
136     sprintf(vname,"exp1%s",name);
137     exp1 = new RooExponential(vname,vname,m,*t1);
138     sprintf(vname,"exp2%s",name);
139     exp2 = new RooExponential(vname,vname,m,*t2);
140     sprintf(vname,"background%s",name);
141     model = new RooAddPdf(vname,vname,RooArgList(*exp1,*exp2),RooArgList(*frac));
142     }
143    
144     CDoubleExp::~CDoubleExp()
145     {
146     delete exp1;
147     delete exp2;
148     delete t1;
149     delete t2;
150     delete frac;
151     }
152    
153     //--------------------------------------------------------------------------------------------------
154     CLinearExp::CLinearExp(RooRealVar &m, const Bool_t pass)
155     {
156     char name[10];
157     if(pass) sprintf(name,"%s","Pass");
158     else sprintf(name,"%s","Fail");
159    
160     char aname[50];
161     sprintf(aname,"a%s",name);
162     a = new RooRealVar(aname,aname,-0,-10.,10.);
163     //a->setConstant(kTRUE);
164    
165     char tname[50];
166     sprintf(tname,"t%s",name);
167     t = new RooRealVar(tname,tname,-1e-6,-10.,0.);
168     //t->setConstant(kTRUE);
169    
170     char formula[200];
171     sprintf(formula,"(1+%s*m)*exp(%s*m)",aname,tname);
172    
173     char vname[50]; sprintf(vname,"background%s",name);
174     model = new RooGenericPdf(vname,vname,formula,RooArgList(m,*a,*t));
175     }
176    
177     CLinearExp::~CLinearExp()
178     {
179     delete a;
180     delete t;
181     }
182    
183     //--------------------------------------------------------------------------------------------------
184     CQuadraticExp::CQuadraticExp(RooRealVar &m, const Bool_t pass)
185     {
186     char name[10];
187     if(pass) sprintf(name,"%s","Pass");
188     else sprintf(name,"%s","Fail");
189    
190     char a1name[50];
191     sprintf(a1name,"a1%s",name);
192     a1 = new RooRealVar(a1name,a1name,0,-10,10.);
193     //a1->setConstant(kTRUE);
194    
195     char a2name[50];
196     sprintf(a2name,"a2%s",name);
197     a2 = new RooRealVar(a2name,a2name,0.0,-10,10);
198     //a2->setConstant(kTRUE);
199    
200     char tname[50];
201     sprintf(tname,"t%s",name);
202     t = new RooRealVar(tname,tname,-1e-6,-10.,0.);
203     //t->setConstant(kTRUE);
204    
205     char formula[200];
206     sprintf(formula,"(1+%s*m+%s*m*m)*exp(%s*m)",a1name,a2name,tname);
207    
208     char vname[50]; sprintf(vname,"background%s",name);
209     model = new RooGenericPdf(vname,vname,formula,RooArgList(m,*a1,*a2,*t));
210     }
211    
212     CQuadraticExp::~CQuadraticExp()
213     {
214     delete a1;
215     delete a2;
216     delete t;
217     }