CMS 3D CMS Logo

EgHLTMonElemFuncs.cc
Go to the documentation of this file.
2 
8 
9 using namespace egHLT;
10 
12  const std::string& filterName,
13  const std::string& baseName,
14  const BinData& bins) {
15  addStdHist<OffEle, float>(
16  histVec, baseName + "_energy", baseName + " reco CaloEnergy;reco CaloEnergy (GeV)", bins.energy, &OffEle::energy);
17  addStdHist<OffEle, float>(histVec, baseName + "_et", baseName + " E_{T};E_{T} (GeV)", bins.et, &OffEle::et);
18  addStdHist<OffEle, float>(histVec, baseName + "_etHigh", baseName + " E_{T};E_{T} (GeV)", bins.etHigh, &OffEle::et);
19  addStdHist<OffEle, float>(
20  histVec, baseName + "_etSC", baseName + " E^{SC}_{T};E^{SC}_{T} (GeV)", bins.et, &OffEle::etSC);
21  addStdHist<OffEle, float>(histVec, baseName + "_eta", baseName + " #eta;#eta", bins.eta, &OffEle::detEta);
22  addStdHist<OffEle, float>(histVec, baseName + "_phi", baseName + " #phi;#phi (rad)", bins.phi, &OffEle::phi);
23  // addStdHist<OffEle,int>(histVec,baseName+"_charge",baseName+" Charge; charge",bins.charge,&OffEle::charge);
24 
25  addStdHist<OffEle, float>(histVec, baseName + "_hOverE", baseName + " H/E; H/E", bins.hOverE, &OffEle::hOverE);
26  //----Morse
27  addStdHist<OffEle, float>(histVec, baseName + "_maxr9", baseName + " MAXR9 ; MAXR9", bins.maxr9, &OffEle::r9);
28  addStdHist<OffEle, float>(
29  histVec, baseName + "_HLTenergy", baseName + " HLT Energy;HLT Energy (GeV)", bins.HLTenergy, &OffEle::hltEnergy);
30  addStdHist<OffEle, float>(
31  histVec, baseName + "_HLTeta", baseName + " HLT #eta;HLT #eta", bins.HLTeta, &OffEle::hltEta);
32  addStdHist<OffEle, float>(
33  histVec, baseName + "_HLTphi", baseName + " HLT #phi;HLT #phi (rad)", bins.HLTphi, &OffEle::hltPhi);
34  //-------
35  addStdHist<OffEle, float>(
36  histVec, baseName + "_dPhiIn", baseName + " #Delta #phi_{in}; #Delta #phi_{in}", bins.dPhiIn, &OffEle::dPhiIn);
37  addStdHist<OffEle, float>(
38  histVec, baseName + "_dEtaIn", baseName + " #Delta #eta_{in}; #Delta #eta_{in}", bins.dEtaIn, &OffEle::dEtaIn);
39  addStdHist<OffEle, float>(histVec,
40  baseName + "_sigmaIEtaIEta",
41  baseName + "#sigma_{i#etai#eta}; #sigma_{i#etai#eta}",
42  bins.sigEtaEta,
44  addStdHist<OffEle, float>(histVec, baseName + "_epIn", baseName + "E/p_{in}; E/p_{in}", bins.eOverP, &OffEle::epIn);
45  addStdHist<OffEle, float>(
46  histVec, baseName + "_epOut", baseName + "E/p_{out}; E/p_{out}", bins.eOverP, &OffEle::epOut);
47  addStdHist<OffEle, float>(
48  histVec, baseName + "_invEInvP", baseName + "1/E -1/p; 1/E - 1/p", bins.invEInvP, &OffEle::invEInvP);
49 
50  addStdHist<OffEle, float>(histVec,
51  baseName + "_e2x5Over5x5",
52  baseName + "E^{2x5}/E^{5x5}; E^{2x5}/E^{5x5}",
53  bins.e2x5,
55  addStdHist<OffEle, float>(histVec,
56  baseName + "_e1x5Over5x5",
57  baseName + "E^{1x5}/E^{5x5}; E^{1x5}/E^{5x5}",
58  bins.e1x5,
60  //addStdHist<OffEle,float>(histVec,baseName+"_isolEM",baseName+"Isol EM; Isol EM (GeV)",bins.isolEm,&OffEle::isolEm);
61  //addStdHist<OffEle,float>(histVec,baseName+"_isolHad",baseName+"Isol Had; Isol Had (GeV)",bins.isolHad,&OffEle::isolHad);
62  //addStdHist<OffEle,float>(histVec,baseName+"_isolPtTrks",baseName+"Isol Pt Trks; Isol Pt Tracks (GeV/c)",bins.isolPtTrks,&OffEle::isolPtTrks);
63  addStdHist<OffEle, float>(histVec,
64  baseName + "_hltIsolTrksEle",
65  baseName + "HLT Ele Isol Trks; HLT Ele Iso Tracks (GeV/c)",
66  bins.isolPtTrks,
68  //addStdHist<OffEle,float>(histVec,baseName+"_hltIsolTrksPho",baseName+"HLT Pho Isol Trks; HLT Pho Iso Tracks (GeV/c)",bins.isolPtTrks,&OffEle::hltIsolTrksPho);
69  addStdHist<OffEle, float>(histVec,
70  baseName + "_hltIsolHad",
71  baseName + "HLT Isol Had; HLT Isol Had (GeV)",
72  bins.isolHad,
74  addStdHist<OffEle, float>(
75  histVec, baseName + "_hltIsolEm", baseName + "HLT Isol Em; HLT Isol Em (GeV)", bins.isolEm, &OffEle::hltIsolEm);
76  addStdHist<OffEle, float>(histVec,
77  baseName + "_DeltaE",
78  baseName + "HLT Energy - reco SC Energy;HLT Energy - reco SC Energy (GeV)",
79  bins.deltaE,
81 
82  histVec.push_back(new MonElemManager2D<OffEle, float, float>(iBooker,
83  baseName + "_etaVsPhi",
84  baseName + " #eta vs #phi;#eta;#phi (rad)",
85  bins.etaVsPhi.nrX,
86  bins.etaVsPhi.xMin,
87  bins.etaVsPhi.xMax,
88  bins.etaVsPhi.nrY,
89  bins.etaVsPhi.yMin,
90  bins.etaVsPhi.yMax,
92  &OffEle::phi));
93  histVec.push_back(
95  baseName + "_HLTetaVsHLTphi",
96  baseName + " HLT #eta vs HLT #phi;HLT #eta;HLT #phi (rad)",
97  bins.etaVsPhi.nrX,
98  bins.etaVsPhi.xMin,
99  bins.etaVsPhi.xMax,
100  bins.etaVsPhi.nrY,
101  bins.etaVsPhi.yMin,
102  bins.etaVsPhi.yMax,
104  &OffEle::hltPhi));
105 }
106 
108  const std::string& filterName,
109  const std::string& baseName,
110  const BinData& bins) {
111  addStdHist<OffPho, float>(
112  histVec, baseName + "_energy", baseName + " reco Energy;reco Energy (GeV)", bins.energy, &OffPho::energy);
113  addStdHist<OffPho, float>(histVec, baseName + "_et", baseName + " E_{T};E_{T} (GeV)", bins.et, &OffPho::et);
114  addStdHist<OffPho, float>(histVec, baseName + "_etHigh", baseName + " E_{T};E_{T} (GeV)", bins.etHigh, &OffPho::et);
115  addStdHist<OffPho, float>(
116  histVec, baseName + "_etSC", baseName + " E^{SC}_{T};E^{SC}_{T} (GeV)", bins.et, &OffPho::etSC);
117  addStdHist<OffPho, float>(histVec, baseName + "_eta", baseName + " #eta;#eta", bins.eta, &OffPho::detEta);
118  addStdHist<OffPho, float>(histVec, baseName + "_phi", baseName + " #phi;#phi (rad)", bins.phi, &OffPho::phi);
119 
120  addStdHist<OffPho, float>(histVec, baseName + "_hOverE", baseName + " H/E; H/E", bins.hOverE, &OffPho::hOverE);
121  //----Morse
122  //addStdHist<OffPho,float>(histVec,baseName+"_r9",baseName+" R9 ; R9",bins.r9,&OffPho::r9);
123  //addStdHist<OffPho,float>(histVec,baseName+"_minr9",baseName+" MINR9 ; MINR9",bins.minr9,&OffPho::r9);
124  addStdHist<OffPho, float>(histVec, baseName + "_maxr9", baseName + " MAXR9 ; MAXR9", bins.maxr9, &OffPho::r9);
125  addStdHist<OffPho, float>(
126  histVec, baseName + "_HLTenergy", baseName + " HLT Energy;HLT Energy (GeV)", bins.HLTenergy, &OffPho::hltEnergy);
127  addStdHist<OffPho, float>(
128  histVec, baseName + "_HLTeta", baseName + " HLT #eta;HLT #eta", bins.HLTeta, &OffPho::hltEta);
129  addStdHist<OffPho, float>(
130  histVec, baseName + "_HLTphi", baseName + " HLT #phi;HLT #phi (rad)", bins.HLTphi, &OffPho::hltPhi);
131  //-------
132  addStdHist<OffPho, float>(histVec,
133  baseName + "_sigmaIEtaIEta",
134  baseName + "#sigma_{i#etai#eta}; #sigma_{i#etai#eta}",
135  bins.sigEtaEta,
137  addStdHist<OffPho, float>(histVec,
138  baseName + "_e2x5Over5x5",
139  baseName + "E^{2x5}/E^{5x5}; E^{2x5}/E^{5x5}",
140  bins.e2x5,
142  addStdHist<OffPho, float>(histVec,
143  baseName + "_e1x5Over5x5",
144  baseName + "E^{1x5}/E^{5x5}; E^{1x5}/E^{5x5}",
145  bins.e1x5,
147  addStdHist<OffPho, float>(
148  histVec, baseName + "_isolEM", baseName + "Isol EM; Isol EM (GeV)", bins.isolEm, &OffPho::isolEm);
149  addStdHist<OffPho, float>(
150  histVec, baseName + "_isolHad", baseName + "Isol Had; Isol Had (GeV)", bins.isolHad, &OffPho::isolHad);
151  addStdHist<OffPho, float>(histVec,
152  baseName + "_isolPtTrks",
153  baseName + "Isol Pt Trks; Isol Pt Tracks (GeV/c)",
154  bins.isolPtTrks,
156  addStdHist<OffPho, int>(histVec,
157  baseName + "_isolNrTrks",
158  baseName + "Isol Nr Trks; Isol Nr Tracks",
159  bins.isolNrTrks,
161  //addStdHist<OffPho,float>(histVec,baseName+"_hltIsolTrks",baseName+"HLT Isol Trks; HLT Iso Tracks (GeV/c)",bins.isolPtTrks,&OffPho::hltIsolTrks);
162  //addStdHist<OffPho,float>(histVec,baseName+"_hltIsolHad",baseName+"HLT Isol Had; HLT Isol Had (GeV)",bins.isolPtTrks,&OffPho::hltIsolHad);
163  addStdHist<OffPho, float>(histVec,
164  baseName + "_DeltaE",
165  baseName + "HLT Energy - reco SC Energy;HLT Energy - reco SC Energy (GeV)",
166  bins.deltaE,
167  &OffPho::DeltaE);
168 
169  histVec.push_back(new MonElemManager2D<OffPho, float, float>(iBooker,
170  baseName + "_etaVsPhi",
171  baseName + " #eta vs #phi;#eta;#phi (rad)",
172  bins.etaVsPhi.nrX,
173  bins.etaVsPhi.xMin,
174  bins.etaVsPhi.xMax,
175  bins.etaVsPhi.nrY,
176  bins.etaVsPhi.yMin,
177  bins.etaVsPhi.yMax,
179  &OffPho::phi));
180  histVec.push_back(
182  baseName + "_HLTetaVsHLTphi",
183  baseName + " HLT #eta vs HLT #phi;HLT #eta;HLT #phi (rad)",
184  bins.etaVsPhi.nrX,
185  bins.etaVsPhi.xMin,
186  bins.etaVsPhi.xMax,
187  bins.etaVsPhi.nrY,
188  bins.etaVsPhi.yMin,
189  bins.etaVsPhi.yMax,
191  &OffPho::hltPhi));
192 }
193 
195  const std::string& filterName,
196  const std::string& baseName,
197  const BinData& bins) {
198  addStdHistHEP<OffEle, float>(
199  histVec, baseName + "_energy", baseName + " reco CaloEnergy;reco CaloEnergy (GeV)", bins.energy, &OffEle::energy);
200  addStdHistHEP<OffEle, float>(histVec, baseName + "_et", baseName + " E_{T};E_{T} (GeV)", bins.et, &OffEle::et);
201  addStdHistHEP<OffEle, float>(
202  histVec, baseName + "_etHigh", baseName + " E_{T};E_{T} (GeV)", bins.etHigh, &OffEle::et);
203  addStdHistHEP<OffEle, float>(
204  histVec, baseName + "_etSC", baseName + " E^{SC}_{T};E^{SC}_{T} (GeV)", bins.et, &OffEle::etSC);
205  addStdHistHEP<OffEle, float>(histVec, baseName + "_eta", baseName + " #eta;#eta", bins.eta, &OffEle::detEta);
206  addStdHistHEP<OffEle, float>(histVec, baseName + "_phi", baseName + " #phi;#phi (rad)", bins.phi, &OffEle::phi);
207  // addStdHist<OffEle,int>(histVec,baseName+"_charge",baseName+" Charge; charge",bins.charge,&OffEle::charge);
208 
209  addStdHistHEP<OffEle, float>(histVec, baseName + "_hOverE", baseName + " H/E; H/E", bins.hOverE, &OffEle::hOverE);
210  //----Morse
211  addStdHistHEP<OffEle, float>(histVec, baseName + "_maxr9", baseName + " MAXR9 ; MAXR9", bins.maxr9, &OffEle::r9);
212  addStdHistHEP<OffEle, float>(
213  histVec, baseName + "_HLTenergy", baseName + " HLT Energy;HLT Energy (GeV)", bins.HLTenergy, &OffEle::hltEnergy);
214  addStdHistHEP<OffEle, float>(
215  histVec, baseName + "_HLTeta", baseName + " HLT #eta;HLT #eta", bins.HLTeta, &OffEle::hltEta);
216  addStdHistHEP<OffEle, float>(
217  histVec, baseName + "_HLTphi", baseName + " HLT #phi;HLT #phi (rad)", bins.HLTphi, &OffEle::hltPhi);
218  //-------
219  addStdHistHEP<OffEle, float>(
220  histVec, baseName + "_dPhiIn", baseName + " #Delta #phi_{in}; #Delta #phi_{in}", bins.dPhiIn, &OffEle::dPhiIn);
221  addStdHistHEP<OffEle, float>(
222  histVec, baseName + "_dEtaIn", baseName + " #Delta #eta_{in}; #Delta #eta_{in}", bins.dEtaIn, &OffEle::dEtaIn);
223  addStdHistHEP<OffEle, float>(histVec,
224  baseName + "_sigmaIEtaIEta",
225  baseName + "#sigma_{i#etai#eta}; #sigma_{i#etai#eta}",
226  bins.sigEtaEta,
228  addStdHistHEP<OffEle, float>(
229  histVec, baseName + "_epIn", baseName + "E/p_{in}; E/p_{in}", bins.eOverP, &OffEle::epIn);
230  addStdHistHEP<OffEle, float>(
231  histVec, baseName + "_epOut", baseName + "E/p_{out}; E/p_{out}", bins.eOverP, &OffEle::epOut);
232  addStdHistHEP<OffEle, float>(
233  histVec, baseName + "_invEInvP", baseName + "1/E -1/p; 1/E - 1/p", bins.invEInvP, &OffEle::invEInvP);
234 
235  addStdHistHEP<OffEle, float>(histVec,
236  baseName + "_e2x5Over5x5",
237  baseName + "E^{2x5}/E^{5x5}; E^{2x5}/E^{5x5}",
238  bins.e2x5,
240  addStdHistHEP<OffEle, float>(histVec,
241  baseName + "_e1x5Over5x5",
242  baseName + "E^{1x5}/E^{5x5}; E^{1x5}/E^{5x5}",
243  bins.e1x5,
245  //addStdHist<OffEle,float>(histVec,baseName+"_isolEM",baseName+"Isol EM; Isol EM (GeV)",bins.isolEm,&OffEle::isolEm);
246  //addStdHist<OffEle,float>(histVec,baseName+"_isolHad",baseName+"Isol Had; Isol Had (GeV)",bins.isolHad,&OffEle::isolHad);
247  //addStdHist<OffEle,float>(histVec,baseName+"_isolPtTrks",baseName+"Isol Pt Trks; Isol Pt Tracks (GeV/c)",bins.isolPtTrks,&OffEle::isolPtTrks);
248  addStdHistHEP<OffEle, float>(histVec,
249  baseName + "_hltIsolTrksEle",
250  baseName + "HLT Ele Isol Trks; HLT Ele Iso Tracks (GeV/c)",
251  bins.isolPtTrks,
253  //addStdHist<OffEle,float>(histVec,baseName+"_hltIsolTrksPho",baseName+"HLT Pho Isol Trks; HLT Pho Iso Tracks (GeV/c)",bins.isolPtTrks,&OffEle::hltIsolTrksPho);
254  addStdHistHEP<OffEle, float>(histVec,
255  baseName + "_hltIsolHad",
256  baseName + "HLT Isol Had; HLT Isol Had (GeV)",
257  bins.isolHad,
259  addStdHistHEP<OffEle, float>(
260  histVec, baseName + "_hltIsolEm", baseName + "HLT Isol Em; HLT Isol Em (GeV)", bins.isolEm, &OffEle::hltIsolEm);
261  addStdHistHEP<OffEle, float>(histVec,
262  baseName + "_DeltaE",
263  baseName + "HLT Energy - reco SC Energy;HLT Energy - reco SC Energy (GeV)",
264  bins.deltaE,
265  &OffEle::DeltaE);
266  /*
267  histVec.push_back(new MonElemManager2D<OffEle,float,float>(iBooker, baseName+"_etaVsPhi",
268  baseName+" #eta vs #phi;#eta;#phi (rad)",
269  bins.etaVsPhi.nrX,bins.etaVsPhi.xMin,bins.etaVsPhi.xMax,
270  bins.etaVsPhi.nrY,bins.etaVsPhi.yMin,bins.etaVsPhi.yMax,
271  &OffEle::detEta,&OffEle::phi));
272  histVec.push_back(new MonElemManager2D<OffEle,float,float>(iBooker, baseName+"_HLTetaVsHLTphi",
273  baseName+" HLT #eta vs HLT #phi;HLT #eta;HLT #phi (rad)",
274  bins.etaVsPhi.nrX,bins.etaVsPhi.xMin,bins.etaVsPhi.xMax,
275  bins.etaVsPhi.nrY,bins.etaVsPhi.yMin,bins.etaVsPhi.yMax,
276  &OffEle::hltEta,&OffEle::hltPhi));
277 */
278 }
279 
281  const std::string& filterName,
282  const std::string& baseName,
283  const BinData& bins) {
284  addStdHistHEP<OffPho, float>(
285  histVec, baseName + "_energy", baseName + " reco Energy;reco Energy (GeV)", bins.energy, &OffPho::energy);
286  addStdHistHEP<OffPho, float>(histVec, baseName + "_et", baseName + " E_{T};E_{T} (GeV)", bins.et, &OffPho::et);
287  addStdHistHEP<OffPho, float>(
288  histVec, baseName + "_etHigh", baseName + " E_{T};E_{T} (GeV)", bins.etHigh, &OffPho::et);
289  addStdHistHEP<OffPho, float>(
290  histVec, baseName + "_etSC", baseName + " E^{SC}_{T};E^{SC}_{T} (GeV)", bins.et, &OffPho::etSC);
291  addStdHistHEP<OffPho, float>(histVec, baseName + "_eta", baseName + " #eta;#eta", bins.eta, &OffPho::detEta);
292  addStdHistHEP<OffPho, float>(histVec, baseName + "_phi", baseName + " #phi;#phi (rad)", bins.phi, &OffPho::phi);
293 
294  addStdHistHEP<OffPho, float>(histVec, baseName + "_hOverE", baseName + " H/E; H/E", bins.hOverE, &OffPho::hOverE);
295  //----Morse
296  //addStdHist<OffPho,float>(histVec,baseName+"_r9",baseName+" R9 ; R9",bins.r9,&OffPho::r9);
297  //addStdHist<OffPho,float>(histVec,baseName+"_minr9",baseName+" MINR9 ; MINR9",bins.minr9,&OffPho::r9);
298  addStdHistHEP<OffPho, float>(histVec, baseName + "_maxr9", baseName + " MAXR9 ; MAXR9", bins.maxr9, &OffPho::r9);
299  addStdHistHEP<OffPho, float>(
300  histVec, baseName + "_HLTenergy", baseName + " HLT Energy;HLT Energy (GeV)", bins.HLTenergy, &OffPho::hltEnergy);
301  addStdHistHEP<OffPho, float>(
302  histVec, baseName + "_HLTeta", baseName + " HLT #eta;HLT #eta", bins.HLTeta, &OffPho::hltEta);
303  addStdHistHEP<OffPho, float>(
304  histVec, baseName + "_HLTphi", baseName + " HLT #phi;HLT #phi (rad)", bins.HLTphi, &OffPho::hltPhi);
305  //-------
306  addStdHistHEP<OffPho, float>(histVec,
307  baseName + "_sigmaIEtaIEta",
308  baseName + "#sigma_{i#etai#eta}; #sigma_{i#etai#eta}",
309  bins.sigEtaEta,
311  addStdHistHEP<OffPho, float>(histVec,
312  baseName + "_e2x5Over5x5",
313  baseName + "E^{2x5}/E^{5x5}; E^{2x5}/E^{5x5}",
314  bins.e2x5,
316  addStdHistHEP<OffPho, float>(histVec,
317  baseName + "_e1x5Over5x5",
318  baseName + "E^{1x5}/E^{5x5}; E^{1x5}/E^{5x5}",
319  bins.e1x5,
321  addStdHistHEP<OffPho, float>(
322  histVec, baseName + "_isolEM", baseName + "Isol EM; Isol EM (GeV)", bins.isolEm, &OffPho::isolEm);
323  addStdHistHEP<OffPho, float>(
324  histVec, baseName + "_isolHad", baseName + "Isol Had; Isol Had (GeV)", bins.isolHad, &OffPho::isolHad);
325  addStdHistHEP<OffPho, float>(histVec,
326  baseName + "_isolPtTrks",
327  baseName + "Isol Pt Trks; Isol Pt Tracks (GeV/c)",
328  bins.isolPtTrks,
330  addStdHistHEP<OffPho, int>(histVec,
331  baseName + "_isolNrTrks",
332  baseName + "Isol Nr Trks; Isol Nr Tracks",
333  bins.isolNrTrks,
335  //addStdHist<OffPho,float>(histVec,baseName+"_hltIsolTrks",baseName+"HLT Isol Trks; HLT Iso Tracks (GeV/c)",bins.isolPtTrks,&OffPho::hltIsolTrks);
336  //addStdHist<OffPho,float>(histVec,baseName+"_hltIsolHad",baseName+"HLT Isol Had; HLT Isol Had (GeV)",bins.isolPtTrks,&OffPho::hltIsolHad);
337  addStdHistHEP<OffPho, float>(histVec,
338  baseName + "_DeltaE",
339  baseName + "HLT Energy - reco SC Energy;HLT Energy - reco SC Energy (GeV)",
340  bins.deltaE,
341  &OffPho::DeltaE);
342  /* histVec.push_back(new MonElemManager2D<OffPho,float,float>(iBooker, baseName+"_etaVsPhi",
343  baseName+" #eta vs #phi;#eta;#phi (rad)",
344  bins.etaVsPhi.nrX,bins.etaVsPhi.xMin,bins.etaVsPhi.xMax,
345  bins.etaVsPhi.nrY,bins.etaVsPhi.yMin,bins.etaVsPhi.yMax,
346  &OffPho::detEta,&OffPho::phi));
347  histVec.push_back(new MonElemManager2D<OffPho,float,float>(iBooker, baseName+"_HLTetaVsHLTphi",
348  baseName+" HLT #eta vs HLT #phi;HLT #eta;HLT #phi (rad)",
349  bins.etaVsPhi.nrX,bins.etaVsPhi.xMin,bins.etaVsPhi.xMax,
350  bins.etaVsPhi.nrY,bins.etaVsPhi.yMin,bins.etaVsPhi.yMax,
351  &OffPho::hltEta,&OffPho::hltPhi));
352 
353 */
354 }
355 
357  const std::string& filterName,
358  const std::string& baseName,
359  const BinData::Data1D& bins,
360  float (OffEle::*vsVarFunc)() const,
361  const CutMasks& masks) {
362  initStdEffHists(histVec, filterName, baseName, bins.nr, bins.min, bins.max, vsVarFunc, masks);
363 }
364 
366  const std::string& filterName,
367  const std::string& baseName,
368  const BinData::Data1D& bins,
369  float (OffPho::*vsVarFunc)() const,
370  const CutMasks& masks) {
371  initStdEffHists(histVec, filterName, baseName, bins.nr, bins.min, bins.max, vsVarFunc, masks);
372 }
373 
375  const std::string& filterName,
376  const std::string& baseName,
377  int nrBins,
378  double xMin,
379  double xMax,
380  float (OffEle::*vsVarFunc)() const,
381  const CutMasks& masks) {
382  //some convience typedefs, I hate typedefs but atleast here where they are defined is obvious
383  using VarCut = EgHLTDQMVarCut<egHLT::OffEle>;
384  typedef MonElemWithCutEBEE<OffEle, float> MonElemFloat;
385  int stdCutCode = masks.stdEle;
386 
387  //first do the zero and all cuts histograms
388  histVec.push_back(
389  new MonElemFloat(iBooker, baseName + "_noCuts", baseName + " NoCuts", nrBins, xMin, xMax, vsVarFunc));
390  histVec.push_back(new MonElemFloat(iBooker,
391  baseName + "_allCuts",
392  baseName + " All Cuts",
393  nrBins,
394  xMin,
395  xMax,
396  vsVarFunc,
397  new VarCut(stdCutCode, &OffEle::cutCode)));
398 
399  //now for the n-1
400  histVec.push_back(new MonElemFloat(iBooker,
401  baseName + "_n1_dEtaIn",
402  baseName + " N1 #Delta#eta_{in}",
403  nrBins,
404  xMin,
405  xMax,
406  vsVarFunc,
407  new VarCut(~EgCutCodes::DETAIN & stdCutCode, &OffEle::cutCode)));
408  histVec.push_back(new MonElemFloat(iBooker,
409  baseName + "_n1_dPhiIn",
410  baseName + " N1 #Delta#phi_{in}",
411  nrBins,
412  xMin,
413  xMax,
414  vsVarFunc,
415  new VarCut(~EgCutCodes::DPHIIN & stdCutCode, &OffEle::cutCode)));
416  histVec.push_back(new MonElemFloat(iBooker,
417  baseName + "_n1_sigmaIEtaIEta",
418  baseName + " N1 #sigma_{i#etai#eta}",
419  nrBins,
420  xMin,
421  xMax,
422  vsVarFunc,
423  new VarCut(~EgCutCodes::SIGMAIETAIETA & stdCutCode, &OffEle::cutCode)));
424  histVec.push_back(new MonElemFloat(iBooker,
425  baseName + "_n1_hOverE",
426  baseName + " N1 H/E",
427  nrBins,
428  xMin,
429  xMax,
430  vsVarFunc,
431  new VarCut(~EgCutCodes::HADEM & stdCutCode, &OffEle::cutCode)));
432  /* histVec.push_back(new MonElemFloat(iBooker,baseName+"_n1_isolEm",baseName+" N1 Isol Em",nrBins,xMin,xMax,vsVarFunc,
433  new VarCut(~EgCutCodes::ISOLEM&stdCutCode,&OffEle::cutCode)));
434  histVec.push_back(new MonElemFloat(iBooker,baseName+"_n1_isolHad",baseName+" N1 Isol Had",nrBins,xMin,xMax,vsVarFunc,
435  new VarCut(~EgCutCodes::ISOLHAD&stdCutCode,&OffEle::cutCode)));
436  histVec.push_back(new MonElemFloat(iBooker,baseName+"_n1_isolPtTrks",baseName+" N1 Isol Tracks",nrBins,xMin,xMax,vsVarFunc,
437  new VarCut(~EgCutCodes::ISOLPTTRKS&stdCutCode,&OffEle::cutCode)));*/
438  histVec.push_back(new MonElemFloat(iBooker,
439  baseName + "_n1_hltIsolEm",
440  baseName + " N1 HLT Isol Em",
441  nrBins,
442  xMin,
443  xMax,
444  vsVarFunc,
445  new VarCut(~EgCutCodes::HLTISOLEM & stdCutCode, &OffEle::cutCode)));
446  histVec.push_back(new MonElemFloat(iBooker,
447  baseName + "_n1_hltIsolHad",
448  baseName + " N1 HLT Isol Had",
449  nrBins,
450  xMin,
451  xMax,
452  vsVarFunc,
453  new VarCut(~EgCutCodes::HLTISOLHAD & stdCutCode, &OffEle::cutCode)));
454  histVec.push_back(new MonElemFloat(iBooker,
455  baseName + "_n1_hltIsolTrksEle",
456  baseName + " N1 HLT Isol Tracks Ele ",
457  nrBins,
458  xMin,
459  xMax,
460  vsVarFunc,
461  new VarCut(~EgCutCodes::HLTISOLTRKSELE & stdCutCode, &OffEle::cutCode)));
462  histVec.push_back(new MonElemFloat(iBooker,
463  baseName + "_single_dEtaIn",
464  baseName + " Single #Delta#eta_{in}",
465  nrBins,
466  xMin,
467  xMax,
468  vsVarFunc,
469  new VarCut(EgCutCodes::DETAIN, &OffEle::cutCode)));
470  histVec.push_back(new MonElemFloat(iBooker,
471  baseName + "_single_dPhiIn",
472  baseName + " Single #Delta#phi_{in}",
473  nrBins,
474  xMin,
475  xMax,
476  vsVarFunc,
477  new VarCut(EgCutCodes::DPHIIN, &OffEle::cutCode)));
478  histVec.push_back(new MonElemFloat(iBooker,
479  baseName + "_single_sigmaIEtaIEta",
480  baseName + " Single #sigma_{i#etai#eta}",
481  nrBins,
482  xMin,
483  xMax,
484  vsVarFunc,
486  histVec.push_back(new MonElemFloat(iBooker,
487  baseName + "_single_hOverE",
488  baseName + " Single H/E",
489  nrBins,
490  xMin,
491  xMax,
492  vsVarFunc,
493  new VarCut(EgCutCodes::HADEM, &OffEle::cutCode)));
494  /* histVec.push_back(new MonElemFloat(iBooker,baseName+"_single_isolEm",baseName+" Single Isol Em",nrBins,xMin,xMax,vsVarFunc,
495  new VarCut(EgCutCodes::ISOLEM,&OffEle::cutCode)));
496  histVec.push_back(new MonElemFloat(iBooker,baseName+"_single_isolHad",baseName+" Single Isol Had",nrBins,xMin,xMax,vsVarFunc,
497  new VarCut(EgCutCodes::ISOLHAD,&OffEle::cutCode)));
498  histVec.push_back(new MonElemFloat(iBooker,baseName+"_single_isolPtTrks",baseName+" Single Isol Tracks",nrBins,xMin,xMax,vsVarFunc,
499  new VarCut(EgCutCodes::ISOLPTTRKS,&OffEle::cutCode)));*/
500  histVec.push_back(new MonElemFloat(iBooker,
501  baseName + "_single_hltIsolEm",
502  baseName + " Single HLT Isol Em",
503  nrBins,
504  xMin,
505  xMax,
506  vsVarFunc,
507  new VarCut(EgCutCodes::HLTISOLEM, &OffEle::cutCode)));
508  histVec.push_back(new MonElemFloat(iBooker,
509  baseName + "_single_hltIsolHad",
510  baseName + " Single HLT Isol Had",
511  nrBins,
512  xMin,
513  xMax,
514  vsVarFunc,
515  new VarCut(EgCutCodes::HLTISOLHAD, &OffEle::cutCode)));
516  histVec.push_back(new MonElemFloat(iBooker,
517  baseName + "_single_hltIsolTrksEle",
518  baseName + " Single HLT Isol Tracks Ele ",
519  nrBins,
520  xMin,
521  xMax,
522  vsVarFunc,
524  /*histVec.push_back(new MonElemFloat(iBooker,baseName+"_single_hltIsolTrksPho",baseName+" Single HLT Isol Tracks Pho ",nrBins,xMin,xMax,vsVarFunc,
525  new VarCut(EgCutCodes::HLTISOLTRKSPHO,&OffEle::cutCode)));*/
526 }
527 
529  const std::string& filterName,
530  const std::string& baseName,
531  int nrBins,
532  double xMin,
533  double xMax,
534  float (OffPho::*vsVarFunc)() const,
535  const CutMasks& masks) {
536  //some convenience typedefs, I hate typedefs but atleast here where they are defined is obvious
537  using VarCut = EgHLTDQMVarCut<egHLT::OffPho>;
538  typedef MonElemWithCutEBEE<OffPho, float> MonElemFloat;
539  int stdCutCode = masks.stdPho;
540 
541  histVec.push_back(
542  new MonElemFloat(iBooker, baseName + "_noCuts", baseName + " NoCuts", nrBins, xMin, xMax, vsVarFunc));
543  histVec.push_back(new MonElemFloat(iBooker,
544  baseName + "_allCuts",
545  baseName + " All Cuts",
546  nrBins,
547  xMin,
548  xMax,
549  vsVarFunc,
550  new VarCut(stdCutCode, &OffPho::cutCode)));
551 
552  histVec.push_back(new MonElemFloat(iBooker,
553  baseName + "_n1_sigmaIEtaIEta",
554  baseName + " N1 #sigma_{i#etai#eta}",
555  nrBins,
556  xMin,
557  xMax,
558  vsVarFunc,
559  new VarCut(~EgCutCodes::SIGMAIETAIETA & stdCutCode, &OffPho::cutCode)));
560  //-----Morse------
561  histVec.push_back(new MonElemFloat(iBooker,
562  baseName + "_n1_hOverE",
563  baseName + " N1 H/E",
564  nrBins,
565  xMin,
566  xMax,
567  vsVarFunc,
568  new VarCut(~EgCutCodes::HADEM & stdCutCode, &OffPho::cutCode))); //---BUG FIX!!--
569  /*histVec.push_back(new MonElemFloat(iBooker,baseName+"_n1_minr9",baseName+" N1 MINR9",nrBins,xMin,xMax,vsVarFunc,
570  new VarCut(~EgCutCodes::MINR9&stdCutCode,&OffPho::cutCode)));
571  histVec.push_back(new MonElemFloat(iBooker,baseName+"_n1_maxr9",baseName+" N1 MAXR9",nrBins,xMin,xMax,vsVarFunc,
572  new VarCut(~EgCutCodes::MAXR9&stdCutCode,&OffPho::cutCode)));*/
573  //----------------
574  histVec.push_back(new MonElemFloat(iBooker,
575  baseName + "_n1_isolEm",
576  baseName + " N1 Isol Em",
577  nrBins,
578  xMin,
579  xMax,
580  vsVarFunc,
581  new VarCut(~EgCutCodes::ISOLEM & stdCutCode, &OffPho::cutCode)));
582  histVec.push_back(new MonElemFloat(iBooker,
583  baseName + "_n1_isolHad",
584  baseName + " N1 Isol Had",
585  nrBins,
586  xMin,
587  xMax,
588  vsVarFunc,
589  new VarCut(~EgCutCodes::ISOLHAD & stdCutCode, &OffPho::cutCode)));
590  histVec.push_back(new MonElemFloat(iBooker,
591  baseName + "_n1_isolPtTrks",
592  baseName + " N1 Pt Isol Tracks",
593  nrBins,
594  xMin,
595  xMax,
596  vsVarFunc,
597  new VarCut(~EgCutCodes::ISOLPTTRKS & stdCutCode, &OffPho::cutCode)));
598  histVec.push_back(new MonElemFloat(iBooker,
599  baseName + "_n1_isolNrTrks",
600  baseName + " N1 Nr Isol Tracks",
601  nrBins,
602  xMin,
603  xMax,
604  vsVarFunc,
605  new VarCut(~EgCutCodes::ISOLNRTRKS & stdCutCode, &OffPho::cutCode)));
606 
607  histVec.push_back(new MonElemFloat(iBooker,
608  baseName + "_single_hOverE",
609  baseName + " Single H/E",
610  nrBins,
611  xMin,
612  xMax,
613  vsVarFunc,
614  new VarCut(EgCutCodes::HADEM, &OffPho::cutCode)));
615  histVec.push_back(new MonElemFloat(iBooker,
616  baseName + "_single_sigmaIEtaIEta",
617  baseName + " Single #sigma_{i#etai#eta}",
618  nrBins,
619  xMin,
620  xMax,
621  vsVarFunc,
623  histVec.push_back(new MonElemFloat(iBooker,
624  baseName + "_single_isolEm",
625  baseName + " Single Isol Em",
626  nrBins,
627  xMin,
628  xMax,
629  vsVarFunc,
630  new VarCut(~EgCutCodes::ISOLEM, &OffPho::cutCode)));
631  histVec.push_back(new MonElemFloat(iBooker,
632  baseName + "_single_isolHad",
633  baseName + " Single Isol Had",
634  nrBins,
635  xMin,
636  xMax,
637  vsVarFunc,
638  new VarCut(~EgCutCodes::ISOLHAD, &OffPho::cutCode)));
639  histVec.push_back(new MonElemFloat(iBooker,
640  baseName + "_single_isolPtTrks",
641  baseName + " Single Pt Isol Tracks",
642  nrBins,
643  xMin,
644  xMax,
645  vsVarFunc,
646  new VarCut(~EgCutCodes::ISOLPTTRKS, &OffPho::cutCode)));
647  /*histVec.push_back(new MonElemFloat(iBooker,baseName+"_single_hltIsolHad",baseName+" Single HLT Isol Had",nrBins,xMin,xMax,vsVarFunc,
648  new VarCut(EgCutCodes::HLTISOLHAD,&OffPho::cutCode)));
649  histVec.push_back(new MonElemFloat(iBooker,baseName+"_single_hltIsolTrksPho",baseName+" Single HLT Isol Tracks Pho ",nrBins,xMin,xMax,vsVarFunc,
650  new VarCut(EgCutCodes::HLTISOLTRKSPHO,&OffPho::cutCode)));*/
651 }
652 
653 //we own the passed in cut, so we give it to the first mon element and then clone it after that
654 //only currently used for trigger tag and probe
656  const std::string& filterName,
657  const std::string& baseName,
658  const BinData& bins,
660  histVec.push_back(new MonElemWithCutEBEE<OffEle, float>(iBooker,
661  baseName + "_et",
662  baseName + " E_{T};E_{T} (GeV)",
663  bins.et.nr,
664  bins.et.min,
665  bins.et.max,
666  &OffEle::et,
667  cut));
668  histVec.push_back(new MonElemWithCutEBEE<OffEle, float>(iBooker,
669  baseName + "_eta",
670  baseName + " #eta;#eta",
671  bins.eta.nr,
672  bins.eta.min,
673  bins.eta.max,
675  cut ? cut->clone() : nullptr));
676  histVec.push_back(new MonElemWithCutEBEE<OffEle, float>(iBooker,
677  baseName + "_phi",
678  baseName + " #phi;#phi (rad)",
679  bins.phi.nr,
680  bins.phi.min,
681  bins.phi.max,
682  &OffEle::phi,
683  cut ? cut->clone() : nullptr));
684  histVec.push_back(new MonElemWithCutEBEE<OffEle, int>(iBooker,
685  baseName + "_nVertex",
686  baseName + " nVertex;nVertex",
687  bins.nVertex.nr,
688  bins.nVertex.min,
689  bins.nVertex.max,
691  cut ? cut->clone() : nullptr));
692  /* histVec.push_back(new MonElemWithCutEBEE<OffEle,int>(iBooker,baseName+"_charge",
693  baseName+" Charge; charge",
694  bins.charge.nr,bins.charge.min,bins.charge.max,
695  &OffEle::charge,cut ? cut->clone():NULL)); */
696 }
697 
699  const std::string& filterName,
700  const std::string& baseName,
701  const BinData& bins,
703  histVec.push_back(new MonElemWithCutEBEE<OffPho, float>(iBooker,
704  baseName + "_et",
705  baseName + " E_{T};E_{T} (GeV)",
706  bins.et.nr,
707  bins.et.min,
708  bins.et.max,
709  &OffPho::et,
710  cut));
711  histVec.push_back(new MonElemWithCutEBEE<OffPho, float>(iBooker,
712  baseName + "_eta",
713  baseName + " #eta;#eta",
714  bins.eta.nr,
715  bins.eta.min,
716  bins.eta.max,
718  cut ? cut->clone() : nullptr));
719  histVec.push_back(new MonElemWithCutEBEE<OffPho, float>(iBooker,
720  baseName + "_phi",
721  baseName + " #phi;#phi (rad)",
722  bins.phi.nr,
723  bins.phi.min,
724  bins.phi.max,
725  &OffPho::phi,
726  cut ? cut->clone() : nullptr));
727  /* histVec.push_back(new MonElemWithCutEBEE<OffPho,int>(iBooker,baseName+"_charge",
728  baseName+" Charge; charge",
729  bins.charge.nr,bins.charge.min,bins.charge.max,
730  &OffPho::charge,cut ? cut->clone():NULL)); */
731 }
732 
733 //we transfer ownership of eleCut to addTrigLooseTrigHist which transfers it to the eleMonElems
735  const std::vector<std::string>& tightLooseTrigs,
736  const BinData& bins,
737  EgHLTDQMCut<OffEle>* eleCut) {
738  for (size_t trigNr = 0; trigNr < tightLooseTrigs.size(); trigNr++) {
739  std::vector<std::string> splitString;
740  boost::split(splitString, tightLooseTrigs[trigNr], boost::is_any_of(std::string(":")));
741  if (splitString.size() != 2)
742  continue; //format incorrect
743  const std::string& tightTrig = splitString[0];
744  const std::string& looseTrig = splitString[1];
745  //this step is necessary as we want to transfer ownership of eleCut to the addTrigLooseTrigHist func on the last iteration
746  //but clone it before that
747  //perhaps my object ownership rules need to be re-evalulated
748  if (trigNr != tightLooseTrigs.size() - 2)
749  addTightLooseTrigHist(eleMonElems, tightTrig, looseTrig, eleCut->clone(), "gsfEle", bins);
750  else
751  addTightLooseTrigHist(eleMonElems, tightTrig, looseTrig, eleCut, "gsfEle", bins);
752  }
753 }
754 
756  const std::vector<std::string>& tightLooseTrigs,
757  const BinData& bins,
758  EgHLTDQMCut<OffPho>* phoCut) {
759  for (size_t trigNr = 0; trigNr < tightLooseTrigs.size(); trigNr++) {
760  std::vector<std::string> splitString;
761  boost::split(splitString, tightLooseTrigs[trigNr], boost::is_any_of(std::string(":")));
762  if (splitString.size() != 2)
763  continue; //format incorrect
764  const std::string& tightTrig = splitString[0];
765  const std::string& looseTrig = splitString[1];
766 
767  //this step is necessary as we want to transfer ownership of phoCut to the addTrigLooseTrigHist func on the last iteration
768  //but clone it before that
769  //perhaps my object ownership rules need to be re-evalulated
770  if (trigNr != tightLooseTrigs.size() - 2)
771  addTightLooseTrigHist(phoMonElems, tightTrig, looseTrig, phoCut->clone(), "pho", bins);
772  else
773  addTightLooseTrigHist(phoMonElems, tightTrig, looseTrig, phoCut, "pho", bins);
774  }
775 }
776 
777 //there is nothing electron specific here, will template at some point
779  const std::string& tightTrig,
780  const std::string& looseTrig,
781  EgHLTDQMCut<OffEle>* eleCut,
782  const std::string& histId,
783  const BinData& bins) {
784  MonElemContainer<OffEle>* passMonElem = nullptr;
785  passMonElem = new MonElemContainer<OffEle>(
786  tightTrig + "_" + looseTrig + "_" + histId + "_passTrig",
787  "",
788  &(*(new EgMultiCut<OffEle>) << new EgObjTrigCut<OffEle>(trigCodes.getCode(tightTrig + ":" + looseTrig),
790  << eleCut->clone()));
791 
792  MonElemContainer<OffEle>* failMonElem = nullptr;
793  failMonElem =
794  new MonElemContainer<OffEle>(tightTrig + "_" + looseTrig + "_" + histId + "_failTrig",
795  "",
796  &(*(new EgMultiCut<OffEle>) << new EgObjTrigCut<OffEle>(trigCodes.getCode(looseTrig),
798  trigCodes.getCode(tightTrig))
799  << eleCut));
800 
801  MonElemFuncs::initStdEleHists(passMonElem->monElems(), tightTrig + "_" + looseTrig, passMonElem->name(), bins);
802  MonElemFuncs::initStdEleHists(failMonElem->monElems(), tightTrig + "_" + looseTrig, failMonElem->name(), bins);
803  eleMonElems.push_back(passMonElem);
804  eleMonElems.push_back(failMonElem);
805 }
806 
807 //there is nothing photon specific here, will template at some point
809  const std::string& tightTrig,
810  const std::string& looseTrig,
811  EgHLTDQMCut<OffPho>* phoCut,
812  const std::string& histId,
813  const BinData& bins) {
814  MonElemContainer<OffPho>* passMonElem = nullptr;
815  passMonElem = new MonElemContainer<OffPho>(
816  tightTrig + "_" + looseTrig + "_" + histId + "_passTrig",
817  "",
818  &(*(new EgMultiCut<OffPho>) << new EgObjTrigCut<OffPho>(trigCodes.getCode(tightTrig + ":" + looseTrig),
820  << phoCut->clone()));
821 
822  MonElemContainer<OffPho>* failMonElem = nullptr;
823  failMonElem =
824  new MonElemContainer<OffPho>(tightTrig + "_" + looseTrig + "_" + histId + "_failTrig",
825  "",
826  &(*(new EgMultiCut<OffPho>) << new EgObjTrigCut<OffPho>(trigCodes.getCode(looseTrig),
828  trigCodes.getCode(tightTrig))
829  << phoCut));
830 
831  MonElemFuncs::initStdPhoHists(passMonElem->monElems(), tightTrig + "_" + looseTrig, passMonElem->name(), bins);
832  MonElemFuncs::initStdPhoHists(failMonElem->monElems(), tightTrig + "_" + looseTrig, failMonElem->name(), bins);
833  phoMonElems.push_back(passMonElem);
834  phoMonElems.push_back(failMonElem);
835 }
836 
837 //we transfer ownership of eleCut to the monitor elements
839  const std::vector<std::string>& tightLooseTrigs,
840  const BinData& bins) {
841  for (auto const& tightLooseTrig : tightLooseTrigs) {
842  std::vector<std::string> splitString;
843  boost::split(splitString, tightLooseTrig, boost::is_any_of(std::string(":")));
844  if (splitString.size() != 2)
845  continue; //format incorrect
846  const std::string& tightTrig = splitString[0];
847  const std::string& looseTrig = splitString[1];
848  EgHLTDQMCut<OffEle>* eleCut =
850  addTightLooseTrigHist(eleMonElems, tightTrig, looseTrig, eleCut, "gsfEle_trigCuts", bins);
851  }
852 }
853 
854 //we transfer ownership of phoCut to the monitor elements
856  const std::vector<std::string>& tightLooseTrigs,
857  const BinData& bins) {
858  for (auto const& tightLooseTrig : tightLooseTrigs) {
859  std::vector<std::string> splitString;
860  boost::split(splitString, tightLooseTrig, boost::is_any_of(std::string(":")));
861  if (splitString.size() != 2)
862  continue; //format incorrect
863  const std::string& tightTrig = splitString[0];
864  const std::string& looseTrig = splitString[1];
865  EgHLTDQMCut<OffPho>* phoCut =
867  addTightLooseTrigHist(phoMonElems, tightTrig, looseTrig, phoCut, "pho_trigCuts", bins);
868  }
869 }
870 
871 //we transfer ownership of eleCut to the monitor elements
873  const std::vector<std::string>& tightLooseTrigs,
874  const BinData& bins) {
875  for (auto const& tightLooseTrig : tightLooseTrigs) {
876  std::vector<std::string> splitString;
877  boost::split(splitString, tightLooseTrig, boost::is_any_of(std::string(":")));
878  if (splitString.size() != 2)
879  continue; //format incorrect
880  const std::string& tightTrig = splitString[0];
881  const std::string& looseTrig = splitString[1];
882  EgHLTDQMCut<OffEle>* eleCut =
884  addTightLooseTrigHist(eleMonElems, tightTrig, looseTrig, eleCut, "gsfEle_trigCuts", bins);
885  }
886 }
887 
888 //we transfer ownership of phoCut to the monitor elements
890  const std::vector<std::string>& tightLooseTrigs,
891  const BinData& bins) {
892  for (auto const& tightLooseTrig : tightLooseTrigs) {
893  std::vector<std::string> splitString;
894  boost::split(splitString, tightLooseTrig, boost::is_any_of(std::string(":")));
895  if (splitString.size() != 2)
896  continue; //format incorrect
897  const std::string& tightTrig = splitString[0];
898  const std::string& looseTrig = splitString[1];
899  EgHLTDQMCut<OffPho>* phoCut =
901  addTightLooseTrigHist(phoMonElems, tightTrig, looseTrig, phoCut, "pho_trigCuts", bins);
902  }
903 }
904 
905 //tag and probe trigger efficiencies
906 //this is to measure the trigger efficiency with respect to a fully selected offline electron
907 //using a tag and probe technique (note: this will be different to the trigger efficiency normally calculated)
909  const std::vector<std::string>& filterNames,
910  int cutMask,
911  const BinData& bins) {
912  for (const auto& trigName : filterNames) {
913  // float etCutValue = trigTools::getSecondEtThresFromName(trigName);
914  float etCutValue = 0.;
915  //std::cout<<"TrigName= "<<trigName<<" etCutValue= "<<etCutValue<<std::endl;
917  "trigTagProbe",
918  "Trigger Tag and Probe",
919  new EgTrigTagProbeCut_New(trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
920  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17HEDoubleFiltesr"),
921  cutMask,
922  &OffEle::cutCode));
923  //this is all that pass trigtagprobecut
925  trigName,
926  trigName + "_" + monElemCont->name() + "_gsfEle_all",
927  bins,
928  new EgGreaterCut<OffEle, float>(etCutValue, &OffEle::etSC));
929  //this is all that pass trigtagprobecut and the probe passes the test trigger
931  monElemCont->cutMonElems(),
932  trigName,
933  trigName + "_" + monElemCont->name() + "_gsfEle_pass",
934  bins,
935  &(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle, float>(etCutValue, &OffEle::etSC)
938  //this is all that pass trigtagprobecut and the probe passes the test trigger and the probe is NOT a tag
940  monElemCont->cutMonElems(),
941  trigName,
942  trigName + "_" + monElemCont->name() + "_gsfEle_passNotTag",
943  bins,
944  &(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle, float>(etCutValue, &OffEle::etSC)
945  << new EgObjTrigCut<OffEle>(
948  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
950  //this is all that pass trigtagprobecut and the probe passes the test trigger and the probe is also a tag
952  monElemCont->cutMonElems(),
953  trigName,
954  trigName + "_" + monElemCont->name() + "_gsfEle_passTagTag",
955  bins,
956  &(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle, float>(etCutValue, &OffEle::etSC)
958  << new EgObjTrigCut<OffEle>(
959  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
961  //this is all that pass trigtagprobecut and the probe fails the test trigger
963  monElemCont->cutMonElems(),
964  trigName,
965  trigName + "_" + monElemCont->name() + "_gsfEle_fail",
966  bins,
967  &(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle, float>(etCutValue, &OffEle::etSC)
968  << new EgObjTrigCut<OffEle>(
969  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17HEDoubleFilter"),
973  /*
974  monElemCont->monElems().push_back(new MonElemMgrEBEE<OffEle,float>(iBooker,trigName+"_"+monElemCont->name()+"_gsfEle_all_etUnCut",monElemCont->name()+"_gsfEle_all E_{T} (Uncut);E_{T} (GeV)",
975  bins.et.nr,bins.et.min,bins.et.max,&OffEle::et));
976  monElemCont->cutMonElems().push_back(new MonElemWithCutEBEE<OffEle,float>(iBooker,trigName+"_"+monElemCont->name()+"_gsfEle_pass_etUnCut",monElemCont->name()+"_gsfEle_pass E_{T} (Uncut);E_{T} (GeV)",
977  bins.et.nr,bins.et.min,bins.et.max,&OffEle::et,new EgObjTrigCut<OffEle>(trigCodes.getCode(trigName),EgObjTrigCut<OffEle>::AND)));*/
978  eleMonElems.push_back(monElemCont);
979  } //end filter names loop
980 }
981 
982 //Only one at a time so I can set the folder
984  const std::string& filterName,
985  int cutMask,
986  const BinData& bins) {
988  //float etCutValue = 1.1*trigTools::getSecondEtThresFromName(filterName);
989  float etCutValue = 0.;
990  //std::cout<<"TrigName= "<<trigName<<" etCutValue= "<<etCutValue<<std::endl;
992  "trigTagProbe",
993  "Trigger Tag and Probe",
994  new EgTrigTagProbeCut_New(trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
995  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17HEDoubleFilter"),
996  cutMask,
997  &OffEle::cutCode));
998  //this is all that pass trigtagprobecut
1000  trigName,
1001  trigName + "_" + monElemCont->name() + "_gsfEle_all",
1002  bins,
1003  new EgGreaterCut<OffEle, float>(etCutValue, &OffEle::etSC));
1004  //this is all that pass trigtagprobecut and the probe passes the test trigger
1006  monElemCont->cutMonElems(),
1007  trigName,
1008  trigName + "_" + monElemCont->name() + "_gsfEle_pass",
1009  bins,
1010  &(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle, float>(etCutValue, &OffEle::etSC)
1012  //this is all that pass trigtagprobecut and the probe passes the test trigger and the probe is NOT a tag
1014  monElemCont->cutMonElems(),
1015  trigName,
1016  trigName + "_" + monElemCont->name() + "_gsfEle_passNotTag",
1017  bins,
1018  &(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle, float>(etCutValue, &OffEle::etSC)
1019  << new EgObjTrigCut<OffEle>(
1022  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
1024  //this is all that pass trigtagprobecut and the probe passes the test trigger and the probe is also a tag
1026  monElemCont->cutMonElems(),
1027  trigName,
1028  trigName + "_" + monElemCont->name() + "_gsfEle_passTagTag",
1029  bins,
1030  &(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle, float>(etCutValue, &OffEle::etSC)
1032  << new EgObjTrigCut<OffEle>(
1033  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
1035  //this is all that pass trigtagprobecut and the probe fails the test trigger
1037  monElemCont->cutMonElems(),
1038  trigName,
1039  trigName + "_" + monElemCont->name() + "_gsfEle_fail",
1040  bins,
1041  &(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle, float>(etCutValue, &OffEle::etSC)
1042  << new EgObjTrigCut<OffEle>(
1043  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17HEDoubleFilter"),
1047  /*
1048  monElemCont->monElems().push_back(new MonElemMgrEBEE<OffEle,float>(iBooker,trigName+"_"+monElemCont->name()+"_gsfEle_all_etUnCut",monElemCont->name()+"_gsfEle_all E_{T} (Uncut);E_{T} (GeV)",
1049  bins.et.nr,bins.et.min,bins.et.max,&OffEle::et));
1050  monElemCont->cutMonElems().push_back(new MonElemWithCutEBEE<OffEle,float>(iBooker,trigName+"_"+monElemCont->name()+"_gsfEle_pass_etUnCut",monElemCont->name()+"_gsfEle_pass E_{T} (Uncut);E_{T} (GeV)",
1051  bins.et.nr,bins.et.min,bins.et.max,&OffEle::et,new EgObjTrigCut<OffEle>(trigCodes.getCode(trigName),EgObjTrigCut<OffEle>::AND)));*/
1052  eleMonElems.push_back(monElemCont);
1053 }
1054 
1056  const std::string& filterName,
1057  int cutMask,
1058  const BinData& bins) {
1059  std::string trigNameLeg1 = filterName.substr(0, filterName.find("::"));
1060  std::string trigNameLeg2 = filterName.substr(filterName.find("::") + 2);
1061 
1062  float etCutValue = 0.;
1064  "trigTagProbe",
1065  "Trigger Tag and Probe",
1066  new EgTrigTagProbeCut_New(trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
1067  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17HEDoubleFilter"),
1068  cutMask,
1069  &OffEle::cutCode));
1070  //this is all that pass trigtagprobecut
1071  //MonElemFuncs::initStdEleCutHists(monElemCont->cutMonElems(),trigNameLeg2,trigNameLeg2+"_"+monElemCont->name()+"_gsfEle_allEt20",bins,new EgGreaterCut<OffEle,float>(etCutValue,&OffEle::etSC));
1072  //this is all that pass trigtagprobecut and the probe passes the first trigger
1073  //MonElemFuncs::initStdEleCutHists(monElemCont->cutMonElems(),trigNameLeg2,trigNameLeg2+"_"+monElemCont->name()+"_gsfEle_passEt20",bins,&(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle,float>(etCutValue,&OffEle::etSC) << new EgObjTrigCut<OffEle>(trigCodes.getCode(trigNameLeg1),EgObjTrigCut<OffEle>::AND)));
1074  //this is all that pass trigtagprobecut and the probe passes the second trigger and fails the first trigger
1076  monElemCont->cutMonElems(),
1077  trigNameLeg2,
1078  trigNameLeg2 + "_" + monElemCont->name() + "_gsfEle_passLeg2failLeg1",
1079  bins,
1080  &(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle, float>(etCutValue, &OffEle::etSC)
1081  << new EgObjTrigCut<OffEle>(trigCodes.getCode(trigNameLeg2),
1083  trigCodes.getCode(trigNameLeg1),
1085 }
1086 
1087 //Now same for photons
1089  const std::vector<std::string>& filterNames,
1090  int cutMask,
1091  const BinData& bins) {
1092  for (const auto& trigName : filterNames) {
1093  //float etCutValue = trigTools::getSecondEtThresFromName(trigName);
1094  float etCutValue = 0.;
1095  //std::cout<<"TrigName= "<<trigName<<" etCutValue= "<<etCutValue<<std::endl;
1097  "trigTagProbe",
1098  "Trigger Tag and Probe",
1099  new EgTrigTagProbeCut_NewPho(trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
1100  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17HEDoubleFilter"),
1101  cutMask,
1102  &OffPho::cutCode));
1103  //this is all that pass trigtagprobecut
1105  trigName,
1106  trigName + "_" + monElemCont->name() + "_pho_all",
1107  bins,
1108  new EgGreaterCut<OffPho, float>(etCutValue, &OffPho::etSC));
1109  //this is all that pass trigtagprobecut and the probe passes the test trigger
1111  monElemCont->cutMonElems(),
1112  trigName,
1113  trigName + "_" + monElemCont->name() + "_pho_pass",
1114  bins,
1115  &(*(new EgMultiCut<OffPho>) << new EgGreaterCut<OffPho, float>(etCutValue, &OffPho::etSC)
1118  //this is all that pass trigtagprobecut and the probe passes the test trigger and the probe is NOT a tag
1120  monElemCont->cutMonElems(),
1121  trigName,
1122  trigName + "_" + monElemCont->name() + "_pho_passNotTag",
1123  bins,
1124  &(*(new EgMultiCut<OffPho>) << new EgGreaterCut<OffPho, float>(etCutValue, &OffPho::etSC)
1125  << new EgObjTrigCut<OffPho>(
1128  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
1130  //this is all that pass trigtagprobecut and the probe passes the test trigger and the probe is also a tag
1132  monElemCont->cutMonElems(),
1133  trigName,
1134  trigName + "_" + monElemCont->name() + "_pho_passTagTag",
1135  bins,
1136  &(*(new EgMultiCut<OffPho>) << new EgGreaterCut<OffPho, float>(etCutValue, &OffPho::etSC)
1138  << new EgObjTrigCut<OffPho>(
1139  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
1141  //this is all that pass trigtagprobecut and the probe fails the test trigger
1143  monElemCont->cutMonElems(),
1144  trigName,
1145  trigName + "_" + monElemCont->name() + "_pho_fail",
1146  bins,
1147  &(*(new EgMultiCut<OffPho>) << new EgGreaterCut<OffPho, float>(etCutValue, &OffPho::etSC)
1148  << new EgObjTrigCut<OffPho>(
1149  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17HEDoubleFilter"),
1153  /*
1154  monElemCont->monElems().push_back(new MonElemMgrEBEE<OffPho,float>(iBooker,trigName+"_"+monElemCont->name()+"_pho_all_etUnCut",monElemCont->name()+"_gsfEle_all E_{T} (Uncut);E_{T} (GeV)",
1155  bins.et.nr,bins.et.min,bins.et.max,&OffPho::et));
1156  monElemCont->cutMonElems().push_back(new MonElemWithCutEBEE<OffPho,float>(iBooker,trigName+"_"+monElemCont->name()+"_pho_pass_etUnCut",monElemCont->name()+"_gsfEle_pass E_{T} (Uncut);E_{T} (GeV)",
1157  bins.et.nr,bins.et.min,bins.et.max,&OffPho::et,new EgObjTrigCut<OffPho>(trigCodes.getCode(trigName),EgObjTrigCut<OffPho>::AND)));*/
1158  phoMonElems.push_back(monElemCont);
1159  } //end filter names loop
1160 }
1161 
1163  const std::string& filterName,
1164  int cutMask,
1165  const BinData& bins) {
1167  //float etCutValue = 1.1*trigTools::getSecondEtThresFromName(trigName);
1168  float etCutValue = 0.;
1169  //std::cout<<"TrigName= "<<trigName<<" etCutValue= "<<etCutValue<<std::endl;
1171  "trigTagProbe",
1172  "Trigger Tag and Probe",
1173  new EgTrigTagProbeCut_NewPho(trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
1174  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17HEDoubleFilter"),
1175  cutMask,
1176  &OffPho::cutCode));
1177  //this is all that pass trigtagprobecut
1179  trigName,
1180  trigName + "_" + monElemCont->name() + "_pho_all",
1181  bins,
1182  new EgGreaterCut<OffPho, float>(etCutValue, &OffPho::etSC));
1183  //this is all that pass trigtagprobecut and the probe passes the test trigger
1185  monElemCont->cutMonElems(),
1186  trigName,
1187  trigName + "_" + monElemCont->name() + "_pho_pass",
1188  bins,
1189  &(*(new EgMultiCut<OffPho>) << new EgGreaterCut<OffPho, float>(etCutValue, &OffPho::etSC)
1191  //this is all that pass trigtagprobecut and the probe passes the test trigger and the probe is NOT a tag
1193  monElemCont->cutMonElems(),
1194  trigName,
1195  trigName + "_" + monElemCont->name() + "_pho_passNotTag",
1196  bins,
1197  &(*(new EgMultiCut<OffPho>) << new EgGreaterCut<OffPho, float>(etCutValue, &OffPho::etSC)
1198  << new EgObjTrigCut<OffPho>(
1201  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
1203  //this is all that pass trigtagprobecut and the probe passes the test trigger and the probe is also a tag
1205  monElemCont->cutMonElems(),
1206  trigName,
1207  trigName + "_" + monElemCont->name() + "_pho_passTagTag",
1208  bins,
1209  &(*(new EgMultiCut<OffPho>) << new EgGreaterCut<OffPho, float>(etCutValue, &OffPho::etSC)
1211  << new EgObjTrigCut<OffPho>(
1212  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17TrackIsolFilter"),
1214  //this is all that pass trigtagprobecut and the probe fails the test trigger
1216  monElemCont->cutMonElems(),
1217  trigName,
1218  trigName + "_" + monElemCont->name() + "_pho_fail",
1219  bins,
1220  &(*(new EgMultiCut<OffPho>) << new EgGreaterCut<OffPho, float>(etCutValue, &OffPho::etSC)
1221  << new EgObjTrigCut<OffPho>(
1222  trigCodes.getCode("hltEle32CaloIdTCaloIsoTTrkIdTTrkIsoTSC17HEDoubleFilter"),
1226  /*
1227  monElemCont->monElems().push_back(new MonElemMgrEBEE<OffPho,float>(iBooker,trigName+"_"+monElemCont->name()+"_pho_all_etUnCut",monElemCont->name()+"_gsfEle_all E_{T} (Uncut);E_{T} (GeV)",
1228  bins.et.nr,bins.et.min,bins.et.max,&OffPho::et));
1229  monElemCont->cutMonElems().push_back(new MonElemWithCutEBEE<OffPho,float>(iBooker,trigName+"_"+monElemCont->name()+"_pho_pass_etUnCut",monElemCont->name()+"_gsfEle_pass E_{T} (Uncut);E_{T} (GeV)",
1230  bins.et.nr,bins.et.min,bins.et.max,&OffPho::et,new EgObjTrigCut<OffPho>(trigCodes.getCode(trigName),EgObjTrigCut<OffPho>::AND)));*/
1231  phoMonElems.push_back(monElemCont);
1232 }
float hltEta() const
Definition: EgHLTOffPho.h:144
void initStdEleCutHists(std::vector< MonElemWithCutBase< OffEle > *> &histVec, const std::string &filterName, const std::string &baseName, const BinData &bins, EgHLTDQMCut< OffEle > *cut=nullptr)
float phi() const
Definition: EgHLTOffEle.h:128
void initStdEffHists(std::vector< MonElemWithCutBase< OffEle > *> &histVec, const std::string &filterName, const std::string &baseName, int nrBins, double xMin, double xMax, float(OffEle::*vsVarFunc)() const, const CutMasks &masks)
void initTrigTagProbeHists(std::vector< MonElemContainer< OffEle > *> &eleMonElems, const std::vector< std::string > &filterNames, int cutMask, const BinData &bins)
float energy() const
Definition: EgHLTOffPho.h:106
float detEta() const
Definition: EgHLTOffEle.h:134
const TrigCodes & trigCodes
void addTightLooseTrigHist(std::vector< MonElemContainer< OffEle > *> &eleMonElems, const std::string &tightTrig, const std::string &looseTrig, EgHLTDQMCut< OffEle > *eleCut, const std::string &histId, const BinData &bins)
int cutCode() const
Definition: EgHLTOffPho.h:150
void initTightLooseDiObjTrigHistsTrigCuts(std::vector< MonElemContainer< OffEle > *> &eleMonElems, const std::vector< std::string > &tightLooseTrigs, const BinData &bins)
void initStdEleHists(std::vector< MonElemManagerBase< OffEle > *> &histVec, const std::string &filterName, const std::string &baseName, const BinData &bins)
float sigmaIEtaIEta() const
Definition: EgHLTOffPho.h:125
float hltEta() const
Definition: EgHLTOffEle.h:197
int trigCutsCutCode(const TrigCodes::TrigBitSet &trigger) const
Definition: EgHLTOffPho.cc:15
float hOverE() const
Definition: EgHLTOffPho.h:121
int cutCode() const
Definition: EgHLTOffEle.h:228
std::vector< std::string > splitString(const std::string &fLine)
float hltIsolTrksEle() const
Definition: EgHLTOffEle.h:185
float hltIsolEm() const
Definition: EgHLTOffEle.h:188
float DeltaE() const
Definition: EgHLTOffEle.h:200
void initTightLooseTrigHists(std::vector< MonElemContainer< OffEle > *> &eleMonElems, const std::vector< std::string > &tightLooseTrigs, const BinData &bins, EgHLTDQMCut< OffEle > *eleCut)
float phi() const
Definition: EgHLTOffPho.h:108
float e2x5MaxOver5x5() const
Definition: EgHLTOffPho.h:128
float hltIsolHad() const
Definition: EgHLTOffEle.h:187
float etSC() const
Definition: EgHLTOffPho.h:109
float e1x5Over5x5() const
Definition: EgHLTOffPho.h:129
float sigmaIEtaIEta() const
Definition: EgHLTOffEle.h:162
int isolNrTrks() const
Definition: EgHLTOffPho.h:135
int NVertex() const
Definition: EgHLTOffEle.h:112
float r9() const
Definition: EgHLTOffEle.h:168
float hltEnergy() const
Definition: EgHLTOffPho.h:145
float isolHad() const
Definition: EgHLTOffPho.h:134
float r9() const
Definition: EgHLTOffPho.h:130
float e2x5MaxOver5x5() const
Definition: EgHLTOffEle.h:165
virtual EgHLTDQMCut< T > * clone() const =0
float invEInvP() const
Definition: EgHLTOffEle.h:171
float etSC() const
Definition: EgHLTOffEle.h:129
float e1x5Over5x5() const
Definition: EgHLTOffEle.h:166
float hltEnergy() const
Definition: EgHLTOffEle.h:198
void initTrigTagProbeHist(std::vector< MonElemContainer< OffEle > *> &eleMonElems, const std::string &filterName, int cutMask, const BinData &bins)
float hltPhi() const
Definition: EgHLTOffEle.h:196
float hltPhi() const
Definition: EgHLTOffPho.h:143
float hOverE() const
Definition: EgHLTOffEle.h:151
float isolPtTrks() const
Definition: EgHLTOffPho.h:136
float dPhiIn() const
Definition: EgHLTOffEle.h:153
DQMStore::IBooker & iBooker
const std::string & name() const
float et() const
Definition: EgHLTOffEle.h:124
float epOut() const
Definition: EgHLTOffEle.h:157
void initTightLooseTrigHistsTrigCuts(std::vector< MonElemContainer< OffEle > *> &eleMonElems, const std::vector< std::string > &tightLooseTrigs, const BinData &bins)
float isolEm() const
Definition: EgHLTOffPho.h:133
float energy() const
Definition: EgHLTOffEle.h:126
int trigCutsCutCode(const TrigCodes::TrigBitSet &trigger) const
Definition: EgHLTOffEle.cc:19
TrigBitSet getCode(const char *descript) const
void initStdEleHistsHEP(std::vector< MonElemManagerBase< OffEle > *> &histVec, const std::string &filterName, const std::string &baseName, const BinData &bins)
void initStdPhoCutHists(std::vector< MonElemWithCutBase< OffPho > *> &histVec, const std::string &filterName, const std::string &baseName, const BinData &bins, EgHLTDQMCut< OffPho > *cut=nullptr)
float et() const
Definition: EgHLTOffPho.h:104
std::vector< MonElemManagerBase< T > * > & monElems()
float dEtaIn() const
Definition: EgHLTOffEle.h:152
float epIn() const
Definition: EgHLTOffEle.h:156
std::vector< MonElemWithCutBase< T > * > & cutMonElems()
void initTrigTagProbeHist_2Leg(std::vector< MonElemContainer< OffEle > *> &eleMonElems, const std::string &filterName, int cutMask, const BinData &bins)
void initStdPhoHists(std::vector< MonElemManagerBase< OffPho > *> &histVec, const std::string &filterName, const std::string &baseName, const BinData &bins)
void initStdPhoHistsHEP(std::vector< MonElemManagerBase< OffPho > *> &histVec, const std::string &filterName, const std::string &baseName, const BinData &bins)
float detEta() const
Definition: EgHLTOffPho.h:113
float DeltaE() const
Definition: EgHLTOffPho.h:147