LDMX Software
recon::RecoilFiducialityProcessor Class Reference

Flags events with a fiducial recoil electron, based on truth information. More...

#include <RecoilFiducialityProcessor.h>

Public Member Functions

 RecoilFiducialityProcessor (const std::string &name, framework::Process &process)
 Class constructor.
 
virtual ~RecoilFiducialityProcessor ()=default
 Class destructor.
 
void configure (framework::config::Parameters &parameters) override
 Configure the processor using the given user specified parameters.
 
void produce (framework::Event &event) override
 Create a FiducialFlag object to contain info about whether the recoil electron satisfies certain fiduciality conditions.
 
- Public Member Functions inherited from framework::Producer
 Producer (const std::string &name, Process &process)
 Class constructor.
 
virtual void beforeNewRun (ldmx::RunHeader &header)
 Handle allowing producers to modify run headers before the run begins.
 
- Public Member Functions inherited from framework::EventProcessor
 EventProcessor (const std::string &name, Process &process)
 Class constructor.
 
virtual ~EventProcessor ()
 Class destructor.
 
virtual void onNewRun (const ldmx::RunHeader &runHeader)
 Callback for the EventProcessor to take any necessary action when the run being processed changes.
 
virtual void onFileOpen (EventFile &eventFile)
 Callback for the EventProcessor to take any necessary action when a new event input ROOT file is opened.
 
virtual void onFileClose (EventFile &eventFile)
 Callback for the EventProcessor to take any necessary action when a event input ROOT file is closed.
 
virtual void onProcessStart ()
 Callback for the EventProcessor to take any necessary action when the processing of events starts, such as creating histograms.
 
virtual void onProcessEnd ()
 Callback for the EventProcessor to take any necessary action when the processing of events finishes, such as calculating job-summary quantities.
 
template<class T >
const T & getCondition (const std::string &condition_name)
 Access a conditions object for the current event.
 
TDirectory * getHistoDirectory ()
 Access/create a directory in the histogram file for this event processor to create histograms and analysis tuples.
 
void setStorageHint (framework::StorageControl::Hint hint)
 Mark the current event as having the given storage control hint from this module.
 
void setStorageHint (framework::StorageControl::Hint hint, const std::string &purposeString)
 Mark the current event as having the given storage control hint from this module and the given purpose string.
 
int getLogFrequency () const
 Get the current logging frequency from the process.
 
int getRunNumber () const
 Get the run number from the process.
 
std::string getName () const
 Get the processor name.
 
void createHistograms (const std::vector< framework::config::Parameters > &histos)
 Internal function which is used to create histograms passed from the python configuration @parma histos vector of Parameters that configure histograms to create.
 

Private Attributes

double min_p_mag_
 Minimum recoil electron momentum at production.
 
int min_tracker_hits_
 Minimum number of recoil electron hits in the recoil tracker.
 
std::string input_pass_name_
 The pass name of the input collections.
 
std::string ecal_collection_
 The name of the ecal collection.
 
std::string hcal_collection_
 The name of the hcal collection.
 
std::string recoil_collection_
 The name of the recoil tracker collection.
 
std::string output_collection_
 The name of the output collection.
 
bool inverse_skim_ {false}
 Inverse option for skimming.
 

Additional Inherited Members

- Static Public Member Functions inherited from framework::EventProcessor
static void declare (const std::string &classname, int classtype, EventProcessorMaker *)
 Internal function which is part of the PluginFactory machinery.
 
- Static Public Attributes inherited from framework::Producer
static const int CLASSTYPE {1}
 Constant used to track EventProcessor types by the PluginFactory.
 
- Protected Member Functions inherited from framework::EventProcessor
void abortEvent ()
 Abort the event immediately.
 
- Protected Attributes inherited from framework::EventProcessor
HistogramHelper histograms_
 Interface class for making and filling histograms.
 
NtupleManagerntuple_ {NtupleManager::getInstance()}
 Manager for any ntuples.
 
logging::logger theLog_
 The logger for this EventProcessor.
 

Detailed Description

Flags events with a fiducial recoil electron, based on truth information.

Note

Definition at line 29 of file RecoilFiducialityProcessor.h.

Constructor & Destructor Documentation

◆ RecoilFiducialityProcessor()

recon::RecoilFiducialityProcessor::RecoilFiducialityProcessor ( const std::string & name,
framework::Process & process )
inline

Class constructor.

Definition at line 34 of file RecoilFiducialityProcessor.h.

36 : framework::Producer(name, process) {}
Base class for a module which produces a data product.

Member Function Documentation

◆ configure()

void recon::RecoilFiducialityProcessor::configure ( framework::config::Parameters & parameters)
overridevirtual

