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

# Content
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 }