25 minEta_(
pset.getParameter<double>(
"minEta")),
26 maxEta_(
pset.getParameter<double>(
"maxEta")),
27 nintEta_(
pset.getParameter<
int>(
"nintEta")),
28 useFabsEta_(
pset.getParameter<
bool>(
"useFabsEta")),
31 minEne_(
pset.getParameter<double>(
"minEne")),
32 maxEne_(
pset.getParameter<double>(
"maxEne")),
33 nintEne_(
pset.getParameter<
int>(
"nintEne")),
36 minPt_(
pset.getParameter<double>(
"minPt")),
37 maxPt_(
pset.getParameter<double>(
"maxPt")),
38 nintPt_(
pset.getParameter<
int>(
"nintPt")),
41 minPhi_(
pset.getParameter<double>(
"minPhi")),
43 nintPhi_(
pset.getParameter<
int>(
"nintPhi")),
46 minMixedHitsSimCluster_(
pset.getParameter<double>(
"minMixedHitsSimCluster")),
47 maxMixedHitsSimCluster_(
pset.getParameter<double>(
"maxMixedHitsSimCluster")),
48 nintMixedHitsSimCluster_(
pset.getParameter<
int>(
"nintMixedHitsSimCluster")),
51 minMixedHitsCluster_(
pset.getParameter<double>(
"minMixedHitsCluster")),
52 maxMixedHitsCluster_(
pset.getParameter<double>(
"maxMixedHitsCluster")),
53 nintMixedHitsCluster_(
pset.getParameter<
int>(
"nintMixedHitsCluster")),
56 minEneCl_(
pset.getParameter<double>(
"minEneCl")),
57 maxEneCl_(
pset.getParameter<double>(
"maxEneCl")),
58 nintEneCl_(
pset.getParameter<
int>(
"nintEneCl")),
61 minLongDepBary_(
pset.getParameter<double>(
"minLongDepBary")),
62 maxLongDepBary_(
pset.getParameter<double>(
"maxLongDepBary")),
63 nintLongDepBary_(
pset.getParameter<
int>(
"nintLongDepBary")),
66 minZpos_(
pset.getParameter<double>(
"minZpos")),
67 maxZpos_(
pset.getParameter<double>(
"maxZpos")),
68 nintZpos_(
pset.getParameter<
int>(
"nintZpos")),
71 minTotNsimClsperlay_(
pset.getParameter<double>(
"minTotNsimClsperlay")),
72 maxTotNsimClsperlay_(
pset.getParameter<double>(
"maxTotNsimClsperlay")),
73 nintTotNsimClsperlay_(
pset.getParameter<
int>(
"nintTotNsimClsperlay")),
76 minTotNClsperlay_(
pset.getParameter<double>(
"minTotNClsperlay")),
77 maxTotNClsperlay_(
pset.getParameter<double>(
"maxTotNClsperlay")),
78 nintTotNClsperlay_(
pset.getParameter<
int>(
"nintTotNClsperlay")),
81 minEneClperlay_(
pset.getParameter<double>(
"minEneClperlay")),
82 maxEneClperlay_(
pset.getParameter<double>(
"maxEneClperlay")),
83 nintEneClperlay_(
pset.getParameter<
int>(
"nintEneClperlay")),
88 minScore_(
pset.getParameter<double>(
"minScore")),
89 maxScore_(
pset.getParameter<double>(
"maxScore")),
90 nintScore_(
pset.getParameter<
int>(
"nintScore")),
97 minSharedEneFrac_(
pset.getParameter<double>(
"minSharedEneFrac")),
98 maxSharedEneFrac_(
pset.getParameter<double>(
"maxSharedEneFrac")),
99 nintSharedEneFrac_(
pset.getParameter<
int>(
"nintSharedEneFrac")),
100 minTSTSharedEneFracEfficiency_(
pset.getParameter<double>(
"minTSTSharedEneFracEfficiency")),
103 minTSTSharedEneFrac_(
pset.getParameter<double>(
"minTSTSharedEneFrac")),
104 maxTSTSharedEneFrac_(
pset.getParameter<double>(
"maxTSTSharedEneFrac")),
105 nintTSTSharedEneFrac_(
pset.getParameter<
int>(
"nintTSTSharedEneFrac")),
108 minTotNsimClsperthick_(
pset.getParameter<double>(
"minTotNsimClsperthick")),
109 maxTotNsimClsperthick_(
pset.getParameter<double>(
"maxTotNsimClsperthick")),
110 nintTotNsimClsperthick_(
pset.getParameter<
int>(
"nintTotNsimClsperthick")),
113 minTotNClsperthick_(
pset.getParameter<double>(
"minTotNClsperthick")),
114 maxTotNClsperthick_(
pset.getParameter<double>(
"maxTotNClsperthick")),
115 nintTotNClsperthick_(
pset.getParameter<
int>(
"nintTotNClsperthick")),
118 minTotNcellsperthickperlayer_(
pset.getParameter<double>(
"minTotNcellsperthickperlayer")),
119 maxTotNcellsperthickperlayer_(
pset.getParameter<double>(
"maxTotNcellsperthickperlayer")),
120 nintTotNcellsperthickperlayer_(
pset.getParameter<
int>(
"nintTotNcellsperthickperlayer")),
123 minDisToSeedperthickperlayer_(
pset.getParameter<double>(
"minDisToSeedperthickperlayer")),
124 maxDisToSeedperthickperlayer_(
pset.getParameter<double>(
"maxDisToSeedperthickperlayer")),
125 nintDisToSeedperthickperlayer_(
pset.getParameter<
int>(
"nintDisToSeedperthickperlayer")),
128 minDisToSeedperthickperlayerenewei_(
pset.getParameter<double>(
"minDisToSeedperthickperlayerenewei")),
129 maxDisToSeedperthickperlayerenewei_(
pset.getParameter<double>(
"maxDisToSeedperthickperlayerenewei")),
130 nintDisToSeedperthickperlayerenewei_(
pset.getParameter<
int>(
"nintDisToSeedperthickperlayerenewei")),
133 minDisToMaxperthickperlayer_(
pset.getParameter<double>(
"minDisToMaxperthickperlayer")),
134 maxDisToMaxperthickperlayer_(
pset.getParameter<double>(
"maxDisToMaxperthickperlayer")),
135 nintDisToMaxperthickperlayer_(
pset.getParameter<
int>(
"nintDisToMaxperthickperlayer")),
138 minDisToMaxperthickperlayerenewei_(
pset.getParameter<double>(
"minDisToMaxperthickperlayerenewei")),
139 maxDisToMaxperthickperlayerenewei_(
pset.getParameter<double>(
"maxDisToMaxperthickperlayerenewei")),
140 nintDisToMaxperthickperlayerenewei_(
pset.getParameter<
int>(
"nintDisToMaxperthickperlayerenewei")),
143 minDisSeedToMaxperthickperlayer_(
pset.getParameter<double>(
"minDisSeedToMaxperthickperlayer")),
144 maxDisSeedToMaxperthickperlayer_(
pset.getParameter<double>(
"maxDisSeedToMaxperthickperlayer")),
145 nintDisSeedToMaxperthickperlayer_(
pset.getParameter<
int>(
"nintDisSeedToMaxperthickperlayer")),
148 minClEneperthickperlayer_(
pset.getParameter<double>(
"minClEneperthickperlayer")),
149 maxClEneperthickperlayer_(
pset.getParameter<double>(
"maxClEneperthickperlayer")),
150 nintClEneperthickperlayer_(
pset.getParameter<
int>(
"nintClEneperthickperlayer")),
153 minCellsEneDensperthick_(
pset.getParameter<double>(
"minCellsEneDensperthick")),
154 maxCellsEneDensperthick_(
pset.getParameter<double>(
"maxCellsEneDensperthick")),
155 nintCellsEneDensperthick_(
pset.getParameter<
int>(
"nintCellsEneDensperthick")),
159 minTotNTSTs_(
pset.getParameter<double>(
"minTotNTSTs")),
160 maxTotNTSTs_(
pset.getParameter<double>(
"maxTotNTSTs")),
161 nintTotNTSTs_(
pset.getParameter<
int>(
"nintTotNTSTs")),
164 minTotNClsinTSTs_(
pset.getParameter<double>(
"minTotNClsinTSTs")),
165 maxTotNClsinTSTs_(
pset.getParameter<double>(
"maxTotNClsinTSTs")),
166 nintTotNClsinTSTs_(
pset.getParameter<
int>(
"nintTotNClsinTSTs")),
169 minTotNClsinTSTsperlayer_(
pset.getParameter<double>(
"minTotNClsinTSTsperlayer")),
170 maxTotNClsinTSTsperlayer_(
pset.getParameter<double>(
"maxTotNClsinTSTsperlayer")),
171 nintTotNClsinTSTsperlayer_(
pset.getParameter<
int>(
"nintTotNClsinTSTsperlayer")),
174 minMplofLCs_(
pset.getParameter<double>(
"minMplofLCs")),
175 maxMplofLCs_(
pset.getParameter<double>(
"maxMplofLCs")),
176 nintMplofLCs_(
pset.getParameter<
int>(
"nintMplofLCs")),
179 minSizeCLsinTSTs_(
pset.getParameter<double>(
"minSizeCLsinTSTs")),
180 maxSizeCLsinTSTs_(
pset.getParameter<double>(
"maxSizeCLsinTSTs")),
181 nintSizeCLsinTSTs_(
pset.getParameter<
int>(
"nintSizeCLsinTSTs")),
184 minClEnepermultiplicity_(
pset.getParameter<double>(
"minClEnepermultiplicity")),
185 maxClEnepermultiplicity_(
pset.getParameter<double>(
"maxClEnepermultiplicity")),
186 nintClEnepermultiplicity_(
pset.getParameter<
int>(
"nintClEnepermultiplicity")),
189 minX_(
pset.getParameter<double>(
"minX")),
190 maxX_(
pset.getParameter<double>(
"maxX")),
191 nintX_(
pset.getParameter<
int>(
"nintX")),
194 minY_(
pset.getParameter<double>(
"minY")),
195 maxY_(
pset.getParameter<double>(
"maxY")),
196 nintY_(
pset.getParameter<
int>(
"nintY")),
199 minZ_(
pset.getParameter<double>(
"minZ")),
200 maxZ_(
pset.getParameter<double>(
"maxZ")),
201 nintZ_(
pset.getParameter<
int>(
"nintZ")) {}
230 ibook.
book1D(
"EnergyDifference",
"(Energy-SelfEnergy)/Energy", 300., -5., 1.);
233 ibook.
book1D(
"Num Sim Clusters",
"Num Sim Clusters in CaloParticles", 100, 0., 100.);
235 ibook.
book1D(
"Num Hits in Sim Clusters",
"Num Hits in Sim Clusters in CaloParticles", 1000, 0., 1000.);
237 "Num Rec-matched Hits in Sim Clusters",
"Num Hits in Sim Clusters (matched) in CaloParticles", 1000, 0., 1000.);
240 ibook.
book1D(
"Energy of Rec-matched Hits",
"Energy of Hits in Sim Clusters (matched)", 100, 0., 10.);
242 ibook.
book2D(
"Energy of Rec-matched Hits vs layer",
243 "Energy of Hits in Sim Clusters (matched) vs layer",
251 ibook.
book2D(
"Energy of Rec-matched Hits vs layer (1SC)",
252 "Energy of Hits only 1 Sim Clusters (matched) vs layer",
260 ibook.
book2D(
"Rec-matched Hits Sum Energy vs layer",
261 "Rescaled Sum Energy of Hits in Sim Clusters (matched) vs layer",
269 ibook.
book2D(
"HitFractions",
"Hit fractions;Hit fraction;E_{hit}^{2} fraction", 101, 0, 1.01, 100, 0, 1);
271 "HitFractions_weighted",
"Hit fractions weighted;Hit fraction;E_{hit}^{2} fraction", 101, 0, 1.01, 100, 0, 1);
274 ibook.
book1D(
"First Layer",
"First layer of the CaloParticles", 2 *
layers, 0., (
float)2 *
layers);
276 ibook.
book1D(
"Last Layer",
"Last layer of the CaloParticles", 2 *
layers, 0., (
float)2 *
layers);
278 ibook.
book1D(
"Number of Layers",
"Number of layers of the CaloParticles", 2 *
layers, 0., (
float)2 *
layers);
280 "First Layer (rec-matched hit)",
"First layer of the CaloParticles (matched)", 2 *
layers, 0., (
float)2 *
layers);
282 "Last Layer (rec-matched hit)",
"Last layer of the CaloParticles (matched)", 2 *
layers, 0., (
float)2 *
layers);
284 ibook.
book1D(
"Number of Layers (rec-matched hit)",
285 "Number of layers of the CaloParticles (matched)",
294 std::vector<int> thicknesses) {
296 for (
unsigned ilayer = 0; ilayer < 2 *
layers; ++ilayer) {
298 while (istr1.size() < 2) {
299 istr1.insert(0,
"0");
309 histograms.h_simclusternum_perlayer[ilayer] = ibook.
book1D(
"totsimclusternum_layer_" + istr1,
310 "total number of SimClusters for layer " + istr2,
317 for (std::vector<int>::iterator
it = thicknesses.begin();
it != thicknesses.end(); ++
it) {
319 histograms.h_simclusternum_perthick[(*it)] = ibook.
book1D(
"totsimclusternum_thick_" + istr,
320 "total number of simclusters for thickness " + istr,
329 ibook.
book1D(
"mixedhitssimcluster_zminus",
330 "N of simclusters that contain hits of more than one kind in z-",
336 ibook.
book1D(
"mixedhitssimcluster_zplus",
337 "N of simclusters that contain hits of more than one kind in z+",
346 std::vector<int> thicknesses) {
347 std::unordered_map<int, dqm::reco::MonitorElement*> denom_layercl_in_simcl_eta_perlayer;
348 denom_layercl_in_simcl_eta_perlayer.clear();
349 std::unordered_map<int, dqm::reco::MonitorElement*> denom_layercl_in_simcl_phi_perlayer;
350 denom_layercl_in_simcl_phi_perlayer.clear();
351 std::unordered_map<int, dqm::reco::MonitorElement*> score_layercl2simcluster_perlayer;
352 score_layercl2simcluster_perlayer.clear();
353 std::unordered_map<int, dqm::reco::MonitorElement*> sharedenergy_layercl2simcluster_perlayer;
354 sharedenergy_layercl2simcluster_perlayer.clear();
355 std::unordered_map<int, dqm::reco::MonitorElement*> energy_vs_score_layercl2simcluster_perlayer;
356 energy_vs_score_layercl2simcluster_perlayer.clear();
357 std::unordered_map<int, dqm::reco::MonitorElement*> num_layercl_in_simcl_eta_perlayer;
358 num_layercl_in_simcl_eta_perlayer.clear();
359 std::unordered_map<int, dqm::reco::MonitorElement*> num_layercl_in_simcl_phi_perlayer;
360 num_layercl_in_simcl_phi_perlayer.clear();
361 std::unordered_map<int, dqm::reco::MonitorElement*> numMerge_layercl_in_simcl_eta_perlayer;
362 numMerge_layercl_in_simcl_eta_perlayer.clear();
363 std::unordered_map<int, dqm::reco::MonitorElement*> numMerge_layercl_in_simcl_phi_perlayer;
364 numMerge_layercl_in_simcl_phi_perlayer.clear();
365 std::unordered_map<int, dqm::reco::MonitorElement*> sharedenergy_layercl2simcluster_vs_eta_perlayer;
366 sharedenergy_layercl2simcluster_vs_eta_perlayer.clear();
367 std::unordered_map<int, dqm::reco::MonitorElement*> sharedenergy_layercl2simcluster_vs_phi_perlayer;
368 sharedenergy_layercl2simcluster_vs_phi_perlayer.clear();
369 std::unordered_map<int, dqm::reco::MonitorElement*> denom_simcluster_eta_perlayer;
370 denom_simcluster_eta_perlayer.clear();
371 std::unordered_map<int, dqm::reco::MonitorElement*> denom_simcluster_phi_perlayer;
372 denom_simcluster_phi_perlayer.clear();
373 std::unordered_map<int, dqm::reco::MonitorElement*> score_simcluster2layercl_perlayer;
374 score_simcluster2layercl_perlayer.clear();
375 std::unordered_map<int, dqm::reco::MonitorElement*> sharedenergy_simcluster2layercl_perlayer;
376 sharedenergy_simcluster2layercl_perlayer.clear();
377 std::unordered_map<int, dqm::reco::MonitorElement*> energy_vs_score_simcluster2layercl_perlayer;
378 energy_vs_score_simcluster2layercl_perlayer.clear();
379 std::unordered_map<int, dqm::reco::MonitorElement*> num_simcluster_eta_perlayer;
380 num_simcluster_eta_perlayer.clear();
381 std::unordered_map<int, dqm::reco::MonitorElement*> num_simcluster_phi_perlayer;
382 num_simcluster_phi_perlayer.clear();
383 std::unordered_map<int, dqm::reco::MonitorElement*> numDup_simcluster_eta_perlayer;
384 numDup_simcluster_eta_perlayer.clear();
385 std::unordered_map<int, dqm::reco::MonitorElement*> numDup_simcluster_phi_perlayer;
386 numDup_simcluster_phi_perlayer.clear();
387 std::unordered_map<int, dqm::reco::MonitorElement*> sharedenergy_simcluster2layercl_vs_eta_perlayer;
388 sharedenergy_simcluster2layercl_vs_eta_perlayer.clear();
389 std::unordered_map<int, dqm::reco::MonitorElement*> sharedenergy_simcluster2layercl_vs_phi_perlayer;
390 sharedenergy_simcluster2layercl_vs_phi_perlayer.clear();
393 for (
unsigned ilayer = 0; ilayer < 2 *
layers; ++ilayer) {
395 while (istr1.size() < 2) {
396 istr1.insert(0,
"0");
407 denom_layercl_in_simcl_eta_perlayer[ilayer] =
408 ibook.
book1D(
"Denom_LayerCluster_in_SimCluster_Eta_perlayer" + istr1,
409 "Denom LayerCluster in SimCluster Eta per Layer Cluster for layer " + istr2,
414 denom_layercl_in_simcl_phi_perlayer[ilayer] =
415 ibook.
book1D(
"Denom_LayerCluster_in_SimCluster_Phi_perlayer" + istr1,
416 "Denom LayerCluster in SimCluster Phi per Layer Cluster for layer " + istr2,
421 score_layercl2simcluster_perlayer[ilayer] = ibook.
book1D(
"Score_layercl2simcluster_perlayer" + istr1,
422 "Score of Layer Cluster per SimCluster for layer " + istr2,
427 score_simcluster2layercl_perlayer[ilayer] = ibook.
book1D(
"Score_simcluster2layercl_perlayer" + istr1,
428 "Score of SimCluster per Layer Cluster for layer " + istr2,
433 energy_vs_score_simcluster2layercl_perlayer[ilayer] =
434 ibook.
book2D(
"Energy_vs_Score_simcluster2layer_perlayer" + istr1,
435 "Energy vs Score of SimCluster per Layer Cluster for layer " + istr2,
443 energy_vs_score_layercl2simcluster_perlayer[ilayer] =
444 ibook.
book2D(
"Energy_vs_Score_layer2simcluster_perlayer" + istr1,
445 "Energy vs Score of Layer Cluster per SimCluster for layer " + istr2,
453 sharedenergy_simcluster2layercl_perlayer[ilayer] =
454 ibook.
book1D(
"SharedEnergy_simcluster2layercl_perlayer" + istr1,
455 "Shared Energy of SimCluster per Layer Cluster for layer " + istr2,
460 sharedenergy_simcluster2layercl_vs_eta_perlayer[ilayer] =
461 ibook.
bookProfile(
"SharedEnergy_simcluster2layercl_vs_eta_perlayer" + istr1,
462 "Shared Energy of SimCluster vs #eta per best Layer Cluster for layer " + istr2,
469 sharedenergy_simcluster2layercl_vs_phi_perlayer[ilayer] =
470 ibook.
bookProfile(
"SharedEnergy_simcluster2layercl_vs_phi_perlayer" + istr1,
471 "Shared Energy of SimCluster vs #phi per best Layer Cluster for layer " + istr2,
478 sharedenergy_layercl2simcluster_perlayer[ilayer] =
479 ibook.
book1D(
"SharedEnergy_layercluster2simcluster_perlayer" + istr1,
480 "Shared Energy of Layer Cluster per SimCluster for layer " + istr2,
485 sharedenergy_layercl2simcluster_vs_eta_perlayer[ilayer] =
486 ibook.
bookProfile(
"SharedEnergy_layercl2simcluster_vs_eta_perlayer" + istr1,
487 "Shared Energy of LayerCluster vs #eta per best SimCluster for layer " + istr2,
494 sharedenergy_layercl2simcluster_vs_phi_perlayer[ilayer] =
495 ibook.
bookProfile(
"SharedEnergy_layercl2simcluster_vs_phi_perlayer" + istr1,
496 "Shared Energy of LayerCluster vs #phi per best SimCluster for layer " + istr2,
503 num_simcluster_eta_perlayer[ilayer] = ibook.
book1D(
"Num_SimCluster_Eta_perlayer" + istr1,
504 "Num SimCluster Eta per Layer Cluster for layer " + istr2,
509 numDup_simcluster_eta_perlayer[ilayer] =
510 ibook.
book1D(
"NumDup_SimCluster_Eta_perlayer" + istr1,
511 "Num Duplicate SimCluster Eta per Layer Cluster for layer " + istr2,
516 denom_simcluster_eta_perlayer[ilayer] = ibook.
book1D(
"Denom_SimCluster_Eta_perlayer" + istr1,
517 "Denom SimCluster Eta per Layer Cluster for layer " + istr2,
522 num_simcluster_phi_perlayer[ilayer] = ibook.
book1D(
"Num_SimCluster_Phi_perlayer" + istr1,
523 "Num SimCluster Phi per Layer Cluster for layer " + istr2,
528 numDup_simcluster_phi_perlayer[ilayer] =
529 ibook.
book1D(
"NumDup_SimCluster_Phi_perlayer" + istr1,
530 "Num Duplicate SimCluster Phi per Layer Cluster for layer " + istr2,
535 denom_simcluster_phi_perlayer[ilayer] = ibook.
book1D(
"Denom_SimCluster_Phi_perlayer" + istr1,
536 "Denom SimCluster Phi per Layer Cluster for layer " + istr2,
541 num_layercl_in_simcl_eta_perlayer[ilayer] =
542 ibook.
book1D(
"Num_LayerCluster_in_SimCluster_Eta_perlayer" + istr1,
543 "Num LayerCluster Eta per Layer Cluster in SimCluster for layer " + istr2,
548 numMerge_layercl_in_simcl_eta_perlayer[ilayer] =
549 ibook.
book1D(
"NumMerge_LayerCluster_in_SimCluster_Eta_perlayer" + istr1,
550 "Num Merge LayerCluster Eta per Layer Cluster in SimCluster for layer " + istr2,
555 num_layercl_in_simcl_phi_perlayer[ilayer] =
556 ibook.
book1D(
"Num_LayerCluster_in_SimCluster_Phi_perlayer" + istr1,
557 "Num LayerCluster Phi per Layer Cluster in SimCluster for layer " + istr2,
562 numMerge_layercl_in_simcl_phi_perlayer[ilayer] =
563 ibook.
book1D(
"NumMerge_LayerCluster_in_SimCluster_Phi_perlayer" + istr1,
564 "Num Merge LayerCluster Phi per Layer Cluster in SimCluster for layer " + istr2,
571 histograms.h_denom_layercl_in_simcl_eta_perlayer.push_back(
std::move(denom_layercl_in_simcl_eta_perlayer));
572 histograms.h_denom_layercl_in_simcl_phi_perlayer.push_back(
std::move(denom_layercl_in_simcl_phi_perlayer));
573 histograms.h_score_layercl2simcluster_perlayer.push_back(
std::move(score_layercl2simcluster_perlayer));
574 histograms.h_sharedenergy_layercl2simcluster_perlayer.push_back(
std::move(sharedenergy_layercl2simcluster_perlayer));
575 histograms.h_energy_vs_score_layercl2simcluster_perlayer.push_back(
576 std::move(energy_vs_score_layercl2simcluster_perlayer));
577 histograms.h_num_layercl_in_simcl_eta_perlayer.push_back(
std::move(num_layercl_in_simcl_eta_perlayer));
578 histograms.h_num_layercl_in_simcl_phi_perlayer.push_back(
std::move(num_layercl_in_simcl_phi_perlayer));
579 histograms.h_numMerge_layercl_in_simcl_eta_perlayer.push_back(
std::move(numMerge_layercl_in_simcl_eta_perlayer));
580 histograms.h_numMerge_layercl_in_simcl_phi_perlayer.push_back(
std::move(numMerge_layercl_in_simcl_phi_perlayer));
581 histograms.h_sharedenergy_layercl2simcluster_vs_eta_perlayer.push_back(
582 std::move(sharedenergy_layercl2simcluster_vs_eta_perlayer));
583 histograms.h_sharedenergy_layercl2simcluster_vs_phi_perlayer.push_back(
584 std::move(sharedenergy_layercl2simcluster_vs_phi_perlayer));
585 histograms.h_denom_simcluster_eta_perlayer.push_back(
std::move(denom_simcluster_eta_perlayer));
586 histograms.h_denom_simcluster_phi_perlayer.push_back(
std::move(denom_simcluster_phi_perlayer));
587 histograms.h_score_simcluster2layercl_perlayer.push_back(
std::move(score_simcluster2layercl_perlayer));
588 histograms.h_sharedenergy_simcluster2layercl_perlayer.push_back(
std::move(sharedenergy_simcluster2layercl_perlayer));
589 histograms.h_energy_vs_score_simcluster2layercl_perlayer.push_back(
590 std::move(energy_vs_score_simcluster2layercl_perlayer));
591 histograms.h_num_simcluster_eta_perlayer.push_back(
std::move(num_simcluster_eta_perlayer));
592 histograms.h_num_simcluster_phi_perlayer.push_back(
std::move(num_simcluster_phi_perlayer));
593 histograms.h_numDup_simcluster_eta_perlayer.push_back(
std::move(numDup_simcluster_eta_perlayer));
594 histograms.h_numDup_simcluster_phi_perlayer.push_back(
std::move(numDup_simcluster_phi_perlayer));
595 histograms.h_sharedenergy_simcluster2layercl_vs_eta_perlayer.push_back(
596 std::move(sharedenergy_simcluster2layercl_vs_eta_perlayer));
597 histograms.h_sharedenergy_simcluster2layercl_vs_phi_perlayer.push_back(
598 std::move(sharedenergy_simcluster2layercl_vs_phi_perlayer));
603 std::vector<int> thicknesses,
611 histograms.h_mixedhitscluster_zminus.push_back(
612 ibook.
book1D(
"mixedhitscluster_zminus",
613 "N of reco clusters that contain hits of more than one kind in z-",
618 histograms.h_mixedhitscluster_zplus.push_back(
619 ibook.
book1D(
"mixedhitscluster_zplus",
620 "N of reco clusters that contain hits of more than one kind in z+",
627 histograms.h_energyclustered_zminus.push_back(
628 ibook.
book1D(
"energyclustered_zminus",
629 "percent of total energy clustered by all layer clusters over CaloParticless energy in z-",
635 ibook.
book1D(
"energyclustered_zplus",
636 "percent of total energy clustered by all layer clusters over CaloParticless energy in z+",
643 std::string subpathtomat = pathtomatbudfile.substr(pathtomatbudfile.find(
"Validation"));
644 histograms.h_longdepthbarycentre_zminus.push_back(
645 ibook.
book1D(
"longdepthbarycentre_zminus",
646 "The longitudinal depth barycentre in z- for " + subpathtomat,
651 histograms.h_longdepthbarycentre_zplus.push_back(
652 ibook.
book1D(
"longdepthbarycentre_zplus",
653 "The longitudinal depth barycentre in z+ for " + subpathtomat,
659 for (
unsigned ilayer = 0; ilayer < 2 *
layers; ++ilayer) {
661 while (istr1.size() < 2) {
662 istr1.insert(0,
"0");
672 histograms.h_clusternum_perlayer[ilayer] = ibook.
book1D(
"totclusternum_layer_" + istr1,
673 "total number of layer clusters for layer " + istr2,
678 "energyclustered_perlayer" + istr1,
679 "percent of total energy clustered by layer clusters over CaloParticless energy for layer " + istr2,
686 for (std::vector<int>::iterator
it = thicknesses.begin();
it != thicknesses.end(); ++
it) {
688 histograms.h_clusternum_perthick[(*it)] = ibook.
book1D(
"totclusternum_thick_" + istr,
689 "total number of layer clusters for thickness " + istr,
701 for (
unsigned ilayer = 0; ilayer < 2 *
layers; ++ilayer) {
703 while (istr1.size() < 2) {
704 istr1.insert(0,
"0");
714 histograms.h_score_layercl2caloparticle_perlayer[ilayer] =
715 ibook.
book1D(
"Score_layercl2caloparticle_perlayer" + istr1,
716 "Score of Layer Cluster per CaloParticle for layer " + istr2,
720 histograms.h_score_caloparticle2layercl_perlayer[ilayer] =
721 ibook.
book1D(
"Score_caloparticle2layercl_perlayer" + istr1,
722 "Score of CaloParticle per Layer Cluster for layer " + istr2,
726 histograms.h_energy_vs_score_caloparticle2layercl_perlayer[ilayer] =
727 ibook.
book2D(
"Energy_vs_Score_caloparticle2layer_perlayer" + istr1,
728 "Energy vs Score of CaloParticle per Layer Cluster for layer " + istr2,
735 histograms.h_energy_vs_score_layercl2caloparticle_perlayer[ilayer] =
736 ibook.
book2D(
"Energy_vs_Score_layer2caloparticle_perlayer" + istr1,
737 "Energy vs Score of Layer Cluster per CaloParticle Layer for layer " + istr2,
744 histograms.h_sharedenergy_caloparticle2layercl_perlayer[ilayer] =
745 ibook.
book1D(
"SharedEnergy_caloparticle2layercl_perlayer" + istr1,
746 "Shared Energy of CaloParticle per Layer Cluster for layer " + istr2,
750 histograms.h_sharedenergy_caloparticle2layercl_vs_eta_perlayer[ilayer] =
751 ibook.
bookProfile(
"SharedEnergy_caloparticle2layercl_vs_eta_perlayer" + istr1,
752 "Shared Energy of CaloParticle vs #eta per best Layer Cluster for layer " + istr2,
758 histograms.h_sharedenergy_caloparticle2layercl_vs_phi_perlayer[ilayer] =
759 ibook.
bookProfile(
"SharedEnergy_caloparticle2layercl_vs_phi_perlayer" + istr1,
760 "Shared Energy of CaloParticle vs #phi per best Layer Cluster for layer " + istr2,
766 histograms.h_sharedenergy_layercl2caloparticle_perlayer[ilayer] =
767 ibook.
book1D(
"SharedEnergy_layercluster2caloparticle_perlayer" + istr1,
768 "Shared Energy of Layer Cluster per Layer Calo Particle for layer " + istr2,
772 histograms.h_sharedenergy_layercl2caloparticle_vs_eta_perlayer[ilayer] =
773 ibook.
bookProfile(
"SharedEnergy_layercl2caloparticle_vs_eta_perlayer" + istr1,
774 "Shared Energy of LayerCluster vs #eta per best Calo Particle for layer " + istr2,
780 histograms.h_sharedenergy_layercl2caloparticle_vs_phi_perlayer[ilayer] =
781 ibook.
bookProfile(
"SharedEnergy_layercl2caloparticle_vs_phi_perlayer" + istr1,
782 "Shared Energy of LayerCluster vs #phi per best Calo Particle for layer " + istr2,
788 histograms.h_num_caloparticle_eta_perlayer[ilayer] =
789 ibook.
book1D(
"Num_CaloParticle_Eta_perlayer" + istr1,
790 "Num CaloParticle Eta per Layer Cluster for layer " + istr2,
794 histograms.h_numDup_caloparticle_eta_perlayer[ilayer] =
795 ibook.
book1D(
"NumDup_CaloParticle_Eta_perlayer" + istr1,
796 "Num Duplicate CaloParticle Eta per Layer Cluster for layer " + istr2,
800 histograms.h_denom_caloparticle_eta_perlayer[ilayer] =
801 ibook.
book1D(
"Denom_CaloParticle_Eta_perlayer" + istr1,
802 "Denom CaloParticle Eta per Layer Cluster for layer " + istr2,
806 histograms.h_num_caloparticle_phi_perlayer[ilayer] =
807 ibook.
book1D(
"Num_CaloParticle_Phi_perlayer" + istr1,
808 "Num CaloParticle Phi per Layer Cluster for layer " + istr2,
812 histograms.h_numDup_caloparticle_phi_perlayer[ilayer] =
813 ibook.
book1D(
"NumDup_CaloParticle_Phi_perlayer" + istr1,
814 "Num Duplicate CaloParticle Phi per Layer Cluster for layer " + istr2,
818 histograms.h_denom_caloparticle_phi_perlayer[ilayer] =
819 ibook.
book1D(
"Denom_CaloParticle_Phi_perlayer" + istr1,
820 "Denom CaloParticle Phi per Layer Cluster for layer " + istr2,
824 histograms.h_num_layercl_eta_perlayer[ilayer] =
825 ibook.
book1D(
"Num_LayerCluster_Eta_perlayer" + istr1,
826 "Num LayerCluster Eta per Layer Cluster for layer " + istr2,
830 histograms.h_numMerge_layercl_eta_perlayer[ilayer] =
831 ibook.
book1D(
"NumMerge_LayerCluster_Eta_perlayer" + istr1,
832 "Num Merge LayerCluster Eta per Layer Cluster for layer " + istr2,
836 histograms.h_denom_layercl_eta_perlayer[ilayer] =
837 ibook.
book1D(
"Denom_LayerCluster_Eta_perlayer" + istr1,
838 "Denom LayerCluster Eta per Layer Cluster for layer " + istr2,
842 histograms.h_num_layercl_phi_perlayer[ilayer] =
843 ibook.
book1D(
"Num_LayerCluster_Phi_perlayer" + istr1,
844 "Num LayerCluster Phi per Layer Cluster for layer " + istr2,
848 histograms.h_numMerge_layercl_phi_perlayer[ilayer] =
849 ibook.
book1D(
"NumMerge_LayerCluster_Phi_perlayer" + istr1,
850 "Num Merge LayerCluster Phi per Layer Cluster for layer " + istr2,
854 histograms.h_denom_layercl_phi_perlayer[ilayer] =
855 ibook.
book1D(
"Denom_LayerCluster_Phi_perlayer" + istr1,
856 "Denom LayerCluster Phi per Layer Cluster for layer " + istr2,
867 std::vector<int> thicknesses) {
869 for (
unsigned ilayer = 0; ilayer < 2 *
layers; ++ilayer) {
871 while (istr1.size() < 2) {
872 istr1.insert(0,
"0");
882 histograms.h_cellAssociation_perlayer[ilayer] =
883 ibook.
book1D(
"cellAssociation_perlayer" + istr1,
"Cell Association for layer " + istr2, 5, -4., 1.);
884 histograms.h_cellAssociation_perlayer[ilayer]->setBinLabel(2,
"TN(purity)");
885 histograms.h_cellAssociation_perlayer[ilayer]->setBinLabel(3,
"FN(ineff.)");
886 histograms.h_cellAssociation_perlayer[ilayer]->setBinLabel(4,
"FP(fake)");
887 histograms.h_cellAssociation_perlayer[ilayer]->setBinLabel(5,
"TP(eff.)");
890 for (std::vector<int>::iterator
it = thicknesses.begin();
it != thicknesses.end(); ++
it) {
892 histograms.h_cellsenedens_perthick[(*it)] = ibook.
book1D(
"cellsenedens_thick_" + istr,
893 "energy density of cluster cells for thickness " + istr,
900 for (std::vector<int>::iterator
it = thicknesses.begin();
it != thicknesses.end(); ++
it) {
901 for (
unsigned ilayer = 0; ilayer < 2 *
layers; ++ilayer) {
904 while (istr2.size() < 2)
905 istr2.insert(0,
"0");
906 auto istr = istr1 +
"_" + istr2;
916 histograms.h_cellsnum_perthickperlayer[istr] =
917 ibook.
book1D(
"cellsnum_perthick_perlayer_" + istr,
918 "total number of cells for layer " + istr3 +
" for thickness " + istr1,
923 histograms.h_distancetoseedcell_perthickperlayer[istr] =
924 ibook.
book1D(
"distancetoseedcell_perthickperlayer_" + istr,
925 "distance of cluster cells to seed cell for layer " + istr3 +
" for thickness " + istr1,
930 histograms.h_distancetoseedcell_perthickperlayer_eneweighted[istr] = ibook.
book1D(
931 "distancetoseedcell_perthickperlayer_eneweighted_" + istr,
932 "energy weighted distance of cluster cells to seed cell for layer " + istr3 +
" for thickness " + istr1,
937 histograms.h_distancetomaxcell_perthickperlayer[istr] =
938 ibook.
book1D(
"distancetomaxcell_perthickperlayer_" + istr,
939 "distance of cluster cells to max cell for layer " + istr3 +
" for thickness " + istr1,
944 histograms.h_distancetomaxcell_perthickperlayer_eneweighted[istr] = ibook.
book1D(
945 "distancetomaxcell_perthickperlayer_eneweighted_" + istr,
946 "energy weighted distance of cluster cells to max cell for layer " + istr3 +
" for thickness " + istr1,
951 histograms.h_distancebetseedandmaxcell_perthickperlayer[istr] =
952 ibook.
book1D(
"distancebetseedandmaxcell_perthickperlayer_" + istr,
953 "distance of seed cell to max cell for layer " + istr3 +
" for thickness " + istr1,
958 histograms.h_distancebetseedandmaxcellvsclusterenergy_perthickperlayer[istr] = ibook.
book2D(
959 "distancebetseedandmaxcellvsclusterenergy_perthickperlayer_" + istr,
960 "distance of seed cell to max cell vs cluster energy for layer " + istr3 +
" for thickness " + istr1,
973 std::unordered_map<int, dqm::reco::MonitorElement*> clusternum_in_trackster_perlayer;
974 clusternum_in_trackster_perlayer.clear();
976 for (
unsigned ilayer = 0; ilayer < 2 *
layers; ++ilayer) {
978 while (istr1.size() < 2) {
979 istr1.insert(0,
"0");
990 clusternum_in_trackster_perlayer[ilayer] = ibook.
book1D(
"clusternum_in_trackster_perlayer" + istr1,
991 "Number of layer clusters in Trackster for layer " + istr2,
997 histograms.h_clusternum_in_trackster_perlayer.push_back(
std::move(clusternum_in_trackster_perlayer));
1005 histograms.h_nonconttracksternum.push_back(ibook.
book1D(
"nonconttracksternum",
1006 "number of Tracksters without 3 contiguous layers",
1011 histograms.h_clusternum_in_trackster.push_back(
1012 ibook.
book1D(
"clusternum_in_trackster",
1013 "total number of layer clusters in Trackster;# of LayerClusters",
1019 "clusternum_in_trackster_vs_layer",
1020 "Profile of 2d layer clusters in Trackster vs layer number;layer number;<2D LayerClusters in Trackster>",
1027 histograms.h_multiplicityOfLCinTST.push_back(
1028 ibook.
book2D(
"multiplicityOfLCinTST",
1029 "Multiplicity vs Layer cluster size in Tracksters;LayerCluster multiplicity in Tracksters;Cluster " 1038 histograms.h_multiplicity_numberOfEventsHistogram.push_back(ibook.
book1D(
"multiplicity_numberOfEventsHistogram",
1039 "multiplicity numberOfEventsHistogram",
1044 histograms.h_multiplicity_zminus_numberOfEventsHistogram.push_back(
1045 ibook.
book1D(
"multiplicity_zminus_numberOfEventsHistogram",
1046 "multiplicity numberOfEventsHistogram in z-",
1051 histograms.h_multiplicity_zplus_numberOfEventsHistogram.push_back(
1052 ibook.
book1D(
"multiplicity_zplus_numberOfEventsHistogram",
1053 "multiplicity numberOfEventsHistogram in z+",
1058 histograms.h_multiplicityOfLCinTST_vs_layercluster_zminus.push_back(
1059 ibook.
book2D(
"multiplicityOfLCinTST_vs_layercluster_zminus",
1060 "Multiplicity vs Layer number in z-;LayerCluster multiplicity in Tracksters;layer number",
1068 histograms.h_multiplicityOfLCinTST_vs_layercluster_zplus.push_back(
1069 ibook.
book2D(
"multiplicityOfLCinTST_vs_layercluster_zplus",
1070 "Multiplicity vs Layer number in z+;LayerCluster multiplicity in Tracksters;layer number",
1078 histograms.h_multiplicityOfLCinTST_vs_layerclusterenergy.push_back(
1079 ibook.
book2D(
"multiplicityOfLCinTST_vs_layerclusterenergy",
1080 "Multiplicity vs Layer cluster energy;LayerCluster multiplicity in Tracksters;Cluster energy [GeV]",
1103 "trackster_firstlayer",
"First layer of the Trackster;Trackster First Layer", 2 *
layers, 0., (
float)2 *
layers));
1105 "trackster_lastlayer",
"Last layer of the Trackster;Trackster Last Layer", 2 *
layers, 0., (
float)2 *
layers));
1107 ibook.
book1D(
"trackster_layersnum",
1108 "Number of layers of the Trackster;Trackster Number of Layers",
1117 const string rtos =
";score Reco-to-Sim";
1118 const string stor =
";score Sim-to-Reco";
1119 const string shREnFr =
";shared Reco energy fraction";
1120 const string shSEnFr =
";shared Sim energy fraction";
1122 histograms.h_score_trackster2caloparticle[valType].push_back(
1123 ibook.
book1D(
"Score_trackster2" +
ref_[valType],
1124 "Score of Trackster per " +
refText_[valType] + rtos,
1128 histograms.h_score_trackster2bestCaloparticle[valType].push_back(
1129 ibook.
book1D(
"ScoreFake_trackster2" +
ref_[valType],
1130 "Score of Trackster per best " +
refText_[valType] + rtos,
1134 histograms.h_score_trackster2bestCaloparticle2[valType].push_back(
1135 ibook.
book1D(
"ScoreMerge_trackster2" +
ref_[valType],
1136 "Score of Trackster per 2^{nd} best " +
refText_[valType] + rtos,
1140 histograms.h_score_caloparticle2trackster[valType].push_back(
1141 ibook.
book1D(
"Score_" +
ref_[valType] +
"2trackster",
1142 "Score of " +
refText_[valType] +
" per Trackster" + stor,
1146 histograms.h_scorePur_caloparticle2trackster[valType].push_back(
1147 ibook.
book1D(
"ScorePur_" +
ref_[valType] +
"2trackster",
1148 "Score of " +
refText_[valType] +
" per best Trackster" + stor,
1152 histograms.h_scoreDupl_caloparticle2trackster[valType].push_back(
1153 ibook.
book1D(
"ScoreDupl_" +
ref_[valType] +
"2trackster",
1154 "Score of " +
refText_[valType] +
" per 2^{nd} best Trackster" + stor,
1158 histograms.h_energy_vs_score_trackster2caloparticle[valType].push_back(
1159 ibook.
book2D(
"Energy_vs_Score_trackster2" +
ref_[valType],
1160 "Energy vs Score of Trackster per " +
refText_[valType] + rtos + shREnFr,
1167 histograms.h_energy_vs_score_trackster2bestCaloparticle[valType].push_back(
1168 ibook.
book2D(
"Energy_vs_Score_trackster2best" +
ref_[valType],
1169 "Energy vs Score of Trackster per best " +
refText_[valType] + rtos + shREnFr,
1176 histograms.h_energy_vs_score_trackster2bestCaloparticle2[valType].push_back(
1177 ibook.
book2D(
"Energy_vs_Score_trackster2secBest" +
ref_[valType],
1178 "Energy vs Score of Trackster per 2^{nd} best " +
refText_[valType] + rtos + shREnFr,
1185 histograms.h_energy_vs_score_caloparticle2trackster[valType].push_back(
1186 ibook.
book2D(
"Energy_vs_Score_" +
ref_[valType] +
"2Trackster",
1187 "Energy vs Score of " +
refText_[valType] +
" per Trackster" + stor + shSEnFr,
1194 histograms.h_energy_vs_score_caloparticle2bestTrackster[valType].push_back(
1195 ibook.
book2D(
"Energy_vs_Score_" +
ref_[valType] +
"2bestTrackster",
1196 "Energy vs Score of " +
refText_[valType] +
" per best Trackster" + stor + shSEnFr,
1203 histograms.h_energy_vs_score_caloparticle2bestTrackster2[valType].push_back(
1204 ibook.
book2D(
"Energy_vs_Score_" +
ref_[valType] +
"2secBestTrackster",
1205 "Energy vs Score of " +
refText_[valType] +
" per 2^{nd} best Trackster" + stor + shSEnFr,
1218 "Num Merge Trackster Eta per Trackster;#eta",
1223 "Denom Trackster Eta per Trackster;#eta",
1231 "Num Merge Trackster Phi per Trackster;#phi",
1236 "Denom Trackster Phi per Trackster;#phi",
1242 "Num Trackster Energy per Trackster;energy [GeV]",
1246 histograms.h_numMerge_trackster_en[valType].push_back(
1248 "Num Merge Trackster Energy per Trackster;energy [GeV]",
1253 "Denom Trackster Energy per Trackster;energy [GeV]",
1259 "Num Trackster p_{T} per Trackster;p_{T} [GeV]",
1263 histograms.h_numMerge_trackster_pt[valType].push_back(
1265 "Num Merge Trackster p_{T} per Trackster;p_{T} [GeV]",
1270 "Denom Trackster p_{T} per Trackster;p_{T} [GeV]",
1275 histograms.h_sharedenergy_trackster2caloparticle[valType].push_back(
1276 ibook.
book1D(
"SharedEnergy_trackster2" +
ref_[valType],
1277 "Shared Energy of Trackster per " +
refText_[valType] + shREnFr,
1281 histograms.h_sharedenergy_trackster2bestCaloparticle[valType].push_back(
1282 ibook.
book1D(
"SharedEnergy_trackster2" +
ref_[valType] +
"_assoc",
1283 "Shared Energy of Trackster per best " +
refText_[valType] + shREnFr,
1288 "SharedEnergy_trackster2" +
ref_[valType] +
"_assoc_vs_eta",
1289 "Shared Energy of Trackster vs #eta per best " +
refText_[valType] +
";Trackster #eta" + shREnFr,
1296 "SharedEnergy_trackster2" +
ref_[valType] +
"_assoc_vs_phi",
1297 "Shared Energy of Trackster vs #phi per best " +
refText_[valType] +
";Trackster #phi" + shREnFr,
1303 histograms.h_sharedenergy_trackster2bestCaloparticle2[valType].push_back(
1304 ibook.
book1D(
"SharedEnergy_trackster2" +
ref_[valType] +
"_assoc2",
1305 "Shared Energy of Trackster per 2^{nd} best " +
refText_[valType] + shREnFr,
1310 histograms.h_sharedenergy_caloparticle2trackster[valType].push_back(
1311 ibook.
book1D(
"SharedEnergy_" +
ref_[valType] +
"2trackster",
1312 "Shared Energy of " +
refText_[valType] +
" per Trackster" + shSEnFr,
1316 histograms.h_sharedenergy_caloparticle2trackster_assoc[valType].push_back(
1317 ibook.
book1D(
"SharedEnergy_" +
ref_[valType] +
"2trackster_assoc",
1318 "Shared Energy of " +
refText_[valType] +
" per best Trackster" + shSEnFr,
1323 "SharedEnergy_" +
ref_[valType] +
"2trackster_assoc_vs_eta",
1324 "Shared Energy of " +
refText_[valType] +
" vs #eta per best Trackster;" +
refText_[valType] +
" #eta" + shSEnFr,
1331 "SharedEnergy_" +
ref_[valType] +
"2trackster_assoc_vs_phi",
1332 "Shared Energy of " +
refText_[valType] +
" vs #phi per best Trackster;" +
refText_[valType] +
" #phi" + shSEnFr,
1338 histograms.h_sharedenergy_caloparticle2trackster_assoc2[valType].push_back(
1339 ibook.
book1D(
"SharedEnergy_" +
ref_[valType] +
"2trackster_assoc2",
1340 "Shared Energy of " +
refText_[valType] +
" per 2^{nd} best Trackster;" + shSEnFr,
1346 histograms.h_numEff_caloparticle_eta[valType].push_back(
1347 ibook.
book1D(
"NumEff_" +
ref_[valType] +
"_Eta",
1348 "Num Efficiency " +
refText_[valType] +
" Eta per Trackster;#eta",
1352 histograms.h_num_caloparticle_eta[valType].push_back(
1353 ibook.
book1D(
"Num_" +
ref_[valType] +
"_Eta",
1354 "Num Purity " +
refText_[valType] +
" Eta per Trackster;#eta",
1360 histograms.h_denom_caloparticle_eta[valType].push_back(
1361 ibook.
book1D(
"Denom_" +
ref_[valType] +
"_Eta",
1362 "Denom " +
refText_[valType] +
" Eta per Trackster;#eta",
1367 histograms.h_numEff_caloparticle_phi[valType].push_back(
1368 ibook.
book1D(
"NumEff_" +
ref_[valType] +
"_Phi",
1369 "Num Efficiency " +
refText_[valType] +
" Phi per Trackster;#phi",
1373 histograms.h_num_caloparticle_phi[valType].push_back(
1374 ibook.
book1D(
"Num_" +
ref_[valType] +
"_Phi",
1375 "Num Purity " +
refText_[valType] +
" Phi per Trackster;#phi",
1381 histograms.h_denom_caloparticle_phi[valType].push_back(
1382 ibook.
book1D(
"Denom_" +
ref_[valType] +
"_Phi",
1383 "Denom " +
refText_[valType] +
" Phi per Trackster;#phi",
1388 histograms.h_numEff_caloparticle_en[valType].push_back(
1389 ibook.
book1D(
"NumEff_" +
ref_[valType] +
"_Energy",
1390 "Num Efficiency " +
refText_[valType] +
" Energy per Trackster;energy [GeV]",
1394 histograms.h_num_caloparticle_en[valType].push_back(
1395 ibook.
book1D(
"Num_" +
ref_[valType] +
"_Energy",
1396 "Num Purity " +
refText_[valType] +
" Energy per Trackster;energy [GeV]",
1401 "Num Duplicate Trackster vs Energy;energy [GeV]",
1405 histograms.h_denom_caloparticle_en[valType].push_back(
1406 ibook.
book1D(
"Denom_" +
ref_[valType] +
"_Energy",
1407 "Denom " +
refText_[valType] +
" Energy per Trackster;energy [GeV]",
1412 histograms.h_numEff_caloparticle_pt[valType].push_back(
1413 ibook.
book1D(
"NumEff_" +
ref_[valType] +
"_Pt",
1414 "Num Efficiency " +
refText_[valType] +
" p_{T} per Trackster;p_{T} [GeV]",
1418 histograms.h_num_caloparticle_pt[valType].push_back(
1420 "Num Purity " +
refText_[valType] +
" p_{T} per Trackster;p_{T} [GeV]",
1425 "Num Duplicate Trackster vs p_{T};p_{T} [GeV]",
1429 histograms.h_denom_caloparticle_pt[valType].push_back(
1430 ibook.
book1D(
"Denom_" +
ref_[valType] +
"_Pt",
1431 "Denom " +
refText_[valType] +
" p_{T} per Trackster;p_{T} [GeV]",
1453 std::vector<SimVertex>
const& simVertices,
1455 std::unordered_map<DetId, const unsigned int>
const& hitMap,
1456 std::vector<HGCRecHit>
const&
hits)
const {
1480 int minLayerId = 999;
1483 int simHits_matched = 0;
1484 int minLayerId_matched = 999;
1485 int maxLayerId_matched = 0;
1488 std::map<int, double> totenergy_layer;
1490 float hitEnergyWeight_invSum = 0;
1491 std::vector<std::pair<DetId, float>> haf_cp;
1492 for (
const auto& sc : caloParticle.
simClusters()) {
1493 LogDebug(
"HGCalValidator") <<
" This sim cluster has " << sc->hits_and_fractions().size() <<
" simHits and " 1494 << sc->energy() <<
" energy. " << std::endl;
1495 simHits += sc->hits_and_fractions().size();
1496 for (
auto const& h_and_f : sc->hits_and_fractions()) {
1497 const auto hitDetId = h_and_f.first;
1501 int layerId_matched_min = 999;
1502 int layerId_matched_max = 0;
1503 std::unordered_map<DetId, const unsigned int>::const_iterator itcheck = hitMap.find(hitDetId);
1504 if (itcheck != hitMap.end()) {
1505 layerId_matched_min = layerId;
1506 layerId_matched_max = layerId;
1509 const auto hitEn = (
hits[itcheck->second]).
energy();
1510 hitEnergyWeight_invSum +=
pow(hitEn, 2);
1511 const auto hitFr = h_and_f.second;
1512 const auto hitEnFr = hitEn * hitFr;
1514 histograms.h_caloparticle_nHits_matched_energy.at(
pdgid)->Fill(hitEnFr);
1515 histograms.h_caloparticle_nHits_matched_energy_layer.at(
pdgid)->Fill(layerId, hitEnFr);
1517 if (totenergy_layer.find(layerId) != totenergy_layer.end()) {
1518 totenergy_layer[layerId] = totenergy_layer.at(layerId) + hitEn;
1520 totenergy_layer.emplace(layerId, hitEn);
1523 histograms.h_caloparticle_nHits_matched_energy_layer_1SimCl.at(
pdgid)->Fill(layerId, hitEnFr);
1525 auto found = std::find_if(std::begin(haf_cp),
1527 [&hitDetId](
const std::pair<DetId, float>&
v) {
return v.first == hitDetId; });
1528 if (
found != haf_cp.end())
1529 found->second += hitFr;
1531 haf_cp.emplace_back(hitDetId, hitFr);
1534 LogDebug(
"HGCalValidator") <<
" matched to RecHit NOT found !" << std::endl;
1537 minLayerId =
std::min(minLayerId, layerId);
1538 maxLayerId =
std::max(maxLayerId, layerId);
1539 minLayerId_matched =
std::min(minLayerId_matched, layerId_matched_min);
1540 maxLayerId_matched =
std::max(maxLayerId_matched, layerId_matched_max);
1542 LogDebug(
"HGCalValidator") << std::endl;
1544 if (hitEnergyWeight_invSum)
1545 hitEnergyWeight_invSum = 1 / hitEnergyWeight_invSum;
1549 histograms.h_caloparticle_layersnum.at(
pdgid)->Fill(
int(maxLayerId - minLayerId));
1551 histograms.h_caloparticle_firstlayer_matchedtoRecHit.at(
pdgid)->Fill(minLayerId_matched);
1552 histograms.h_caloparticle_lastlayer_matchedtoRecHit.at(
pdgid)->Fill(maxLayerId_matched);
1553 histograms.h_caloparticle_layersnum_matchedtoRecHit.at(
pdgid)->Fill(
int(maxLayerId_matched - minLayerId_matched));
1556 histograms.h_caloparticle_nHitsInSimClusters_matchedtoRecHit.at(
pdgid)->Fill((
float)simHits_matched);
1561 auto i = totenergy_layer.begin();
1562 double sum_energy = 0.0;
1563 while (
i != totenergy_layer.end()) {
1564 sum_energy +=
i->second;
1565 histograms.h_caloparticle_sum_energy_layer.at(
pdgid)->Fill(
i->first, sum_energy / caloParticle.
energy() * 100.);
1569 for (
auto const& haf : haf_cp) {
1570 const auto hitEn = (
hits[hitMap.find(haf.first)->second]).
energy();
1578 void HGVHistoProducerAlgo::HGVHistoProducerAlgo::fill_simCluster_histos(
const Histograms&
histograms,
1581 std::vector<int> thicknesses)
const {
1590 std::vector<int> tnscpl(1000, 0);
1593 std::map<std::string, int> tnscpthplus;
1594 tnscpthplus.clear();
1595 std::map<std::string, int> tnscpthminus;
1596 tnscpthminus.clear();
1598 for (std::vector<int>::iterator
it = thicknesses.begin();
it != thicknesses.end(); ++
it) {
1603 tnscpthplus.insert(std::pair<std::string, int>(
"mixed", 0));
1604 tnscpthminus.insert(std::pair<std::string, int>(
"mixed", 0));
1609 int nthhits120p = 0;
1610 int nthhits200p = 0;
1611 int nthhits300p = 0;
1612 int nthhitsscintp = 0;
1613 int nthhits120m = 0;
1614 int nthhits200m = 0;
1615 int nthhits300m = 0;
1616 int nthhitsscintm = 0;
1620 std::vector<int> occurenceSCinlayer(1000, 0);
1623 for (
const auto& hAndF : sc.hits_and_fractions()) {
1624 const DetId sh_detid = hAndF.first;
1630 recHitTools_->getLayerWithOffset(sh_detid) +
layers * ((recHitTools_->zside(sh_detid) + 1) >> 1) - 1;
1632 int zside = recHitTools_->zside(sh_detid);
1635 if (occurenceSCinlayer[layerid] == 0) {
1638 occurenceSCinlayer[layerid]++;
1643 thickness = recHitTools_->getSiThickness(sh_detid);
1663 <<
" You are running a geometry that contains thicknesses different than the normal ones. " 1670 if ((nthhits120p != 0 && nthhits200p != 0) || (nthhits120p != 0 && nthhits300p != 0) ||
1671 (nthhits120p != 0 && nthhitsscintp != 0) || (nthhits200p != 0 && nthhits300p != 0) ||
1672 (nthhits200p != 0 && nthhitsscintp != 0) || (nthhits300p != 0 && nthhitsscintp != 0)) {
1673 tnscpthplus[
"mixed"]++;
1674 }
else if ((nthhits120p != 0 || nthhits200p != 0 || nthhits300p != 0 || nthhitsscintp != 0)) {
1678 if ((nthhits120m != 0 && nthhits200m != 0) || (nthhits120m != 0 && nthhits300m != 0) ||
1679 (nthhits120m != 0 && nthhitsscintm != 0) || (nthhits200m != 0 && nthhits300m != 0) ||
1680 (nthhits200m != 0 && nthhitsscintm != 0) || (nthhits300m != 0 && nthhitsscintm != 0)) {
1681 tnscpthminus[
"mixed"]++;
1682 }
else if ((nthhits120m != 0 || nthhits200m != 0 || nthhits300m != 0 || nthhitsscintm != 0)) {
1689 for (
unsigned ilayer = 0; ilayer <
layers * 2; ++ilayer)
1690 if (
histograms.h_simclusternum_perlayer.count(ilayer))
1691 histograms.h_simclusternum_perlayer.at(ilayer)->Fill(tnscpl[ilayer]);
1694 for (std::vector<int>::iterator
it = thicknesses.begin();
it != thicknesses.end(); ++
it) {
1701 histograms.h_mixedhitssimcluster_zplus->Fill(tnscpthplus[
"mixed"]);
1702 histograms.h_mixedhitssimcluster_zminus->Fill(tnscpthminus[
"mixed"]);
1705 void HGVHistoProducerAlgo::HGVHistoProducerAlgo::fill_simClusterAssociation_histos(
1710 edm::Handle<std::vector<SimCluster>> simClusterHandle,
1712 std::vector<size_t>
const& sCIndices,
1713 const std::vector<float>&
mask,
1714 std::unordered_map<DetId, const unsigned int>
const& hitMap,
1718 std::vector<HGCRecHit>
const&
hits)
const {
1737 scsInLayerClusterMap,
1752 edm::Handle<std::vector<CaloParticle>> caloParticleHandle,
1753 std::vector<CaloParticle>
const& cP,
1754 std::vector<size_t>
const& cPIndices,
1755 std::vector<size_t>
const& cPSelectedIndices,
1756 std::unordered_map<DetId, const unsigned int>
const& hitMap,
1760 std::vector<HGCRecHit>
const&
hits)
const {
1761 const auto nLayerClusters =
clusters.size();
1763 std::unordered_map<DetId, std::vector<HGVHistoProducerAlgo::detIdInfoInCluster>> detIdToCaloParticleId_Map;
1764 std::unordered_map<DetId, std::vector<HGVHistoProducerAlgo::detIdInfoInCluster>> detIdToLayerClusterId_Map;
1768 for (
const auto& cpId : cPIndices) {
1769 for (
const auto& simCluster : cP[cpId].
simClusters()) {
1770 for (
const auto& it_haf : simCluster->hits_and_fractions()) {
1771 const DetId hitid = (it_haf.first);
1772 if (hitMap.find(hitid) != hitMap.end()) {
1773 if (detIdToCaloParticleId_Map.find(hitid) == detIdToCaloParticleId_Map.end()) {
1774 detIdToCaloParticleId_Map[hitid] = std::vector<HGVHistoProducerAlgo::detIdInfoInCluster>();
1775 detIdToCaloParticleId_Map[hitid].emplace_back(
1780 detIdToCaloParticleId_Map[hitid].
end(),
1783 if (findHitIt != detIdToCaloParticleId_Map[hitid].
end())
1784 findHitIt->fraction += it_haf.second;
1786 detIdToCaloParticleId_Map[hitid].emplace_back(
1794 for (
unsigned int lcId = 0; lcId < nLayerClusters; ++lcId) {
1795 const auto& hits_and_fractions =
clusters[lcId].hitsAndFractions();
1796 const auto numberOfHitsInLC = hits_and_fractions.size();
1806 std::vector<int> hitsToCaloParticleId(numberOfHitsInLC);
1807 const auto firstHitDetId = hits_and_fractions[0].first;
1812 std::unordered_map<unsigned, float> CPEnergyInLC;
1814 for (
unsigned int iHit = 0; iHit < numberOfHitsInLC; iHit++) {
1815 const DetId rh_detid = hits_and_fractions[iHit].first;
1816 const auto rhFraction = hits_and_fractions[iHit].second;
1818 std::unordered_map<DetId, const unsigned int>::const_iterator itcheck = hitMap.find(rh_detid);
1821 if (detIdToLayerClusterId_Map.find(rh_detid) == detIdToLayerClusterId_Map.end()) {
1822 detIdToLayerClusterId_Map[rh_detid] = std::vector<HGVHistoProducerAlgo::detIdInfoInCluster>();
1826 const auto& hit_find_in_CP = detIdToCaloParticleId_Map.find(rh_detid);
1834 if (rhFraction == 0.) {
1835 hitsToCaloParticleId[iHit] = -2;
1837 if (hit_find_in_CP == detIdToCaloParticleId_Map.end()) {
1838 hitsToCaloParticleId[iHit] -= 1;
1840 auto maxCPEnergyInLC = 0.f;
1842 for (
auto&
h : hit_find_in_CP->second) {
1843 const auto iCP =
h.clusterId;
1844 CPEnergyInLC[iCP] +=
h.fraction *
hit->energy();
1847 if (CPEnergyInLC[iCP] > maxCPEnergyInLC) {
1848 maxCPEnergyInLC = CPEnergyInLC[iCP];
1852 hitsToCaloParticleId[iHit] = maxCPId;
1854 histograms.h_cellAssociation_perlayer.at(lcLayerId)->Fill(
1855 hitsToCaloParticleId[iHit] > 0. ? 0. : hitsToCaloParticleId[iHit]);
1863 for (
unsigned int lcId = 0; lcId < nLayerClusters; ++lcId) {
1864 const auto firstHitDetId = (
clusters[lcId].hitsAndFractions())[0].
first;
1865 const int lcLayerId =
1871 const auto& cpsIt = cpsInLayerClusterMap.
find(lcRef);
1872 if (cpsIt == cpsInLayerClusterMap.
end())
1875 const auto lc_en =
clusters[lcId].energy();
1876 const auto& cps = cpsIt->val;
1877 if (lc_en == 0. && !cps.empty()) {
1878 for (
const auto& cpPair : cps)
1879 histograms.h_score_layercl2caloparticle_perlayer.at(lcLayerId)->Fill(cpPair.second);
1882 for (
const auto& cpPair : cps) {
1883 LogDebug(
"HGCalValidator") <<
"layerCluster Id: \t" << lcId <<
"\t CP id: \t" << cpPair.first.index()
1884 <<
"\t score \t" << cpPair.second << std::endl;
1885 histograms.h_score_layercl2caloparticle_perlayer.at(lcLayerId)->Fill(cpPair.second);
1886 auto const& cp_linked =
1887 std::find_if(std::begin(cPOnLayerMap[cpPair.first]),
1888 std::end(cPOnLayerMap[cpPair.first]),
1890 return p.first == lcRef;
1893 cPOnLayerMap[cpPair.first].
end())
1895 histograms.h_sharedenergy_layercl2caloparticle_perlayer.at(lcLayerId)->Fill(cp_linked->second.first / lc_en,
1897 histograms.h_energy_vs_score_layercl2caloparticle_perlayer.at(lcLayerId)->Fill(cpPair.second,
1898 cp_linked->second.first / lc_en);
1901 std::count_if(std::begin(cps), std::end(cps), [](
const auto&
obj) {
return obj.second <
ScoreCutLCtoCP_; });
1909 const auto& best = std::min_element(
1910 std::begin(cps), std::end(cps), [](
const auto& obj1,
const auto& obj2) {
return obj1.second < obj2.second; });
1911 const auto& best_cp_linked =
1912 std::find_if(std::begin(cPOnLayerMap[best->first]),
1913 std::end(cPOnLayerMap[best->first]),
1915 return p.first == lcRef;
1917 if (best_cp_linked ==
1918 cPOnLayerMap[best->first].
end())
1920 histograms.h_sharedenergy_layercl2caloparticle_vs_eta_perlayer.at(lcLayerId)->Fill(
1921 clusters[lcId].
eta(), best_cp_linked->second.first / lc_en);
1922 histograms.h_sharedenergy_layercl2caloparticle_vs_phi_perlayer.at(lcLayerId)->Fill(
1923 clusters[lcId].
phi(), best_cp_linked->second.first / lc_en);
1930 for (
const auto& cpId : cPSelectedIndices) {
1932 const auto& lcsIt = cPOnLayerMap.
find(cpRef);
1934 std::map<unsigned int, float> cPEnergyOnLayer;
1935 for (
unsigned int layerId = 0; layerId <
layers * 2; ++layerId)
1936 cPEnergyOnLayer[layerId] = 0;
1938 for (
const auto& simCluster : cP[cpId].
simClusters()) {
1939 for (
const auto& it_haf : simCluster->hits_and_fractions()) {
1940 const DetId hitid = (it_haf.first);
1941 const auto hitLayerId =
1943 std::unordered_map<DetId, const unsigned int>::const_iterator itcheck = hitMap.find(hitid);
1944 if (itcheck != hitMap.end()) {
1946 cPEnergyOnLayer[hitLayerId] += it_haf.second *
hit->energy();
1951 for (
unsigned int layerId = 0; layerId <
layers * 2; ++layerId) {
1952 if (!cPEnergyOnLayer[layerId])
1955 histograms.h_denom_caloparticle_eta_perlayer.at(layerId)->Fill(cP[cpId].g4Tracks()[0].momentum().
eta());
1956 histograms.h_denom_caloparticle_phi_perlayer.at(layerId)->Fill(cP[cpId].g4Tracks()[0].momentum().
phi());
1958 if (lcsIt == cPOnLayerMap.
end())
1960 const auto& lcs = lcsIt->val;
1962 auto getLCLayerId = [&](
const unsigned int lcId) {
1963 const auto firstHitDetId = (
clusters[lcId].hitsAndFractions())[0].
first;
1964 const auto lcLayerId =
recHitTools_->getLayerWithOffset(firstHitDetId) +
1969 for (
const auto& lcPair : lcs) {
1970 if (getLCLayerId(lcPair.first.index()) != layerId)
1972 histograms.h_score_caloparticle2layercl_perlayer.at(layerId)->Fill(lcPair.second.second);
1973 histograms.h_sharedenergy_caloparticle2layercl_perlayer.at(layerId)->Fill(
1974 lcPair.second.first / cPEnergyOnLayer[layerId], cPEnergyOnLayer[layerId]);
1975 histograms.h_energy_vs_score_caloparticle2layercl_perlayer.at(layerId)->Fill(
1976 lcPair.second.second, lcPair.second.first / cPEnergyOnLayer[layerId]);
1978 const auto assoc = std::count_if(std::begin(lcs), std::end(lcs), [&](
const auto&
obj) {
1979 if (getLCLayerId(
obj.first.index()) != layerId)
1985 histograms.h_num_caloparticle_eta_perlayer.at(layerId)->Fill(cP[cpId].g4Tracks()[0].momentum().
eta());
1986 histograms.h_num_caloparticle_phi_perlayer.at(layerId)->Fill(cP[cpId].g4Tracks()[0].momentum().
phi());
1988 histograms.h_numDup_caloparticle_eta_perlayer.at(layerId)->Fill(cP[cpId].g4Tracks()[0].momentum().
eta());
1989 histograms.h_numDup_caloparticle_phi_perlayer.at(layerId)->Fill(cP[cpId].g4Tracks()[0].momentum().
phi());
1991 const auto best = std::min_element(std::begin(lcs), std::end(lcs), [&](
const auto& obj1,
const auto& obj2) {
1992 if (getLCLayerId(obj1.first.index()) != layerId)
1994 else if (getLCLayerId(obj2.first.index()) == layerId)
1995 return obj1.second.second < obj2.second.second;
1999 histograms.h_sharedenergy_caloparticle2layercl_vs_eta_perlayer.at(layerId)->Fill(
2000 cP[cpId].g4Tracks()[0].momentum().
eta(), best->second.first / cPEnergyOnLayer[layerId]);
2001 histograms.h_sharedenergy_caloparticle2layercl_vs_phi_perlayer.at(layerId)->Fill(
2002 cP[cpId].g4Tracks()[0].momentum().
phi(), best->second.first / cPEnergyOnLayer[layerId]);
2013 edm::Handle<std::vector<SimCluster>> simClusterHandle,
2014 std::vector<SimCluster>
const& sC,
2015 std::vector<size_t>
const& sCIndices,
2016 const std::vector<float>&
mask,
2017 std::unordered_map<DetId, const unsigned int>
const& hitMap,
2021 std::vector<HGCRecHit>
const&
hits)
const {
2025 for (
unsigned int lcId = 0; lcId <
clusters.size(); ++lcId) {
2026 if (
mask[lcId] != 0.) {
2027 LogDebug(
"HGCalValidator") <<
"Skipping layer cluster " << lcId <<
" not belonging to mask" << std::endl;
2030 const auto firstHitDetId = (
clusters[lcId].hitsAndFractions())[0].
first;
2031 const auto lcLayerId =
2039 const auto& scsIt = scsInLayerClusterMap.
find(lcRef);
2040 if (scsIt == scsInLayerClusterMap.
end())
2043 const auto lc_en =
clusters[lcId].energy();
2044 const auto& scs = scsIt->val;
2047 if (lc_en == 0. && !scs.empty()) {
2048 for (
const auto& scPair : scs) {
2049 histograms.h_score_layercl2simcluster_perlayer[
count].at(lcLayerId)->Fill(scPair.second);
2054 for (
const auto& scPair : scs) {
2055 LogDebug(
"HGCalValidator") <<
"layerCluster Id: \t" << lcId <<
"\t SC id: \t" << scPair.first.index()
2056 <<
"\t score \t" << scPair.second << std::endl;
2058 histograms.h_score_layercl2simcluster_perlayer[
count].at(lcLayerId)->Fill(scPair.second);
2059 auto const& sc_linked =
2060 std::find_if(std::begin(lcsInSimClusterMap[scPair.first]),
2061 std::end(lcsInSimClusterMap[scPair.first]),
2063 return p.first == lcRef;
2066 lcsInSimClusterMap[scPair.first].
end())
2068 histograms.h_sharedenergy_layercl2simcluster_perlayer[
count].at(lcLayerId)->Fill(sc_linked->second.first / lc_en,
2070 histograms.h_energy_vs_score_layercl2simcluster_perlayer[
count].at(lcLayerId)->Fill(
2071 scPair.second, sc_linked->second.first / lc_en);
2075 std::count_if(std::begin(scs), std::end(scs), [](
const auto&
obj) {
return obj.second <
ScoreCutLCtoSC_; });
2083 const auto& best = std::min_element(
2084 std::begin(scs), std::end(scs), [](
const auto& obj1,
const auto& obj2) {
return obj1.second < obj2.second; });
2086 const auto& best_sc_linked =
2087 std::find_if(std::begin(lcsInSimClusterMap[best->first]),
2088 std::end(lcsInSimClusterMap[best->first]),
2090 return p.first == lcRef;
2092 if (best_sc_linked ==
2093 lcsInSimClusterMap[best->first].
end())
2095 histograms.h_sharedenergy_layercl2simcluster_vs_eta_perlayer[
count].at(lcLayerId)->Fill(
2096 clusters[lcId].
eta(), best_sc_linked->second.first / lc_en);
2097 histograms.h_sharedenergy_layercl2simcluster_vs_phi_perlayer[
count].at(lcLayerId)->Fill(
2098 clusters[lcId].
phi(), best_sc_linked->second.first / lc_en);
2105 for (
const auto& scId : sCIndices) {
2107 const auto& lcsIt = lcsInSimClusterMap.
find(scRef);
2109 std::map<unsigned int, float> sCEnergyOnLayer;
2110 for (
unsigned int layerId = 0; layerId <
layers * 2; ++layerId)
2111 sCEnergyOnLayer[layerId] = 0;
2113 for (
const auto& it_haf : sC[scId].hits_and_fractions()) {
2114 const DetId hitid = (it_haf.first);
2115 const auto scLayerId =
2117 std::unordered_map<DetId, const unsigned int>::const_iterator itcheck = hitMap.find(hitid);
2118 if (itcheck != hitMap.end()) {
2120 sCEnergyOnLayer[scLayerId] += it_haf.second *
hit->energy();
2124 for (
unsigned int layerId = 0; layerId <
layers * 2; ++layerId) {
2125 if (!sCEnergyOnLayer[layerId])
2131 if (lcsIt == lcsInSimClusterMap.
end())
2133 const auto& lcs = lcsIt->val;
2135 auto getLCLayerId = [&](
const unsigned int lcId) {
2136 const auto firstHitDetId = (
clusters[lcId].hitsAndFractions())[0].
first;
2137 const unsigned int lcLayerId =
recHitTools_->getLayerWithOffset(firstHitDetId) +
2143 for (
const auto& lcPair : lcs) {
2144 auto lcId = lcPair.first.index();
2145 if (
mask[lcId] != 0.) {
2146 LogDebug(
"HGCalValidator") <<
"Skipping layer cluster " << lcId <<
" not belonging to mask" << std::endl;
2150 if (getLCLayerId(lcId) != layerId)
2152 histograms.h_score_simcluster2layercl_perlayer[
count].at(layerId)->Fill(lcPair.second.second);
2153 histograms.h_sharedenergy_simcluster2layercl_perlayer[
count].at(layerId)->Fill(
2154 lcPair.second.first / sCEnergyOnLayer[layerId], sCEnergyOnLayer[layerId]);
2155 histograms.h_energy_vs_score_simcluster2layercl_perlayer[
count].at(layerId)->Fill(
2156 lcPair.second.second, lcPair.second.first / sCEnergyOnLayer[layerId]);
2158 const auto assoc = std::count_if(std::begin(lcs), std::end(lcs), [&](
const auto&
obj) {
2159 if (getLCLayerId(
obj.first.index()) != layerId)
2168 histograms.h_numDup_simcluster_eta_perlayer[
count].at(layerId)->Fill(sC[scId].
eta());
2169 histograms.h_numDup_simcluster_phi_perlayer[
count].at(layerId)->Fill(sC[scId].
phi());
2171 const auto best = std::min_element(std::begin(lcs), std::end(lcs), [&](
const auto& obj1,
const auto& obj2) {
2172 if (getLCLayerId(obj1.first.index()) != layerId)
2174 else if (getLCLayerId(obj2.first.index()) == layerId)
2175 return obj1.second.second < obj2.second.second;
2179 histograms.h_sharedenergy_simcluster2layercl_vs_eta_perlayer[
count].at(layerId)->Fill(
2180 sC[scId].
eta(), best->second.first / sCEnergyOnLayer[layerId]);
2181 histograms.h_sharedenergy_simcluster2layercl_vs_phi_perlayer[
count].at(layerId)->Fill(
2182 sC[scId].
phi(), best->second.first / sCEnergyOnLayer[layerId]);
2192 edm::Handle<std::vector<CaloParticle>> caloParticleHandle,
2193 std::vector<CaloParticle>
const& cP,
2194 std::vector<size_t>
const& cPIndices,
2195 std::vector<size_t>
const& cPSelectedIndices,
2196 std::unordered_map<DetId, const unsigned int>
const& hitMap,
2197 std::map<double, double> cummatbudg,
2199 std::vector<int> thicknesses,
2202 std::vector<HGCRecHit>
const&
hits)
const {
2211 std::vector<int> tnlcpl(1000, 0);
2214 std::map<std::string, int> tnlcpthplus;
2215 tnlcpthplus.clear();
2216 std::map<std::string, int> tnlcpthminus;
2217 tnlcpthminus.clear();
2219 for (std::vector<int>::iterator
it = thicknesses.begin();
it != thicknesses.end(); ++
it) {
2224 tnlcpthplus.insert(std::pair<std::string, int>(
"mixed", 0));
2225 tnlcpthminus.insert(std::pair<std::string, int>(
"mixed", 0));
2236 cpsInLayerClusterMap,
2242 std::vector<double> tecpl(1000, 0.0);
2244 std::vector<double> ldbar(1000, 0.0);
2247 double caloparteneplus = 0.;
2248 double caloparteneminus = 0.;
2249 for (
const auto& cpId : cPIndices) {
2250 if (cP[cpId].
eta() >= 0.) {
2251 caloparteneplus = caloparteneplus + cP[cpId].energy();
2252 }
else if (cP[cpId].
eta() < 0.) {
2253 caloparteneminus = caloparteneminus + cP[cpId].energy();
2258 for (
const auto& lcId :
clusters) {
2259 const auto seedid = lcId.seed();
2260 const double seedx =
recHitTools_->getPosition(seedid).x();
2261 const double seedy =
recHitTools_->getPosition(seedid).y();
2269 int nthhits120p = 0;
2270 int nthhits200p = 0;
2271 int nthhits300p = 0;
2272 int nthhitsscintp = 0;
2273 int nthhits120m = 0;
2274 int nthhits200m = 0;
2275 int nthhits300m = 0;
2276 int nthhitsscintm = 0;
2287 bool cluslay =
true;
2291 const auto& hits_and_fractions = lcId.hitsAndFractions();
2292 for (
std::vector<std::pair<DetId, float>>::const_iterator it_haf = hits_and_fractions.begin();
2293 it_haf != hits_and_fractions.end();
2295 const DetId rh_detid = it_haf->first;
2305 LogDebug(
"HGCalValidator") <<
"These are HGCal layer clusters, you shouldn't be here !!! " << layerid <<
"\n";
2312 while (lay_string.size() < 2)
2313 lay_string.insert(0,
"0");
2314 curistr +=
"_" + lay_string;
2339 <<
" You are running a geometry that contains thicknesses different than the normal ones. " 2343 std::unordered_map<DetId, const unsigned int>::const_iterator itcheck = hitMap.find(rh_detid);
2344 if (itcheck == hitMap.end()) {
2345 std::ostringstream st1;
2353 LogDebug(
"HGCalValidator") <<
" You shouldn't be here - Unable to find a hit " << rh_detid.
rawId() <<
" " 2354 << rh_detid.
det() <<
" " << st1.str() <<
"\n";
2361 const double hit_x =
recHitTools_->getPosition(rh_detid).x();
2362 const double hit_y =
recHitTools_->getPosition(rh_detid).y();
2363 double distancetoseed =
distance(seedx, seedy, hit_x, hit_y);
2364 double distancetomax =
distance(maxx, maxy, hit_x, hit_y);
2365 if (distancetoseed != 0. &&
histograms.h_distancetoseedcell_perthickperlayer.count(curistr)) {
2366 histograms.h_distancetoseedcell_perthickperlayer.at(curistr)->Fill(distancetoseed);
2369 if (distancetoseed != 0. &&
histograms.h_distancetoseedcell_perthickperlayer_eneweighted.count(curistr)) {
2370 histograms.h_distancetoseedcell_perthickperlayer_eneweighted.at(curistr)->Fill(distancetoseed,
hit->energy());
2373 if (distancetomax != 0. &&
histograms.h_distancetomaxcell_perthickperlayer.count(curistr)) {
2374 histograms.h_distancetomaxcell_perthickperlayer.at(curistr)->Fill(distancetomax);
2377 if (distancetomax != 0. &&
histograms.h_distancetomaxcell_perthickperlayer_eneweighted.count(curistr)) {
2378 histograms.h_distancetomaxcell_perthickperlayer_eneweighted.at(curistr)->Fill(distancetomax,
hit->energy());
2384 if ((nthhits120p != 0 && nthhits200p != 0) || (nthhits120p != 0 && nthhits300p != 0) ||
2385 (nthhits120p != 0 && nthhitsscintp != 0) || (nthhits200p != 0 && nthhits300p != 0) ||
2386 (nthhits200p != 0 && nthhitsscintp != 0) || (nthhits300p != 0 && nthhitsscintp != 0)) {
2387 tnlcpthplus[
"mixed"]++;
2388 }
else if ((nthhits120p != 0 || nthhits200p != 0 || nthhits300p != 0 || nthhitsscintp != 0)) {
2392 if ((nthhits120m != 0 && nthhits200m != 0) || (nthhits120m != 0 && nthhits300m != 0) ||
2393 (nthhits120m != 0 && nthhitsscintm != 0) || (nthhits200m != 0 && nthhits300m != 0) ||
2394 (nthhits200m != 0 && nthhitsscintm != 0) || (nthhits300m != 0 && nthhitsscintm != 0)) {
2395 tnlcpthminus[
"mixed"]++;
2396 }
else if ((nthhits120m != 0 || nthhits200m != 0 || nthhits300m != 0 || nthhitsscintm != 0)) {
2402 std::vector<int> bigamoth;
2405 bigamoth.push_back(nthhits120p);
2406 bigamoth.push_back(nthhits200p);
2407 bigamoth.push_back(nthhits300p);
2408 bigamoth.push_back(nthhitsscintp);
2409 }
else if (
zside < 0) {
2410 bigamoth.push_back(nthhits120m);
2411 bigamoth.push_back(nthhits200m);
2412 bigamoth.push_back(nthhits300m);
2413 bigamoth.push_back(nthhitsscintm);
2415 auto bgth = std::max_element(bigamoth.begin(), bigamoth.end());
2418 while (lay_string.size() < 2)
2419 lay_string.insert(0,
"0");
2420 istr +=
"_" + lay_string;
2423 if (
histograms.h_cellsnum_perthickperlayer.count(istr)) {
2424 histograms.h_cellsnum_perthickperlayer.at(istr)->Fill(hits_and_fractions.size());
2428 double distancebetseedandmax =
distance(seedx, seedy, maxx, maxy);
2431 seedstr +=
"_" + lay_string;
2432 if (
histograms.h_distancebetseedandmaxcell_perthickperlayer.count(seedstr)) {
2433 histograms.h_distancebetseedandmaxcell_perthickperlayer.at(seedstr)->Fill(distancebetseedandmax);
2435 const auto lc_en = lcId.energy();
2436 if (
histograms.h_distancebetseedandmaxcellvsclusterenergy_perthickperlayer.count(seedstr)) {
2437 histograms.h_distancebetseedandmaxcellvsclusterenergy_perthickperlayer.at(seedstr)->Fill(distancebetseedandmax,
2442 tecpl[layerid] = tecpl[layerid] + lc_en;
2443 ldbar[layerid] = ldbar[layerid] + lc_en * cummatbudg[(double)lay];
2448 double sumeneallcluspl = 0.;
2449 double sumeneallclusmi = 0.;
2451 double sumldbarpl = 0.;
2452 double sumldbarmi = 0.;
2454 for (
unsigned ilayer = 0; ilayer <
layers * 2; ++ilayer) {
2455 if (
histograms.h_clusternum_perlayer.count(ilayer)) {
2456 histograms.h_clusternum_perlayer.at(ilayer)->Fill(tnlcpl[ilayer]);
2461 if (
histograms.h_energyclustered_perlayer.count(ilayer)) {
2462 if (caloparteneminus != 0.) {
2463 histograms.h_energyclustered_perlayer.at(ilayer)->Fill(100. * tecpl[ilayer] / caloparteneminus);
2467 sumeneallclusmi = sumeneallclusmi + tecpl[ilayer];
2469 sumldbarmi = sumldbarmi + ldbar[ilayer];
2471 if (
histograms.h_energyclustered_perlayer.count(ilayer)) {
2472 if (caloparteneplus != 0.) {
2473 histograms.h_energyclustered_perlayer.at(ilayer)->Fill(100. * tecpl[ilayer] / caloparteneplus);
2477 sumeneallcluspl = sumeneallcluspl + tecpl[ilayer];
2479 sumldbarpl = sumldbarpl + ldbar[ilayer];
2485 for (std::vector<int>::iterator
it = thicknesses.begin();
it != thicknesses.end(); ++
it) {
2492 histograms.h_mixedhitscluster_zplus[
count]->Fill(tnlcpthplus[
"mixed"]);
2493 histograms.h_mixedhitscluster_zminus[
count]->Fill(tnlcpthminus[
"mixed"]);
2496 if (caloparteneplus != 0.) {
2497 histograms.h_energyclustered_zplus[
count]->Fill(100. * sumeneallcluspl / caloparteneplus);
2499 if (caloparteneminus != 0.) {
2500 histograms.h_energyclustered_zminus[
count]->Fill(100. * sumeneallclusmi / caloparteneminus);
2504 histograms.h_longdepthbarycentre_zplus[
count]->Fill(sumldbarpl / sumeneallcluspl);
2505 histograms.h_longdepthbarycentre_zminus[
count]->Fill(sumldbarmi / sumeneallclusmi);
2514 const std::vector<size_t>& cPIndices,
2515 const std::vector<size_t>& cPSelectedIndices,
2517 const auto nTracksters = trackstersToSimTrackstersMap.
getMap().size();
2518 const auto nSimTracksters = simTrackstersToTrackstersMap.
getMap().size();
2519 std::vector<int> tracksters_FakeMerge(nTracksters, 0);
2520 std::vector<int> tracksters_PurityDuplicate(nSimTracksters, 0);
2524 const auto productID = simTS.
seedID();
2525 if (productID == cPHandle_id) {
2534 for (
unsigned int tracksterIndex = 0; tracksterIndex < nTracksters; ++tracksterIndex) {
2535 const auto& trackster = *(trackstersToSimTrackstersMap.
getRefFirst(tracksterIndex));
2536 if (trackster.vertices().empty())
2538 float iTS_eta = trackster.barycenter().eta();
2539 float iTS_phi = trackster.barycenter().phi();
2540 float iTS_en = trackster.raw_energy();
2541 float iTS_pt = trackster.raw_pt();
2549 for (
unsigned int i = 0;
i < trackstersToSimTrackstersMap[tracksterIndex].size(); ++
i) {
2550 const auto& [sts_id, sharedEnergyScorePair] = trackstersToSimTrackstersMap[tracksterIndex][
i];
2552 float sharedEnergyFraction =
sharedEnergy / trackster.raw_energy();
2555 histograms.h_sharedenergy_trackster2bestCaloparticle[valType][
count]->Fill(sharedEnergyFraction);
2556 histograms.h_sharedenergy_trackster2bestCaloparticle_vs_eta[valType][
count]->Fill(trackster.barycenter().eta(),
2558 histograms.h_sharedenergy_trackster2bestCaloparticle_vs_phi[valType][
count]->Fill(trackster.barycenter().phi(),
2560 histograms.h_energy_vs_score_trackster2bestCaloparticle[valType][
count]->Fill(
score, sharedEnergyFraction);
2564 histograms.h_sharedenergy_trackster2bestCaloparticle2[valType][
count]->Fill(sharedEnergyFraction);
2565 histograms.h_energy_vs_score_trackster2bestCaloparticle2[valType][
count]->Fill(
score, sharedEnergyFraction);
2568 histograms.h_sharedenergy_trackster2caloparticle[valType][
count]->Fill(sharedEnergyFraction);
2569 histograms.h_energy_vs_score_trackster2caloparticle[valType][
count]->Fill(
score, sharedEnergyFraction);
2570 tracksters_FakeMerge[tracksterIndex] +=
score < ScoreCutTStoSTSFakeMerge;
2573 if (tracksters_FakeMerge[tracksterIndex] > 0) {
2579 if (tracksters_FakeMerge[tracksterIndex] > 1) {
2591 for (
unsigned int simTracksterIndex = 0; simTracksterIndex < nSimTracksters; ++simTracksterIndex) {
2592 const auto& simTrackster = *(simTrackstersToTrackstersMap.
getRefFirst(simTracksterIndex));
2593 const auto& cpId = getCPId(simTrackster, cPHandle_id, scToCpMap);
2594 if (
std::find(cPSelectedIndices.begin(), cPSelectedIndices.end(), cpId) == cPSelectedIndices.end())
2597 const auto sts_eta = simTrackster.barycenter().eta();
2598 const auto sts_phi = simTrackster.barycenter().phi();
2599 const auto sts_en = simTrackster.raw_energy();
2600 const auto sts_pt = simTrackster.raw_pt();
2601 float inv_simtrackster_energy = 1.f / sts_en;
2612 bool sts_considered_efficient =
false;
2613 bool sts_considered_pure =
false;
2615 for (
unsigned int i = 0;
i < simTrackstersToTrackstersMap[simTracksterIndex].size(); ++
i) {
2616 const auto& [tracksterId, sharedEnergyScorePair] = simTrackstersToTrackstersMap[simTracksterIndex][
i];
2619 float sharedEnergyFraction =
sharedEnergy * inv_simtrackster_energy;
2623 histograms.h_sharedenergy_caloparticle2trackster_assoc[valType][
count]->Fill(sharedEnergyFraction);
2624 histograms.h_energy_vs_score_caloparticle2bestTrackster[valType][
count]->Fill(
score, sharedEnergyFraction);
2625 histograms.h_sharedenergy_caloparticle2trackster_assoc_vs_eta[valType][
count]->Fill(sts_eta,
2626 sharedEnergyFraction);
2627 histograms.h_sharedenergy_caloparticle2trackster_assoc_vs_phi[valType][
count]->Fill(sts_phi,
2628 sharedEnergyFraction);
2633 histograms.h_sharedenergy_caloparticle2trackster_assoc2[valType][
count]->Fill(sharedEnergyFraction);
2634 histograms.h_energy_vs_score_caloparticle2bestTrackster2[valType][
count]->Fill(
score, sharedEnergyFraction);
2638 histograms.h_sharedenergy_caloparticle2trackster[valType][
count]->Fill(sharedEnergyFraction);
2639 histograms.h_energy_vs_score_caloparticle2trackster[valType][
count]->Fill(
score, sharedEnergyFraction);
2643 sts_considered_efficient =
true;
2650 if (
score < ScoreCutSTStoTSPurDup) {
2651 if (tracksters_PurityDuplicate[simTracksterIndex] < 1)
2652 tracksters_PurityDuplicate[simTracksterIndex]++;
2653 if (sts_considered_pure)
2654 tracksters_PurityDuplicate[simTracksterIndex]++;
2655 sts_considered_pure =
true;
2659 if (tracksters_PurityDuplicate[simTracksterIndex] > 0) {
2665 if (tracksters_PurityDuplicate[simTracksterIndex] > 1) {
2683 const std::map<
unsigned int, std::vector<unsigned int>>& cpToSc_SimTrackstersMap,
2684 std::vector<SimCluster>
const& sC,
2686 std::vector<CaloParticle>
const& cP,
2687 std::vector<size_t>
const& cPIndices,
2688 std::vector<size_t>
const& cPSelectedIndices,
2689 std::unordered_map<DetId, const unsigned int>
const& hitMap,
2691 std::vector<HGCRecHit>
const&
hits,
2709 int totNContTstZp = 0;
2710 int totNContTstZm = 0;
2712 int totNNotContTstZp = 0;
2713 int totNNotContTstZm = 0;
2715 std::vector<bool> contTracksters;
2716 contTracksters.clear();
2719 std::unordered_map<unsigned int, std::vector<unsigned int>> multiplicity;
2721 std::unordered_map<unsigned int, std::vector<unsigned int>> multiplicity_vs_layer;
2730 for (
unsigned int tstId = 0; tstId < nTracksters; ++tstId) {
2732 if (tst.vertices().empty())
2735 if (tst.barycenter().z() < 0.)
2737 else if (tst.barycenter().z() > 0.)
2745 std::vector<int> tnLcInTstperlay(1000, 0);
2749 std::set<unsigned int> trackster_layers;
2751 bool tracksterInZplus =
false;
2752 bool tracksterInZminus =
false;
2755 for (
const auto lcId : tst.vertices()) {
2757 const auto& hits_and_fractions =
layerClusters[lcId].hitsAndFractions();
2760 multiplicity[tstId].emplace_back(hits_and_fractions.size());
2762 const auto firstHitDetId = hits_and_fractions[0].first;
2764 const auto layerid =
recHitTools_->getLayerWithOffset(firstHitDetId) +
2766 trackster_layers.insert(layerid);
2767 multiplicity_vs_layer[tstId].emplace_back(layerid);
2769 tnLcInTstperlay[layerid]++;
2773 tracksterInZplus =
true;
2775 tracksterInZminus =
true;
2779 for (
unsigned ilayer = 0; ilayer <
layers * 2; ++ilayer) {
2780 if (
histograms.h_clusternum_in_trackster_perlayer[
count].count(ilayer) && tnLcInTstperlay[ilayer] != 0) {
2781 histograms.h_clusternum_in_trackster_perlayer[
count].at(ilayer)->Fill((
float)tnLcInTstperlay[ilayer]);
2784 if (tnLcInTstperlay[ilayer] != 0) {
2785 histograms.h_clusternum_in_trackster_vs_layer[
count]->Fill((
float)ilayer, (
float)tnLcInTstperlay[ilayer]);
2790 std::vector<int> trackster_layers_vec(trackster_layers.begin(), trackster_layers.end());
2792 bool contiTrackster =
false;
2794 if (trackster_layers_vec.size() >= 3) {
2795 for (
unsigned int iLayer = 1; iLayer < trackster_layers_vec.size() - 1; ++iLayer) {
2796 if ((trackster_layers_vec[iLayer - 1] + 1 == trackster_layers_vec[iLayer]) &&
2797 (trackster_layers_vec[iLayer + 1] - 1 == trackster_layers_vec[iLayer])) {
2799 if (tracksterInZplus)
2801 else if (tracksterInZminus)
2804 contiTrackster =
true;
2810 if (!contiTrackster) {
2811 if (tracksterInZplus)
2813 else if (tracksterInZminus)
2818 contTracksters.push_back(contiTrackster);
2822 for (
unsigned int lc = 0; lc < multiplicity[tstId].size(); ++lc) {
2824 float mlp =
std::count(std::begin(multiplicity[tstId]), std::end(multiplicity[tstId]), multiplicity[tstId][lc]);
2827 histograms.h_multiplicityOfLCinTST[
count]->Fill(mlp, multiplicity[tstId][lc]);
2833 if (multiplicity_vs_layer[tstId][lc] <
layers) {
2834 histograms.h_multiplicityOfLCinTST_vs_layercluster_zminus[
count]->Fill(mlp, multiplicity_vs_layer[tstId][lc]);
2835 histograms.h_multiplicity_zminus_numberOfEventsHistogram[
count]->Fill(mlp);
2837 histograms.h_multiplicityOfLCinTST_vs_layercluster_zplus[
count]->Fill(
2838 mlp, multiplicity_vs_layer[tstId][lc] -
layers);
2839 histograms.h_multiplicity_zplus_numberOfEventsHistogram[
count]->Fill(mlp);
2842 histograms.h_multiplicityOfLCinTST_vs_layerclusterenergy[
count]->Fill(mlp,
2846 if (!trackster_layers.empty()) {
2853 histograms.h_trackster_firstlayer[
count]->Fill((
float)*trackster_layers.begin());
2854 histograms.h_trackster_lastlayer[
count]->Fill((
float)*trackster_layers.rbegin());
2855 histograms.h_trackster_layersnum[
count]->Fill((
float)trackster_layers.size());
2864 histograms.h_conttracksternum[
count]->Fill(totNContTstZp + totNContTstZm);
2865 histograms.h_nonconttracksternum[
count]->Fill(totNNotContTstZp + totNNotContTstZm);
2867 const auto& trackstersToSimTrackstersByLCsMap = *trackstersToSimTrackstersByLCsMapH;
2868 const auto& simTrackstersToTrackstersByLCsMap = *simTrackstersToTrackstersByLCsMapH;
2869 const auto& trackstersToSimTrackstersFromCPsByLCsMap = *trackstersToSimTrackstersFromCPsByLCsMapH;
2870 const auto& simTrackstersFromCPsToTrackstersByLCsMap = *simTrackstersFromCPsToTrackstersByLCsMapH;
2871 const auto& trackstersToSimTrackstersByHitsMap = *trackstersToSimTrackstersByHitsMapH;
2872 const auto& simTrackstersToTrackstersByHitsMap = *simTrackstersToTrackstersByHitsMapH;
2873 const auto& trackstersToSimTrackstersFromCPsByHitsMap = *trackstersToSimTrackstersFromCPsByHitsMapH;
2874 const auto& simTrackstersFromCPsToTrackstersByHitsMap = *simTrackstersFromCPsToTrackstersByHitsMapH;
2878 trackstersToSimTrackstersByLCsMap,
2879 simTrackstersToTrackstersByLCsMap,
2880 validationType::byLCs,
2888 trackstersToSimTrackstersFromCPsByLCsMap,
2889 simTrackstersFromCPsToTrackstersByLCsMap,
2890 validationType::byLCs_CP,
2898 trackstersToSimTrackstersFromCPsByHitsMap,
2899 simTrackstersFromCPsToTrackstersByHitsMap,
2900 validationType::byHits_CP,
2908 trackstersToSimTrackstersByHitsMap,
2909 simTrackstersToTrackstersByHitsMap,
2910 validationType::byHits,
2921 const double y2)
const {
2922 const double dx =
x1 -
x2;
2923 const double dy =
y1 -
y2;
2929 const double y2)
const {
2938 std::unordered_map<DetId, const unsigned int>
const& hitMap,
2939 std::vector<HGCRecHit>
const&
hits)
const {
2944 for (
std::vector<std::pair<DetId, float>>::const_iterator it_haf = hits_and_fractions.begin();
2945 it_haf != hits_and_fractions.end();
2947 const DetId rh_detid = it_haf->first;
2948 const auto hitEn = (
hits[hitMap.find(rh_detid)->second]).
energy();
2949 if (maxene < hitEn) {
2951 themaxid = rh_detid;
void fill_caloparticle_histos(const Histograms &histograms, int pdgid, const CaloParticle &caloparticle, std::vector< SimVertex > const &simVertices, unsigned int layers, std::unordered_map< DetId, const unsigned int > const &, std::vector< HGCRecHit > const &hits) const
const std::vector< SimTrack > & g4Tracks() const
const std::vector< std::pair< DetId, float > > & hitsAndFractions() const
double minTSTSharedEneFracEfficiency_
const double ScoreCutSCtoLC_
double maxMixedHitsSimCluster_
void layerClusters_to_CaloParticles(const Histograms &histograms, edm::Handle< reco::CaloClusterCollection > clusterHandle, const reco::CaloClusterCollection &clusters, edm::Handle< std::vector< CaloParticle >> caloParticleHandle, std::vector< CaloParticle > const &cP, std::vector< size_t > const &cPIndices, std::vector< size_t > const &cPSelectedIndices, std::unordered_map< DetId, const unsigned int > const &, unsigned int layers, const ticl::RecoToSimCollection &recSimColl, const ticl::SimToRecoCollection &simRecColl, std::vector< HGCRecHit > const &hits) const
double minDisToSeedperthickperlayerenewei_
const SimClusterRefVector & simClusters() const
double maxTotNsimClsperlay_
void bookTracksterHistos(DQMStore::IBooker &ibook, Histograms &histograms, unsigned int layers)
int nintCellsEneDensperthick_
int nintClEneperthickperlayer_
void setRecHitTools(std::shared_ptr< hgcal::RecHitTools > recHitTools)
double maxTotNClsinTSTsperlayer_
const double ScoreCutLCtoSC_
void fill_info_histos(const Histograms &histograms, unsigned int layers) const
int nintDisToMaxperthickperlayerenewei_
void bookClusterHistos_LCtoCP_association(DQMStore::IBooker &ibook, Histograms &histograms, unsigned int layers)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
constexpr Detector det() const
get the detector field from this detid
edm::Ref< C1 > getRefFirst(unsigned int index) const
std::array< std::string, numberOfValidationTypes_ > refText_
int nintDisToMaxperthickperlayer_
const_iterator find(const key_type &k) const
find element with specified reference key
void bookInfo(DQMStore::IBooker &ibook, Histograms &histograms)
static std::string to_string(const XMLCh *ch)
const_iterator end() const
last iterator over the map (read only)
std::array< std::string, numberOfValidationTypes_ > ref_
float energy() const
Energy. Note this is taken from the first SimTrack only.
void bookSimClusterAssociationHistos(DQMStore::IBooker &ibook, Histograms &histograms, unsigned int layers, std::vector< int > thicknesses)
void bookSimClusterHistos(DQMStore::IBooker &ibook, Histograms &histograms, unsigned int layers, std::vector< int > thicknesses)
void fill_cluster_histos(const Histograms &histograms, const int count, const reco::CaloCluster &cluster) const
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())
double minClEnepermultiplicity_
float pt() const
Transverse momentum. Note this is taken from the first SimTrack only.
double maxMixedHitsCluster_
double minTotNsimClsperlay_
double minDisSeedToMaxperthickperlayer_
double distance2(const double x1, const double y1, const double x2, const double y2) const
int nintDisToSeedperthickperlayerenewei_
double minTSTSharedEneFrac_
std::vector< CaloCluster > CaloClusterCollection
collection of CaloCluster objects
double minDisToMaxperthickperlayer_
void bookCaloParticleHistos(DQMStore::IBooker &ibook, Histograms &histograms, int pdgid, unsigned int layers)
int nintTotNClsinTSTsperlayer_
void bookTracksterSTSHistos(DQMStore::IBooker &ibook, Histograms &histograms, const validationType valType)
const double ScoreCutTStoSTSFakeMerge_[]
void tracksters_to_SimTracksters_fp(const Histograms &histograms, const int count, const TracksterToTracksterMap &trackstersToSimTrackstersMap, const TracksterToTracksterMap &simTrackstersToTrackstersMap, const validationType valType, const SimClusterToCaloParticleMap &scToCpMap, const std::vector< size_t > &cPIndices, const std::vector< size_t > &cPSelectedIndices, const edm::ProductID &cPHandle_id) const
double maxDisToMaxperthickperlayer_
const double ScoreCutLCtoCP_
double maxDisToSeedperthickperlayer_
float phi() const
Momentum azimuthal angle. Note this is taken from the first SimTrack only.
double getEta(double eta) const
void layerClusters_to_SimClusters(const Histograms &histograms, const int count, edm::Handle< reco::CaloClusterCollection > clusterHandle, const reco::CaloClusterCollection &clusters, edm::Handle< std::vector< SimCluster >> simClusterHandle, std::vector< SimCluster > const &simClusters, std::vector< size_t > const &sCIndices, const std::vector< float > &mask, std::unordered_map< DetId, const unsigned int > const &, unsigned int layers, const ticl::RecoToSimCollectionWithSimClusters &recSimColl, const ticl::SimToRecoCollectionWithSimClusters &simRecColl, std::vector< HGCRecHit > const &hits) const
double maxTotNcellsperthickperlayer_
double maxDisSeedToMaxperthickperlayer_
double minDisToSeedperthickperlayer_
size_type size() const
Size of the RefVector.
const edm::ProductID & seedID() const
double minTotNClsinTSTsperlayer_
double maxDisToSeedperthickperlayerenewei_
std::shared_ptr< hgcal::RecHitTools > recHitTools_
constexpr uint32_t rawId() const
get the raw id
double maxTotNsimClsperthick_
double minTotNClsperthick_
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
double minTotNsimClsperthick_
MonitorElement * bookInt(TString const &name, FUNC onbooking=NOOP())
const double ScoreCutSTStoTSPurDup_[]
void bookClusterHistos_ClusterLevel(DQMStore::IBooker &ibook, Histograms &histograms, unsigned int layers, std::vector< int > thicknesses, std::string pathtomatbudfile)
int nintTotNsimClsperlay_
int nintMixedHitsSimCluster_
int nintDisSeedToMaxperthickperlayer_
float sharedEnergy(reco::CaloCluster const &clu1, reco::CaloCluster const &clu2, EcalRecHitCollection const &barrelRecHits, EcalRecHitCollection const &endcapRecHits)
const int seedIndex() const
double minTotNcellsperthickperlayer_
double minClEneperthickperlayer_
static int position[264][3]
double minMixedHitsSimCluster_
double minDisToMaxperthickperlayerenewei_
int nintClEnepermultiplicity_
int nintTotNsimClsperthick_
std::vector< Trackster > TracksterCollection
double maxTotNClsperthick_
double maxClEnepermultiplicity_
double eta() const
pseudorapidity of cluster centroid
void bookClusterHistos_CellLevel(DQMStore::IBooker &ibook, Histograms &histograms, unsigned int layers, std::vector< int > thicknesses)
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
double distance(const double x1, const double y1, const double x2, const double y2) const
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
void fill_generic_cluster_histos(const Histograms &histograms, const int count, edm::Handle< reco::CaloClusterCollection > clusterHandle, const reco::CaloClusterCollection &clusters, edm::Handle< std::vector< CaloParticle >> caloParticleHandle, std::vector< CaloParticle > const &cP, std::vector< size_t > const &cPIndices, std::vector< size_t > const &cPSelectedIndices, std::unordered_map< DetId, const unsigned int > const &, std::map< double, double > cummatbudg, unsigned int layers, std::vector< int > thicknesses, const ticl::RecoToSimCollection &recSimColl, const ticl::SimToRecoCollection &simRecColl, std::vector< HGCRecHit > const &hits) const
double maxCellsEneDensperthick_
DetId findmaxhit(const reco::CaloCluster &cluster, std::unordered_map< DetId, const unsigned int > const &, std::vector< HGCRecHit > const &hits) const
double maxDisToMaxperthickperlayerenewei_
const double ScoreCutCPtoLC_
int nintMixedHitsCluster_
double minMixedHitsCluster_
std::array< std::string, numberOfValidationTypes_ > valSuffix_
float eta() const
Momentum pseudorapidity. Note this is taken from the simtrack before the calorimeter.
double maxClEneperthickperlayer_
int nintDisToSeedperthickperlayer_
int nintTotNcellsperthickperlayer_
Power< A, B >::type pow(const A &a, const B &b)
void fill_trackster_histos(const Histograms &histograms, const int count, const ticl::TracksterCollection &tracksters, const reco::CaloClusterCollection &layerClusters, const ticl::TracksterCollection &simTSs, const ticl::TracksterCollection &simTSs_fromCP, const std::map< unsigned int, std::vector< unsigned int >> &cpToSc_SimTrackstersMap, std::vector< SimCluster > const &sC, const edm::ProductID &cPHandle_id, std::vector< CaloParticle > const &cP, std::vector< size_t > const &cPIndices, std::vector< size_t > const &cPSelectedIndices, std::unordered_map< DetId, const unsigned int > const &hitMap, unsigned int layers, std::vector< HGCRecHit > const &hits, bool mapsFound, const edm::Handle< TracksterToTracksterMap > &trackstersToSimTrackstersByLCsMapH, const edm::Handle< TracksterToTracksterMap > &simTrackstersToTrackstersByLCsMapH, const edm::Handle< TracksterToTracksterMap > &trackstersToSimTrackstersFromCPsByLCsMapH, const edm::Handle< TracksterToTracksterMap > &simTrackstersFromCPsToTrackstersByLCsMapH, const edm::Handle< TracksterToTracksterMap > &trackstersToSimTrackstersByHitsMapH, const edm::Handle< TracksterToTracksterMap > &simTrackstersToTrackstersByHitsMapH, const edm::Handle< TracksterToTracksterMap > &trackstersToSimTrackstersFromCPsByHitsMapH, const edm::Handle< TracksterToTracksterMap > &simTrackstersFromCPsToTrackstersByHitsMapH, const SimClusterToCaloParticleMap &scToCpMap) const
HGVHistoProducerAlgo(const edm::ParameterSet &pset)
double maxTSTSharedEneFrac_
double minCellsEneDensperthick_