Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
7119c2a
Add displaced particle gun producer.
bfonta May 19, 2026
3ec69bf
Add Displaced Particle Gun workflows.
bfonta May 20, 2026
ac8802c
Fix static warnings.
bfonta May 28, 2026
fc32bf6
Add HLT-only (NGT Scouting) displaced workflow.
bfonta May 28, 2026
0fb9313
Remove repeated radius check.
bfonta May 28, 2026
e394071
Use CE-E back surface as plane reference to contain EM showers in HGCAL.
bfonta May 29, 2026
f44ac02
Remove sthocasticity from PDG ID user option.
bfonta May 29, 2026
446f305
Remove theta constraints when pointing to HGCAL (for any theta there …
bfonta May 29, 2026
9d8e23f
Support negative theta + ensure working default configuration.
bfonta Jun 1, 2026
9f08745
fix segfault while plotting
fdoljanin Jun 23, 2026
b8f3de1
Use unique canvas names for separate plots
fdoljanin Jun 23, 2026
98d4ba3
rename to _resolveNextCanvasId
fdoljanin Jun 23, 2026
1b3e736
Add R and alpha to validation.
bfonta Jun 10, 2026
3264d90
[Throw]
bfonta Jun 15, 2026
fe84659
alpha/r uncommented
fdoljanin Jun 24, 2026
f90a65e
hgcal plots
fdoljanin Jun 24, 2026
81f6a4a
Merge branch 'feature/hgcal_separate_plots' into HEAD
fdoljanin Jun 24, 2026
ef19fe2
modify
fdoljanin Jun 24, 2026
3a25476
RecoTrackster to CaloParticle matcher fix
fdoljanin Jun 24, 2026
6edc401
resolving RecoTrackster displacement resolution based on RT geometry
fdoljanin Jun 25, 2026
99c6b9f
improving code
fdoljanin Jun 25, 2026
e8a68fc
compilation fix and simplity
fdoljanin Jun 26, 2026
8f78e30
tweaks
fdoljanin Jun 26, 2026
b66a3aa
resolve direction bug
fdoljanin Jun 26, 2026
d776682
simplify
fdoljanin Jun 26, 2026
a977dcc
tracskter estimated time metrics
fdoljanin Jun 28, 2026
65c0e4e
apply comments
fdoljanin Jun 29, 2026
17ea37b
run scram build code-checks && scram build code-format
fdoljanin Jun 29, 2026
e801964
Merge
fdoljanin Jul 16, 2026
fbc1c30
cleaning
fdoljanin Jul 16, 2026
b4a0177
Refactor HGVHistoProducerAlgo to make counting fakes, duplicates... c…
fdoljanin Jul 16, 2026
a4a9c08
Move impl to unnamed namespace, minor fix
fdoljanin Jul 16, 2026
a3b6849
Simplify
fdoljanin Jul 16, 2026
d045c7e
Formatting
fdoljanin Jul 16, 2026
46da7df
Compilation fix
fdoljanin Jul 16, 2026
35bad0a
PR comments
fdoljanin Jul 21, 2026
bf7f776
formatting
fdoljanin Jul 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 36 additions & 1 deletion Validation/HGCalValidation/interface/HGVHistoProducerAlgo.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
/* \author HGCal
*/

#include <iostream>
#include <fstream>
#include <optional>
#include <vector>
#include <unordered_map>

Expand Down Expand Up @@ -163,10 +163,16 @@ struct HGVHistoProducerAlgoHistograms {
std::vector<dqm::reco::MonitorElement*> h_num_trackster_phi[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_trackster_en[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_trackster_pt[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_trackster_R[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_trackster_alpha[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_trackster_time[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numMerge_trackster_eta[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numMerge_trackster_phi[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numMerge_trackster_en[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numMerge_trackster_pt[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numMerge_trackster_R[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numMerge_trackster_alpha[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numMerge_trackster_time[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_sharedenergy_trackster2caloparticle[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_sharedenergy_trackster2bestCaloparticle[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_sharedenergy_trackster2bestCaloparticle2[numberOfValidationTypes_];
Expand All @@ -181,22 +187,37 @@ struct HGVHistoProducerAlgoHistograms {
std::vector<dqm::reco::MonitorElement*> h_denom_trackster_phi[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_trackster_en[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_trackster_pt[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_trackster_R[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_trackster_alpha[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_trackster_time[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numEff_caloparticle_eta[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numEff_caloparticle_phi[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numEff_caloparticle_en[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numEff_caloparticle_pt[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numEff_caloparticle_R[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numEff_caloparticle_alpha[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numEff_caloparticle_time[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_caloparticle_eta[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_caloparticle_phi[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_caloparticle_en[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_caloparticle_pt[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_caloparticle_R[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_caloparticle_alpha[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_num_caloparticle_time[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numDup_trackster_eta[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numDup_trackster_phi[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numDup_trackster_en[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numDup_trackster_pt[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numDup_trackster_R[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numDup_trackster_alpha[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_numDup_trackster_time[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_caloparticle_eta[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_caloparticle_phi[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_caloparticle_en[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_caloparticle_pt[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_caloparticle_R[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_caloparticle_alpha[numberOfValidationTypes_];
std::vector<dqm::reco::MonitorElement*> h_denom_caloparticle_time[numberOfValidationTypes_];
// Generic histograms
std::vector<dqm::reco::MonitorElement*> h_tracksternum;
std::vector<dqm::reco::MonitorElement*> h_conttracksternum;
Expand All @@ -219,6 +240,9 @@ struct HGVHistoProducerAlgoHistograms {
std::vector<dqm::reco::MonitorElement*> h_trackster_x;
std::vector<dqm::reco::MonitorElement*> h_trackster_y;
std::vector<dqm::reco::MonitorElement*> h_trackster_z;
std::vector<dqm::reco::MonitorElement*> h_trackster_R;
std::vector<dqm::reco::MonitorElement*> h_trackster_alpha;
std::vector<dqm::reco::MonitorElement*> h_trackster_time;
std::vector<dqm::reco::MonitorElement*> h_trackster_firstlayer;
std::vector<dqm::reco::MonitorElement*> h_trackster_lastlayer;
std::vector<dqm::reco::MonitorElement*> h_trackster_layersnum;
Expand Down Expand Up @@ -304,6 +328,7 @@ class HGVHistoProducerAlgo {
const TracksterToTracksterMap& simTrackstersToTrackstersMap,
const validationType valType,
const SimClusterToCaloParticleMap& scToCpMap,
const std::vector<CaloParticle>& cP,
const std::vector<size_t>& cPIndices,
const std::vector<size_t>& cPSelectedIndices,
const edm::ProductID& cPHandle_id) const;
Expand Down Expand Up @@ -428,6 +453,12 @@ class HGVHistoProducerAlgo {
int nintPt_;
double minPhi_, maxPhi_;
int nintPhi_;
double minR_, maxR_;
int nintR_;
double minAlpha_, maxAlpha_;
int nintAlpha_;
double minTime_, maxTime_;
int nintTime_;
double minMixedHitsSimCluster_, maxMixedHitsSimCluster_;
int nintMixedHitsSimCluster_;
double minMixedHitsCluster_, maxMixedHitsCluster_;
Expand All @@ -446,6 +477,10 @@ class HGVHistoProducerAlgo {
int nintEneClperlay_;
double minScore_, maxScore_;
int nintScore_;
double maxRecoToSimScoreForNonFake_;
double maxRecoToSimScoreForMerge_;
double maxSimToRecoScoreForPurity_;
double maxSimToRecoScoreForDuplicate_;
double minSharedEneFrac_, maxSharedEneFrac_;
int nintSharedEneFrac_;
double minTSTSharedEneFracEfficiency_;
Expand Down
27 changes: 22 additions & 5 deletions Validation/HGCalValidation/plugins/HGCalValidator.cc
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
#include <memory>

#include "Validation/HGCalValidation/interface/HGCalValidator.h"

#include "SimCalorimetry/HGCalAssociatorProducers/interface/AssociatorTools.h"

#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"

#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "SimCalorimetry/HGCalAssociatorProducers/interface/AssociatorTools.h"
#include "Validation/HGCalValidation/interface/HGCalValidator.h"

using namespace std;
using namespace edm;
Expand Down Expand Up @@ -691,6 +688,22 @@ void HGCalValidator::fillDescriptions(edm::ConfigurationDescriptions& descriptio
psd1.add<double>("minPhi", -3.2);
psd1.add<double>("maxPhi", 3.2);
psd1.add<int>("nintPhi", 80);
psd1.add<double>("minR", 0.)
->setComment(
"Minimum histogram value for the displacement radius R, defined as the transverse distance "
"from the z axis of the trajectory extrapolated to z = 0, in cm");
psd1.add<double>("maxR", 100.);
psd1.add<int>("nintR", 50);
psd1.add<double>("minAlpha", 0.)
->setComment(
"Minimum histogram value for the displacement angle alpha, defined at the HGCal front surface "
"as the angle between the particle direction and the vector from the origin to the surface "
"intersection, in radians");
psd1.add<double>("maxAlpha", std::numbers::pi / 4.);
psd1.add<int>("nintAlpha", 50);
psd1.add<double>("minTime", -50.);
psd1.add<double>("maxTime", 50.);
psd1.add<int>("nintTime", 50);
psd1.add<double>("minMixedHitsSimCluster", 0.0);
psd1.add<double>("maxMixedHitsSimCluster", 800.0);
psd1.add<int>("nintMixedHitsSimCluster", 100);
Expand Down Expand Up @@ -718,6 +731,10 @@ void HGCalValidator::fillDescriptions(edm::ConfigurationDescriptions& descriptio
psd1.add<double>("minScore", 0.0);
psd1.add<double>("maxScore", 1.02);
psd1.add<int>("nintScore", 51);
psd1.add<double>("maxRecoToSimScoreForNonFake", 0.6);
psd1.add<double>("maxRecoToSimScoreForMerge", 0.6);
psd1.add<double>("maxSimToRecoScoreForPurity", 0.2);
psd1.add<double>("maxSimToRecoScoreForDuplicate", 0.2);
psd1.add<double>("minSharedEneFrac", 0.0);
psd1.add<double>("maxSharedEneFrac", 1.02);
psd1.add<int>("nintSharedEneFrac", 51);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@
minScore = cms.double(0.),
maxScore = cms.double(1.02),
nintScore = cms.int32(51),
maxRecoToSimScoreForNonFake = cms.double(0.6),
maxRecoToSimScoreForMerge = cms.double(0.6),
maxSimToRecoScoreForPurity = cms.double(0.2),
maxSimToRecoScoreForDuplicate = cms.double(0.2),

#Parameters for shared energy fraction. That is:
#1. Fraction of each of the layer clusters energy related to a
Expand Down
3 changes: 2 additions & 1 deletion Validation/HGCalValidation/python/PostProcessorHGCAL_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@
# Must be in sync with labels in HGVHistoProducerAlgo.cc
simDict = {"SimTrackster_fromCP_byHits":"_byHits_CP", "SimTrackster_byLCs":"_byLCs", "SimTrackster_fromCP_byLCs":"_byLCs_CP", "SimTrackster_byHits":"_byHits"}
metrics = {"purity":["Purity","_"], "effic":["Efficiency","Eff_"], "fake":["Fake Rate","_"], "duplicate":["Duplicate(Split)","Dup_"], "merge":["Merge Rate","Merge_"]}
variables = {"eta":["#eta",""], "phi":["#phi",""], "energy":["energy"," [GeV]"], "pt":["p_{T}"," [GeV]"]}
variables = {"eta":["#eta",""], "phi":["#phi",""], "energy":["energy"," [GeV]"], "pt":["p_{T}"," [GeV]"],
"R":["R"," [cm]"], "alpha":["#alpha"," [rad]"], "time":["time"," [ns]"]}
for elem in simDict:
for m in list(metrics.keys())[:2]:
for v in variables:
Expand Down
6 changes: 3 additions & 3 deletions Validation/HGCalValidation/python/hgcalPlots.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@

from Validation.RecoTrack.plotting.plotting import Plot, PlotGroup, PlotFolder, Plotter, PlotOnSideGroup
from Validation.RecoTrack.plotting.html import PlotPurpose
import Validation.RecoTrack.plotting.plotting as plotting
import Validation.RecoTrack.plotting.validation as validation
import Validation.RecoTrack.plotting.html as html

from Validation.HGCalValidation.HGCalValidator_cff import hgcalValidator
from Validation.HGCalValidation.PostProcessorHGCAL_cfi import lcToCP_linking, simDict, TSbyHits_CP, TSbyLCs, TSbyLCs_CP, TSbyHits, variables
Expand Down Expand Up @@ -1782,6 +1779,9 @@
_trackster_eppe_plots.extend([Plot("trackster_phi", **_common)])
_trackster_eppe_plots.extend([Plot("trackster_pt", **_common)])
_trackster_eppe_plots.extend([Plot("trackster_energy", **_common)])
_trackster_eppe_plots.extend([Plot("trackster_R", **_common)])
_trackster_eppe_plots.extend([Plot("trackster_alpha", **_common)])
_trackster_eppe_plots.extend([Plot("trackster_time", **_common)])
_trackster_eppe = PlotGroup("EtaPhiPtEnergy", _trackster_eppe_plots, ncols=2)

_trackster_xyz_plots = [Plot("trackster_x", **_common)]
Expand Down
Loading