32 #include "CLHEP/Units/GlobalPhysicalConstants.h" 96 : magneticFieldToken_{esConsumes<edm::Transition::BeginRun>()},
101 verbosity_ =
pset.getUntrackedParameter<
int>(
"Verbosity");
104 photonCollectionProducer_ =
pset.getParameter<
std::string>(
"phoProducer");
105 photonCollection_ =
pset.getParameter<
std::string>(
"photonCollection");
106 photonCollectionPr_Token_ =
107 consumes<reco::PhotonCollection>(
edm::InputTag(photonCollectionProducer_, photonCollection_));
109 conversionCollectionProducer_ =
pset.getParameter<
std::string>(
"convProducer");
110 conversionCollection_ =
pset.getParameter<
std::string>(
"conversionCollection");
111 conversionCollectionPr_Token_ =
112 consumes<reco::ConversionCollection>(
edm::InputTag(conversionCollectionProducer_, conversionCollection_));
116 minPhoEtCut_ =
pset.getParameter<
double>(
"minPhoEtCut");
117 generalTracksOnly_ =
pset.getParameter<
bool>(
"generalTracksOnly");
118 arbitratedMerged_ =
pset.getParameter<
bool>(
"arbitratedMerged");
119 arbitratedEcalSeeded_ =
pset.getParameter<
bool>(
"arbitratedEcalSeeded");
120 ecalalgotracks_ =
pset.getParameter<
bool>(
"ecalalgotracks");
121 highPurity_ =
pset.getParameter<
bool>(
"highPurity");
122 minProb_ =
pset.getParameter<
double>(
"minProb");
123 maxHitsBeforeVtx_ =
pset.getParameter<
uint>(
"maxHitsBeforeVtx");
124 minLxy_ =
pset.getParameter<
double>(
"minLxy");
125 isRunCentrally_ =
pset.getParameter<
bool>(
"isRunCentrally");
127 offline_pvToken_ = consumes<reco::VertexCollection>(
131 g4_simTk_Token_ = consumes<edm::SimTrackContainer>(
pset.getParameter<
edm::InputTag>(
"simTracks"));
132 g4_simVtx_Token_ = consumes<edm::SimVertexContainer>(
pset.getParameter<
edm::InputTag>(
"simTracks"));
134 tpSelForEff_Token_ = consumes<TrackingParticleRefVector>(
edm::InputTag(
"tpSelecForEfficiency"));
135 tpSelForFake_Token_ = consumes<TrackingParticleRefVector>(
edm::InputTag(
"tpSelecForFakeRate"));
140 trackAssociator_Token_ =
141 consumes<reco::TrackToTrackingParticleAssociator>(
edm::InputTag(
"trackAssociatorByHitsForConversionValidation"));
230 h_nSimConv_[0] = iBooker.
book1D(histname,
"# of Sim conversions per event ", 20, -0.5, 19.5);
232 histname =
"h_AllSimConvEta";
234 histname =
"h_AllSimConvPhi";
236 histname =
"h_AllSimConvR";
238 histname =
"h_AllSimConvZ";
240 histname =
"h_AllSimConvEt";
243 histname =
"nOfVisSimConversions";
244 h_nSimConv_[1] = iBooker.
book1D(histname,
"# of Sim conversions per event ", 20, -0.5, 19.5);
245 histname =
"h_VisSimConvEta";
247 histname =
"h_VisSimConvPhi";
249 histname =
"h_VisSimConvR";
251 histname =
"h_VisSimConvZ";
253 histname =
"h_VisSimConvEt";
257 histname =
"h_SimConvTwoMTracksEta";
259 histname,
" All vis conversions with 2 reco-matching tracks: simulated #eta",
etaBin2,
etaMin,
etaMax);
260 histname =
"h_SimConvTwoMTracksPhi";
262 histname,
" All vis conversions with 2 reco-matching tracks: simulated #phi",
phiBin,
phiMin,
phiMax);
263 histname =
"h_SimConvTwoMTracksR";
265 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated R",
rBin,
rMin,
rMax);
266 histname =
"h_SimConvTwoMTracksZ";
268 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Z",
zBin,
zMin,
zMax);
269 histname =
"h_SimConvTwoMTracksEt";
271 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Et",
etBin,
etMin,
etMax);
273 histname =
"h_SimConvTwoTracksEta";
276 histname =
"h_SimConvTwoTracksPhi";
279 histname =
"h_SimConvTwoTracksR";
281 iBooker.
book1D(histname,
" All vis conversions with 2 reco tracks: simulated R",
rBin,
rMin,
rMax);
282 histname =
"h_SimConvTwoTracksZ";
284 iBooker.
book1D(histname,
" All vis conversions with 2 reco tracks: simulated Z",
zBin,
zMin,
zMax);
285 histname =
"h_SimConvTwoTracksEt";
287 iBooker.
book1D(histname,
" All vis conversions with 2 reco tracks: simulated Et",
etBin,
etMin,
etMax);
289 histname =
"h_SimConvTwoMTracksEtaAndVtxPGT0";
291 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #eta",
etaBin2,
etaMin,
etaMax);
292 histname =
"h_SimConvTwoMTracksPhiAndVtxPGT0";
294 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #phi",
phiBin,
phiMin,
phiMax);
295 histname =
"h_SimConvTwoMTracksRAndVtxPGT0";
297 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated R",
rBin,
rMin,
rMax);
298 histname =
"h_SimConvTwoMTracksZAndVtxPGT0";
300 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Z",
zBin,
zMin,
zMax);
301 histname =
"h_SimConvTwoMTracksEtAndVtxPGT0";
303 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Et",
etBin,
etMin,
etMax);
306 histname =
"h_SimConvTwoMTracksEtaAndVtxPGT0005";
308 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #eta",
etaBin2,
etaMin,
etaMax);
309 histname =
"h_SimConvTwoMTracksPhiAndVtxPGT0005";
311 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #phi",
phiBin,
phiMin,
phiMax);
312 histname =
"h_SimConvTwoMTracksRAndVtxPGT0005";
314 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated R",
rBin,
rMin,
rMax);
315 histname =
"h_SimConvTwoMTracksZAndVtxPGT0005";
317 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Z",
zBin,
zMin,
zMax);
318 histname =
"h_SimConvTwoMTracksEtAndVtxPGT0005";
320 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Et",
etBin,
etMin,
etMax);
322 histname =
"h_SimRecConvTwoMTracksEta";
324 histname,
" All vis conversions with 2 reco-matching tracks: simulated #eta",
etaBin2,
etaMin,
etaMax);
325 histname =
"h_SimRecConvTwoMTracksPhi";
327 histname,
" All vis conversions with 2 reco-matching tracks: simulated #phi",
phiBin,
phiMin,
phiMax);
328 histname =
"h_SimRecConvTwoMTracksR";
330 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated R",
rBin,
rMin,
rMax);
331 histname =
"h_SimRecConvTwoMTracksZ";
333 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Z",
zBin,
zMin,
zMax);
334 histname =
"h_SimRecConvTwoMTracksEt";
336 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Et",
etBin,
etMin,
etMax);
344 " Photon Sim conversion vtx position",
352 " Photon Sim conversion vtx position",
360 " Photon Sim conversion vtx position",
368 " Photon Sim conversion vtx position when reco R<4cm",
376 "simConvVtxYvsXTrkBarrel",
" Photon Sim conversion vtx position, (x,y) eta<1 ", 100, -80., 80., 100, -80., 80.);
383 histname +
"All",
"Number Of Conversions per isolated candidates per events: All Ecal ", 10, -0.5, 9.5);
385 histname +
"Barrel",
"Number Of Conversions per isolated candidates per events: Ecal Barrel ", 10, -0.5, 9.5);
387 histname +
"Endcap",
"Number Of Conversions per isolated candidates per events: Ecal Endcap ", 10, -0.5, 9.5);
389 "Number Of associated Conversions per isolated candidates per events: All Ecal ",
425 histname =
"convSCdPhi";
426 h_convSCdPhi_[0][0] = iBooker.
book1D(histname +
"All",
"dPhi between SC and conversion", 100, -0.1, 0.1);
428 iBooker.
book1D(histname +
"Barrel",
" dPhi between SC and conversion: Barrel", 100, -0.1, 0.1);
430 iBooker.
book1D(histname +
"Endcap",
" dPhi between SC and conversion: Endcap", 100, -0.1, 0.1);
431 h_convSCdPhi_[1][0] = iBooker.
book1D(histname +
"All_Ass",
"dPhi between SC and conversion", 100, -0.1, 0.1);
433 iBooker.
book1D(histname +
"Barrel_Ass",
" dPhi between SC and conversion: Barrel", 100, -0.1, 0.1);
435 iBooker.
book1D(histname +
"Endcap_Ass",
" dPhi between SC and conversion: Endcap", 100, -0.1, 0.1);
436 h_convSCdPhi_[2][0] = iBooker.
book1D(histname +
"All_Fakes",
"dPhi between SC and conversion", 100, -0.1, 0.1);
438 iBooker.
book1D(histname +
"Barrel_Fakes",
" dPhi between SC and conversion: Barrel", 100, -0.1, 0.1);
440 iBooker.
book1D(histname +
"Endcap_Fakes",
" dPhi between SC and conversion: Endcap", 100, -0.1, 0.1);
441 histname =
"convSCdEta";
442 h_convSCdEta_[0][0] = iBooker.
book1D(histname +
"All",
" dEta between SC and conversion", 100, -0.1, 0.1);
444 iBooker.
book1D(histname +
"Barrel",
" dEta between SC and conversion: Barrel", 100, -0.1, 0.1);
446 iBooker.
book1D(histname +
"Endcap",
" dEta between SC and conversion: Endcap", 100, -0.1, 0.1);
447 h_convSCdEta_[1][0] = iBooker.
book1D(histname +
"All_Ass",
" dEta between SC and conversion", 100, -0.1, 0.1);
449 iBooker.
book1D(histname +
"Barrel_Ass",
" dEta between SC and conversion: Barrel", 100, -0.1, 0.1);
451 iBooker.
book1D(histname +
"Endcap_Ass",
" dEta between SC and conversion: Endcap", 100, -0.1, 0.1);
452 h_convSCdEta_[2][0] = iBooker.
book1D(histname +
"All_Fakes",
" dEta between SC and conversion", 100, -0.1, 0.1);
454 iBooker.
book1D(histname +
"Barrel_Fakes",
" dEta between SC and conversion: Barrel", 100, -0.1, 0.1);
456 iBooker.
book1D(histname +
"Endcap_Fakes",
" dEta between SC and conversion: Endcap", 100, -0.1, 0.1);
458 histname =
"convPtRes";
463 histname =
"hInvMass";
465 histname +
"All_AllTracks",
" Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
467 " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",
472 " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",
478 histname +
"All_AssTracks",
" Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
480 " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",
485 " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",
491 histname +
"All_FakeTracks",
" Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
493 " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",
498 " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",
503 histname =
"hDPhiTracksAtVtx";
505 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
510 iBooker.
book1D(histname +
"Barrel",
511 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
516 iBooker.
book1D(histname +
"Endcap",
517 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
522 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
527 iBooker.
book1D(histname +
"Barrel_Ass",
528 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
533 iBooker.
book1D(histname +
"Endcap_Ass",
534 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
539 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
544 iBooker.
book1D(histname +
"Barrel_Fakes",
545 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
550 iBooker.
book1D(histname +
"Endcap_Fakes",
551 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
556 histname =
"hDPhiTracksAtVtxVsEta";
558 " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta",
565 histname =
"pDPhiTracksAtVtxVsEta";
568 " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta ",
577 histname =
"hDPhiTracksAtVtxVsR";
579 " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R",
586 histname =
"pDPhiTracksAtVtxVsR";
588 " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R ",
597 histname =
"hDCotTracks";
599 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
604 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
609 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
614 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
619 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
624 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
629 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
634 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
639 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
644 histname =
"hDCotTracksVsEta";
646 " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta",
653 histname =
"pDCotTracksVsEta";
655 " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta ",
664 histname =
"hDCotTracksVsR";
666 " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R",
673 histname =
"pDCotTracksVsR";
676 " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R ",
685 histname =
"hDistMinAppTracks";
687 histname +
"All",
" Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ", 120, -0.5, 1.0);
689 histname +
"Barrel",
" Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ", 120, -0.5, 1.0);
691 histname +
"Endcap",
" Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ", 120, -0.5, 1.0);
693 histname +
"All_Ass",
" Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ", 120, -0.5, 1.0);
695 iBooker.
book1D(histname +
"Barrel_Ass",
696 " Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",
701 iBooker.
book1D(histname +
"Endcap_Ass",
702 " Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",
707 histname +
"All_Fakes",
" Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ", 120, -0.5, 1.0);
709 iBooker.
book1D(histname +
"Barrel_Fakes",
710 " Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",
715 iBooker.
book1D(histname +
"Endcap_Fakes",
716 " Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",
722 " Photon Reco conversion vtx position",
730 " Photon Reco conversion vtx position",
738 " Photon Reco conversion vtx position",
746 "convVtxYvsXTrkBarrel",
" Photon Reco conversion vtx position, (x,y) eta<1 ", 1000, -60., 60., 1000, -60., 60.);
749 " Photon Reco conversion vtx position",
757 " Photon Reco conversion vtx position",
765 " Photon Reco conversion vtx position, (x,y) eta<1 ",
773 " Photon Reco conversion vtx position, (x,y) eta<1 ",
781 h_convVtxdR_ = iBooker.
book1D(
"convVtxdR",
" Photon Reco conversion vtx dR", 100, -10., 10.);
782 h_convVtxdX_ = iBooker.
book1D(
"convVtxdX",
" Photon Reco conversion vtx dX", 100, -10., 10.);
783 h_convVtxdY_ = iBooker.
book1D(
"convVtxdY",
" Photon Reco conversion vtx dY", 100, -10., 10.);
784 h_convVtxdZ_ = iBooker.
book1D(
"convVtxdZ",
" Photon Reco conversion vtx dZ", 100, -20., 20.);
786 h_convVtxdPhi_ = iBooker.
book1D(
"convVtxdPhi",
" Photon Reco conversion vtx dPhi", 100, -0.01, 0.01);
787 h_convVtxdEta_ = iBooker.
book1D(
"convVtxdEta",
" Photon Reco conversion vtx dEta", 100, -0.5, 0.5);
790 iBooker.
book1D(
"convVtxdR_barrel",
" Photon Reco conversion vtx dR, |eta|<=1.2", 100, -10., 10.);
792 iBooker.
book1D(
"convVtxdX_barrel",
" Photon Reco conversion vtx dX, |eta|<=1.2", 100, -10., 10.);
794 iBooker.
book1D(
"convVtxdY_barrel",
" Photon Reco conversion vtx dY, |eta|<=1.2 ", 100, -10., 10.);
796 iBooker.
book1D(
"convVtxdZ_barrel",
" Photon Reco conversion vtx dZ, |eta|<=1.2,", 100, -20., 20.);
799 iBooker.
book1D(
"convVtxdR_endcap",
" Photon Reco conversion vtx dR, |eta|>1.2 ", 100, -10., 10.);
801 iBooker.
book1D(
"convVtxdX_endcap",
" Photon Reco conversion vtx dX, |eta|>1.2", 100, -10., 10.);
803 iBooker.
book1D(
"convVtxdY_endcap",
" Photon Reco conversion vtx dY, |eta|>1.2", 100, -10., 10.);
805 iBooker.
book1D(
"convVtxdZ_endcap",
" Photon Reco conversion vtx dZ, |eta|>1.2", 100, -20., 20.);
823 "p2ConvVtxdRVsRZ",
"Conversion vtx dR vs RZ",
zBin,
zMin,
zMax,
rBin,
rMin,
rMax, 100, 0., 20.,
"s");
825 "p2ConvVtxdZVsRZ",
"Conversion vtx dZ vs RZ",
zBin,
zMin,
zMax,
rBin,
rMin,
rMax, 100, 0., 20.,
"s");
827 histname =
"EoverPtracks";
850 histname =
"vtxChi2Prob";
852 h_vtxChi2Prob_[0][1] = iBooker.
book1D(histname +
"Barrel",
"vertex #chi^{2} barrel", 100, 0., 1.);
853 h_vtxChi2Prob_[0][2] = iBooker.
book1D(histname +
"Endcap",
"vertex #chi^{2} endcap", 100, 0., 1.);
854 h_vtxChi2Prob_[1][0] = iBooker.
book1D(histname +
"All_Ass",
"vertex #chi^{2} all", 100, 0., 1.);
855 h_vtxChi2Prob_[1][1] = iBooker.
book1D(histname +
"Barrel_Ass",
"vertex #chi^{2} barrel", 100, 0., 1.);
856 h_vtxChi2Prob_[1][2] = iBooker.
book1D(histname +
"Endcap_Ass",
"vertex #chi^{2} endcap", 100, 0., 1.);
857 h_vtxChi2Prob_[2][0] = iBooker.
book1D(histname +
"All_Fakes",
"vertex #chi^{2} all", 100, 0., 1.);
858 h_vtxChi2Prob_[2][1] = iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 100, 0., 1.);
859 h_vtxChi2Prob_[2][2] = iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 100, 0., 1.);
861 h_zPVFromTracks_[1] = iBooker.
book1D(
"zPVFromTracks",
" Photons: PV z from conversion tracks", 100, -25., 25.);
863 iBooker.
book1D(
"dzPVFromTracks",
" Photons: PV Z_rec - Z_true from conversion tracks", 100, -5., 5.);
869 h_lxybs_[0][0] = iBooker.
book1D(histname +
"All",
"vertex #chi^{2} all", 200, -100., 100.);
870 h_lxybs_[0][1] = iBooker.
book1D(histname +
"Barrel",
"vertex #chi^{2} barrel", 200, -100., 100.);
871 h_lxybs_[0][2] = iBooker.
book1D(histname +
"Endcap",
"vertex #chi^{2} endcap", 200, -100., 100.);
872 h_lxybs_[1][0] = iBooker.
book1D(histname +
"All_Ass",
"vertex #chi^{2} all", 200, -100., 100.);
873 h_lxybs_[1][1] = iBooker.
book1D(histname +
"Barrel_Ass",
"vertex #chi^{2} barrel", 200, -100., 100.);
874 h_lxybs_[1][2] = iBooker.
book1D(histname +
"Endcap_Ass",
"vertex #chi^{2} endcap", 200, -100., 100.);
875 h_lxybs_[2][0] = iBooker.
book1D(histname +
"All_Fakes",
"vertex #chi^{2} all", 200, -100., 100.);
876 h_lxybs_[2][1] = iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 200, -100., 100.);
877 h_lxybs_[2][2] = iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 200, -100., 100.);
879 histname =
"maxNHitsBeforeVtx";
890 histname =
"leadNHitsBeforeVtx";
901 histname =
"trailNHitsBeforeVtx";
912 histname =
"sumNHitsBeforeVtx";
923 histname =
"maxDlClosestHitToVtx";
934 histname =
"maxDlClosestHitToVtxSig";
943 iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 100, -8., 8.);
945 iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 100, -8., 8.);
947 histname =
"deltaExpectedHitsInner";
953 iBooker.
book1D(histname +
"Barrel_Ass",
"vertex #chi^{2} barrel", 31, -15.5, 15.5);
955 iBooker.
book1D(histname +
"Endcap_Ass",
"vertex #chi^{2} endcap", 31, -15.5, 15.5);
958 iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 31, -15.5, 15.5);
960 iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 31, -15.5, 15.5);
962 histname =
"leadExpectedHitsInner";
971 iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
973 iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
975 histname =
"nSharedHits";
977 h_nSharedHits_[0][1] = iBooker.
book1D(histname +
"Barrel",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
978 h_nSharedHits_[0][2] = iBooker.
book1D(histname +
"Endcap",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
979 h_nSharedHits_[1][0] = iBooker.
book1D(histname +
"All_Ass",
"vertex #chi^{2} all", 16, -0.5, 15.5);
980 h_nSharedHits_[1][1] = iBooker.
book1D(histname +
"Barrel_Ass",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
981 h_nSharedHits_[1][2] = iBooker.
book1D(histname +
"Endcap_Ass",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
982 h_nSharedHits_[2][0] = iBooker.
book1D(histname +
"All_Fakes",
"vertex #chi^{2} all", 16, -0.5, 15.5);
983 h_nSharedHits_[2][1] = iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
984 h_nSharedHits_[2][2] = iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
989 "Photons:Tracks from conversions: # of hits all tracks",
997 "Photons:Tracks from conversions: # of hits all tracks ass",
1004 nHits_[2] = iBooker.
book2D(histname +
"AllTracks_Fakes",
1005 "Photons:Tracks from conversions: # of hits all tracks fakes",
1013 histname =
"nHitsVsEta";
1015 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1023 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1031 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1038 histname =
"h_nHitsVsEta";
1040 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1049 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1058 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1067 histname =
"nHitsVsR";
1069 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1077 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1085 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1093 histname =
"h_nHitsVsR";
1095 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1104 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1113 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1122 histname =
"tkChi2";
1124 histname +
"AllTracks",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 100,
chi2Min,
chi2Max);
1126 histname +
"AllTracks_Ass",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 100,
chi2Min,
chi2Max);
1128 histname +
"AllTracks_Fakes",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 100,
chi2Min,
chi2Max);
1130 histname =
"tkChi2Large";
1132 histname +
"AllTracks",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
1134 histname +
"AllTracks_Ass",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
1136 histname +
"AllTracks_Fakes",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
1138 histname =
"h2Chi2VsEta";
1145 histname =
"pChi2VsEta";
1151 " Reco Track #chi^{2} vs #eta : All ",
1160 histname =
"h2Chi2VsR";
1167 histname =
"pChi2VsR";
1176 h_TkD0_[0] = iBooker.
book1D(histname +
"All",
" Reco Track D0*q: All ", 200, -0.1, 60);
1177 h_TkD0_[1] = iBooker.
book1D(histname +
"All_Ass",
" Reco Track D0*q: Barrel ", 200, -0.1, 60);
1178 h_TkD0_[2] = iBooker.
book1D(histname +
"All_Fakes",
" Reco Track D0*q: Endcap ", 200, -0.1, 60);
1180 histname =
"hTkPtPull";
1181 h_TkPtPull_[0] = iBooker.
book1D(histname +
"All",
" Reco Track Pt pull: All ", 100, -20., 10.);
1182 histname =
"hTkPtPull";
1183 h_TkPtPull_[1] = iBooker.
book1D(histname +
"Barrel",
" Reco Track Pt pull: Barrel ", 100, -20., 10.);
1184 histname =
"hTkPtPull";
1185 h_TkPtPull_[2] = iBooker.
book1D(histname +
"Endcap",
" Reco Track Pt pull: Endcap ", 100, -20., 10.);
1187 histname =
"h2TkPtPullEta";
1190 histname =
"pTkPtPullEta";
1192 histname +
"All",
" Reco Track Pt pull: All ",
etaBin2,
etaMin,
etaMax, 100, -20., 10.,
" ");
1194 histname =
"PtRecVsPtSim";
1202 histname =
"photonPtRecVsPtSim";
1206 histname =
"nHitsBeforeVtx";
1211 histname =
"dlClosestHitToVtx";
1216 histname =
"dlClosestHitToVtxSig";
1228 edm::LogInfo(
"ConvertedPhotonProducer") <<
" get magnetic field" 1239 using namespace edm;
1243 const float BARL = 1.4442;
1245 const float END_HI = 2.5;
1253 LogInfo(
"TkConvValidator") <<
"TkConvValidator Analyzing event number: " <<
e.id() <<
" Global Counter " <<
nEvt_ 1268 edm::LogError(
"ConversionsProducer") <<
"Error! Can't get the collection " << std::endl;
1276 if (!photonHandle.
isValid()) {
1277 edm::LogError(
"PhotonProducer") <<
"Error! Can't get the Photon collection " << std::endl;
1285 if (!vertexHandle.
isValid()) {
1286 edm::LogError(
"TrackerOnlyConversionProducer") <<
"Error! Can't get the product primary Vertex Collection " 1292 bool valid_pvtx =
false;
1304 edm::LogError(
"TrackerOnlyConversionProducer") <<
"Error! Can't get the product primary Vertex Collection " 1338 const std::vector<SimTrack>& theSimTracks = *SimTk;
1339 const std::vector<SimVertex>& theSimVertices = *SimVtx;
1355 std::map<const reco::Track*, TrackingParticleRef> myAss;
1356 std::map<const reco::Track*, TrackingParticleRef>::const_iterator itAss;
1358 for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
1359 mcConvPt_ = (*mcPho).fourMomentum().et();
1360 float mcPhi = (*mcPho).fourMomentum().phi();
1362 mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
1364 mcConvR_ = (*mcPho).vertex().perp();
1371 if (fabs(
mcEta_) > END_HI)
1384 bool goodSimConversion =
false;
1385 bool visibleConversion =
false;
1386 bool visibleConversionsWithTwoSimTracks =
false;
1387 if ((*mcPho).isAConversion() == 1) {
1399 (fabs(
mcEta_) > BARL && fabs(
mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210))
1400 visibleConversion =
true;
1406 if (fabs(
tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(
tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
1407 fabs(
tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
1414 visibleConversionsWithTwoSimTracks =
true;
1415 goodSimConversion =
false;
1417 if (visibleConversion && visibleConversionsWithTwoSimTracks)
1418 goodSimConversion =
true;
1419 if (goodSimConversion) {
1436 if (!(visibleConversion && visibleConversionsWithTwoSimTracks))
1440 if (fabs(
mcEta_) <= 1.) {
1452 bool recomatch =
false;
1453 float chi2Prob = 0.;
1456 for (reco::ConversionCollection::const_iterator
conv = convHandle->begin();
conv != convHandle->end(); ++
conv) {
1469 const std::vector<edm::RefToBase<reco::Track> >&
tracks = aConv.
tracks();
1473 if (
tracks.size() != 2 || !(
vtx.isValid()))
1486 double lxy = (themom.x() * dbsx + themom.y() * dbsy) / themom.rho();
1510 bool isAssociated =
false;
1514 std::vector<std::pair<RefToBase<reco::Track>,
double> > trackV1, trackV2;
1516 int tp_1 = 0, tp_2 = 1;
1518 trackV1 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)q1[
theConvTP_[0]];
1520 trackV1 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)q1[
theConvTP_[1]];
1524 trackV2 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)q2[
theConvTP_[1]];
1526 trackV2 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)q2[
theConvTP_[0]];
1529 if (!(!trackV1.empty() && !trackV2.empty()))
1546 isAssociated =
true;
1575 if (chi2Prob > 0.0005) {
1588 for (reco::ConversionCollection::const_iterator
conv = convHandle->begin();
conv != convHandle->end(); ++
conv) {
1601 std::vector<edm::RefToBase<reco::Track> >
tracks = aConv.
tracks();
1605 if (
tracks.size() != 2 || !(
vtx.isValid()))
1619 double lxy = (themom.x() * dbsx + themom.y() * dbsy) / themom.rho();
1624 bool phoIsInBarrel =
false;
1625 bool phoIsInEndcap =
false;
1642 float dPhiTracksAtVtx;
1646 if (p1AtVtx.perp2() > p2AtVtx.perp2())
1647 dPhiTracksAtVtx = p1AtVtx.phi() - p2AtVtx.phi();
1649 dPhiTracksAtVtx = p2AtVtx.phi() - p1AtVtx.phi();
1653 if (fabs(refittedMom.eta()) < 1.479) {
1654 phoIsInBarrel =
true;
1656 phoIsInEndcap =
true;
1662 double Mindeltaeta = 999999;
1663 double Mindeltaphi = 999999;
1664 bool matchConvSC =
false;
1665 reco::PhotonCollection::const_iterator iMatchingSC;
1671 double deltaeta =
abs(aPho.
superCluster()->position().eta() - ConvEta);
1672 if (
abs(deltaeta) <
abs(Mindeltaeta) &&
abs(deltaphi) <
abs(Mindeltaphi)) {
1673 Mindeltaphi =
abs(deltaphi);
1674 Mindeltaeta =
abs(deltaeta);
1678 if (
abs(Mindeltaeta) < 0.1 &&
abs(Mindeltaphi) < 0.1) {
1686 uint maxNHitsBeforeVtx =
1688 uint sumNHitsBeforeVtx =
1693 float maxDlClosestHitToVtxSig =
1699 int ilead = 0, itrail = 1;
1700 if (tk2->
pt() > tk1->
pt()) {
1756 if (phoIsInBarrel) {
1789 if (phoIsInEndcap) {
1820 for (
unsigned int i = 0;
i <
tracks.size();
i++) {
1848 bool associated =
false;
1852 for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
1853 mcConvPt_ = (*mcPho).fourMomentum().et();
1854 float mcPhi = (*mcPho).fourMomentum().phi();
1855 simPV_Z = (*mcPho).primaryVertex().z();
1857 mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
1859 mcConvR_ = (*mcPho).vertex().perp();
1865 if (fabs(
mcEta_) > END_HI)
1876 if ((*mcPho).isAConversion() != 1)
1879 (fabs(
mcEta_) > BARL && fabs(
mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210)))
1884 if (fabs(
tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(
tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
1885 fabs(
tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
1897 auto itP1 =
p1.find(tk1);
1898 auto itP2 =
p2.find(tk2);
1899 bool good = (itP1 !=
p1.end()) and (not itP1->val.empty()) and (itP2 !=
p2.end()) and (not itP2->val.empty());
1901 itP1 =
p1.find(tk2);
1902 itP2 =
p2.find(tk1);
1903 good = (itP1 !=
p1.end()) and (not itP1->val.empty()) and (itP2 !=
p2.end()) and (not itP2->val.empty());
1907 std::vector<std::pair<TrackingParticleRef, double> >
const& tp1 = itP1->val;
1908 std::vector<std::pair<TrackingParticleRef, double> >
const& tp2 = itP2->val;
1911 if (
abs(tpr1->pdgId()) == 11 &&
abs(tpr2->pdgId()) == 11 && tpr1->pdgId() * tpr2->pdgId() < 0) {
1912 if ((tpr1->parentVertex()->sourceTracks_end() - tpr1->parentVertex()->sourceTracks_begin() == 1) &&
1913 (tpr2->parentVertex()->sourceTracks_end() - tpr2->parentVertex()->sourceTracks_begin() == 1)) {
1914 if (tpr1->parentVertex().
key() == tpr2->parentVertex().
key() &&
1915 ((*tpr1->parentVertex()->sourceTracks_begin())->
pdgId() == 22)) {
1916 mcConvR_ =
sqrt(tpr1->parentVertex()->position().Perp2());
1917 mcConvZ_ = tpr1->parentVertex()->position().z();
1918 mcConvX_ = tpr1->parentVertex()->position().x();
1919 mcConvY_ = tpr1->parentVertex()->position().y();
1920 mcConvEta_ = tpr1->parentVertex()->position().eta();
1921 mcConvPhi_ = tpr1->parentVertex()->position().phi();
1922 mcConvPt_ =
sqrt((*tpr1->parentVertex()->sourceTracks_begin())->momentum().Perp2());
1941 for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
1942 mcConvPt_ = (*mcPho).fourMomentum().et();
1943 float mcPhi = (*mcPho).fourMomentum().phi();
1944 simPV_Z = (*mcPho).primaryVertex().z();
1946 mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
1948 mcConvR_ = (*mcPho).vertex().perp();
1954 if (fabs(
mcEta_) > END_HI)
1965 if ((*mcPho).isAConversion() != 1)
1968 (fabs(
mcEta_) > BARL && fabs(
mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210)))
1973 if (fabs(
tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(
tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
1974 fabs(
tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
1986 if ((!p1incl.
empty() && !p2incl.
empty()) && (!
p1.empty() || !
p2.empty())) {
1988 std::vector<std::pair<TrackingParticleRef, double> > tp1 = p1incl[tk1];
1989 std::vector<std::pair<TrackingParticleRef, double> > tp2 = p2incl[tk2];
1990 if (!(!tp1.empty() && !tp2.empty())) {
1994 if (!tp1.empty() && !tp2.empty()) {
1997 if (
abs(tpr1->pdgId()) == 11 &&
abs(tpr2->pdgId()) == 11 && tpr1->pdgId() * tpr2->pdgId() < 0) {
1998 if (((tpr1->parentVertex()->sourceTracks_end() - tpr1->parentVertex()->sourceTracks_begin() >= 1) &&
1999 (*tpr1->parentVertex()->sourceTracks_begin())->
pdgId() == 22) &&
2000 ((tpr2->parentVertex()->sourceTracks_end() - tpr2->parentVertex()->sourceTracks_begin() >= 1) &&
2001 (*tpr2->parentVertex()->sourceTracks_begin())->
pdgId() == 22)) {
2073 if (phoIsInBarrel) {
2100 if (phoIsInEndcap) {
2155 if (phoIsInBarrel) {
2161 if (phoIsInEndcap) {
2170 for (
unsigned int i = 0;
i <
tracks.size();
i++) {
2173 itAss = myAss.find(tfrb.get());
2200 if (itAss == myAss.end())
2204 float simPt =
sqrt(((*itAss).second)->momentum().perp2());
2206 float ptres =
recPt - simPt;
2213 if (phoIsInBarrel) {
2217 if (phoIsInEndcap) {
2249 sqrt(
vtx.position().perp2()) + 0.001
f,
2250 -fabs(
vtx.position().z()),
2251 fabs(
vtx.position().z()));
2263 stateAtVtx = propag.
propagate(myTSOS, *theBarrel_);
2265 stateAtVtx = propag.
propagate(myTSOS, *theDisk_);
2278 const float PI = 3.1415927;
2294 const float PI = 3.1415927;
2297 const float R_ECAL = 136.5;
2304 float ZEcal =
R_ECAL * sinh(EtaParticle) + Zvertex;
2307 Theta = atan(
R_ECAL / ZEcal);
2314 if (EtaParticle < 0.0)
2316 float Zlen = Zend - Zvertex;
2317 float RR = Zlen / sinh(EtaParticle);
2318 Theta = atan(RR / Zend);
MonitorElement * h2_DPhiTracksAtVtxVsR_
reco::SimToRecoCollection associateSimToReco(const edm::Handle< edm::View< reco::Track >> &tCH, const edm::Handle< TrackingParticleCollection > &tPCH) const
MonitorElement * h2_dzPVVsR_
MonitorElement * h_maxDlClosestHitToVtx_[3][3]
MonitorElement * h_convPt_[3][3]
constexpr double deltaPhi(double phi1, double phi2)
MonitorElement * p_convVtxdYVsY_
MonitorElement * h2_DCotTracksVsR_
MonitorElement * h_convVtxdR_
T getParameter(std::string const &) const
MonitorElement * h2_DCotTracksVsEta_
MonitorElement * h_simConvVtxRvsZ_[4]
MonitorElement * h_convZplot_
int numberOfLostHits(HitCategory category) const
double zOfPrimaryVertexFromTracks(const math::XYZPoint &myBeamSpot=math::XYZPoint()) const
const std::vector< Measurement1DFloat > & dlClosestHitToVtx() const
Vector of signed decay length with uncertainty from nearest hit on track to the conversion vtx positi...
MonitorElement * h_nSimConv_[2]
MonitorElement * bookProfile2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, double lowZ, double highZ, char const *option="s", FUNC onbooking=NOOP())
MonitorElement * h_convSCdPhi_[3][3]
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0_[5]
reco::RecoToSimCollection associateRecoToSim(const edm::Handle< edm::View< reco::Track >> &tCH, const edm::Handle< TrackingParticleCollection > &tPCH) const
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0005_[5]
double distOfMinimumApproach() const
MonitorElement * h_DCotTracks_[3][3]
virtual void setCurrentFolder(std::string const &fullpath)
MonitorElement * nHitsVsEta_[3]
edm::EDGetTokenT< TrackingParticleRefVector > tpSelForFake_Token_
MonitorElement * h_lxybs_[3][3]
edm::RefVector< TrackingParticleCollection > theConvTP_
MonitorElement * h_trailNHitsBeforeVtx_[3][3]
const Point & position() const
position
double pairCotThetaSeparation() const
Delta cot(Theta) where Theta is the angle in the (y,z) plane between the two tracks. Original tracks are used.
math::XYZVector recalculateMomentumAtFittedVertex(const MagneticField &mf, const TrackerGeometry &trackerGeom, const edm::RefToBase< reco::Track > &tk, const reco::Vertex &vtx)
MonitorElement * p_Chi2VsR_[3]
MonitorElement * h_convVtxYvsX_zoom_[2]
edm::EDGetTokenT< reco::PhotonCollection > photonCollectionPr_Token_
MonitorElement * p_DCotTracksVsR_
MonitorElement * h_tkChi2_[3]
math::XYZVectorF refittedPairMomentum() const
Conversion tracks momentum from the tracks refitted with vertex constraint.
MonitorElement * h_convVtxdX_
T const * product() const
MonitorElement * h_convPtRes_[3]
MonitorElement * h_convEtaMatchSC_[3][3]
MonitorElement * h2_Chi2VsEta_[3]
MonitorElement * p_TkPtPull_[3]
MonitorElement * h_SimRecConvTwoMTracks_[5]
MonitorElement * h_vtxChi2Prob_[3][3]
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeometryToken_
std::vector< Vertex > VertexCollection
collection of Vertex objects
uint8_t nSharedHits() const
number of shared hits btw the two track
MonitorElement * h_convVtxdX_endcap_
MonitorElement * h_convVtxdR_endcap_
edm::EDGetTokenT< reco::VertexCollection > offline_pvToken_
MonitorElement * h_zPVFromTracks_[2]
MonitorElement * h_convVtxdY_barrel_
MonitorElement * h_tkChi2Large_[3]
bool empty() const
return true if empty
Log< level::Error, false > LogError
edm::ParameterSet parameters_
edm::EDGetTokenT< edm::SimTrackContainer > g4_simTk_Token_
MonitorElement * p_DCotTracksVsEta_
edm::EDGetTokenT< edm::SimVertexContainer > g4_simVtx_Token_
static constexpr float R_ECAL
MonitorElement * h_maxDlClosestHitToVtxSig_[3][3]
MonitorElement * h_convVtxdR_barrel_
MonitorElement * h_leadExpectedHitsInner_[3][3]
key_type key() const
Accessor for product key.
std::vector< Conversion > ConversionCollection
collectin of Conversion objects
const_iterator find(const key_type &k) const
find element with specified reference key
MonitorElement * h_convSCdEta_[3][3]
MonitorElement * h_sumNHitsBeforeVtx_[3][3]
MonitorElement * h_dzPVFromTracks_[2]
const_iterator end() const
last iterator over the map (read only)
MonitorElement * h_nConv_[3][3]
info per conversion
edm::ESHandle< CaloGeometry > theCaloGeom_
double x0() const
x coordinate
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * h_convVtxdY_
double pt() const
track transverse momentum
MonitorElement * p_DPhiTracksAtVtxVsEta_
MonitorElement * h_deltaExpectedHitsInner_[3][3]
MonitorElement * h_convVtxdEta_
edm::EDGetTokenT< reco::BeamSpot > beamspotToken_
MonitorElement * h_convVtxYvsX_
MonitorElement * p_convVtxdZVsR_
edm::EDGetTokenT< TrackingParticleRefVector > tpSelForEff_Token_
MonitorElement * p_convVtxdRVsR_
MonitorElement * h_convR_[3][3]
float etaTransformation(float a, float b)
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
float phiNormalization(float &a)
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
MonitorElement * h_VisSimConv_[6]
MonitorElement * h2_photonPtRecVsPtSim_
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
MonitorElement * h_EoverPTracks_[3][3]
edm::ESHandle< MagneticField > theMF_
PhotonMCTruthFinder * thePhotonMCTruthFinder_
MonitorElement * h_leadNHitsBeforeVtx_[3][3]
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociator > trackAssociator_Token_
~TkConvValidator() override
edm::EDGetTokenT< reco::ConversionCollection > conversionCollectionPr_Token_
MonitorElement * h_distMinAppTracks_[3][3]
MonitorElement * p_DPhiTracksAtVtxVsR_
TkConvValidator(const edm::ParameterSet &)
Tan< T >::type tan(const T &t)
Abs< T >::type abs(const T &t)
MonitorElement * h_SimConvEtaPix_[2]
MonitorElement * h_convVtxdX_barrel_
MonitorElement * p_nHitsVsEta_[3]
MonitorElement * h_simTkPt_
float ChiSquaredProbability(double chiSquared, double nrDOF)
static constexpr float etaBarrelEndcap
MonitorElement * p_convVtxdXVsX_
double y0() const
y coordinate
MonitorElement * h_convVtxdY_endcap_
double x() const
x coordinate
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float > > XYZVectorF
spatial vector with cartesian internal representation
MonitorElement * h_convEta_[3][3]
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
double y() const
y coordinate
MonitorElement * h_convVtxRvsZ_zoom_[2]
MonitorElement * h_simConvVtxYvsX_
MonitorElement * h_convEta2_[3][3]
MonitorElement * h_nHitsBeforeVtx_[3]
MonitorElement * p2_convVtxdRVsRZ_
MonitorElement * p_Chi2VsEta_[3]
MonitorElement * nHits_[3]
Log< level::Info, false > LogInfo
MonitorElement * h_SimConvTwoTracks_[5]
static constexpr float d0
TrackAlgorithm algo() const
MonitorElement * h_convVtxdZ_
size_type size() const
Size of the RefVector.
MonitorElement * h_convVtxRvsZ_[3]
MonitorElement * h2_DPhiTracksAtVtxVsEta_
auto const & tracks
cannot be loose
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
MonitorElement * h_convPhi_[3][3]
auto const good
min quality of good
void clear()
Clear the vector.
XYZVectorD XYZVector
spatial vector with cartesian internal representation
const std::vector< Track > & refittedTracks() const
Returns the container of refitted tracks.
MonitorElement * h_convVtxdZ_barrel_
std::vector< Photon > PhotonCollection
collectin of Photon objects
const_iterator end() const
Termination of iteration.
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
MonitorElement * h2_convVtxRrecVsTrue_
double pairInvariantMass() const
if nTracks=2 returns the pair invariant mass. Original tracks are used here
MonitorElement * h_AllSimConv_[5]
Denominator for efficiencies.
MonitorElement * h_convRplot_
MonitorElement * p_nHitsVsR_[3]
GlobalVector globalMomentum() const
double maxPhoEtaForPurity
MonitorElement * p_dzPVVsR_
MonitorElement * h2_Chi2VsR_[3]
std::vector< PhotonMCTruth > find(const std::vector< SimTrack > &simTracks, const std::vector< SimVertex > &simVertices)
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
bool quality(ConversionQuality q) const
double chi2() const
chi-squares
const reco::Vertex & conversionVertex() const
returns the reco conversion vertex
MonitorElement * h_convVtxdPhi_
MonitorElement * h_invMass_[3][3]
MonitorElement * h_convZ_[3][3]
DQM_DEPRECATED void save(std::string const &filename, std::string const &path="")
bool arbitratedEcalSeeded_
MonitorElement * h_dlClosestHitToVtxSig_[3]
MonitorElement * h2_PtRecVsPtSim_[3]
MonitorElement * h_match_
static float computeRadius(Bounds const &bounds)
const std::vector< uint8_t > & nHitsBeforeVtx() const
Vector of the number of hits before the vertex along each track trajector.
double mcPhi_
global variable for the MC photon
MonitorElement * p_convVtxdZVsZ_
MonitorElement * h2_TkPtPull_[3]
void push_back(const RefToBase< T > &)
MonitorElement * h_convVtxdZ_endcap_
MonitorElement * h2_convVtxdRVsR_
MonitorElement * h_DPhiTracksAtVtx_[3][3]
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * nHitsVsR_[3]
void dqmEndRun(edm::Run const &r, edm::EventSetup const &es) override
MonitorElement * h_simTkEta_
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
MonitorElement * h_TkPtPull_[3]
MonitorElement * p2_convVtxdZVsRZ_
MonitorElement * h_SimConvTwoMTracks_[5]
MonitorElement * p_convVtxdRVsEta_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MonitorElement * h_dlClosestHitToVtx_[3]
std::vector< edm::RefToBase< reco::Track > > const & tracks() const
vector of track to base references
const_iterator begin() const
Initialize an iterator over the RefVector.
MonitorElement * h_TkD0_[3]
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
MonitorElement * h2_convVtxdRVsEta_
value_type const * get() const
MonitorElement * h_nSharedHits_[3][3]
bool isValid() const
Tells whether the vertex is valid.
static constexpr float Z_Endcap
MonitorElement * h_maxNHitsBeforeVtx_[3][3]
const edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transientTrackBuilderToken_
void dqmBeginRun(edm::Run const &r, edm::EventSetup const &theEventSetup) override