LDMX Software
EcalPreselectionSkimmer.cxx
Go to the documentation of this file.
1
8
9namespace recon {
10
12 framework::Process &process)
13 : framework::Producer(name, process) {}
14
16 ecal_veto_name_ = ps.get<std::string>("ecal_veto_name");
17 ecal_veto_pass_ = ps.get<std::string>("ecal_veto_pass");
18 ecal_mip_name_ = ps.get<std::string>("ecal_mip_name");
19 ecal_mip_pass_ = ps.get<std::string>("ecal_mip_pass");
20 summed_det_max_ = ps.get<double>("summed_det_max"); // MeV
21 summed_tight_iso_max_ = ps.get<double>("summed_tight_iso_max"); // MeV
22 ecal_back_energy_max_ = ps.get<double>("ecal_back_energy_max"); // MeV
23 n_readout_hits_max_ = ps.get<int>("n_readout_hits_max");
24 shower_rms_max_ = ps.get<double>("shower_rms_max");
25 shower_y_std_max_ = ps.get<double>("shower_y_std_max");
26 shower_x_std_max_ = ps.get<double>("shower_x_std_max");
27 max_cell_dep_max_ = ps.get<double>("max_cell_dep_max"); // MeV
28 std_layer_hit_max_ = ps.get<int>("std_layer_hit_max");
29 n_straight_tracks_max_ = ps.get<int>("n_straight_tracks_max");
30 bdt_disc_min_ = ps.get<double>("bdt_disc_min");
31 fiducial_level_ = ps.get<int>("fiducial_level");
32
33 return;
34}
35
37 bool passed_preselection{false};
38 bool fiducial_decision{true};
39 const auto &ecal_veto{
41 const auto &mip_result{
43 // Boolean to if we skim for fiducial / nonfiducial
44 fiducial_decision = (fiducial_level_ == 0 ||
45 (fiducial_level_ == 1 && ecal_veto.getFiducial()) ||
46 (fiducial_level_ == 2 && !ecal_veto.getFiducial()));
47
48 // Boolean to check if we pass preselection
49 passed_preselection =
50 (ecal_veto.getSummedDet() < summed_det_max_) &&
51 (ecal_veto.getSummedTightIso() < summed_tight_iso_max_) &&
52 (ecal_veto.getEcalBackEnergy() < ecal_back_energy_max_) &&
53 (ecal_veto.getNReadoutHits() < n_readout_hits_max_) &&
54 (ecal_veto.getShowerRMS() < shower_rms_max_) &&
55 (ecal_veto.getYStd() < shower_y_std_max_) &&
56 (ecal_veto.getXStd() < shower_x_std_max_) &&
57 (ecal_veto.getMaxCellDep() < max_cell_dep_max_) &&
58 (ecal_veto.getStdLayerHit() < std_layer_hit_max_) &&
59 (mip_result.getNStraightTracks() < n_straight_tracks_max_) &&
60 (ecal_veto.getDisc() > bdt_disc_min_) && fiducial_decision;
61
62 // Tell the skimmer to keep or drop the event based on whether preselection
63 // passed
64 if (passed_preselection) {
65 ldmx_log(debug) << "This event passed preselection!";
67 } else {
69 }
70 // Add the boolean to the event
71 event.add("EcalPreselectionDecision", passed_preselection);
72}
73} // namespace recon
74
Processor used to pre-select events for the ECAL studies.
#define DECLARE_PRODUCER(CLASS)
Macro which allows the framework to construct a producer given its name during configuration.
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.
Definition Event.h:42
Class which represents the process under execution.
Definition Process.h:36
Class encapsulating parameters for configuring a processor.
Definition Parameters.h:29
const T & get(const std::string &name) const
Retrieve the parameter of the given name.
Definition Parameters.h:78
int n_straight_tracks_max_
Max value for num straight tracks.
double ecal_back_energy_max_
Max value for ecal back energy.
virtual void produce(framework::Event &event) final
Run the processor and select events that pass pre-selection in ECAL.
int std_layer_hit_max_
Max value for std layer hits_.
std::string ecal_mip_name_
Collection Name for mip result object.
double bdt_disc_min_
Min value for the BDT disc variable.
std::string ecal_veto_name_
Collection Name for veto object.
int n_readout_hits_max_
Max value for num readout hits_.
double summed_det_max_
Max value for summed det.
virtual void configure(framework::config::Parameters &) final
Callback for the EventProcessor to configure itself from the given set of parameters.
double shower_x_std_max_
Max value for shower rms in X.
double summed_tight_iso_max_
Max value for summed tigh iso.
EcalPreselectionSkimmer(const std::string &name, framework::Process &process)
Constructor.
double shower_y_std_max_
Max value for shower rms in Y.
double shower_rms_max_
Max value for shower rms.
double max_cell_dep_max_
Max value for maximal cell deposition.
std::string ecal_veto_pass_
Pass Name for veto object.
int fiducial_level_
Level of interest in fiducial events 0: don't care if it's fiducial or not, 1: keep fiducial events o...
std::string ecal_mip_pass_
Pass Name for mip result object.
All classes in the ldmx-sw project use this namespace.
constexpr StorageControl::Hint HINT_SHOULD_DROP
storage control hint alias for backwards compatibility
constexpr StorageControl::Hint HINT_SHOULD_KEEP
storage control hint alias for backwards compatibility