36 #include "CLHEP/Units/GlobalPhysicalConstants.h"
113 photonCollectionPr_Token_ = consumes<reco::PhotonCollection> (
119 conversionCollectionPr_Token_ = consumes<reco::ConversionCollection> (
121 conversionCollection_));
125 minPhoEtCut_ = pset.
getParameter<
double>(
"minPhoEtCut");
126 generalTracksOnly_ = pset.
getParameter<
bool>(
"generalTracksOnly");
127 arbitratedMerged_ = pset.
getParameter<
bool>(
"arbitratedMerged");
128 arbitratedEcalSeeded_ = pset.
getParameter<
bool>(
"arbitratedEcalSeeded");
129 ecalalgotracks_ = pset.
getParameter<
bool>(
"ecalalgotracks");
132 maxHitsBeforeVtx_ = pset.
getParameter<uint>(
"maxHitsBeforeVtx");
134 isRunCentrally_= pset.
getParameter<
bool>(
"isRunCentrally");
136 offline_pvToken_ = consumes<reco::VertexCollection>(
139 beamspotToken_ = consumes<reco::BeamSpot>(
142 g4_simTk_Token_ = consumes<edm::SimTrackContainer>(
edm::InputTag(
"g4SimHits"));
143 g4_simVtx_Token_ = consumes<edm::SimVertexContainer>(
edm::InputTag(
"g4SimHits"));
145 tpSelForEff_Token_ = consumes<TrackingParticleCollection> (
147 tpSelForFake_Token_ = consumes<TrackingParticleCollection> (
149 hepMC_Token_ = consumes<edm::HepMCProduct>(
edm::InputTag(
"generator"));
150 genjets_Token_ = consumes<reco::GenJetCollection>(
169 nRecConvAssWithEcal_=0;
177 double etMin = parameters_.getParameter<
double>(
"etMin");
178 double etMax = parameters_.getParameter<
double>(
"etMax");
179 int etBin = parameters_.getParameter<
int>(
"etBin");
182 double resMin = parameters_.getParameter<
double>(
"resMin");
183 double resMax = parameters_.getParameter<
double>(
"resMax");
184 int resBin = parameters_.getParameter<
int>(
"resBin");
186 double etaMin = parameters_.getParameter<
double>(
"etaMin");
187 double etaMax = parameters_.getParameter<
double>(
"etaMax");
188 int etaBin = parameters_.getParameter<
int>(
"etaBin");
189 int etaBin2 = parameters_.getParameter<
int>(
"etaBin2");
192 double phiMin = parameters_.getParameter<
double>(
"phiMin");
193 double phiMax = parameters_.getParameter<
double>(
"phiMax");
194 int phiBin = parameters_.getParameter<
int>(
"phiBin");
197 double rMin = parameters_.getParameter<
double>(
"rMin");
198 double rMax = parameters_.getParameter<
double>(
"rMax");
199 int rBin = parameters_.getParameter<
int>(
"rBin");
201 double zMin = parameters_.getParameter<
double>(
"zMin");
202 double zMax = parameters_.getParameter<
double>(
"zMax");
203 int zBin = parameters_.getParameter<
int>(
"zBin");
205 double dPhiTracksMin = parameters_.getParameter<
double>(
"dPhiTracksMin");
206 double dPhiTracksMax = parameters_.getParameter<
double>(
"dPhiTracksMax");
207 int dPhiTracksBin = parameters_.getParameter<
int>(
"dPhiTracksBin");
209 double eoverpMin = parameters_.getParameter<
double>(
"eoverpMin");
210 double eoverpMax = parameters_.getParameter<
double>(
"eoverpMax");
211 int eoverpBin = parameters_.getParameter<
int>(
"eoverpBin");
218 double dCotTracksMin = parameters_.getParameter<
double>(
"dCotTracksMin");
219 double dCotTracksMax = parameters_.getParameter<
double>(
"dCotTracksMax");
220 int dCotTracksBin = parameters_.getParameter<
int>(
"dCotTracksBin");
223 double chi2Min = parameters_.getParameter<
double>(
"chi2Min");
224 double chi2Max = parameters_.getParameter<
double>(
"chi2Max");
227 double rMinForXray = parameters_.getParameter<
double>(
"rMinForXray");
228 double rMaxForXray = parameters_.getParameter<
double>(
"rMaxForXray");
229 int rBinForXray = parameters_.getParameter<
int>(
"rBinForXray");
230 double zMinForXray = parameters_.getParameter<
double>(
"zMinForXray");
231 double zMaxForXray = parameters_.getParameter<
double>(
"zMaxForXray");
232 int zBinForXray = parameters_.getParameter<
int>(
"zBinForXray");
233 int zBin2ForXray = parameters_.getParameter<
int>(
"zBin2ForXray");
235 minPhoPtForEffic = parameters_.getParameter<
double>(
"minPhoPtForEffic");
236 maxPhoEtaForEffic = parameters_.getParameter<
double>(
"maxPhoEtaForEffic");
237 maxPhoZForEffic = parameters_.getParameter<
double>(
"maxPhoZForEffic");
238 maxPhoRForEffic = parameters_.getParameter<
double>(
"maxPhoRForEffic");
239 minPhoPtForPurity = parameters_.getParameter<
double>(
"minPhoPtForPurity");
240 maxPhoEtaForPurity = parameters_.getParameter<
double>(
"maxPhoEtaForPurity");
241 maxPhoZForPurity = parameters_.getParameter<
double>(
"maxPhoZForPurity");
242 maxPhoRForPurity = parameters_.getParameter<
double>(
"maxPhoRForPurity");
257 h_nSimConv_[0] = iBooker.
book1D(histname,
"# of Sim conversions per event ",20,-0.5,19.5);
259 histname =
"h_AllSimConvEta";
260 h_AllSimConv_[0] = iBooker.
book1D(histname,
" All conversions: simulated #eta",etaBin2,etaMin,etaMax);
261 histname =
"h_AllSimConvPhi";
262 h_AllSimConv_[1] = iBooker.
book1D(histname,
" All conversions: simulated #phi",phiBin,phiMin,phiMax);
263 histname =
"h_AllSimConvR";
264 h_AllSimConv_[2] = iBooker.
book1D(histname,
" All conversions: simulated R",rBin,rMin,rMax);
265 histname =
"h_AllSimConvZ";
266 h_AllSimConv_[3] = iBooker.
book1D(histname,
" All conversions: simulated Z",zBin,zMin,zMax);
267 histname =
"h_AllSimConvEt";
268 h_AllSimConv_[4] = iBooker.
book1D(histname,
" All conversions: simulated Et",etBin,etMin,etMax);
270 histname =
"nOfVisSimConversions";
271 h_nSimConv_[1] = iBooker.
book1D(histname,
"# of Sim conversions per event ",20,-0.5,19.5);
272 histname =
"h_VisSimConvEta";
273 h_VisSimConv_[0] = iBooker.
book1D(histname,
" All vis conversions: simulated #eta",etaBin2,etaMin, etaMax);
274 histname =
"h_VisSimConvPhi";
275 h_VisSimConv_[1] = iBooker.
book1D(histname,
" All vis conversions: simulated #phi",phiBin,phiMin, phiMax);
276 histname =
"h_VisSimConvR";
277 h_VisSimConv_[2] = iBooker.
book1D(histname,
" All vis conversions: simulated R",rBin,rMin,rMax);
278 histname =
"h_VisSimConvZ";
279 h_VisSimConv_[3] = iBooker.
book1D(histname,
" All vis conversions: simulated Z",zBin,zMin, zMax);
280 histname =
"h_VisSimConvEt";
281 h_VisSimConv_[4] = iBooker.
book1D(histname,
" All vis conversions: simulated Et",etBin,etMin, etMax);
284 histname =
"h_SimConvTwoMTracksEta";
285 h_SimConvTwoMTracks_[0] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated #eta",etaBin2,etaMin, etaMax);
286 histname =
"h_SimConvTwoMTracksPhi";
287 h_SimConvTwoMTracks_[1] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated #phi",phiBin,phiMin, phiMax);
288 histname =
"h_SimConvTwoMTracksR";
289 h_SimConvTwoMTracks_[2] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated R",rBin,rMin, rMax);
290 histname =
"h_SimConvTwoMTracksZ";
291 h_SimConvTwoMTracks_[3] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Z",zBin,zMin, zMax);
292 histname =
"h_SimConvTwoMTracksEt";
293 h_SimConvTwoMTracks_[4] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Et",etBin,etMin, etMax);
295 histname =
"h_SimConvTwoTracksEta";
296 h_SimConvTwoTracks_[0] = iBooker.
book1D(histname,
" All vis conversions with 2 reco tracks: simulated #eta",etaBin2,etaMin, etaMax);
297 histname =
"h_SimConvTwoTracksPhi";
298 h_SimConvTwoTracks_[1] = iBooker.
book1D(histname,
" All vis conversions with 2 reco tracks: simulated #phi",phiBin,phiMin, phiMax);
299 histname =
"h_SimConvTwoTracksR";
300 h_SimConvTwoTracks_[2] = iBooker.
book1D(histname,
" All vis conversions with 2 reco tracks: simulated R",rBin,rMin, rMax);
301 histname =
"h_SimConvTwoTracksZ";
302 h_SimConvTwoTracks_[3] = iBooker.
book1D(histname,
" All vis conversions with 2 reco tracks: simulated Z",zBin,zMin, zMax);
303 histname =
"h_SimConvTwoTracksEt";
304 h_SimConvTwoTracks_[4] = iBooker.
book1D(histname,
" All vis conversions with 2 reco tracks: simulated Et",etBin,etMin, etMax);
306 histname =
"h_SimConvTwoMTracksEtaAndVtxPGT0";
307 h_SimConvTwoMTracksAndVtxPGT0_[0] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #eta",etaBin2,etaMin, etaMax);
308 histname =
"h_SimConvTwoMTracksPhiAndVtxPGT0";
309 h_SimConvTwoMTracksAndVtxPGT0_[1] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #phi",phiBin,phiMin, phiMax);
310 histname =
"h_SimConvTwoMTracksRAndVtxPGT0";
311 h_SimConvTwoMTracksAndVtxPGT0_[2] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated R",rBin,rMin, rMax);
312 histname =
"h_SimConvTwoMTracksZAndVtxPGT0";
313 h_SimConvTwoMTracksAndVtxPGT0_[3] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Z",zBin,zMin, zMax);
314 histname =
"h_SimConvTwoMTracksEtAndVtxPGT0";
315 h_SimConvTwoMTracksAndVtxPGT0_[4] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Et",etBin,etMin, etMax);
318 histname =
"h_SimConvTwoMTracksEtaAndVtxPGT0005";
319 h_SimConvTwoMTracksAndVtxPGT0005_[0] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #eta",etaBin2,etaMin, etaMax);
320 histname =
"h_SimConvTwoMTracksPhiAndVtxPGT0005";
321 h_SimConvTwoMTracksAndVtxPGT0005_[1] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #phi",phiBin,phiMin, phiMax);
322 histname =
"h_SimConvTwoMTracksRAndVtxPGT0005";
323 h_SimConvTwoMTracksAndVtxPGT0005_[2] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated R",rBin,rMin, rMax);
324 histname =
"h_SimConvTwoMTracksZAndVtxPGT0005";
325 h_SimConvTwoMTracksAndVtxPGT0005_[3] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Z",zBin,zMin, zMax);
326 histname =
"h_SimConvTwoMTracksEtAndVtxPGT0005";
327 h_SimConvTwoMTracksAndVtxPGT0005_[4] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Et",etBin,etMin, etMax);
329 histname =
"h_SimRecConvTwoMTracksEta";
330 h_SimRecConvTwoMTracks_[0] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated #eta",etaBin2,etaMin, etaMax);
331 histname =
"h_SimRecConvTwoMTracksPhi";
332 h_SimRecConvTwoMTracks_[1] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated #phi",phiBin,phiMin, phiMax);
333 histname =
"h_SimRecConvTwoMTracksR";
334 h_SimRecConvTwoMTracks_[2] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated R",rBin,rMin, rMax);
335 histname =
"h_SimRecConvTwoMTracksZ";
336 h_SimRecConvTwoMTracks_[3] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Z",zBin,zMin, zMax);
337 histname =
"h_SimRecConvTwoMTracksEt";
338 h_SimRecConvTwoMTracks_[4] = iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Et",etBin,etMin, etMax);
342 h_SimConvEtaPix_[0] = iBooker.
book1D(
"simConvEtaPix",
" sim converted Photon Eta: Pix ",etaBin,etaMin, etaMax) ;
343 h_simTkPt_ = iBooker.
book1D(
"simTkPt",
"Sim conversion tracks pt ",etBin*3,0.,etMax);
344 h_simTkEta_ = iBooker.
book1D(
"simTkEta",
"Sim conversion tracks eta ",etaBin,etaMin,etaMax);
346 h_simConvVtxRvsZ_[0] = iBooker.
book2D(
"simConvVtxRvsZAll",
" Photon Sim conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
347 h_simConvVtxRvsZ_[1] = iBooker.
book2D(
"simConvVtxRvsZBarrel",
" Photon Sim conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
348 h_simConvVtxRvsZ_[2] = iBooker.
book2D(
"simConvVtxRvsZEndcap",
" Photon Sim conversion vtx position",zBin2ForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
349 h_simConvVtxRvsZ_[3] = iBooker.
book2D(
"simConvVtxRvsZBarrel2",
" Photon Sim conversion vtx position when reco R<4cm",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
350 h_simConvVtxYvsX_ = iBooker.
book2D(
"simConvVtxYvsXTrkBarrel",
" Photon Sim conversion vtx position, (x,y) eta<1 ",100, -80., 80., 100, -80., 80.);
352 std::string convpath = dqmpath_ +
"ConversionInfo";
356 h_nConv_[0][0] = iBooker.
book1D(histname+
"All",
"Number Of Conversions per isolated candidates per events: All Ecal ",10,-0.5, 9.5);
357 h_nConv_[0][1] = iBooker.
book1D(histname+
"Barrel",
"Number Of Conversions per isolated candidates per events: Ecal Barrel ",10,-0.5, 9.5);
358 h_nConv_[0][2] = iBooker.
book1D(histname+
"Endcap",
"Number Of Conversions per isolated candidates per events: Ecal Endcap ",10,-0.5, 9.5);
359 h_nConv_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"Number Of associated Conversions per isolated candidates per events: All Ecal ",10,-0.5, 9.5);
361 h_convEta_[0][0] = iBooker.
book1D(
"convEta",
" converted Photon Eta ",etaBin,etaMin, etaMax) ;
362 h_convEtaMatchSC_[0][0] = iBooker.
book1D(
"convEtaMatchSC",
" converted Photon Eta when SC is matched ",etaBin,etaMin, etaMax) ;
363 h_convEta2_[0][0] = iBooker.
book1D(
"convEta2",
" converted Photon Eta ",etaBin2,etaMin, etaMax) ;
364 h_convPhi_[0][0] = iBooker.
book1D(
"convPhi",
" converted Photon Phi ",phiBin,phiMin,phiMax) ;
365 h_convR_[0][0] = iBooker.
book1D(
"convR",
" converted photon R",rBin,rMin, rMax);
366 h_convZ_[0][0] = iBooker.
book1D(
"convZ",
" converted photon Z",zBin,zMin, zMax);
367 h_convPt_[0][0] = iBooker.
book1D(
"convPt",
" conversions Transverse Energy: all eta ", etBin,etMin, etMax);
369 h_convEta_[1][0] = iBooker.
book1D(
"convEtaAss2",
" Matched converted Photon Eta ",etaBin2,etaMin, etaMax) ;
370 h_convEta_[1][1] = iBooker.
book1D(
"convEtaAss",
" Matched converted Photon Eta ",etaBin,etaMin, etaMax) ;
371 h_convEtaMatchSC_[1][0] = iBooker.
book1D(
"convEtaMatchSCAss",
" converted Photon Eta when SC is matched ",etaBin,etaMin, etaMax) ;
372 h_convPhi_[1][0] = iBooker.
book1D(
"convPhiAss",
" Matched converted Photon Phi ",phiBin,phiMin,phiMax) ;
373 h_convR_[1][0] = iBooker.
book1D(
"convRAss",
" Matched converted photon R",rBin,rMin, rMax);
374 h_convZ_[1][0] = iBooker.
book1D(
"convZAss",
" Matched converted photon Z",zBin,zMin, zMax);
375 h_convPt_[1][0] = iBooker.
book1D(
"convPtAss",
"Matched conversions Transverse Energy: all eta ", etBin,etMin, etMax);
377 h_convEta_[2][0] = iBooker.
book1D(
"convEtaFake2",
" Fake converted Photon Eta ",etaBin2,etaMin, etaMax) ;
378 h_convEta_[2][1] = iBooker.
book1D(
"convEtaFake",
" Fake converted Photon Eta ",etaBin,etaMin, etaMax) ;
379 h_convEtaMatchSC_[2][0] = iBooker.
book1D(
"convEtaMatchSCFake",
" converted Photon Eta when SC is matched ",etaBin,etaMin, etaMax) ;
380 h_convPhi_[2][0] = iBooker.
book1D(
"convPhiFake",
" Fake converted Photon Phi ",phiBin,phiMin,phiMax) ;
381 h_convR_[2][0] = iBooker.
book1D(
"convRFake",
" Fake converted photon R",rBin,rMin, rMax);
382 h_convZ_[2][0] = iBooker.
book1D(
"convZFake",
" Fake converted photon Z",zBin,zMin, zMax);
383 h_convPt_[2][0] = iBooker.
book1D(
"convPtFake",
"Fake conversions Transverse Energy: all eta ", etBin,etMin, etMax);
385 h_convRplot_ = iBooker.
book1D(
"convRplot",
" converted photon R",600, 0.,120.);
386 h_convZplot_ = iBooker.
book1D(
"convZplot",
" converted photon Z",320,-160.,160.);
388 histname =
"convSCdPhi";
389 h_convSCdPhi_[0][0] = iBooker.
book1D(histname+
"All",
"dPhi between SC and conversion",100, -0.1,0.1);
390 h_convSCdPhi_[0][1] = iBooker.
book1D(histname+
"Barrel",
" dPhi between SC and conversion: Barrel",100, -0.1,0.1);
391 h_convSCdPhi_[0][2] = iBooker.
book1D(histname+
"Endcap",
" dPhi between SC and conversion: Endcap",100, -0.1,0.1);
392 h_convSCdPhi_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"dPhi between SC and conversion",100, -0.1,0.1);
393 h_convSCdPhi_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
" dPhi between SC and conversion: Barrel",100, -0.1,0.1);
394 h_convSCdPhi_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
" dPhi between SC and conversion: Endcap",100, -0.1,0.1);
395 h_convSCdPhi_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"dPhi between SC and conversion",100, -0.1,0.1);
396 h_convSCdPhi_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
" dPhi between SC and conversion: Barrel",100, -0.1,0.1);
397 h_convSCdPhi_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
" dPhi between SC and conversion: Endcap",100, -0.1,0.1);
398 histname =
"convSCdEta";
399 h_convSCdEta_[0][0] = iBooker.
book1D(histname+
"All",
" dEta between SC and conversion",100, -0.1,0.1);
400 h_convSCdEta_[0][1] = iBooker.
book1D(histname+
"Barrel",
" dEta between SC and conversion: Barrel",100, -0.1,0.1);
401 h_convSCdEta_[0][2] = iBooker.
book1D(histname+
"Endcap",
" dEta between SC and conversion: Endcap",100, -0.1,0.1);
402 h_convSCdEta_[1][0] = iBooker.
book1D(histname+
"All_Ass",
" dEta between SC and conversion",100, -0.1,0.1);
403 h_convSCdEta_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
" dEta between SC and conversion: Barrel",100, -0.1,0.1);
404 h_convSCdEta_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
" dEta between SC and conversion: Endcap",100, -0.1,0.1);
405 h_convSCdEta_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
" dEta between SC and conversion",100, -0.1,0.1);
406 h_convSCdEta_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
" dEta between SC and conversion: Barrel",100, -0.1,0.1);
407 h_convSCdEta_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
" dEta between SC and conversion: Endcap",100, -0.1,0.1);
409 histname =
"convPtRes";
410 h_convPtRes_[0] = iBooker.
book1D(histname+
"All",
" Conversion Pt rec/true : All ecal ", resBin,resMin, resMax);
411 h_convPtRes_[1] = iBooker.
book1D(histname+
"Barrel",
" Conversion Pt rec/true : Barrel ",resBin,resMin, resMax);
412 h_convPtRes_[2] = iBooker.
book1D(histname+
"Endcap",
" Conversion Pt rec/true : Endcap ",resBin,resMin, resMax);
416 h_invMass_[0][0]= iBooker.
book1D(histname+
"All_AllTracks",
" Photons:Tracks from conversion: Pair invariant mass: all Ecal ",100, 0., 1.5);
417 h_invMass_[0][1]= iBooker.
book1D(histname+
"Barrel_AllTracks",
" Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",100, 0., 1.5);
418 h_invMass_[0][2]= iBooker.
book1D(histname+
"Endcap_AllTracks",
" Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",100, 0., 1.5);
420 h_invMass_[1][0]= iBooker.
book1D(histname+
"All_AssTracks",
" Photons:Tracks from conversion: Pair invariant mass: all Ecal ",100, 0., 1.5);
421 h_invMass_[1][1]= iBooker.
book1D(histname+
"Barrel_AssTracks",
" Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",100, 0., 1.5);
422 h_invMass_[1][2]= iBooker.
book1D(histname+
"Endcap_AssTracks",
" Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",100, 0., 1.5);
424 h_invMass_[2][0]= iBooker.
book1D(histname+
"All_FakeTracks",
" Photons:Tracks from conversion: Pair invariant mass: all Ecal ",100, 0., 1.5);
425 h_invMass_[2][1]= iBooker.
book1D(histname+
"Barrel_FakeTracks",
" Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",100, 0., 1.5);
426 h_invMass_[2][2]= iBooker.
book1D(histname+
"Endcap_FaleTracks",
" Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",100, 0., 1.5);
430 histname=
"hDPhiTracksAtVtx";
431 h_DPhiTracksAtVtx_[0][0] =iBooker.
book1D(histname+
"All",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
432 h_DPhiTracksAtVtx_[0][1] =iBooker.
book1D(histname+
"Barrel",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
433 h_DPhiTracksAtVtx_[0][2] =iBooker.
book1D(histname+
"Endcap",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
434 h_DPhiTracksAtVtx_[1][0] =iBooker.
book1D(histname+
"All_Ass",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
435 h_DPhiTracksAtVtx_[1][1] =iBooker.
book1D(histname+
"Barrel_Ass",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
436 h_DPhiTracksAtVtx_[1][2] =iBooker.
book1D(histname+
"Endcap_Ass",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
437 h_DPhiTracksAtVtx_[2][0] =iBooker.
book1D(histname+
"All_Fakes",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
438 h_DPhiTracksAtVtx_[2][1] =iBooker.
book1D(histname+
"Barrel_Fakes",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
439 h_DPhiTracksAtVtx_[2][2] =iBooker.
book1D(histname+
"Endcap_Fakes",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
443 histname=
"hDPhiTracksAtVtxVsEta";
444 h2_DPhiTracksAtVtxVsEta_ = iBooker.
book2D(histname+
"All",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta",etaBin2,etaMin, etaMax,100, -0.5, 0.5);
445 histname=
"pDPhiTracksAtVtxVsEta";
446 p_DPhiTracksAtVtxVsEta_ = iBooker.
bookProfile(histname+
"All",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta ",etaBin2,etaMin, etaMax, 100, -0.5, 0.5,
"");
448 histname=
"hDPhiTracksAtVtxVsR";
449 h2_DPhiTracksAtVtxVsR_ = iBooker.
book2D(histname+
"All",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R",rBin,rMin, rMax,100, -0.5, 0.5);
450 histname=
"pDPhiTracksAtVtxVsR";
451 p_DPhiTracksAtVtxVsR_ = iBooker.
bookProfile(histname+
"All",
" Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R ",rBin,rMin, rMax,100, -0.5, 0.5,
"");
454 histname=
"hDCotTracks";
455 h_DCotTracks_[0][0]= iBooker.
book1D(histname+
"All",
" Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
456 h_DCotTracks_[0][1]= iBooker.
book1D(histname+
"Barrel",
" Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
457 h_DCotTracks_[0][2]= iBooker.
book1D(histname+
"Endcap",
" Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
458 h_DCotTracks_[1][0]= iBooker.
book1D(histname+
"All_Ass",
" Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
459 h_DCotTracks_[1][1]= iBooker.
book1D(histname+
"Barrel_Ass",
" Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
460 h_DCotTracks_[1][2]= iBooker.
book1D(histname+
"Endcap_Ass",
" Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
461 h_DCotTracks_[2][0]= iBooker.
book1D(histname+
"All_Fakes",
" Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
462 h_DCotTracks_[2][1]= iBooker.
book1D(histname+
"Barrel_Fakes",
" Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
463 h_DCotTracks_[2][2]= iBooker.
book1D(histname+
"Endcap_Fakes",
" Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
466 histname=
"hDCotTracksVsEta";
467 h2_DCotTracksVsEta_ = iBooker.
book2D(histname+
"All",
" Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta",etaBin2,etaMin, etaMax,100, -0.2, 0.2);
468 histname=
"pDCotTracksVsEta";
469 p_DCotTracksVsEta_ = iBooker.
bookProfile(histname+
"All",
" Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta ",etaBin2,etaMin, etaMax, 100, -0.2, 0.2,
"");
471 histname=
"hDCotTracksVsR";
472 h2_DCotTracksVsR_ = iBooker.
book2D(histname+
"All",
" Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R",rBin,rMin, rMax,100, -0.2, 0.2);
473 histname=
"pDCotTracksVsR";
474 p_DCotTracksVsR_ = iBooker.
bookProfile(histname+
"All",
" Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R ",rBin,rMin, rMax,100, -0.2, 0.2,
"");
477 histname=
"hDistMinAppTracks";
478 h_distMinAppTracks_[0][0]= iBooker.
book1D(histname+
"All",
" Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ",120, -0.5, 1.0);
479 h_distMinAppTracks_[0][1]= iBooker.
book1D(histname+
"Barrel",
" Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",120, -0.5, 1.0);
480 h_distMinAppTracks_[0][2]= iBooker.
book1D(histname+
"Endcap",
" Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",120, -0.5, 1.0);
481 h_distMinAppTracks_[1][0]= iBooker.
book1D(histname+
"All_Ass",
" Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ",120, -0.5, 1.0);
482 h_distMinAppTracks_[1][1]= iBooker.
book1D(histname+
"Barrel_Ass",
" Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",120, -0.5, 1.0);
483 h_distMinAppTracks_[1][2]= iBooker.
book1D(histname+
"Endcap_Ass",
" Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",120, -0.5, 1.0);
484 h_distMinAppTracks_[2][0]= iBooker.
book1D(histname+
"All_Fakes",
" Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ",120, -0.5, 1.0);
485 h_distMinAppTracks_[2][1]= iBooker.
book1D(histname+
"Barrel_Fakes",
" Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",120, -0.5, 1.0);
486 h_distMinAppTracks_[2][2]= iBooker.
book1D(histname+
"Endcap_Fakes",
" Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",120, -0.5, 1.0);
489 h_convVtxRvsZ_[0] = iBooker.
book2D(
"convVtxRvsZAll",
" Photon Reco conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
490 h_convVtxRvsZ_[1] = iBooker.
book2D(
"convVtxRvsZBarrel",
" Photon Reco conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
491 h_convVtxRvsZ_[2] = iBooker.
book2D(
"convVtxRvsZEndcap",
" Photon Reco conversion vtx position",zBin2ForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
492 h_convVtxYvsX_ = iBooker.
book2D(
"convVtxYvsXTrkBarrel",
" Photon Reco conversion vtx position, (x,y) eta<1 ", 1000, -60., 60., 1000, -60., 60.);
494 h_convVtxRvsZ_zoom_[0] = iBooker.
book2D(
"convVtxRvsZBarrelZoom1",
" Photon Reco conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, -10., 40.);
495 h_convVtxRvsZ_zoom_[1] = iBooker.
book2D(
"convVtxRvsZBarrelZoom2",
" Photon Reco conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, -10., 20.);
496 h_convVtxYvsX_zoom_[0] = iBooker.
book2D(
"convVtxYvsXTrkBarrelZoom1",
" Photon Reco conversion vtx position, (x,y) eta<1 ",100, -40., 40., 100, -40., 40.);
497 h_convVtxYvsX_zoom_[1] = iBooker.
book2D(
"convVtxYvsXTrkBarrelZoom2",
" Photon Reco conversion vtx position, (x,y) eta<1 ",100, -20., 20., 100, -20., 20.);
499 h_convVtxdR_ = iBooker.
book1D(
"convVtxdR",
" Photon Reco conversion vtx dR",100, -10.,10.);
500 h_convVtxdX_ = iBooker.
book1D(
"convVtxdX",
" Photon Reco conversion vtx dX",100, -10.,10.);
501 h_convVtxdY_ = iBooker.
book1D(
"convVtxdY",
" Photon Reco conversion vtx dY",100, -10.,10.);
502 h_convVtxdZ_ = iBooker.
book1D(
"convVtxdZ",
" Photon Reco conversion vtx dZ",100, -20.,20.);
504 h_convVtxdPhi_ = iBooker.
book1D(
"convVtxdPhi",
" Photon Reco conversion vtx dPhi",100, -0.01,0.01);
505 h_convVtxdEta_ = iBooker.
book1D(
"convVtxdEta",
" Photon Reco conversion vtx dEta",100, -0.5,0.5);
507 h_convVtxdR_barrel_ = iBooker.
book1D(
"convVtxdR_barrel",
" Photon Reco conversion vtx dR, |eta|<=1.2",100, -10.,10.);
508 h_convVtxdX_barrel_ = iBooker.
book1D(
"convVtxdX_barrel",
" Photon Reco conversion vtx dX, |eta|<=1.2",100, -10.,10.);
509 h_convVtxdY_barrel_ = iBooker.
book1D(
"convVtxdY_barrel",
" Photon Reco conversion vtx dY, |eta|<=1.2 ",100, -10.,10.);
510 h_convVtxdZ_barrel_ = iBooker.
book1D(
"convVtxdZ_barrel",
" Photon Reco conversion vtx dZ, |eta|<=1.2,",100, -20.,20.);
512 h_convVtxdR_endcap_ = iBooker.
book1D(
"convVtxdR_endcap",
" Photon Reco conversion vtx dR, |eta|>1.2 ",100, -10.,10.);
513 h_convVtxdX_endcap_ = iBooker.
book1D(
"convVtxdX_endcap",
" Photon Reco conversion vtx dX, |eta|>1.2",100, -10.,10.);
514 h_convVtxdY_endcap_ = iBooker.
book1D(
"convVtxdY_endcap",
" Photon Reco conversion vtx dY, |eta|>1.2",100, -10.,10.);
515 h_convVtxdZ_endcap_ = iBooker.
book1D(
"convVtxdZ_endcap",
" Photon Reco conversion vtx dZ, |eta|>1.2",100, -20.,20.);
519 h2_convVtxdRVsR_ = iBooker.
book2D(
"h2ConvVtxdRVsR",
" Conversion vtx dR vsR" ,rBin,rMin, rMax,100, -20.,20.);
520 h2_convVtxdRVsEta_ = iBooker.
book2D(
"h2ConvVtxdRVsEta",
"Conversion vtx dR vs Eta" ,etaBin2,etaMin, etaMax,100, -20.,20.);
522 p_convVtxdRVsR_ = iBooker.
bookProfile(
"pConvVtxdRVsR",
" Conversion vtx dR vsR" ,rBin,rMin, rMax ,100, -20.,20.,
"");
523 p_convVtxdRVsEta_ = iBooker.
bookProfile(
"pConvVtxdRVsEta",
"Conversion vtx dR vs Eta" ,etaBin2,etaMin, etaMax, 100, -20.,20.,
"");
524 p_convVtxdXVsX_ = iBooker.
bookProfile(
"pConvVtxdXVsX",
"Conversion vtx dX vs X" ,120,-60, 60 ,100, -20.,20.,
"");
525 p_convVtxdYVsY_ = iBooker.
bookProfile(
"pConvVtxdYVsY",
"Conversion vtx dY vs Y" ,120,-60, 60 ,100, -20.,20.,
"");
526 p_convVtxdZVsZ_ = iBooker.
bookProfile(
"pConvVtxdZVsZ",
"Conversion vtx dZ vs Z" ,zBin,zMin,zMax ,100, -20.,20.,
"");
528 p_convVtxdZVsR_ = iBooker.
bookProfile(
"pConvVtxdZVsR",
"Conversion vtx dZ vs R" ,rBin,rMin,rMax ,100, -20.,20.,
"");
529 p2_convVtxdRVsRZ_ = iBooker.
bookProfile2D(
"p2ConvVtxdRVsRZ",
"Conversion vtx dR vs RZ" ,zBin,zMin, zMax,rBin,rMin,rMax,100, 0.,20.,
"s");
530 p2_convVtxdZVsRZ_ = iBooker.
bookProfile2D(
"p2ConvVtxdZVsRZ",
"Conversion vtx dZ vs RZ" ,zBin,zMin, zMax,rBin,rMin,rMax,100, 0.,20.,
"s");
533 histname=
"EoverPtracks";
534 h_EoverPTracks_[0][0] = iBooker.
book1D(histname+
"All",
" photons conversion E/p: all Ecal ", eoverpBin, eoverpMin, eoverpMax );
535 h_EoverPTracks_[0][1] = iBooker.
book1D(histname+
"Barrel",
" photons conversion E/p: Barrel Ecal", eoverpBin, eoverpMin, eoverpMax);
536 h_EoverPTracks_[0][2] = iBooker.
book1D(histname+
"Endcap",
" photons conversion E/p: Endcap Ecal ", eoverpBin, eoverpMin, eoverpMax);
537 h_EoverPTracks_[1][0] = iBooker.
book1D(histname+
"All_Ass",
" photons conversion E/p: all Ecal ", eoverpBin, eoverpMin, eoverpMax);
538 h_EoverPTracks_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
" photons conversion E/p: Barrel Ecal", eoverpBin, eoverpMin, eoverpMax);
539 h_EoverPTracks_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
" photons conversion E/p: Endcap Ecal ", eoverpBin, eoverpMin, eoverpMax);
540 h_EoverPTracks_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
" photons conversion E/p: all Ecal ", eoverpBin, eoverpMin, eoverpMax);
541 h_EoverPTracks_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
" photons conversion E/p: Barrel Ecal", eoverpBin, eoverpMin, eoverpMax);
542 h_EoverPTracks_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
" photons conversion E/p: Endcap Ecal ", eoverpBin, eoverpMin, eoverpMax);
545 h2_convVtxRrecVsTrue_ = iBooker.
book2D(
"h2ConvVtxRrecVsTrue",
"Photon Reco conversion vtx R rec vs true" ,rBin,rMin, rMax,rBin,rMin, rMax);
547 histname=
"vtxChi2Prob";
548 h_vtxChi2Prob_[0][0] = iBooker.
book1D(histname+
"All",
"vertex #chi^{2} all", 100, 0., 1.);
549 h_vtxChi2Prob_[0][1] = iBooker.
book1D(histname+
"Barrel",
"vertex #chi^{2} barrel", 100, 0., 1.);
550 h_vtxChi2Prob_[0][2] = iBooker.
book1D(histname+
"Endcap",
"vertex #chi^{2} endcap", 100, 0., 1.);
551 h_vtxChi2Prob_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"vertex #chi^{2} all", 100, 0., 1.);
552 h_vtxChi2Prob_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
"vertex #chi^{2} barrel", 100, 0., 1.);
553 h_vtxChi2Prob_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
"vertex #chi^{2} endcap", 100, 0., 1.);
554 h_vtxChi2Prob_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"vertex #chi^{2} all", 100, 0., 1.);
555 h_vtxChi2Prob_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
"vertex #chi^{2} barrel", 100, 0., 1.);
556 h_vtxChi2Prob_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
"vertex #chi^{2} endcap", 100, 0., 1.);
559 h_zPVFromTracks_[1] = iBooker.
book1D(
"zPVFromTracks",
" Photons: PV z from conversion tracks",100, -25., 25.);
560 h_dzPVFromTracks_[1] = iBooker.
book1D(
"dzPVFromTracks",
" Photons: PV Z_rec - Z_true from conversion tracks",100, -5., 5.);
561 h2_dzPVVsR_ = iBooker.
book2D(
"h2dzPVVsR",
"Photon Reco conversions: dz(PV) vs R" ,rBin,rMin, rMax,100, -3.,3.);
562 p_dzPVVsR_ = iBooker.
bookProfile(
"pdzPVVsR",
"Photon Reco conversions: dz(PV) vs R" ,rBin,rMin, rMax, 100, -3.,3.,
"");
566 h_lxybs_[0][0] = iBooker.
book1D(histname+
"All",
"vertex #chi^{2} all", 200, -100., 100.);
567 h_lxybs_[0][1] = iBooker.
book1D(histname+
"Barrel",
"vertex #chi^{2} barrel", 200, -100., 100.);
568 h_lxybs_[0][2] = iBooker.
book1D(histname+
"Endcap",
"vertex #chi^{2} endcap", 200, -100., 100.);
569 h_lxybs_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"vertex #chi^{2} all", 200, -100., 100.);
570 h_lxybs_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
"vertex #chi^{2} barrel", 200, -100., 100.);
571 h_lxybs_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
"vertex #chi^{2} endcap", 200, -100., 100.);
572 h_lxybs_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"vertex #chi^{2} all", 200, -100., 100.);
573 h_lxybs_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
"vertex #chi^{2} barrel", 200, -100., 100.);
574 h_lxybs_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
"vertex #chi^{2} endcap", 200, -100., 100.);
576 histname=
"maxNHitsBeforeVtx";
577 h_maxNHitsBeforeVtx_[0][0] = iBooker.
book1D(histname+
"All",
"vertex #chi^{2} all", 16, -0.5, 15.5);
578 h_maxNHitsBeforeVtx_[0][1] = iBooker.
book1D(histname+
"Barrel",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
579 h_maxNHitsBeforeVtx_[0][2] = iBooker.
book1D(histname+
"Endcap",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
580 h_maxNHitsBeforeVtx_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"vertex #chi^{2} all", 16, -0.5, 15.5);
581 h_maxNHitsBeforeVtx_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
582 h_maxNHitsBeforeVtx_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
583 h_maxNHitsBeforeVtx_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"vertex #chi^{2} all", 16, -0.5, 15.5);
584 h_maxNHitsBeforeVtx_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
585 h_maxNHitsBeforeVtx_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
587 histname=
"leadNHitsBeforeVtx";
588 h_leadNHitsBeforeVtx_[0][0] = iBooker.
book1D(histname+
"All",
"vertex #chi^{2} all", 16, -0.5, 15.5);
589 h_leadNHitsBeforeVtx_[0][1] = iBooker.
book1D(histname+
"Barrel",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
590 h_leadNHitsBeforeVtx_[0][2] = iBooker.
book1D(histname+
"Endcap",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
591 h_leadNHitsBeforeVtx_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"vertex #chi^{2} all", 16, -0.5, 15.5);
592 h_leadNHitsBeforeVtx_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
593 h_leadNHitsBeforeVtx_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
594 h_leadNHitsBeforeVtx_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"vertex #chi^{2} all", 16, -0.5, 15.5);
595 h_leadNHitsBeforeVtx_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
596 h_leadNHitsBeforeVtx_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
598 histname=
"trailNHitsBeforeVtx";
599 h_trailNHitsBeforeVtx_[0][0] = iBooker.
book1D(histname+
"All",
"vertex #chi^{2} all", 16, -0.5, 15.5);
600 h_trailNHitsBeforeVtx_[0][1] = iBooker.
book1D(histname+
"Barrel",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
601 h_trailNHitsBeforeVtx_[0][2] = iBooker.
book1D(histname+
"Endcap",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
602 h_trailNHitsBeforeVtx_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"vertex #chi^{2} all", 16, -0.5, 15.5);
603 h_trailNHitsBeforeVtx_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
604 h_trailNHitsBeforeVtx_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
605 h_trailNHitsBeforeVtx_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"vertex #chi^{2} all", 16, -0.5, 15.5);
606 h_trailNHitsBeforeVtx_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
607 h_trailNHitsBeforeVtx_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
609 histname=
"sumNHitsBeforeVtx";
610 h_sumNHitsBeforeVtx_[0][0] = iBooker.
book1D(histname+
"All",
"vertex #chi^{2} all", 16, -0.5, 15.5);
611 h_sumNHitsBeforeVtx_[0][1] = iBooker.
book1D(histname+
"Barrel",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
612 h_sumNHitsBeforeVtx_[0][2] = iBooker.
book1D(histname+
"Endcap",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
613 h_sumNHitsBeforeVtx_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"vertex #chi^{2} all", 16, -0.5, 15.5);
614 h_sumNHitsBeforeVtx_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
615 h_sumNHitsBeforeVtx_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
616 h_sumNHitsBeforeVtx_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"vertex #chi^{2} all", 16, -0.5, 15.5);
617 h_sumNHitsBeforeVtx_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
618 h_sumNHitsBeforeVtx_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
620 histname=
"maxDlClosestHitToVtx";
621 h_maxDlClosestHitToVtx_[0][0] = iBooker.
book1D(histname+
"All",
"vertex #chi^{2} all", 100, -10., 10.);
622 h_maxDlClosestHitToVtx_[0][1] = iBooker.
book1D(histname+
"Barrel",
"vertex #chi^{2} barrel", 100, -10., 10.);
623 h_maxDlClosestHitToVtx_[0][2] = iBooker.
book1D(histname+
"Endcap",
"vertex #chi^{2} endcap", 100, -10., 10.);
624 h_maxDlClosestHitToVtx_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"vertex #chi^{2} all", 100, -10., 10.);
625 h_maxDlClosestHitToVtx_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
"vertex #chi^{2} barrel", 100, -10., 10.);
626 h_maxDlClosestHitToVtx_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
"vertex #chi^{2} endcap", 100, -10., 10.);
627 h_maxDlClosestHitToVtx_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"vertex #chi^{2} all", 100, -10., 10.);
628 h_maxDlClosestHitToVtx_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
"vertex #chi^{2} barrel", 100, -10., 10.);
629 h_maxDlClosestHitToVtx_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
"vertex #chi^{2} endcap", 100, -10., 10.);
631 histname=
"maxDlClosestHitToVtxSig";
632 h_maxDlClosestHitToVtxSig_[0][0] = iBooker.
book1D(histname+
"All",
"vertex #chi^{2} all", 100, -8., 8.);
633 h_maxDlClosestHitToVtxSig_[0][1] = iBooker.
book1D(histname+
"Barrel",
"vertex #chi^{2} barrel", 100, -8., 8.);
634 h_maxDlClosestHitToVtxSig_[0][2] = iBooker.
book1D(histname+
"Endcap",
"vertex #chi^{2} endcap", 100, -8., 8.);
635 h_maxDlClosestHitToVtxSig_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"vertex #chi^{2} all", 100, -8., 8.);
636 h_maxDlClosestHitToVtxSig_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
"vertex #chi^{2} barrel", 100, -8., 8.);
637 h_maxDlClosestHitToVtxSig_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
"vertex #chi^{2} endcap", 100, -8., 8.);
638 h_maxDlClosestHitToVtxSig_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"vertex #chi^{2} all", 100, -8., 8.);
639 h_maxDlClosestHitToVtxSig_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
"vertex #chi^{2} barrel", 100, -8., 8.);
640 h_maxDlClosestHitToVtxSig_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
"vertex #chi^{2} endcap", 100, -8., 8.);
642 histname=
"deltaExpectedHitsInner";
643 h_deltaExpectedHitsInner_[0][0] = iBooker.
book1D(histname+
"All",
"vertex #chi^{2} all", 31, -15.5, 15.5);
644 h_deltaExpectedHitsInner_[0][1] = iBooker.
book1D(histname+
"Barrel",
"vertex #chi^{2} barrel", 31, -15.5, 15.5);
645 h_deltaExpectedHitsInner_[0][2] = iBooker.
book1D(histname+
"Endcap",
"vertex #chi^{2} endcap", 31, -15.5, 15.5);
646 h_deltaExpectedHitsInner_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"vertex #chi^{2} all", 31, -15.5, 15.5);
647 h_deltaExpectedHitsInner_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
"vertex #chi^{2} barrel", 31, -15.5, 15.5);
648 h_deltaExpectedHitsInner_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
"vertex #chi^{2} endcap", 31, -15.5, 15.5);
649 h_deltaExpectedHitsInner_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"vertex #chi^{2} all", 31, -15.5, 15.5);
650 h_deltaExpectedHitsInner_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
"vertex #chi^{2} barrel", 31, -15.5, 15.5);
651 h_deltaExpectedHitsInner_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
"vertex #chi^{2} endcap", 31, -15.5, 15.5);
653 histname=
"leadExpectedHitsInner";
654 h_leadExpectedHitsInner_[0][0] = iBooker.
book1D(histname+
"All",
"vertex #chi^{2} all", 16, -0.5, 15.5);
655 h_leadExpectedHitsInner_[0][1] = iBooker.
book1D(histname+
"Barrel",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
656 h_leadExpectedHitsInner_[0][2] = iBooker.
book1D(histname+
"Endcap",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
657 h_leadExpectedHitsInner_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"vertex #chi^{2} all", 16, -0.5, 15.5);
658 h_leadExpectedHitsInner_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
659 h_leadExpectedHitsInner_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
660 h_leadExpectedHitsInner_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"vertex #chi^{2} all", 16, -0.5, 15.5);
661 h_leadExpectedHitsInner_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
662 h_leadExpectedHitsInner_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
664 histname=
"nSharedHits";
665 h_nSharedHits_[0][0] = iBooker.
book1D(histname+
"All",
"vertex #chi^{2} all", 16, -0.5, 15.5);
666 h_nSharedHits_[0][1] = iBooker.
book1D(histname+
"Barrel",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
667 h_nSharedHits_[0][2] = iBooker.
book1D(histname+
"Endcap",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
668 h_nSharedHits_[1][0] = iBooker.
book1D(histname+
"All_Ass",
"vertex #chi^{2} all", 16, -0.5, 15.5);
669 h_nSharedHits_[1][1] = iBooker.
book1D(histname+
"Barrel_Ass",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
670 h_nSharedHits_[1][2] = iBooker.
book1D(histname+
"Endcap_Ass",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
671 h_nSharedHits_[2][0] = iBooker.
book1D(histname+
"All_Fakes",
"vertex #chi^{2} all", 16, -0.5, 15.5);
672 h_nSharedHits_[2][1] = iBooker.
book1D(histname+
"Barrel_Fakes",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
673 h_nSharedHits_[2][2] = iBooker.
book1D(histname+
"Endcap_Fakes",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
677 nHits_[0] = iBooker.
book2D(histname+
"AllTracks",
"Photons:Tracks from conversions: # of hits all tracks",etaBin,etaMin, etaMax,30,0., 30.);
678 nHits_[1] = iBooker.
book2D(histname+
"AllTracks_Ass",
"Photons:Tracks from conversions: # of hits all tracks ass",etaBin,etaMin, etaMax,30,0., 30.);
679 nHits_[2] = iBooker.
book2D(histname+
"AllTracks_Fakes",
"Photons:Tracks from conversions: # of hits all tracks fakes",etaBin,etaMin, etaMax,30,0., 30.);
682 histname=
"nHitsVsEta";
683 nHitsVsEta_[0] = iBooker.
book2D(histname+
"AllTracks",
"Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax,30,0., 30.);
684 nHitsVsEta_[1] = iBooker.
book2D(histname+
"AllTracks_Ass",
"Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax,30,0., 30.);
685 nHitsVsEta_[2] = iBooker.
book2D(histname+
"AllTracks_Fakes",
"Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax,30,0., 30.);
686 histname=
"h_nHitsVsEta";
687 p_nHitsVsEta_[0] = iBooker.
bookProfile(histname+
"AllTracks",
"Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax, 30,-0.5, 29.5,
"");
688 p_nHitsVsEta_[1] = iBooker.
bookProfile(histname+
"AllTracks_Ass",
"Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax, 30,-0.5, 29.5,
"");
689 p_nHitsVsEta_[2] = iBooker.
bookProfile(histname+
"AllTracks_Fakes",
"Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax, 30,-0.5, 29.5,
"");
693 nHitsVsR_[0] = iBooker.
book2D(histname+
"AllTracks",
"Photons:Tracks from conversions: # of hits vs radius all tracks" ,rBin,rMin, rMax,30,0., 30.);
694 nHitsVsR_[1] = iBooker.
book2D(histname+
"AllTracks_Ass",
"Photons:Tracks from conversions: # of hits vs radius all tracks" ,rBin,rMin, rMax,30,0., 30.);
695 nHitsVsR_[2] = iBooker.
book2D(histname+
"AllTracks_Fakes",
"Photons:Tracks from conversions: # of hits vs radius all tracks" ,rBin,rMin, rMax,30,0., 30.);
697 histname=
"h_nHitsVsR";
698 p_nHitsVsR_[0] = iBooker.
bookProfile(histname+
"AllTracks",
"Photons:Tracks from conversions: # of hits vs radius all tracks",rBin,rMin, rMax, 30,-0.5, 29.5,
"");
699 p_nHitsVsR_[1] = iBooker.
bookProfile(histname+
"AllTracks_Ass",
"Photons:Tracks from conversions: # of hits vs radius all tracks",rBin,rMin, rMax, 30,-0.5, 29.5,
"");
700 p_nHitsVsR_[2] = iBooker.
bookProfile(histname+
"AllTracks_Fakes",
"Photons:Tracks from conversions: # of hits vs radius all tracks",rBin,rMin, rMax, 30,-0.5, 29.5,
"");
703 h_tkChi2_[0] = iBooker.
book1D(histname+
"AllTracks",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 100, chi2Min, chi2Max);
704 h_tkChi2_[1] = iBooker.
book1D(histname+
"AllTracks_Ass",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 100, chi2Min, chi2Max);
705 h_tkChi2_[2] = iBooker.
book1D(histname+
"AllTracks_Fakes",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 100, chi2Min, chi2Max);
707 histname=
"tkChi2Large";
708 h_tkChi2Large_[0] = iBooker.
book1D(histname+
"AllTracks",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
709 h_tkChi2Large_[1] = iBooker.
book1D(histname+
"AllTracks_Ass",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
710 h_tkChi2Large_[2] = iBooker.
book1D(histname+
"AllTracks_Fakes",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
713 histname=
"h2Chi2VsEta";
714 h2_Chi2VsEta_[0]=iBooker.
book2D(histname+
"All",
" Reco Track #chi^{2} vs #eta: All ",etaBin2,etaMin, etaMax,100, chi2Min, chi2Max);
715 h2_Chi2VsEta_[1]=iBooker.
book2D(histname+
"All_Ass",
" Reco Track #chi^{2} vs #eta: All ",etaBin2,etaMin, etaMax,100, chi2Min, chi2Max);
716 h2_Chi2VsEta_[2]=iBooker.
book2D(histname+
"All_Fakes",
" Reco Track #chi^{2} vs #eta: All ",etaBin2,etaMin, etaMax,100, chi2Min, chi2Max);
717 histname=
"pChi2VsEta";
718 p_Chi2VsEta_[0]=iBooker.
bookProfile(histname+
"All",
" Reco Track #chi^{2} vs #eta : All ",etaBin2,etaMin, etaMax, 100, chi2Min, chi2Max,
"");
719 p_Chi2VsEta_[1]=iBooker.
bookProfile(histname+
"All_Ass",
" Reco Track #chi^{2} vs #eta : All ",etaBin2,etaMin, etaMax, 100, chi2Min, chi2Max,
"");
720 p_Chi2VsEta_[2]=iBooker.
bookProfile(histname+
"All_Fakes",
" Reco Track #chi^{2} vs #eta : All ",etaBin2,etaMin, etaMax, 100, chi2Min, chi2Max,
"");
722 histname=
"h2Chi2VsR";
723 h2_Chi2VsR_[0]=iBooker.
book2D(histname+
"All",
" Reco Track #chi^{2} vs R: All ",rBin,rMin, rMax,100,chi2Min, chi2Max);
724 h2_Chi2VsR_[1]=iBooker.
book2D(histname+
"All_Ass",
" Reco Track #chi^{2} vs R: All ",rBin,rMin, rMax,100,chi2Min, chi2Max);
725 h2_Chi2VsR_[2]=iBooker.
book2D(histname+
"All_Fakes",
" Reco Track #chi^{2} vs R: All ",rBin,rMin, rMax,100,chi2Min, chi2Max);
727 p_Chi2VsR_[0]=iBooker.
bookProfile(histname+
"All",
" Reco Track #chi^{2} vas R : All ",rBin,rMin,rMax, 100,chi2Min, chi2Max,
"");
728 p_Chi2VsR_[1]=iBooker.
bookProfile(histname+
"All_Ass",
" Reco Track #chi^{2} vas R : All ",rBin,rMin,rMax, 100,chi2Min, chi2Max,
"");
729 p_Chi2VsR_[2]=iBooker.
bookProfile(histname+
"All_Fakes",
" Reco Track #chi^{2} vas R : All ",rBin,rMin,rMax, 100,chi2Min, chi2Max,
"");
732 h_TkD0_[0]=iBooker.
book1D(histname+
"All",
" Reco Track D0*q: All ",200,-0.1,60);
733 h_TkD0_[1]=iBooker.
book1D(histname+
"All_Ass",
" Reco Track D0*q: Barrel ",200,-0.1,60);
734 h_TkD0_[2]=iBooker.
book1D(histname+
"All_Fakes",
" Reco Track D0*q: Endcap ",200,-0.1,60);
738 histname=
"hTkPtPull";
739 h_TkPtPull_[0]=iBooker.
book1D(histname+
"All",
" Reco Track Pt pull: All ",100, -20., 10.);
740 histname=
"hTkPtPull";
741 h_TkPtPull_[1]=iBooker.
book1D(histname+
"Barrel",
" Reco Track Pt pull: Barrel ",100, -20., 10.);
742 histname=
"hTkPtPull";
743 h_TkPtPull_[2]=iBooker.
book1D(histname+
"Endcap",
" Reco Track Pt pull: Endcap ",100, -20., 10.);
745 histname=
"h2TkPtPullEta";
746 h2_TkPtPull_[0]=iBooker.
book2D(histname+
"All",
" Reco Track Pt pull: All ",etaBin2,etaMin, etaMax,100, -20., 10.);
747 histname=
"pTkPtPullEta";
748 p_TkPtPull_[0]=iBooker.
bookProfile(histname+
"All",
" Reco Track Pt pull: All ",etaBin2,etaMin, etaMax, 100, -20., 10.,
" ");
751 histname=
"PtRecVsPtSim";
752 h2_PtRecVsPtSim_[0]=iBooker.
book2D(histname+
"All",
"Pt Rec vs Pt sim: All ", etBin,etMin,etMax,etBin,etMin, etMax);
753 h2_PtRecVsPtSim_[1]=iBooker.
book2D(histname+
"Barrel",
"Pt Rec vs Pt sim: Barrel ", etBin,etMin,etMax,etBin,etMin, etMax);
754 h2_PtRecVsPtSim_[2]=iBooker.
book2D(histname+
"Endcap",
"Pt Rec vs Pt sim: Endcap ", etBin,etMin,etMax,etBin,etMin, etMax);
756 histname=
"photonPtRecVsPtSim";
757 h2_photonPtRecVsPtSim_=iBooker.
book2D(histname+
"All",
"Pt Rec vs Pt sim: All ", etBin,etMin,etMax,etBin,etMin, etMax);
759 histname=
"nHitsBeforeVtx";
760 h_nHitsBeforeVtx_[0]=iBooker.
book1D(histname+
"All",
"Pt Rec vs Pt sim: All ", 16, -0.5, 15.5);
761 h_nHitsBeforeVtx_[1]=iBooker.
book1D(histname+
"Barrel",
"Pt Rec vs Pt sim: Barrel ", 16, -0.5, 15.5);
762 h_nHitsBeforeVtx_[2]=iBooker.
book1D(histname+
"Endcap",
"Pt Rec vs Pt sim: Endcap ", 16, -0.5, 15.5);
764 histname=
"dlClosestHitToVtx";
765 h_dlClosestHitToVtx_[0]=iBooker.
book1D(histname+
"All",
"Pt Rec vs Pt sim: All ", 100, -10., 10.);
766 h_dlClosestHitToVtx_[1]=iBooker.
book1D(histname+
"Barrel",
"Pt Rec vs Pt sim: Barrel ", 100, -10., 10.);
767 h_dlClosestHitToVtx_[2]=iBooker.
book1D(histname+
"Endcap",
"Pt Rec vs Pt sim: Endcap ", 100, -10., 10.);
769 histname=
"dlClosestHitToVtxSig";
770 h_dlClosestHitToVtxSig_[0]=iBooker.
book1D(histname+
"All",
"Pt Rec vs Pt sim: All ", 100, -8., 8.);
771 h_dlClosestHitToVtxSig_[1]=iBooker.
book1D(histname+
"Barrel",
"Pt Rec vs Pt sim: Barrel ", 100, -8., 8.);
772 h_dlClosestHitToVtxSig_[2]=iBooker.
book1D(histname+
"Endcap",
"Pt Rec vs Pt sim: Endcap ", 100, -8., 8.);
774 h_match_= iBooker.
book1D(
"h_match",
" ", 3, -0.5,2.5);
788 edm::LogInfo(
"ConvertedPhotonProducer") <<
" get magnetic field" <<
"\n";
805 delete thePhotonMCTruthFinder_;
812 thePhotonMCTruthFinder_->clear();
817 const float BARL = 1.4442;
819 const float END_HI = 2.5;
825 LogInfo(
"TkConvValidator") <<
"TkConvValidator Analyzing event number: " << e.
id() <<
" Global Counter " << nEvt_ <<
"\n";
840 e.
getByToken(conversionCollectionPr_Token_, convHandle);
842 if (!convHandle.isValid()) {
843 edm::LogError(
"ConversionsProducer") <<
"Error! Can't get the collection "<< std::endl;
849 e.
getByToken(photonCollectionPr_Token_, photonHandle);
851 if (!photonHandle.isValid()) {
852 edm::LogError(
"PhotonProducer") <<
"Error! Can't get the Photon collection "<< std::endl;
861 if (!vertexHandle.isValid()) {
862 edm::LogError(
"TrackerOnlyConversionProducer") <<
"Error! Can't get the product primary Vertex Collection "<<
"\n";
867 bool valid_pvtx =
false;
871 if (the_pvtx.isValid() && fabs(the_pvtx.position().z())<=15 && the_pvtx.position().Rho()<=2){
878 if (!bsHandle.isValid()) {
880 <<
"Error! Can't get the product primary Vertex Collection "<<
"\n";
894 std::vector<SimTrack> theSimTracks;
895 std::vector<SimVertex> theSimVertices;
902 bool useTP = parameters_.getParameter<
bool>(
"useTP");
908 e.
getByToken(tpSelForEff_Token_, TPHandleForEff);
909 tpForEfficiency = *(TPHandleForEff.product());
910 e.
getByToken(tpSelForFake_Token_, TPHandleForFakeRate);
911 tpForFakeRate = *(TPHandleForFakeRate.product());
916 theSimTracks.insert(theSimTracks.end(),SimTk->begin(),SimTk->end());
917 theSimVertices.insert(theSimVertices.end(),SimVtx->begin(),SimVtx->end());
918 std::vector<PhotonMCTruth> mcPhotons=thePhotonMCTruthFinder_->find (theSimTracks, theSimVertices);
933 std::map<const reco::Track*,TrackingParticleRef> myAss;
934 std::map<const reco::Track*,TrackingParticleRef>::const_iterator itAss;
936 for ( std::vector<PhotonMCTruth>::const_iterator mcPho=mcPhotons.begin(); mcPho !=mcPhotons.end(); mcPho++) {
938 mcConvPt_= (*mcPho).fourMomentum().et();
939 float mcPhi= (*mcPho).fourMomentum().phi();
940 mcPhi_= phiNormalization(mcPhi);
941 mcEta_= (*mcPho).fourMomentum().pseudoRapidity();
942 mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z() );
943 mcConvR_= (*mcPho).vertex().perp();
944 mcConvX_= (*mcPho).vertex().x();
945 mcConvY_= (*mcPho).vertex().y();
946 mcConvZ_= (*mcPho).vertex().z();
947 mcConvEta_= (*mcPho).vertex().eta();
948 mcConvPhi_= (*mcPho).vertex().phi();
950 if ( fabs(mcEta_) > END_HI )
continue;
952 if (mcConvPt_<minPhoPtForEffic)
continue;
953 if (fabs(mcEta_)>maxPhoEtaForEffic)
continue;
954 if (fabs(mcConvZ_)>maxPhoZForEffic)
continue;
955 if (mcConvR_>maxPhoRForEffic)
continue;
958 bool goodSimConversion=
false;
959 bool visibleConversion=
false;
960 bool visibleConversionsWithTwoSimTracks=
false;
961 if ( (*mcPho).isAConversion() == 1 ) {
963 h_AllSimConv_[0]->Fill( mcEta_ ) ;
964 h_AllSimConv_[1]->Fill( mcPhi_ );
965 h_AllSimConv_[2]->Fill( mcConvR_ );
966 h_AllSimConv_[3]->Fill( mcConvZ_ );
967 h_AllSimConv_[4]->Fill( (*mcPho).fourMomentum().et());
969 if ( mcConvR_ <15) h_SimConvEtaPix_[0]->Fill( mcEta_ ) ;
971 if ( ( fabs(mcEta_) <= BARL && mcConvR_ <85 ) ||
972 ( fabs(mcEta_) > BARL && fabs(mcEta_) <=END_HI && fabs( (*mcPho).vertex().z() ) < 210 ) ) visibleConversion=
true;
977 for(
size_t i = 0;
i < tpForEfficiency.size(); ++
i){
979 if ( fabs( tp->vx() - (*mcPho).vertex().x() ) < 0.0001 &&
980 fabs( tp->vy() - (*mcPho).vertex().y() ) < 0.0001 &&
981 fabs( tp->vz() - (*mcPho).vertex().z() ) < 0.0001) {
982 theConvTP_.push_back( tp );
987 if ( theConvTP_.size() == 2 ) visibleConversionsWithTwoSimTracks=
true;
988 goodSimConversion=
false;
990 if ( visibleConversion && visibleConversionsWithTwoSimTracks ) goodSimConversion=
true;
991 if ( goodSimConversion ) {
993 h_VisSimConv_[0]->Fill( mcEta_ ) ;
994 h_VisSimConv_[1]->Fill( mcPhi_ );
995 h_VisSimConv_[2]->Fill( mcConvR_ );
996 h_VisSimConv_[3]->Fill( mcConvZ_ );
997 h_VisSimConv_[4]->Fill( (*mcPho).fourMomentum().et());
1002 h_simTkPt_ ->
Fill ( (*iTrk)->pt() );
1003 h_simTkEta_ ->
Fill ( (*iTrk)->eta() );
1009 if ( ! (visibleConversion && visibleConversionsWithTwoSimTracks ) )
continue;
1011 h_simConvVtxRvsZ_[0] ->Fill ( fabs (mcConvZ_), mcConvR_ ) ;
1012 if ( fabs(mcEta_) <=1.) {
1013 h_simConvVtxRvsZ_[1] ->Fill ( fabs (mcConvZ_), mcConvR_ ) ;
1014 h_simConvVtxYvsX_ ->Fill ( mcConvX_, mcConvY_ ) ;
1017 h_simConvVtxRvsZ_[2] ->Fill ( fabs (mcConvZ_), mcConvR_ ) ;
1025 bool recomatch =
false;
1026 float chi2Prob = 0.;
1029 for (reco::ConversionCollection::const_iterator
conv = convHandle->begin();
conv!=convHandle->end();++
conv) {
1040 std::vector<edm::RefToBase<reco::Track> >
tracks = aConv.
tracks();
1045 if (tracks.size() !=2 || !(vtx.
isValid()))
continue;
1056 double lxy = (themom.x()*dbsx + themom.y()*dbsy)/themom.rho();
1058 if (lxy<minLxy_)
continue;
1065 if ( ecalalgotracks_ && ( !(tfrb1->
algo()==15 || tfrb1->
algo()==16) || !(tfrb2->
algo()==15 || tfrb2->
algo()==16) ) )
continue;
1076 bool isAssociated =
false;
1080 std::vector<std::pair<RefToBase<reco::Track>,
double> > trackV1, trackV2;
1082 int tp_1 = 0, tp_2 = 1;
1083 if (q1.
find(theConvTP_[0])!=q1.
end()){
1084 trackV1 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >) q1[theConvTP_[0]];
1085 }
else if (q1.
find(theConvTP_[1])!=q1.
end()){
1086 trackV1 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >) q1[theConvTP_[1]];
1089 if (q2.
find(theConvTP_[1])!=q2.
end()){
1090 trackV2 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >) q2[theConvTP_[1]];
1091 }
else if (q2.
find(theConvTP_[0])!=q2.
end()){
1092 trackV2 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >) q2[theConvTP_[0]];
1095 if (!(trackV1.size()&&trackV2.size()))
1097 if (tp_1 == tp_2)
continue;
1103 myAss.insert( std::make_pair (tr1.
get(),theConvTP_[tp_1] ) );
1104 myAss.insert( std::make_pair (tr2.
get(),theConvTP_[tp_2]) );
1112 isAssociated =
true;
1117 h_SimRecConvTwoMTracks_[0]->Fill( mcEta_ ) ;
1118 h_SimRecConvTwoMTracks_[1]->Fill( mcPhi_ );
1119 h_SimRecConvTwoMTracks_[2]->Fill( mcConvR_ );
1120 h_SimRecConvTwoMTracks_[3]->Fill( mcConvZ_ );
1121 h_SimRecConvTwoMTracks_[4]->Fill( (*mcPho).fourMomentum().et());
1128 h_SimConvTwoMTracks_[0]->Fill( mcEta_ ) ;
1129 h_SimConvTwoMTracks_[1]->Fill( mcPhi_ );
1130 h_SimConvTwoMTracks_[2]->Fill( mcConvR_ );
1131 h_SimConvTwoMTracks_[3]->Fill( mcConvZ_ );
1132 h_SimConvTwoMTracks_[4]->Fill( (*mcPho).fourMomentum().et());
1135 if ( chi2Prob > 0) {
1136 h_SimConvTwoMTracksAndVtxPGT0_[0]->Fill( mcEta_ ) ;
1137 h_SimConvTwoMTracksAndVtxPGT0_[1]->Fill( mcPhi_ );
1138 h_SimConvTwoMTracksAndVtxPGT0_[2]->Fill( mcConvR_ );
1139 h_SimConvTwoMTracksAndVtxPGT0_[3]->Fill( mcConvZ_ );
1140 h_SimConvTwoMTracksAndVtxPGT0_[4]->Fill( (*mcPho).fourMomentum().et());
1142 if ( chi2Prob > 0.0005) {
1143 h_SimConvTwoMTracksAndVtxPGT0005_[0]->Fill( mcEta_ ) ;
1144 h_SimConvTwoMTracksAndVtxPGT0005_[1]->Fill( mcPhi_ );
1145 h_SimConvTwoMTracksAndVtxPGT0005_[2]->Fill( mcConvR_ );
1146 h_SimConvTwoMTracksAndVtxPGT0005_[3]->Fill( mcConvZ_ );
1147 h_SimConvTwoMTracksAndVtxPGT0005_[4]->Fill( (*mcPho).fourMomentum().et());
1157 for (reco::ConversionCollection::const_iterator
conv = convHandle->begin();
conv!=convHandle->end();++
conv) {
1167 std::vector<edm::RefToBase<reco::Track> >
tracks = aConv.
tracks();
1171 if (tracks.size() !=2 || !(vtx.
isValid()))
continue;
1182 double lxy = (themom.x()*dbsx + themom.y()*dbsy)/themom.rho();
1184 if (lxy<minLxy_)
continue;
1186 bool phoIsInBarrel=
false;
1187 bool phoIsInEndcap=
false;
1194 if ( ecalalgotracks_ && ( !(tk1->
algo()==15 || tk1->
algo()==16) || !(tk2->
algo()==15 || tk2->
algo()==16) ) )
continue;
1206 if (
sqrt(p1AtVtx.perp2()) >
sqrt(p2AtVtx.perp2()) )
1207 dPhiTracksAtVtx = p1AtVtx.phi() - p2AtVtx.phi();
1209 dPhiTracksAtVtx = p2AtVtx.phi() - p1AtVtx.phi();
1215 if (fabs(refittedMom.eta())< 1.479 ) {
1224 double Mindeltaeta = 999999;
1225 double Mindeltaphi = 999999;
1226 bool matchConvSC=
false;
1227 reco::PhotonCollection::const_iterator iMatchingSC;
1228 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
1232 double deltaeta =
abs( aPho.
superCluster()->position().eta() -ConvEta);
1233 if (
abs(deltaeta)<
abs(Mindeltaeta) &&
abs(deltaphi)<
abs(Mindeltaphi)) {
1234 Mindeltaphi=
abs(deltaphi);
1235 Mindeltaeta=
abs(deltaeta);
1236 iMatchingSC = iPho ;
1239 if (
abs(Mindeltaeta)<0.1 &&
abs(Mindeltaphi)<0.1) {
1253 int ilead = 0, itrail = 1;
1254 if (tk2->
pt() > tk1->
pt()) {
1267 h_convEta_[
match][0]->Fill( refittedMom.eta() );
1268 h_convEta2_[
match][0]->Fill( refittedMom.eta() );
1270 h_convPhi_[
match][0]->Fill( refittedMom.phi() );
1275 h_convPt_[
match][0]->Fill(
sqrt(refittedMom.perp2()) );
1276 h_invMass_[
match][0] ->Fill( invM);
1277 h_vtxChi2Prob_[
match][0] ->Fill (chi2Prob);
1278 h_lxybs_[
match][0] ->Fill (lxy);
1279 h_maxNHitsBeforeVtx_[
match][0] ->Fill (maxNHitsBeforeVtx);
1280 h_leadNHitsBeforeVtx_[
match][0] ->Fill (leadNHitsBeforeVtx);
1281 h_trailNHitsBeforeVtx_[
match][0] ->Fill (trailNHitsBeforeVtx);
1282 h_sumNHitsBeforeVtx_[
match][0] ->Fill (sumNHitsBeforeVtx);
1283 h_deltaExpectedHitsInner_[
match][0] ->Fill (deltaExpectedHitsInner);
1284 h_leadExpectedHitsInner_[
match][0] ->Fill (leadExpectedHitsInner);
1285 h_maxDlClosestHitToVtx_[
match][0] ->Fill (maxDlClosestHitToVtx);
1286 h_maxDlClosestHitToVtxSig_[
match][0] ->Fill (maxDlClosestHitToVtxSig);
1290 if ( matchConvSC ) {
1291 h_convEtaMatchSC_[
match][0]->Fill( refittedMom.eta() );
1292 h_EoverPTracks_[
match][0] ->Fill (iMatchingSC->superCluster()->energy()/
sqrt(refittedMom.mag2()));
1293 h_convSCdPhi_[
match][0]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1295 h_convSCdEta_[
match][0]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1299 h_DPhiTracksAtVtx_[
match][0]->Fill( dPhiTracksAtVtx);
1300 h2_DPhiTracksAtVtxVsEta_->Fill( mcEta_, dPhiTracksAtVtx);
1301 h2_DPhiTracksAtVtxVsR_->Fill( mcConvR_, dPhiTracksAtVtx);
1302 p_DPhiTracksAtVtxVsEta_->Fill( mcEta_, dPhiTracksAtVtx);
1303 p_DPhiTracksAtVtxVsR_->Fill( mcConvR_, dPhiTracksAtVtx);
1311 if ( phoIsInBarrel ) {
1312 h_invMass_[
match][1] ->Fill(invM);
1313 h_vtxChi2Prob_[
match][1] ->Fill (chi2Prob);
1315 h_DPhiTracksAtVtx_[
match][1]->Fill( dPhiTracksAtVtx);
1317 h_lxybs_[
match][1] ->Fill (lxy);
1318 h_maxNHitsBeforeVtx_[
match][1] ->Fill (maxNHitsBeforeVtx);
1319 h_leadNHitsBeforeVtx_[
match][1] ->Fill (leadNHitsBeforeVtx);
1320 h_trailNHitsBeforeVtx_[
match][1] ->Fill (trailNHitsBeforeVtx);
1321 h_sumNHitsBeforeVtx_[
match][1] ->Fill (sumNHitsBeforeVtx);
1322 h_deltaExpectedHitsInner_[
match][1] ->Fill (deltaExpectedHitsInner);
1323 h_leadExpectedHitsInner_[
match][1] ->Fill (leadExpectedHitsInner);
1324 h_maxDlClosestHitToVtx_[
match][1] ->Fill (maxDlClosestHitToVtx);
1325 h_maxDlClosestHitToVtxSig_[
match][1] ->Fill (maxDlClosestHitToVtxSig);
1336 if ( matchConvSC ) {
1337 h_EoverPTracks_[
match][1] ->
Fill(iMatchingSC->superCluster()->energy()/
sqrt(refittedMom.mag2()));
1338 h_convSCdPhi_[
match][1]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1340 h_convSCdEta_[
match][1]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1345 if ( phoIsInEndcap ) {
1346 h_invMass_[
match][2] ->Fill(invM);
1347 h_vtxChi2Prob_[
match][2] ->Fill (chi2Prob);
1349 h_DPhiTracksAtVtx_[
match][2]->Fill( dPhiTracksAtVtx);
1351 h_lxybs_[
match][2] ->Fill (lxy);
1352 h_maxNHitsBeforeVtx_[
match][2] ->Fill (maxNHitsBeforeVtx);
1353 h_leadNHitsBeforeVtx_[
match][2] ->Fill (leadNHitsBeforeVtx);
1354 h_trailNHitsBeforeVtx_[
match][2] ->Fill (trailNHitsBeforeVtx);
1355 h_sumNHitsBeforeVtx_[
match][2] ->Fill (sumNHitsBeforeVtx);
1356 h_deltaExpectedHitsInner_[
match][2] ->Fill (deltaExpectedHitsInner);
1357 h_leadExpectedHitsInner_[
match][2] ->Fill (leadExpectedHitsInner);
1358 h_maxDlClosestHitToVtx_[
match][2] ->Fill (maxDlClosestHitToVtx);
1359 h_maxDlClosestHitToVtxSig_[
match][2] ->Fill (maxDlClosestHitToVtxSig);
1361 if ( matchConvSC ) {
1362 h_EoverPTracks_[
match][2] ->Fill (iMatchingSC->superCluster()->energy()/
sqrt(refittedMom.mag2()));
1363 h_convSCdPhi_[
match][2]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1365 h_convSCdEta_[
match][2]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1377 for (
unsigned int i=0;
i<tracks.size();
i++) {
1380 d0 = - tracks[
i]->dxy(the_pvtx.position());
1382 d0 = tracks[
i]->d0();
1389 nHitsVsEta_[
match] ->Fill (mcEta_,
float(tracks[
i]->numberOfValidHits()) );
1390 nHitsVsR_[
match] ->Fill (mcConvR_,
float(tracks[
i]->numberOfValidHits()) );
1391 p_nHitsVsEta_[
match] ->Fill (mcEta_,
float(tracks[
i]->numberOfValidHits()) -0.0001);
1392 p_nHitsVsR_[
match] ->Fill (mcConvR_,
float(tracks[
i]->numberOfValidHits()) -0.0001);
1393 h_tkChi2_[
match] ->Fill (tracks[
i]->normalizedChi2() );
1394 h_tkChi2Large_[
match] ->Fill (tracks[
i]->normalizedChi2() );
1395 h2_Chi2VsEta_[
match] ->Fill( mcEta_, tracks[
i]->normalizedChi2() );
1396 h2_Chi2VsR_[
match] ->Fill( mcConvR_, tracks[
i]->normalizedChi2() );
1397 p_Chi2VsEta_[
match] ->Fill( mcEta_, tracks[
i]->normalizedChi2() );
1398 p_Chi2VsR_[
match] ->Fill( mcConvR_, tracks[
i]->normalizedChi2() );
1402 bool associated =
false;
1403 float mcConvPt_= -99999999;
1406 for ( std::vector<PhotonMCTruth>::const_iterator mcPho=mcPhotons.begin(); mcPho !=mcPhotons.end(); mcPho++) {
1407 mcConvPt_= (*mcPho).fourMomentum().et();
1408 float mcPhi= (*mcPho).fourMomentum().phi();
1409 simPV_Z = (*mcPho).primaryVertex().z();
1410 mcPhi_= phiNormalization(mcPhi);
1411 mcEta_= (*mcPho).fourMomentum().pseudoRapidity();
1412 mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z() );
1413 mcConvR_= (*mcPho).vertex().perp();
1414 mcConvX_= (*mcPho).vertex().x();
1415 mcConvY_= (*mcPho).vertex().y();
1416 mcConvZ_= (*mcPho).vertex().z();
1417 mcConvEta_= (*mcPho).vertex().eta();
1418 mcConvPhi_= (*mcPho).vertex().phi();
1419 if ( fabs(mcEta_) > END_HI )
continue;
1420 if (mcConvPt_<minPhoPtForPurity)
continue;
1421 if (fabs(mcEta_)>maxPhoEtaForPurity)
continue;
1422 if (fabs(mcConvZ_)>maxPhoZForPurity)
continue;
1423 if (mcConvR_>maxPhoRForEffic)
continue;
1425 if ( (*mcPho).isAConversion() != 1 )
continue;
1426 if (!( ( fabs(mcEta_) <= BARL && mcConvR_ <85 ) ||
1427 ( fabs(mcEta_) > BARL && fabs(mcEta_) <=END_HI && fabs( (*mcPho).vertex().z() ) < 210 ) ) )
1432 for(
size_t i = 0;
i < tpForFakeRate.size(); ++
i){
1434 if ( fabs( tp->vx() - (*mcPho).vertex().x() ) < 0.0001 &&
1435 fabs( tp->vy() - (*mcPho).vertex().y() ) < 0.0001 &&
1436 fabs( tp->vz() - (*mcPho).vertex().z() ) < 0.0001) {
1437 theConvTP_.push_back( tp );
1443 if ( theConvTP_.size() < 2 )
continue;
1449 std::vector<std::pair<TrackingParticleRef, double> > tp1 = p1[tk1];
1450 std::vector<std::pair<TrackingParticleRef, double> > tp2 = p2[tk2];
1451 if (!(tp1.size()&&tp2.size())){
1455 if (tp1.size()&&tp2.size()) {
1458 if (
abs(tpr1->pdgId())==11&&
abs(tpr2->pdgId())==11&& tpr1->pdgId()*tpr2->pdgId()<0) {
1459 if ( (tpr1->parentVertex()->sourceTracks_end()-tpr1->parentVertex()->sourceTracks_begin()==1) &&
1460 (tpr2->parentVertex()->sourceTracks_end()-tpr2->parentVertex()->sourceTracks_begin()==1)) {
1461 if (tpr1->parentVertex().
key()==tpr2->parentVertex().
key() && ((*tpr1->parentVertex()->sourceTracks_begin())->
pdgId()==22)) {
1462 mcConvR_ =
sqrt(tpr1->parentVertex()->position().Perp2());
1463 mcConvZ_ = tpr1->parentVertex()->position().z();
1464 mcConvX_ = tpr1->parentVertex()->position().x();
1465 mcConvY_ = tpr1->parentVertex()->position().y();
1466 mcConvEta_ = tpr1->parentVertex()->position().eta();
1467 mcConvPhi_ = tpr1->parentVertex()->position().phi();
1468 mcConvPt_ =
sqrt((*tpr1->parentVertex()->sourceTracks_begin())->momentum().Perp2());
1488 for(
size_t i = 0;
i < tpForFakeRate.size(); ++
i){
1490 theConvTP_.push_back( tp );
1496 for ( std::vector<PhotonMCTruth>::const_iterator mcPho=mcPhotons.begin(); mcPho !=mcPhotons.end(); mcPho++) {
1497 mcConvPt_= (*mcPho).fourMomentum().et();
1498 float mcPhi= (*mcPho).fourMomentum().phi();
1499 simPV_Z = (*mcPho).primaryVertex().z();
1500 mcPhi_= phiNormalization(mcPhi);
1501 mcEta_= (*mcPho).fourMomentum().pseudoRapidity();
1502 mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z() );
1503 mcConvR_= (*mcPho).vertex().perp();
1504 mcConvX_= (*mcPho).vertex().x();
1505 mcConvY_= (*mcPho).vertex().y();
1506 mcConvZ_= (*mcPho).vertex().z();
1507 mcConvEta_= (*mcPho).vertex().eta();
1508 mcConvPhi_= (*mcPho).vertex().phi();
1509 if ( fabs(mcEta_) > END_HI )
continue;
1510 if (mcConvPt_<minPhoPtForPurity)
continue;
1511 if (fabs(mcEta_)>maxPhoEtaForPurity)
continue;
1512 if (fabs(mcConvZ_)>maxPhoZForPurity)
continue;
1513 if (mcConvR_>maxPhoRForEffic)
continue;
1515 if ( (*mcPho).isAConversion() != 1 )
continue;
1516 if (!( ( fabs(mcEta_) <= BARL && mcConvR_ <85 ) ||
1517 ( fabs(mcEta_) > BARL && fabs(mcEta_) <=END_HI && fabs( (*mcPho).vertex().z() ) < 210 ) ) )
1522 for(
size_t i = 0;
i < tpForFakeRate.size(); ++
i){
1524 if ( fabs( tp->vx() - (*mcPho).vertex().x() ) < 0.0001 &&
1525 fabs( tp->vy() - (*mcPho).vertex().y() ) < 0.0001 &&
1526 fabs( tp->vz() - (*mcPho).vertex().z() ) < 0.0001) {
1527 theConvTP_.push_back( tp );
1533 if ( theConvTP_.size() < 2 )
continue;
1545 std::vector<std::pair<TrackingParticleRef, double> > tp1 = p1incl[tk1];
1546 std::vector<std::pair<TrackingParticleRef, double> > tp2 = p2incl[tk2];
1547 if (!(tp1.size()&&tp2.size())){
1551 if (tp1.size()&&tp2.size()) {
1554 if (
abs(tpr1->pdgId())==11&&
abs(tpr2->pdgId())==11 && tpr1->pdgId()*tpr2->pdgId()<0) {
1555 if ( ((tpr1->parentVertex()->sourceTracks_end()-tpr1->parentVertex()->sourceTracks_begin()>=1) && (*tpr1->parentVertex()->sourceTracks_begin())->
pdgId()==22) &&
1556 ((tpr2->parentVertex()->sourceTracks_end()-tpr2->parentVertex()->sourceTracks_begin()>=1) && (*tpr2->parentVertex()->sourceTracks_begin())->
pdgId()==22) ) {
1587 if ( associated ) match=1;
1591 h_match_->Fill(
float(match));
1593 if ( match == 1) nRecConvAss_++;
1594 h_convEta_[
match][0]->Fill( refittedMom.eta() );
1595 h_convEta_[
match][1]->Fill( refittedMom.eta() );
1596 if (matchConvSC) h_convEtaMatchSC_[
match][0]->Fill( refittedMom.eta() );
1597 h_convPhi_[
match][0]->Fill( refittedMom.phi() );
1600 h_convPt_[
match][0]->Fill(
sqrt(refittedMom.perp2()) );
1601 h_invMass_[
match][0] ->Fill( invM);
1602 h_vtxChi2Prob_[
match][0] ->Fill (chi2Prob);
1603 h_DPhiTracksAtVtx_[
match][0]->Fill( dPhiTracksAtVtx);
1606 h_lxybs_[
match][0] ->Fill (lxy);
1607 h_maxNHitsBeforeVtx_[
match][0] ->Fill (maxNHitsBeforeVtx);
1608 h_leadNHitsBeforeVtx_[
match][0] ->Fill (leadNHitsBeforeVtx);
1609 h_trailNHitsBeforeVtx_[
match][0] ->Fill (trailNHitsBeforeVtx);
1610 h_sumNHitsBeforeVtx_[
match][0] ->Fill (sumNHitsBeforeVtx);
1611 h_deltaExpectedHitsInner_[
match][0] ->Fill (deltaExpectedHitsInner);
1612 h_leadExpectedHitsInner_[
match][0] ->Fill (leadExpectedHitsInner);
1613 h_maxDlClosestHitToVtx_[
match][0] ->Fill (maxDlClosestHitToVtx);
1614 h_maxDlClosestHitToVtxSig_[
match][0] ->Fill (maxDlClosestHitToVtxSig);
1616 if ( matchConvSC ) {
1618 h_EoverPTracks_[
match][0] ->Fill (iMatchingSC->superCluster()->energy()/
sqrt(refittedMom.mag2()));
1619 h_convSCdPhi_[
match][0]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1621 h_convSCdEta_[
match][0]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1625 h2_photonPtRecVsPtSim_->Fill ( mcConvPt_,
sqrt(refittedMom.perp2()) );
1626 h_convPtRes_[0]->Fill (
sqrt(refittedMom.perp2())/mcConvPt_);
1629 if ( phoIsInBarrel ) {
1630 h_invMass_[
match][1] ->Fill(invM);
1631 h_vtxChi2Prob_[
match][1] ->Fill (chi2Prob);
1632 h_DPhiTracksAtVtx_[
match][1]->Fill( dPhiTracksAtVtx);
1635 h_lxybs_[
match][1] ->Fill (lxy);
1636 h_maxNHitsBeforeVtx_[
match][1] ->Fill (maxNHitsBeforeVtx);
1637 h_leadNHitsBeforeVtx_[
match][1] ->Fill (leadNHitsBeforeVtx);
1638 h_trailNHitsBeforeVtx_[
match][1] ->Fill (trailNHitsBeforeVtx);
1639 h_sumNHitsBeforeVtx_[
match][1] ->Fill (sumNHitsBeforeVtx);
1640 h_deltaExpectedHitsInner_[
match][1] ->Fill (deltaExpectedHitsInner);
1641 h_leadExpectedHitsInner_[
match][1] ->Fill (leadExpectedHitsInner);
1642 h_maxDlClosestHitToVtx_[
match][1] ->Fill (maxDlClosestHitToVtx);
1643 h_maxDlClosestHitToVtxSig_[
match][1] ->Fill (maxDlClosestHitToVtxSig);
1645 if ( matchConvSC ) {
1647 h_EoverPTracks_[
match][1] ->Fill (iMatchingSC->superCluster()->energy()/
sqrt(refittedMom.mag2()));
1648 h_convSCdPhi_[
match][1]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1650 h_convSCdEta_[
match][1]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1653 if ( match==1) h_convPtRes_[1]->Fill (
sqrt(refittedMom.perp2())/mcConvPt_);
1657 if ( phoIsInEndcap ) {
1658 h_invMass_[
match][2] ->Fill(invM);
1659 h_vtxChi2Prob_[
match][2] ->Fill (chi2Prob);
1660 h_DPhiTracksAtVtx_[
match][2]->Fill( dPhiTracksAtVtx);
1663 h_lxybs_[
match][2] ->Fill (lxy);
1664 h_maxNHitsBeforeVtx_[
match][2] ->Fill (maxNHitsBeforeVtx);
1665 h_leadNHitsBeforeVtx_[
match][2] ->Fill (leadNHitsBeforeVtx);
1666 h_trailNHitsBeforeVtx_[
match][2] ->Fill (trailNHitsBeforeVtx);
1667 h_sumNHitsBeforeVtx_[
match][2] ->Fill (sumNHitsBeforeVtx);
1668 h_deltaExpectedHitsInner_[
match][2] ->Fill (deltaExpectedHitsInner);
1669 h_leadExpectedHitsInner_[
match][2] ->Fill (leadExpectedHitsInner);
1670 h_maxDlClosestHitToVtx_[
match][2] ->Fill (maxDlClosestHitToVtx);
1671 h_maxDlClosestHitToVtxSig_[
match][2] ->Fill (maxDlClosestHitToVtxSig);
1673 if ( matchConvSC ) {
1675 h_EoverPTracks_[
match][2] ->Fill (iMatchingSC->superCluster()->energy()/
sqrt(refittedMom.mag2()));
1676 h_convSCdPhi_[
match][2]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1678 h_convSCdEta_[
match][2]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1680 if ( match==1) h_convPtRes_[2]->Fill (
sqrt(refittedMom.perp2())/mcConvPt_);
1702 p2_convVtxdRVsRZ_ ->Fill (mcConvZ_,mcConvR_, dR );
1703 p2_convVtxdZVsRZ_ ->Fill (mcConvZ_,mcConvR_, dZ );
1716 if ( phoIsInBarrel ) {
1723 if ( phoIsInEndcap ) {
1735 for (
unsigned int i=0;
i<tracks.size();
i++) {
1738 itAss= myAss.find( tfrb.get() );
1740 nHitsVsEta_[
match] ->Fill (mcEta_,
float(tracks[
i]->numberOfValidHits()) );
1741 nHitsVsR_[
match] ->Fill (mcConvR_,
float(tracks[
i]->numberOfValidHits()) );
1742 p_nHitsVsEta_[
match] ->Fill (mcEta_,
float(tracks[
i]->numberOfValidHits()) -0.0001);
1743 p_nHitsVsR_[
match] ->Fill (mcConvR_,
float(tracks[
i]->numberOfValidHits()) -0.0001);
1744 h_tkChi2_[
match] ->Fill (tracks[
i]->normalizedChi2() );
1745 h_tkChi2Large_[
match] ->Fill (tracks[
i]->normalizedChi2() );
1746 h2_Chi2VsEta_[
match] ->Fill( mcEta_, tracks[
i]->normalizedChi2() );
1747 h2_Chi2VsR_[
match] ->Fill( mcConvR_, tracks[
i]->normalizedChi2() );
1748 p_Chi2VsEta_[
match] ->Fill( mcEta_, tracks[
i]->normalizedChi2() );
1749 p_Chi2VsR_[
match] ->Fill( mcConvR_, tracks[
i]->normalizedChi2() );
1752 d0 = - tracks[
i]->
dxy(the_pvtx.position());
1754 d0 = tracks[
i]->d0();
1762 if ( itAss == myAss.end() )
continue;
1765 float simPt =
sqrt( ((*itAss).second)->momentum().perp2() );
1767 float ptres= recPt - simPt ;
1770 h2_PtRecVsPtSim_[0]->Fill ( simPt, recPt);
1771 h_TkPtPull_[0] ->Fill(ptres/pterror);
1772 h2_TkPtPull_[0] ->Fill(mcEta_, ptres/pterror);
1774 if ( phoIsInBarrel ) {
1775 h_TkPtPull_[1] ->Fill(ptres/pterror);
1776 h2_PtRecVsPtSim_[1]->Fill ( simPt, recPt);
1778 if ( phoIsInEndcap ) {
1779 h_TkPtPull_[2] ->Fill(ptres/pterror);
1780 h2_PtRecVsPtSim_[2]->Fill ( simPt, recPt);
1789 h_nConv_[0][0]->Fill (
float(nRecConv_));
1790 h_nConv_[1][0]->Fill (
float(nRecConvAss_));
1804 if ( ! isRunCentrally_ ) {
1808 edm::LogInfo(
"TkConvValidator") <<
"Analyzed " << nEvt_ <<
"\n";
1835 stateAtVtx = propag.propagate(myTSOS, *theBarrel_);
1837 stateAtVtx = propag.propagate(myTSOS, *theDisk_);
1853 const float PI = 3.1415927;
1857 if(phi > PI) {phi = phi -
TWOPI;}
1858 if(phi < -PI) {phi = phi +
TWOPI;}
1869 const float PI = 3.1415927;
1872 const float R_ECAL = 136.5;
1879 float ZEcal = R_ECAL*sinh(EtaParticle)+Zvertex;
1881 if(ZEcal != 0.0) Theta = atan(R_ECAL/ZEcal);
1882 if(Theta<0.0) Theta = Theta+
PI ;
1885 if( fabs(ETA) > etaBarrelEndcap )
1888 if(EtaParticle<0.0 ) Zend = -Zend ;
1889 float Zlen = Zend - Zvertex ;
1890 float RR = Zlen/sinh(EtaParticle);
1891 Theta = atan(RR/Zend);
1892 if(Theta<0.0) Theta = Theta+
PI ;
1893 ETA = -
log(
tan(0.5*Theta));
const reco::Vertex & conversionVertex() const
returns the reco conversion vertex
double lxy(const math::XYZPoint &myBeamSpot, const Conversion &conv)
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
virtual void endRun(edm::Run &r, edm::EventSetup const &es)
std::vector< TrackingParticle > TrackingParticleCollection
const_iterator end() const
last iterator over the map (read only)
MonitorElement * bookProfile(Args &&...args)
static HepMC::IO_HEPEVT conv
bool getByToken(EDGetToken token, Handle< PROD > &result) const
bool quality(ConversionQuality q) const
double y() const
y coordinate
math::XYZVector recalculateMomentumAtFittedVertex(const MagneticField &mf, const TrackerGeometry &trackerGeom, const edm::RefToBase< reco::Track > &tk, const reco::Vertex &vtx)
bool isValid() const
Tells whether the vertex is valid.
std::vector< GenJet > GenJetCollection
collection of GenJet objects
const std::vector< Measurement1DFloat > & dlClosestHitToVtx() const
Vector of signed decay length with uncertainty from nearest hit on track to the conversion vtx positi...
const_iterator find(const key_type &k) const
find element with specified reference key
virtual void analyze(const edm::Event &, const edm::EventSetup &)
double zOfPrimaryVertexFromTracks(const math::XYZPoint &myBeamSpot=math::XYZPoint()) const
double distOfMinimumApproach() const
double pairCotThetaSeparation() const
Delta cot(Theta) where Theta is the angle in the (y,z) plane between the two tracks. Original tracks are used.
reco::SuperClusterRef superCluster() const
Ref to SuperCluster.
#define TWOPI
EgammaCoreTools.
std::vector< Vertex > VertexCollection
collection of Vertex objects
const std::vector< Track > & refittedTracks() const
Returns the container of refitted tracks.
double pairInvariantMass() const
if nTracks=2 returns the pair invariant mass. Original tracks are used here
const Point & position() const
position
math::XYZVectorF refittedPairMomentum() const
Conversion tracks momentum from the tracks refitted with vertex constraint.
std::vector< Conversion > ConversionCollection
collectin of Conversion objects
virtual ~TkConvValidator()
TrackAlgorithm algo() const
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
float etaTransformation(float a, float b)
float phiNormalization(float &a)
const T & max(const T &a, const T &b)
MonitorElement * bookProfile2D(Args &&...args)
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
double pt() const
track transverse momentum
TkConvValidator(const edm::ParameterSet &)
MonitorElement * book1D(Args &&...args)
Tan< T >::type tan(const T &t)
Abs< T >::type abs(const T &t)
double chi2() const
chi-squares
float ChiSquaredProbability(double chiSquared, double nrDOF)
const HitPattern & trackerExpectedHitsInner() const
Access the hit pattern counting (in the Tracker) the number of expected crossed layers before the fir...
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float > > XYZVectorF
spatial vector with cartesian internal representation
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
virtual void dqmBeginRun(edm::Run const &r, edm::EventSetup const &theEventSetup)
double deltaPhi(double phi1, double phi2)
double x() const
x coordinate
uint8_t nSharedHits() const
number of shared hits btw the two track
void setCurrentFolder(const std::string &fullpath)
size_type size() const
map size
MonitorElement * book2D(Args &&...args)
XYZVectorD XYZVector
spatial vector with cartesian internal representation
key_type key() const
Accessor for product key.
T const * product() const
std::vector< Photon > PhotonCollection
collectin of Photon objects
static const float etaBarrelEndcap
static const float Z_Endcap
return(e1-e2)*(e1-e2)+dp *dp
GlobalVector globalMomentum() const
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", const uint32_t run=0, const uint32_t lumi=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE", const bool resetMEsAfterWriting=false)
void push_back(const RefToBase< T > &)
const std::vector< uint8_t > & nHitsBeforeVtx() const
Vector of the number of hits before the vertex along each track trajector.
static const float R_ECAL
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
value_type const * get() const
double dPhiTracksAtVtx() const
std::vector< edm::RefToBase< reco::Track > > const & tracks() const
vector of track to base references