Configure the processor using the given user specified parameters.

Parameters
parametersSet of parameters used to configure this processor.

Reimplemented from framework::EventProcessor.

Definition at line 11 of file RecoilFiducialityProcessor.cxx.

12 {
13 min_p_mag_ = parameters.getParameter<double>("min_p_mag");
14 min_tracker_hits_ = parameters.getParameter<int>("min_tracker_hits");
15 input_pass_name_ = parameters.getParameter<std::string>("input_pass_name");
16 ecal_collection_ = parameters.getParameter<std::string>("ecal_collection");
17 hcal_collection_ = parameters.getParameter<std::string>("hcal_collection");
19 parameters.getParameter<std::string>("recoil_collection");
21 parameters.getParameter<std::string>("output_collection");
22 inverse_skim_ = parameters.getParameter<bool>("inverse_skim");
23}
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.
double min_p_mag_
Minimum recoil electron momentum at production.
std::string input_pass_name_
The pass name of the input collections.

References ecal_collection_, hcal_collection_, input_pass_name_, inverse_skim_, min_p_mag_, min_tracker_hits_, output_collection_, and recoil_collection_.

◆ produce()

void recon::RecoilFiducialityProcessor::produce ( framework::Event & event)
overridevirtual

Create a FiducialFlag object to contain info about whether the recoil electron satisfies certain fiduciality conditions.

Parameters
eventThe event to run the fiduciality check on.

Implements framework::Producer.

Definition at line 25 of file RecoilFiducialityProcessor.cxx.

