13 min_p_mag_ = parameters.getParameter<
double>(
"min_p_mag");
19 parameters.getParameter<std::string>(
"recoil_collection");
21 parameters.getParameter<std::string>(
"output_collection");
22 inverse_skim_ = parameters.getParameter<
bool>(
"inverse_skim");
31 auto [recoil_track_id, recoil_electron] = Analysis::getRecoil(particleMap);
34 const std::vector<ldmx::SimCalorimeterHit> ecal_sim_hits =
39 const std::vector<ldmx::SimCalorimeterHit> hcal_sim_hits =
44 const std::vector<ldmx::SimTrackerHit> recoil_sim_hits =
50 bool has_ecal_hit =
false;
53 for (
int iContrib = 0; iContrib < sim_hit.getNumberOfContribs();
57 if (contrib.
trackID == recoil_track_id) {
59 ecal_hit_id = sim_hit.getID();
66 bool has_hcal_hit =
false;
69 for (
int iContrib = 0; iContrib < sim_hit.getNumberOfContribs();
73 if (contrib.
trackID == recoil_track_id) {
75 hcal_hit_id = sim_hit.getID();
82 std::set<int> layers_hit;
84 if (sim_hit.getTrackID() == recoil_track_id) {
86 if ((sim_hit.getTime() < 0.8) && (sim_hit.getMomentum()[2] > 0)) {
87 layers_hit.insert(sim_hit.getLayerID());
91 bool has_min_tracker_hits =
false;
93 has_min_tracker_hits =
true;
97 bool has_min_energy =
false;
98 if (recoil_electron->getEnergy() >=
min_p_mag_) {
99 has_min_energy =
true;
103 bool is_fiducial = has_min_energy && has_min_tracker_hits && has_ecal_hit;
105 int mask_tracker_E = has_min_energy << 0;
106 int mask_tracker_hits = has_min_tracker_hits << 1;
107 int mask_ecal = has_ecal_hit << 2;
108 int mask_hcal = has_hcal_hit << 3;
110 mask_tracker_E | mask_tracker_hits | mask_ecal | mask_hcal;
114 flag.
setAlgoVar(0, recoil_electron->getEnergy());
#define DECLARE_PRODUCER_NS(NS, CLASS)
Macro which allows the framework to construct a producer given its name during configuration.
Class that flags events with a fiducial recoil electron.
void setStorageHint(framework::StorageControl::Hint hint)
Mark the current event as having the given storage control hint from this module.
Implements an event buffer system for storing event data.
Class encapsulating parameters for configuring a processor.
Holds truth-level fiduciality flags on the signal recoil electron.
void setHasHcalHit(bool has_hcal_hit)
Set hcal hit flag.
void setAlgoVar(int element, double value)
Set an algorithm variable.
void setHasMinTrackerHits(bool has_min_tracker_hits)
Set tracker hit flag.
void setIsFiducial(bool is_fiducial)
Set fiduciality flag.
void setFiducialFlag(int fiducial_flag, int nvar)
Set fiduciality bit mask.
void setHasEcalHit(bool has_ecal_hit)
Set ecal hit flag.
void setHasMinEnergy(bool has_min_energy)
Set recoil min.
Stores simulated calorimeter hit information.
Class representing a simulated particle.
Represents a simulated tracker hit in the simulation.
bool inverse_skim_
Inverse option for skimming.
std::string ecal_collection_
The name of the ecal collection.
std::string hcal_collection_
The name of the hcal collection.
std::string output_collection_
The name of the output collection.
std::string recoil_collection_
The name of the recoil tracker collection.
int min_tracker_hits_
Minimum number of recoil electron hits in the recoil tracker.
void configure(framework::config::Parameters ¶meters) override
Configure the processor using the given user specified parameters.
double min_p_mag_
Minimum recoil electron momentum at production.
void produce(framework::Event &event) override
Create a FiducialFlag object to contain info about whether the recoil electron satisfies certain fidu...
std::string input_pass_name_
The pass name of the input collections.
constexpr StorageControl::Hint hint_shouldKeep
storage control hint alias for backwards compatibility
constexpr StorageControl::Hint hint_shouldDrop
storage control hint alias for backwards compatibility
Information about a contribution to the hit in the associated cell.
int trackID
track ID of this contributor