|
|
Go to the documentation of this file.
33 #include "CLHEP/Units/GlobalPhysicalConstants.h"
97 : magneticFieldToken_{esConsumes<edm::Transition::BeginRun>()},
102 verbosity_ =
pset.getUntrackedParameter<
int>(
"Verbosity");
105 photonCollectionProducer_ =
pset.getParameter<
std::string>(
"phoProducer");
106 photonCollection_ =
pset.getParameter<
std::string>(
"photonCollection");
107 photonCollectionPr_Token_ =
108 consumes<reco::PhotonCollection>(
edm::InputTag(photonCollectionProducer_, photonCollection_));
110 conversionCollectionProducer_ =
pset.getParameter<
std::string>(
"convProducer");
111 conversionCollection_ =
pset.getParameter<
std::string>(
"conversionCollection");
112 conversionCollectionPr_Token_ =
113 consumes<reco::ConversionCollection>(
edm::InputTag(conversionCollectionProducer_, conversionCollection_));
117 minPhoEtCut_ =
pset.getParameter<
double>(
"minPhoEtCut");
118 generalTracksOnly_ =
pset.getParameter<
bool>(
"generalTracksOnly");
119 arbitratedMerged_ =
pset.getParameter<
bool>(
"arbitratedMerged");
120 arbitratedEcalSeeded_ =
pset.getParameter<
bool>(
"arbitratedEcalSeeded");
121 ecalalgotracks_ =
pset.getParameter<
bool>(
"ecalalgotracks");
122 highPurity_ =
pset.getParameter<
bool>(
"highPurity");
123 minProb_ =
pset.getParameter<
double>(
"minProb");
124 maxHitsBeforeVtx_ =
pset.getParameter<
uint>(
"maxHitsBeforeVtx");
125 minLxy_ =
pset.getParameter<
double>(
"minLxy");
126 isRunCentrally_ =
pset.getParameter<
bool>(
"isRunCentrally");
128 offline_pvToken_ = consumes<reco::VertexCollection>(
132 g4_simTk_Token_ = consumes<edm::SimTrackContainer>(
pset.getParameter<
edm::InputTag>(
"simTracks"));
133 g4_simVtx_Token_ = consumes<edm::SimVertexContainer>(
pset.getParameter<
edm::InputTag>(
"simTracks"));
135 tpSelForEff_Token_ = consumes<TrackingParticleRefVector>(
edm::InputTag(
"tpSelecForEfficiency"));
136 tpSelForFake_Token_ = consumes<TrackingParticleRefVector>(
edm::InputTag(
"tpSelecForFakeRate"));
141 trackAssociator_Token_ =
142 consumes<reco::TrackToTrackingParticleAssociator>(
edm::InputTag(
"trackAssociatorByHitsForConversionValidation"));
231 h_nSimConv_[0] = iBooker.
book1D(histname,
"# of Sim conversions per event ", 20, -0.5, 19.5);
233 histname =
"h_AllSimConvEta";
235 histname =
"h_AllSimConvPhi";
237 histname =
"h_AllSimConvR";
239 histname =
"h_AllSimConvZ";
241 histname =
"h_AllSimConvEt";
244 histname =
"nOfVisSimConversions";
245 h_nSimConv_[1] = iBooker.
book1D(histname,
"# of Sim conversions per event ", 20, -0.5, 19.5);
246 histname =
"h_VisSimConvEta";
248 histname =
"h_VisSimConvPhi";
250 histname =
"h_VisSimConvR";
252 histname =
"h_VisSimConvZ";
254 histname =
"h_VisSimConvEt";
258 histname =
"h_SimConvTwoMTracksEta";
260 histname,
" All vis conversions with 2 reco-matching tracks: simulated #eta",
etaBin2,
etaMin,
etaMax);
261 histname =
"h_SimConvTwoMTracksPhi";
263 histname,
" All vis conversions with 2 reco-matching tracks: simulated #phi",
phiBin,
phiMin,
phiMax);
264 histname =
"h_SimConvTwoMTracksR";
266 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated R",
rBin,
rMin,
rMax);
267 histname =
"h_SimConvTwoMTracksZ";
269 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Z",
zBin,
zMin,
zMax);
270 histname =
"h_SimConvTwoMTracksEt";
272 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Et",
etBin,
etMin,
etMax);
274 histname =
"h_SimConvTwoTracksEta";
277 histname =
"h_SimConvTwoTracksPhi";
280 histname =
"h_SimConvTwoTracksR";
282 iBooker.
book1D(histname,
" All vis conversions with 2 reco tracks: simulated R",
rBin,
rMin,
rMax);
283 histname =
"h_SimConvTwoTracksZ";
285 iBooker.
book1D(histname,
" All vis conversions with 2 reco tracks: simulated Z",
zBin,
zMin,
zMax);
286 histname =
"h_SimConvTwoTracksEt";
288 iBooker.
book1D(histname,
" All vis conversions with 2 reco tracks: simulated Et",
etBin,
etMin,
etMax);
290 histname =
"h_SimConvTwoMTracksEtaAndVtxPGT0";
292 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #eta",
etaBin2,
etaMin,
etaMax);
293 histname =
"h_SimConvTwoMTracksPhiAndVtxPGT0";
295 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #phi",
phiBin,
phiMin,
phiMax);
296 histname =
"h_SimConvTwoMTracksRAndVtxPGT0";
298 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated R",
rBin,
rMin,
rMax);
299 histname =
"h_SimConvTwoMTracksZAndVtxPGT0";
301 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Z",
zBin,
zMin,
zMax);
302 histname =
"h_SimConvTwoMTracksEtAndVtxPGT0";
304 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Et",
etBin,
etMin,
etMax);
307 histname =
"h_SimConvTwoMTracksEtaAndVtxPGT0005";
309 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #eta",
etaBin2,
etaMin,
etaMax);
310 histname =
"h_SimConvTwoMTracksPhiAndVtxPGT0005";
312 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated #phi",
phiBin,
phiMin,
phiMax);
313 histname =
"h_SimConvTwoMTracksRAndVtxPGT0005";
315 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated R",
rBin,
rMin,
rMax);
316 histname =
"h_SimConvTwoMTracksZAndVtxPGT0005";
318 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Z",
zBin,
zMin,
zMax);
319 histname =
"h_SimConvTwoMTracksEtAndVtxPGT0005";
321 histname,
" All vis conversions with 2 reco-matching tracks + vertex: simulated Et",
etBin,
etMin,
etMax);
323 histname =
"h_SimRecConvTwoMTracksEta";
325 histname,
" All vis conversions with 2 reco-matching tracks: simulated #eta",
etaBin2,
etaMin,
etaMax);
326 histname =
"h_SimRecConvTwoMTracksPhi";
328 histname,
" All vis conversions with 2 reco-matching tracks: simulated #phi",
phiBin,
phiMin,
phiMax);
329 histname =
"h_SimRecConvTwoMTracksR";
331 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated R",
rBin,
rMin,
rMax);
332 histname =
"h_SimRecConvTwoMTracksZ";
334 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Z",
zBin,
zMin,
zMax);
335 histname =
"h_SimRecConvTwoMTracksEt";
337 iBooker.
book1D(histname,
" All vis conversions with 2 reco-matching tracks: simulated Et",
etBin,
etMin,
etMax);
345 " Photon Sim conversion vtx position",
353 " Photon Sim conversion vtx position",
361 " Photon Sim conversion vtx position",
369 " Photon Sim conversion vtx position when reco R<4cm",
377 "simConvVtxYvsXTrkBarrel",
" Photon Sim conversion vtx position, (x,y) eta<1 ", 100, -80., 80., 100, -80., 80.);
384 histname +
"All",
"Number Of Conversions per isolated candidates per events: All Ecal ", 10, -0.5, 9.5);
386 histname +
"Barrel",
"Number Of Conversions per isolated candidates per events: Ecal Barrel ", 10, -0.5, 9.5);
388 histname +
"Endcap",
"Number Of Conversions per isolated candidates per events: Ecal Endcap ", 10, -0.5, 9.5);
390 "Number Of associated Conversions per isolated candidates per events: All Ecal ",
426 histname =
"convSCdPhi";
427 h_convSCdPhi_[0][0] = iBooker.
book1D(histname +
"All",
"dPhi between SC and conversion", 100, -0.1, 0.1);
429 iBooker.
book1D(histname +
"Barrel",
" dPhi between SC and conversion: Barrel", 100, -0.1, 0.1);
431 iBooker.
book1D(histname +
"Endcap",
" dPhi between SC and conversion: Endcap", 100, -0.1, 0.1);
432 h_convSCdPhi_[1][0] = iBooker.
book1D(histname +
"All_Ass",
"dPhi between SC and conversion", 100, -0.1, 0.1);
434 iBooker.
book1D(histname +
"Barrel_Ass",
" dPhi between SC and conversion: Barrel", 100, -0.1, 0.1);
436 iBooker.
book1D(histname +
"Endcap_Ass",
" dPhi between SC and conversion: Endcap", 100, -0.1, 0.1);
437 h_convSCdPhi_[2][0] = iBooker.
book1D(histname +
"All_Fakes",
"dPhi between SC and conversion", 100, -0.1, 0.1);
439 iBooker.
book1D(histname +
"Barrel_Fakes",
" dPhi between SC and conversion: Barrel", 100, -0.1, 0.1);
441 iBooker.
book1D(histname +
"Endcap_Fakes",
" dPhi between SC and conversion: Endcap", 100, -0.1, 0.1);
442 histname =
"convSCdEta";
443 h_convSCdEta_[0][0] = iBooker.
book1D(histname +
"All",
" dEta between SC and conversion", 100, -0.1, 0.1);
445 iBooker.
book1D(histname +
"Barrel",
" dEta between SC and conversion: Barrel", 100, -0.1, 0.1);
447 iBooker.
book1D(histname +
"Endcap",
" dEta between SC and conversion: Endcap", 100, -0.1, 0.1);
448 h_convSCdEta_[1][0] = iBooker.
book1D(histname +
"All_Ass",
" dEta between SC and conversion", 100, -0.1, 0.1);
450 iBooker.
book1D(histname +
"Barrel_Ass",
" dEta between SC and conversion: Barrel", 100, -0.1, 0.1);
452 iBooker.
book1D(histname +
"Endcap_Ass",
" dEta between SC and conversion: Endcap", 100, -0.1, 0.1);
453 h_convSCdEta_[2][0] = iBooker.
book1D(histname +
"All_Fakes",
" dEta between SC and conversion", 100, -0.1, 0.1);
455 iBooker.
book1D(histname +
"Barrel_Fakes",
" dEta between SC and conversion: Barrel", 100, -0.1, 0.1);
457 iBooker.
book1D(histname +
"Endcap_Fakes",
" dEta between SC and conversion: Endcap", 100, -0.1, 0.1);
459 histname =
"convPtRes";
464 histname =
"hInvMass";
466 histname +
"All_AllTracks",
" Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
468 " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",
473 " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",
479 histname +
"All_AssTracks",
" Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
481 " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",
486 " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",
492 histname +
"All_FakeTracks",
" Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
494 " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",
499 " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",
504 histname =
"hDPhiTracksAtVtx";
506 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
511 iBooker.
book1D(histname +
"Barrel",
512 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
517 iBooker.
book1D(histname +
"Endcap",
518 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
523 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
528 iBooker.
book1D(histname +
"Barrel_Ass",
529 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
534 iBooker.
book1D(histname +
"Endcap_Ass",
535 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
540 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
545 iBooker.
book1D(histname +
"Barrel_Fakes",
546 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
551 iBooker.
book1D(histname +
"Endcap_Fakes",
552 " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
557 histname =
"hDPhiTracksAtVtxVsEta";
559 " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta",
566 histname =
"pDPhiTracksAtVtxVsEta";
569 " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta ",
578 histname =
"hDPhiTracksAtVtxVsR";
580 " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R",
587 histname =
"pDPhiTracksAtVtxVsR";
589 " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R ",
598 histname =
"hDCotTracks";
600 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
605 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
610 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
615 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
620 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
625 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
630 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
635 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
640 " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
645 histname =
"hDCotTracksVsEta";
647 " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta",
654 histname =
"pDCotTracksVsEta";
656 " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta ",
665 histname =
"hDCotTracksVsR";
667 " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R",
674 histname =
"pDCotTracksVsR";
677 " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R ",
686 histname =
"hDistMinAppTracks";
688 histname +
"All",
" Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ", 120, -0.5, 1.0);
690 histname +
"Barrel",
" Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ", 120, -0.5, 1.0);
692 histname +
"Endcap",
" Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ", 120, -0.5, 1.0);
694 histname +
"All_Ass",
" Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ", 120, -0.5, 1.0);
696 iBooker.
book1D(histname +
"Barrel_Ass",
697 " Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",
702 iBooker.
book1D(histname +
"Endcap_Ass",
703 " Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",
708 histname +
"All_Fakes",
" Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ", 120, -0.5, 1.0);
710 iBooker.
book1D(histname +
"Barrel_Fakes",
711 " Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",
716 iBooker.
book1D(histname +
"Endcap_Fakes",
717 " Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",
723 " Photon Reco conversion vtx position",
731 " Photon Reco conversion vtx position",
739 " Photon Reco conversion vtx position",
747 "convVtxYvsXTrkBarrel",
" Photon Reco conversion vtx position, (x,y) eta<1 ", 1000, -60., 60., 1000, -60., 60.);
750 " Photon Reco conversion vtx position",
758 " Photon Reco conversion vtx position",
766 " Photon Reco conversion vtx position, (x,y) eta<1 ",
774 " Photon Reco conversion vtx position, (x,y) eta<1 ",
782 h_convVtxdR_ = iBooker.
book1D(
"convVtxdR",
" Photon Reco conversion vtx dR", 100, -10., 10.);
783 h_convVtxdX_ = iBooker.
book1D(
"convVtxdX",
" Photon Reco conversion vtx dX", 100, -10., 10.);
784 h_convVtxdY_ = iBooker.
book1D(
"convVtxdY",
" Photon Reco conversion vtx dY", 100, -10., 10.);
785 h_convVtxdZ_ = iBooker.
book1D(
"convVtxdZ",
" Photon Reco conversion vtx dZ", 100, -20., 20.);
787 h_convVtxdPhi_ = iBooker.
book1D(
"convVtxdPhi",
" Photon Reco conversion vtx dPhi", 100, -0.01, 0.01);
788 h_convVtxdEta_ = iBooker.
book1D(
"convVtxdEta",
" Photon Reco conversion vtx dEta", 100, -0.5, 0.5);
791 iBooker.
book1D(
"convVtxdR_barrel",
" Photon Reco conversion vtx dR, |eta|<=1.2", 100, -10., 10.);
793 iBooker.
book1D(
"convVtxdX_barrel",
" Photon Reco conversion vtx dX, |eta|<=1.2", 100, -10., 10.);
795 iBooker.
book1D(
"convVtxdY_barrel",
" Photon Reco conversion vtx dY, |eta|<=1.2 ", 100, -10., 10.);
797 iBooker.
book1D(
"convVtxdZ_barrel",
" Photon Reco conversion vtx dZ, |eta|<=1.2,", 100, -20., 20.);
800 iBooker.
book1D(
"convVtxdR_endcap",
" Photon Reco conversion vtx dR, |eta|>1.2 ", 100, -10., 10.);
802 iBooker.
book1D(
"convVtxdX_endcap",
" Photon Reco conversion vtx dX, |eta|>1.2", 100, -10., 10.);
804 iBooker.
book1D(
"convVtxdY_endcap",
" Photon Reco conversion vtx dY, |eta|>1.2", 100, -10., 10.);
806 iBooker.
book1D(
"convVtxdZ_endcap",
" Photon Reco conversion vtx dZ, |eta|>1.2", 100, -20., 20.);
824 "p2ConvVtxdRVsRZ",
"Conversion vtx dR vs RZ",
zBin,
zMin,
zMax,
rBin,
rMin,
rMax, 100, 0., 20.,
"s");
826 "p2ConvVtxdZVsRZ",
"Conversion vtx dZ vs RZ",
zBin,
zMin,
zMax,
rBin,
rMin,
rMax, 100, 0., 20.,
"s");
828 histname =
"EoverPtracks";
851 histname =
"vtxChi2Prob";
853 h_vtxChi2Prob_[0][1] = iBooker.
book1D(histname +
"Barrel",
"vertex #chi^{2} barrel", 100, 0., 1.);
854 h_vtxChi2Prob_[0][2] = iBooker.
book1D(histname +
"Endcap",
"vertex #chi^{2} endcap", 100, 0., 1.);
855 h_vtxChi2Prob_[1][0] = iBooker.
book1D(histname +
"All_Ass",
"vertex #chi^{2} all", 100, 0., 1.);
856 h_vtxChi2Prob_[1][1] = iBooker.
book1D(histname +
"Barrel_Ass",
"vertex #chi^{2} barrel", 100, 0., 1.);
857 h_vtxChi2Prob_[1][2] = iBooker.
book1D(histname +
"Endcap_Ass",
"vertex #chi^{2} endcap", 100, 0., 1.);
858 h_vtxChi2Prob_[2][0] = iBooker.
book1D(histname +
"All_Fakes",
"vertex #chi^{2} all", 100, 0., 1.);
859 h_vtxChi2Prob_[2][1] = iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 100, 0., 1.);
860 h_vtxChi2Prob_[2][2] = iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 100, 0., 1.);
862 h_zPVFromTracks_[1] = iBooker.
book1D(
"zPVFromTracks",
" Photons: PV z from conversion tracks", 100, -25., 25.);
864 iBooker.
book1D(
"dzPVFromTracks",
" Photons: PV Z_rec - Z_true from conversion tracks", 100, -5., 5.);
870 h_lxybs_[0][0] = iBooker.
book1D(histname +
"All",
"vertex #chi^{2} all", 200, -100., 100.);
871 h_lxybs_[0][1] = iBooker.
book1D(histname +
"Barrel",
"vertex #chi^{2} barrel", 200, -100., 100.);
872 h_lxybs_[0][2] = iBooker.
book1D(histname +
"Endcap",
"vertex #chi^{2} endcap", 200, -100., 100.);
873 h_lxybs_[1][0] = iBooker.
book1D(histname +
"All_Ass",
"vertex #chi^{2} all", 200, -100., 100.);
874 h_lxybs_[1][1] = iBooker.
book1D(histname +
"Barrel_Ass",
"vertex #chi^{2} barrel", 200, -100., 100.);
875 h_lxybs_[1][2] = iBooker.
book1D(histname +
"Endcap_Ass",
"vertex #chi^{2} endcap", 200, -100., 100.);
876 h_lxybs_[2][0] = iBooker.
book1D(histname +
"All_Fakes",
"vertex #chi^{2} all", 200, -100., 100.);
877 h_lxybs_[2][1] = iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 200, -100., 100.);
878 h_lxybs_[2][2] = iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 200, -100., 100.);
880 histname =
"maxNHitsBeforeVtx";
891 histname =
"leadNHitsBeforeVtx";
902 histname =
"trailNHitsBeforeVtx";
913 histname =
"sumNHitsBeforeVtx";
924 histname =
"maxDlClosestHitToVtx";
935 histname =
"maxDlClosestHitToVtxSig";
944 iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 100, -8., 8.);
946 iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 100, -8., 8.);
948 histname =
"deltaExpectedHitsInner";
954 iBooker.
book1D(histname +
"Barrel_Ass",
"vertex #chi^{2} barrel", 31, -15.5, 15.5);
956 iBooker.
book1D(histname +
"Endcap_Ass",
"vertex #chi^{2} endcap", 31, -15.5, 15.5);
959 iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 31, -15.5, 15.5);
961 iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 31, -15.5, 15.5);
963 histname =
"leadExpectedHitsInner";
972 iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
974 iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
976 histname =
"nSharedHits";
978 h_nSharedHits_[0][1] = iBooker.
book1D(histname +
"Barrel",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
979 h_nSharedHits_[0][2] = iBooker.
book1D(histname +
"Endcap",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
980 h_nSharedHits_[1][0] = iBooker.
book1D(histname +
"All_Ass",
"vertex #chi^{2} all", 16, -0.5, 15.5);
981 h_nSharedHits_[1][1] = iBooker.
book1D(histname +
"Barrel_Ass",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
982 h_nSharedHits_[1][2] = iBooker.
book1D(histname +
"Endcap_Ass",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
983 h_nSharedHits_[2][0] = iBooker.
book1D(histname +
"All_Fakes",
"vertex #chi^{2} all", 16, -0.5, 15.5);
984 h_nSharedHits_[2][1] = iBooker.
book1D(histname +
"Barrel_Fakes",
"vertex #chi^{2} barrel", 16, -0.5, 15.5);
985 h_nSharedHits_[2][2] = iBooker.
book1D(histname +
"Endcap_Fakes",
"vertex #chi^{2} endcap", 16, -0.5, 15.5);
990 "Photons:Tracks from conversions: # of hits all tracks",
998 "Photons:Tracks from conversions: # of hits all tracks ass",
1005 nHits_[2] = iBooker.
book2D(histname +
"AllTracks_Fakes",
1006 "Photons:Tracks from conversions: # of hits all tracks fakes",
1014 histname =
"nHitsVsEta";
1016 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1024 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1032 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1039 histname =
"h_nHitsVsEta";
1041 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1050 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1059 "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1068 histname =
"nHitsVsR";
1070 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1078 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1086 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1094 histname =
"h_nHitsVsR";
1096 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1105 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1114 "Photons:Tracks from conversions: # of hits vs radius all tracks",
1123 histname =
"tkChi2";
1125 histname +
"AllTracks",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 100,
chi2Min,
chi2Max);
1127 histname +
"AllTracks_Ass",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 100,
chi2Min,
chi2Max);
1129 histname +
"AllTracks_Fakes",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 100,
chi2Min,
chi2Max);
1131 histname =
"tkChi2Large";
1133 histname +
"AllTracks",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
1135 histname +
"AllTracks_Ass",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
1137 histname +
"AllTracks_Fakes",
"Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
1139 histname =
"h2Chi2VsEta";
1146 histname =
"pChi2VsEta";
1152 " Reco Track #chi^{2} vs #eta : All ",
1161 histname =
"h2Chi2VsR";
1168 histname =
"pChi2VsR";
1177 h_TkD0_[0] = iBooker.
book1D(histname +
"All",
" Reco Track D0*q: All ", 200, -0.1, 60);
1178 h_TkD0_[1] = iBooker.
book1D(histname +
"All_Ass",
" Reco Track D0*q: Barrel ", 200, -0.1, 60);
1179 h_TkD0_[2] = iBooker.
book1D(histname +
"All_Fakes",
" Reco Track D0*q: Endcap ", 200, -0.1, 60);
1181 histname =
"hTkPtPull";
1182 h_TkPtPull_[0] = iBooker.
book1D(histname +
"All",
" Reco Track Pt pull: All ", 100, -20., 10.);
1183 histname =
"hTkPtPull";
1184 h_TkPtPull_[1] = iBooker.
book1D(histname +
"Barrel",
" Reco Track Pt pull: Barrel ", 100, -20., 10.);
1185 histname =
"hTkPtPull";
1186 h_TkPtPull_[2] = iBooker.
book1D(histname +
"Endcap",
" Reco Track Pt pull: Endcap ", 100, -20., 10.);
1188 histname =
"h2TkPtPullEta";
1191 histname =
"pTkPtPullEta";
1193 histname +
"All",
" Reco Track Pt pull: All ",
etaBin2,
etaMin,
etaMax, 100, -20., 10.,
" ");
1195 histname =
"PtRecVsPtSim";
1203 histname =
"photonPtRecVsPtSim";
1207 histname =
"nHitsBeforeVtx";
1212 histname =
"dlClosestHitToVtx";
1217 histname =
"dlClosestHitToVtxSig";
1229 edm::LogInfo(
"ConvertedPhotonProducer") <<
" get magnetic field"
1240 using namespace edm;
1244 const float BARL = 1.4442;
1246 const float END_HI = 2.5;
1254 LogInfo(
"TkConvValidator") <<
"TkConvValidator Analyzing event number: " <<
e.id() <<
" Global Counter " <<
nEvt_
1269 edm::LogError(
"ConversionsProducer") <<
"Error! Can't get the collection " << std::endl;
1277 if (!photonHandle.
isValid()) {
1278 edm::LogError(
"PhotonProducer") <<
"Error! Can't get the Photon collection " << std::endl;
1286 if (!vertexHandle.
isValid()) {
1287 edm::LogError(
"TrackerOnlyConversionProducer") <<
"Error! Can't get the product primary Vertex Collection "
1293 bool valid_pvtx =
false;
1305 edm::LogError(
"TrackerOnlyConversionProducer") <<
"Error! Can't get the product primary Vertex Collection "
1339 const std::vector<SimTrack>& theSimTracks = *SimTk;
1340 const std::vector<SimVertex>& theSimVertices = *SimVtx;
1356 std::map<const reco::Track*, TrackingParticleRef> myAss;
1357 std::map<const reco::Track*, TrackingParticleRef>::const_iterator itAss;
1359 for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
1360 mcConvPt_ = (*mcPho).fourMomentum().et();
1361 float mcPhi = (*mcPho).fourMomentum().phi();
1363 mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
1365 mcConvR_ = (*mcPho).vertex().perp();
1372 if (fabs(
mcEta_) > END_HI)
1385 bool goodSimConversion =
false;
1386 bool visibleConversion =
false;
1387 bool visibleConversionsWithTwoSimTracks =
false;
1388 if ((*mcPho).isAConversion() == 1) {
1400 (fabs(
mcEta_) > BARL && fabs(
mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210))
1401 visibleConversion =
true;
1407 if (fabs(
tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(
tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
1408 fabs(
tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
1415 visibleConversionsWithTwoSimTracks =
true;
1416 goodSimConversion =
false;
1418 if (visibleConversion && visibleConversionsWithTwoSimTracks)
1419 goodSimConversion =
true;
1420 if (goodSimConversion) {
1437 if (!(visibleConversion && visibleConversionsWithTwoSimTracks))
1441 if (fabs(
mcEta_) <= 1.) {
1453 bool recomatch =
false;
1454 float chi2Prob = 0.;
1457 for (reco::ConversionCollection::const_iterator
conv = convHandle->begin();
conv != convHandle->end(); ++
conv) {
1470 const std::vector<edm::RefToBase<reco::Track> >&
tracks = aConv.
tracks();
1474 if (
tracks.size() != 2 || !(
vtx.isValid()))
1487 double lxy = (themom.x() * dbsx + themom.y() * dbsy) / themom.rho();
1511 bool isAssociated =
false;
1515 std::vector<std::pair<RefToBase<reco::Track>,
double> > trackV1, trackV2;
1517 int tp_1 = 0, tp_2 = 1;
1519 trackV1 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)
q1[
theConvTP_[0]];
1521 trackV1 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)
q1[
theConvTP_[1]];
1525 trackV2 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)
q2[
theConvTP_[1]];
1527 trackV2 = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)
q2[
theConvTP_[0]];
1530 if (!(!trackV1.empty() && !trackV2.empty()))
1547 isAssociated =
true;
1576 if (chi2Prob > 0.0005) {
1589 for (reco::ConversionCollection::const_iterator
conv = convHandle->begin();
conv != convHandle->end(); ++
conv) {
1602 std::vector<edm::RefToBase<reco::Track> >
tracks = aConv.
tracks();
1606 if (
tracks.size() != 2 || !(
vtx.isValid()))
1620 double lxy = (themom.x() * dbsx + themom.y() * dbsy) / themom.rho();
1625 bool phoIsInBarrel =
false;
1626 bool phoIsInEndcap =
false;
1643 float dPhiTracksAtVtx;
1647 if (p1AtVtx.perp2() > p2AtVtx.perp2())
1648 dPhiTracksAtVtx = p1AtVtx.phi() - p2AtVtx.phi();
1650 dPhiTracksAtVtx = p2AtVtx.phi() - p1AtVtx.phi();
1654 if (fabs(refittedMom.eta()) < 1.479) {
1655 phoIsInBarrel =
true;
1657 phoIsInEndcap =
true;
1663 double Mindeltaeta = 999999;
1664 double Mindeltaphi = 999999;
1665 bool matchConvSC =
false;
1666 reco::PhotonCollection::const_iterator iMatchingSC;
1672 double deltaeta =
abs(aPho.
superCluster()->position().eta() - ConvEta);
1673 if (
abs(deltaeta) <
abs(Mindeltaeta) &&
abs(deltaphi) <
abs(Mindeltaphi)) {
1674 Mindeltaphi =
abs(deltaphi);
1675 Mindeltaeta =
abs(deltaeta);
1679 if (
abs(Mindeltaeta) < 0.1 &&
abs(Mindeltaphi) < 0.1) {
1687 uint maxNHitsBeforeVtx =
1689 uint sumNHitsBeforeVtx =
1694 float maxDlClosestHitToVtxSig =
1700 int ilead = 0, itrail = 1;
1701 if (tk2->
pt() > tk1->
pt()) {
1757 if (phoIsInBarrel) {
1790 if (phoIsInEndcap) {
1821 for (
unsigned int i = 0;
i <
tracks.size();
i++) {
1849 bool associated =
false;
1853 for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
1854 mcConvPt_ = (*mcPho).fourMomentum().et();
1855 float mcPhi = (*mcPho).fourMomentum().phi();
1856 simPV_Z = (*mcPho).primaryVertex().z();
1858 mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
1860 mcConvR_ = (*mcPho).vertex().perp();
1866 if (fabs(
mcEta_) > END_HI)
1877 if ((*mcPho).isAConversion() != 1)
1880 (fabs(
mcEta_) > BARL && fabs(
mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210)))
1885 if (fabs(
tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(
tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
1886 fabs(
tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
1898 auto itP1 =
p1.find(tk1);
1899 auto itP2 =
p2.find(tk2);
1900 bool good = (itP1 !=
p1.end()) and (not itP1->val.empty()) and (itP2 !=
p2.end()) and (not itP2->val.empty());
1902 itP1 =
p1.find(tk2);
1903 itP2 =
p2.find(tk1);
1904 good = (itP1 !=
p1.end()) and (not itP1->val.empty()) and (itP2 !=
p2.end()) and (not itP2->val.empty());
1908 std::vector<std::pair<TrackingParticleRef, double> >
const& tp1 = itP1->val;
1909 std::vector<std::pair<TrackingParticleRef, double> >
const& tp2 = itP2->val;
1912 if (
abs(tpr1->pdgId()) == 11 &&
abs(tpr2->pdgId()) == 11 && tpr1->pdgId() * tpr2->pdgId() < 0) {
1913 if ((tpr1->parentVertex()->sourceTracks_end() - tpr1->parentVertex()->sourceTracks_begin() == 1) &&
1914 (tpr2->parentVertex()->sourceTracks_end() - tpr2->parentVertex()->sourceTracks_begin() == 1)) {
1915 if (tpr1->parentVertex().
key() == tpr2->parentVertex().
key() &&
1916 ((*tpr1->parentVertex()->sourceTracks_begin())->
pdgId() == 22)) {
1917 mcConvR_ =
sqrt(tpr1->parentVertex()->position().Perp2());
1918 mcConvZ_ = tpr1->parentVertex()->position().z();
1919 mcConvX_ = tpr1->parentVertex()->position().x();
1920 mcConvY_ = tpr1->parentVertex()->position().y();
1921 mcConvEta_ = tpr1->parentVertex()->position().eta();
1922 mcConvPhi_ = tpr1->parentVertex()->position().phi();
1923 mcConvPt_ =
sqrt((*tpr1->parentVertex()->sourceTracks_begin())->momentum().Perp2());
1942 for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
1943 mcConvPt_ = (*mcPho).fourMomentum().et();
1944 float mcPhi = (*mcPho).fourMomentum().phi();
1945 simPV_Z = (*mcPho).primaryVertex().z();
1947 mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
1949 mcConvR_ = (*mcPho).vertex().perp();
1955 if (fabs(
mcEta_) > END_HI)
1966 if ((*mcPho).isAConversion() != 1)
1969 (fabs(
mcEta_) > BARL && fabs(
mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210)))
1974 if (fabs(
tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(
tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
1975 fabs(
tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
1987 if ((!p1incl.
empty() && !p2incl.
empty()) && (!
p1.empty() || !
p2.empty())) {
1989 std::vector<std::pair<TrackingParticleRef, double> > tp1 = p1incl[tk1];
1990 std::vector<std::pair<TrackingParticleRef, double> > tp2 = p2incl[tk2];
1991 if (!(!tp1.empty() && !tp2.empty())) {
1995 if (!tp1.empty() && !tp2.empty()) {
1998 if (
abs(tpr1->pdgId()) == 11 &&
abs(tpr2->pdgId()) == 11 && tpr1->pdgId() * tpr2->pdgId() < 0) {
1999 if (((tpr1->parentVertex()->sourceTracks_end() - tpr1->parentVertex()->sourceTracks_begin() >= 1) &&
2000 (*tpr1->parentVertex()->sourceTracks_begin())->
pdgId() == 22) &&
2001 ((tpr2->parentVertex()->sourceTracks_end() - tpr2->parentVertex()->sourceTracks_begin() >= 1) &&
2002 (*tpr2->parentVertex()->sourceTracks_begin())->
pdgId() == 22)) {
2074 if (phoIsInBarrel) {
2101 if (phoIsInEndcap) {
2156 if (phoIsInBarrel) {
2162 if (phoIsInEndcap) {
2171 for (
unsigned int i = 0;
i <
tracks.size();
i++) {
2174 itAss = myAss.find(tfrb.get());
2201 if (itAss == myAss.end())
2205 float simPt =
sqrt(((*itAss).second)->momentum().perp2());
2207 float ptres =
recPt - simPt;
2214 if (phoIsInBarrel) {
2218 if (phoIsInEndcap) {
2250 sqrt(
vtx.position().perp2()) + 0.001
f,
2251 -fabs(
vtx.position().z()),
2252 fabs(
vtx.position().z()));
2264 stateAtVtx = propag.
propagate(myTSOS, *theBarrel_);
2266 stateAtVtx = propag.
propagate(myTSOS, *theDisk_);
2279 const float PI = 3.1415927;
2295 const float PI = 3.1415927;
2298 const float R_ECAL = 136.5;
2305 float ZEcal =
R_ECAL * sinh(EtaParticle) + Zvertex;
2315 if (EtaParticle < 0.0)
2317 float Zlen = Zend - Zvertex;
2318 float RR = Zlen / sinh(EtaParticle);
2319 Theta = atan(RR / Zend);
MonitorElement * h_convR_[3][3]
MonitorElement * p_convVtxdZVsZ_
double pairCotThetaSeparation() const
Delta cot(Theta) where Theta is the angle in the (y,z) plane between the two tracks....
MonitorElement * h_convEta_[3][3]
bool isValid() const
Tells whether the vertex is valid.
const auto good
min quality of good
MonitorElement * h_SimRecConvTwoMTracks_[5]
MonitorElement * h_TkD0_[3]
void clear()
Clear the vector.
bool arbitratedEcalSeeded_
edm::ESHandle< MagneticField > theMF_
MonitorElement * h_distMinAppTracks_[3][3]
MonitorElement * p_DPhiTracksAtVtxVsEta_
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
MonitorElement * h2_Chi2VsR_[3]
~TkConvValidator() override
MonitorElement * h_convEta2_[3][3]
MonitorElement * h_convVtxdR_barrel_
T const * product() const
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * h_convVtxYvsX_
int etaBin(const l1t::HGCalMulticluster *cl)
MonitorElement * h_SimConvTwoTracks_[5]
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
MonitorElement * h_convEtaMatchSC_[3][3]
std::vector< edm::RefToBase< reco::Track > > const & tracks() const
vector of track to base references
MonitorElement * h_convSCdPhi_[3][3]
MonitorElement * h_VisSimConv_[6]
constexpr double deltaPhi(double phi1, double phi2)
float ChiSquaredProbability(double chiSquared, double nrDOF)
MonitorElement * h_deltaExpectedHitsInner_[3][3]
MonitorElement * h_simConvVtxYvsX_
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())
reco::RecoToSimCollection associateRecoToSim(const edm::Handle< edm::View< reco::Track >> &tCH, const edm::Handle< TrackingParticleCollection > &tPCH) const
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::vector< Vertex > VertexCollection
collection of Vertex objects
const_iterator begin() const
Initialize an iterator over the RefVector.
MonitorElement * h_convRplot_
MonitorElement * h2_DCotTracksVsEta_
MonitorElement * h2_convVtxdRVsEta_
virtual void setCurrentFolder(std::string const &fullpath)
MonitorElement * h_simTkEta_
MonitorElement * p_DCotTracksVsEta_
MonitorElement * h2_DPhiTracksAtVtxVsR_
double pairInvariantMass() const
if nTracks=2 returns the pair invariant mass. Original tracks are used here
double zOfPrimaryVertexFromTracks(const math::XYZPoint &myBeamSpot=math::XYZPoint()) const
edm::EDGetTokenT< TrackingParticleRefVector > tpSelForEff_Token_
const std::vector< Measurement1DFloat > & dlClosestHitToVtx() const
Vector of signed decay length with uncertainty from nearest hit on track to the conversion vtx positi...
const Point & position() const
position
MonitorElement * h_convVtxdPhi_
MonitorElement * h_EoverPTracks_[3][3]
MonitorElement * p_TkPtPull_[3]
MonitorElement * h2_dzPVVsR_
MonitorElement * h_convVtxdR_endcap_
std::vector< PhotonMCTruth > find(const std::vector< SimTrack > &simTracks, const std::vector< SimVertex > &simVertices)
Log< level::Info, false > LogInfo
MonitorElement * h2_photonPtRecVsPtSim_
MonitorElement * p_dzPVVsR_
int numberOfLostHits(HitCategory category) const
edm::ParameterSet parameters_
MonitorElement * nHits_[3]
edm::EDGetTokenT< reco::ConversionCollection > conversionCollectionPr_Token_
MonitorElement * h_TkPtPull_[3]
edm::EDGetTokenT< reco::BeamSpot > beamspotToken_
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0_[5]
MonitorElement * h_nSimConv_[2]
std::vector< Conversion > ConversionCollection
collectin of Conversion objects
double pt() const
track transverse momentum
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
math::XYZVectorF refittedPairMomentum() const
Conversion tracks momentum from the tracks refitted with vertex constraint.
edm::EDGetTokenT< TrackingParticleRefVector > tpSelForFake_Token_
MonitorElement * h_dlClosestHitToVtxSig_[3]
const_iterator end() const
Termination of iteration.
const std::vector< uint8_t > & nHitsBeforeVtx() const
Vector of the number of hits before the vertex along each track trajector.
MonitorElement * h2_convVtxRrecVsTrue_
TkConvValidator(const edm::ParameterSet &)
void push_back(const RefToBase< T > &)
MonitorElement * h_convVtxdZ_endcap_
MonitorElement * h_leadExpectedHitsInner_[3][3]
MonitorElement * nHitsVsR_[3]
MonitorElement * p2_convVtxdZVsRZ_
MonitorElement * h_convVtxdX_
float etaTransformation(float a, float b)
MonitorElement * h_convSCdEta_[3][3]
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_convVtxdY_endcap_
MonitorElement * h2_Chi2VsEta_[3]
MonitorElement * h_convPhi_[3][3]
MonitorElement * h_sumNHitsBeforeVtx_[3][3]
DQM_DEPRECATED void save(std::string const &filename, std::string const &path="")
MonitorElement * p_nHitsVsR_[3]
value_type const * get() const
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
const std::vector< Track > & refittedTracks() const
Returns the container of refitted tracks.
math::XYZVector recalculateMomentumAtFittedVertex(const MagneticField &mf, const TrackerGeometry &trackerGeom, const edm::RefToBase< reco::Track > &tk, const reco::Vertex &vtx)
MonitorElement * h_lxybs_[3][3]
edm::EDGetTokenT< edm::SimTrackContainer > g4_simTk_Token_
MonitorElement * h_nHitsBeforeVtx_[3]
double maxPhoEtaForPurity
MonitorElement * h_simConvVtxRvsZ_[4]
MonitorElement * h_DPhiTracksAtVtx_[3][3]
MonitorElement * h_convVtxdX_barrel_
MonitorElement * h_simTkPt_
MonitorElement * h_maxDlClosestHitToVtx_[3][3]
MonitorElement * p_convVtxdRVsR_
MonitorElement * p_Chi2VsEta_[3]
bool quality(ConversionQuality q) const
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
const reco::Vertex & conversionVertex() const
returns the reco conversion vertex
double x() const
x coordinate
MonitorElement * h_convPt_[3][3]
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
XYZVectorD XYZVector
spatial vector with cartesian internal representation
edm::EDGetTokenT< reco::VertexCollection > offline_pvToken_
MonitorElement * h_zPVFromTracks_[2]
MonitorElement * h_convVtxYvsX_zoom_[2]
Tan< T >::type tan(const T &t)
MonitorElement * h_trailNHitsBeforeVtx_[3][3]
MonitorElement * p_DPhiTracksAtVtxVsR_
double distOfMinimumApproach() const
MonitorElement * h_convVtxRvsZ_zoom_[2]
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
MonitorElement * h_convVtxdEta_
MonitorElement * h_SimConvTwoMTracks_[5]
MonitorElement * p_convVtxdRVsEta_
Log< level::Error, false > LogError
MonitorElement * h_DCotTracks_[3][3]
MonitorElement * h_dlClosestHitToVtx_[3]
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
MonitorElement * h_dzPVFromTracks_[2]
MonitorElement * p_convVtxdYVsY_
MonitorElement * h_match_
MonitorElement * h_vtxChi2Prob_[3][3]
double chi2() const
chi-squares
MonitorElement * h_convVtxdY_
edm::RefVector< TrackingParticleCollection > theConvTP_
TrackAlgorithm algo() const
MonitorElement * h_AllSimConv_[5]
Denominator for efficiencies.
MonitorElement * h_convVtxdR_
MonitorElement * h2_TkPtPull_[3]
MonitorElement * h_maxNHitsBeforeVtx_[3][3]
MonitorElement * p_DCotTracksVsR_
MonitorElement * h_convZplot_
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
double x0() const
x coordinate
bool empty() const
return true if empty
uint8_t nSharedHits() const
number of shared hits btw the two track
MonitorElement * p2_convVtxdRVsRZ_
GlobalVector globalMomentum() const
MonitorElement * p_nHitsVsEta_[3]
MonitorElement * h_convVtxdY_barrel_
edm::EDGetTokenT< reco::PhotonCollection > photonCollectionPr_Token_
double y() const
y coordinate
MonitorElement * h_convVtxdX_endcap_
MonitorElement * h_convVtxdZ_
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
edm::EDGetTokenT< edm::SimVertexContainer > g4_simVtx_Token_
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float > > XYZVectorF
spatial vector with cartesian internal representation
MonitorElement * h2_convVtxdRVsR_
PhotonMCTruthFinder * thePhotonMCTruthFinder_
MonitorElement * h_convVtxdZ_barrel_
T getParameter(std::string const &) const
MonitorElement * h_SimConvEtaPix_[2]
reco::SimToRecoCollection associateSimToReco(const edm::Handle< edm::View< reco::Track >> &tCH, const edm::Handle< TrackingParticleCollection > &tPCH) const
MonitorElement * p_Chi2VsR_[3]
MonitorElement * h_nSharedHits_[3][3]
static float computeRadius(Bounds const &bounds)
key_type key() const
Accessor for product key.
std::vector< Photon > PhotonCollection
collectin of Photon objects
void dqmEndRun(edm::Run const &r, edm::EventSetup const &es) override
Abs< T >::type abs(const T &t)
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0005_[5]
MonitorElement * h_nConv_[3][3]
info per conversion
edm::ESHandle< CaloGeometry > theCaloGeom_
MonitorElement * p_convVtxdXVsX_
MonitorElement * p_convVtxdZVsR_
MonitorElement * h_leadNHitsBeforeVtx_[3][3]
MonitorElement * h2_PtRecVsPtSim_[3]
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociator > trackAssociator_Token_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeometryToken_
static constexpr float ZEcal
MonitorElement * nHitsVsEta_[3]
double y0() const
y coordinate
float phiNormalization(float &a)
size_type size() const
Size of the RefVector.
static constexpr float d0
double mcPhi_
global variable for the MC photon
MonitorElement * h_maxDlClosestHitToVtxSig_[3][3]
static constexpr float Z_Endcap
MonitorElement * h_tkChi2Large_[3]
static constexpr float R_ECAL
const edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transientTrackBuilderToken_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MonitorElement * h_invMass_[3][3]
MonitorElement * h_tkChi2_[3]
MonitorElement * h_convZ_[3][3]
void dqmBeginRun(edm::Run const &r, edm::EventSetup const &theEventSetup) override
MonitorElement * h_convVtxRvsZ_[3]
MonitorElement * h_convPtRes_[3]
static constexpr float etaBarrelEndcap
MonitorElement * h2_DPhiTracksAtVtxVsEta_
MonitorElement * h2_DCotTracksVsR_