25 {
26 // Get the collection of simulated particles from the event
27 auto particleMap{
28 event.getMap<int, ldmx::SimParticle>("SimParticles", input_pass_name_)};
29
30 // Search for the recoil electron
31 auto [recoil_track_id, recoil_electron] = Analysis::getRecoil(particleMap);
32
33 // Get the collection of simulated Ecal hits from the event.
34 const std::vector<ldmx::SimCalorimeterHit> ecal_sim_hits =
35 event.getCollection<ldmx::SimCalorimeterHit>(ecal_collection_,
37
38 // Get the collection of simulated Ecal hits from the event.
39 const std::vector<ldmx::SimCalorimeterHit> hcal_sim_hits =
40 event.getCollection<ldmx::SimCalorimeterHit>(hcal_collection_,
42
43 // Get the collection of simulated tracker hits from the event.
44 const std::vector<ldmx::SimTrackerHit> recoil_sim_hits =
45 event.getCollection<ldmx::SimTrackerHit>(recoil_collection_,
47
48 // Loop through the Ecal hits and check if the recoil electron is
49 // associated with any of them.
50 bool has_ecal_hit = false;
51 int ecal_hit_id = -1;
52 for (const ldmx::SimCalorimeterHit &sim_hit : ecal_sim_hits) {
53 for (int iContrib = 0; iContrib < sim_hit.getNumberOfContribs();
54 ++iContrib) {
55 ldmx::SimCalorimeterHit::Contrib contrib = sim_hit.getContrib(iContrib);
56
57 if (contrib.trackID == recoil_track_id) {
58 has_ecal_hit = true;
59 ecal_hit_id = sim_hit.getID();
60 }
61 }
62 }
63
64 // Loop through the Hcal hits and check if the recoil electron is
65 // associated with any of them.
66 bool has_hcal_hit = false;
67 int hcal_hit_id = -1;
68 for (const ldmx::SimCalorimeterHit &sim_hit : hcal_sim_hits) {
69 for (int iContrib = 0; iContrib < sim_hit.getNumberOfContribs();
70 ++iContrib) {
71 ldmx::SimCalorimeterHit::Contrib contrib = sim_hit.getContrib(iContrib);
72
73 if (contrib.trackID == recoil_track_id) {
74 has_hcal_hit = true;
75 hcal_hit_id = sim_hit.getID();
76 }
77 }
78 }
79
80 // Loop through the recoil tracker hits and count how many
81 // the recoil electron is associated with
82 std::set<int> layers_hit;
83 for (const ldmx::SimTrackerHit &sim_hit : recoil_sim_hits) {
84 if (sim_hit.getTrackID() == recoil_track_id) {
85 // int sensorID = tracking::sim::utils::getSensorID(sim_hit);
86 if ((sim_hit.getTime() < 0.8) && (sim_hit.getMomentum()[2] > 0)) {
87 layers_hit.insert(sim_hit.getLayerID());
88 }
89 }
90 }
91 bool has_min_tracker_hits = false;
92 if (layers_hit.size() >= min_tracker_hits_) {
93 has_min_tracker_hits = true;
94 }
95
96 // Checking if the recoil electron energy is > min energy
97 bool has_min_energy = false;
98 if (recoil_electron->getEnergy() >= min_p_mag_) {
99 has_min_energy = true;
100 }
101
102 // Configure outputs
103 bool is_fiducial = has_min_energy && has_min_tracker_hits && has_ecal_hit;
104
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;
109 int fiducial_flag =
110 mask_tracker_E | mask_tracker_hits | mask_ecal | mask_hcal;
111
113 flag.setFiducialFlag(fiducial_flag, 6);
114 flag.setAlgoVar(0, recoil_electron->getEnergy());
115 flag.setAlgoVar(1, min_p_mag_);
116 flag.setAlgoVar(2, layers_hit.size());
118 flag.setAlgoVar(4, ecal_hit_id);
119 flag.setAlgoVar(5, hcal_hit_id);
120
121 flag.setIsFiducial(is_fiducial);
122 flag.setHasMinEnergy(has_min_energy);
123 flag.setHasMinTrackerHits(has_min_tracker_hits);
124 flag.setHasEcalHit(has_ecal_hit);
125 flag.setHasHcalHit(has_hcal_hit);
126
127 event.add(output_collection_, flag);
128
129 // Tell the skimmer to keep or drop the event based on whether there
130 // were recoil electron was fiducial.
131
132 if (!inverse_skim_) {
133 if (is_fiducial) {
135 } else {
137 }
138 } else {
139 if (is_fiducial) {
141 } else {
143 }
144 }
145}
std::tuple< int, const ldmx::SimParticle * > getRecoil(const std::map< int, ldmx::SimParticle > &particleMap)
Find and return the sim particle associated with the recoil electron.
void setStorageHint(framework::StorageControl::Hint hint)
Mark the current event as having the given storage control hint from this module.
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.
Definition SimParticle.h:23
Represents a simulated tracker hit in the simulation.
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

References ecal_collection_, hcal_collection_, framework::hint_shouldDrop, framework::hint_shouldKeep, input_pass_name_, inverse_skim_, min_p_mag_, min_tracker_hits_, output_collection_, recoil_collection_, ldmx::FiducialFlag::setAlgoVar(), ldmx::FiducialFlag::setFiducialFlag(), ldmx::FiducialFlag::setHasEcalHit(), ldmx::FiducialFlag::setHasHcalHit(), ldmx::FiducialFlag::setHasMinEnergy(), ldmx::FiducialFlag::setHasMinTrackerHits(), ldmx::FiducialFlag::setIsFiducial(), framework::EventProcessor::setStorageHint(), and ldmx::SimCalorimeterHit::Contrib::trackID.

Member Data Documentation

◆ ecal_collection_

std::string recon::RecoilFiducialityProcessor::ecal_collection_
private

The name of the ecal collection.

Definition at line 69 of file RecoilFiducialityProcessor.h.

Referenced by configure(), and produce().

◆ hcal_collection_

std::string recon::RecoilFiducialityProcessor::hcal_collection_
private

The name of the hcal collection.

Definition at line 72 of file RecoilFiducialityProcessor.h.

Referenced by configure(), and produce().

◆ input_pass_name_

std::string recon::RecoilFiducialityProcessor::input_pass_name_
private

The pass name of the input collections.

Definition at line 66 of file RecoilFiducialityProcessor.h.

Referenced by configure(), and produce().

◆ inverse_skim_

bool recon::RecoilFiducialityProcessor::inverse_skim_ {false}
private

Inverse option for skimming.

Definition at line 81 of file RecoilFiducialityProcessor.h.

81{false};

Referenced by configure(), and produce().

◆ min_p_mag_

double recon::RecoilFiducialityProcessor::min_p_mag_
private

Minimum recoil electron momentum at production.

Definition at line 60 of file RecoilFiducialityProcessor.h.

Referenced by configure(), and produce().

◆ min_tracker_hits_

int recon::RecoilFiducialityProcessor::min_tracker_hits_
private

Minimum number of recoil electron hits in the recoil tracker.

Definition at line 63 of file RecoilFiducialityProcessor.h.

Referenced by configure(), and produce().

◆ output_collection_

std::string recon::RecoilFiducialityProcessor::output_collection_
private

The name of the output collection.

Definition at line 78 of file RecoilFiducialityProcessor.h.

Referenced by configure(), and produce().

◆ recoil_collection_

std::string recon::RecoilFiducialityProcessor::recoil_collection_
private

The name of the recoil tracker collection.

Definition at line 75 of file RecoilFiducialityProcessor.h.

Referenced by configure(), and produce().


The documentation for this class was generated from the following files: