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.getParameter<std::string>("ecal_veto_name");
17 ecal_veto_pass_ = ps.getParameter<std::string>("ecal_veto_pass");
18 summed_det_max_ = ps.getParameter<double>("summed_det_max"); // MeV
20 ps.getParameter<double>("summed_tight_iso_max"); // MeV
22 ps.getParameter<double>("ecal_back_energy_max"); // MeV
23 n_readout_hits_max_ = ps.getParameter<int>("n_readout_hits_max");
24 shower_rms_max_ = ps.getParameter<double>("shower_rms_max");
25 shower_y_std_max_ = ps.getParameter<double>("shower_y_std_max");
26 shower_x_std_max_ = ps.getParameter<double>("shower_x_std_max");
27 max_cell_dep_max_ = ps.getParameter<double>("max_cell_dep_max"); // MeV
28 std_layer_hit_max_ = ps.getParameter<int>("std_layer_hit_max");
29 n_straight_tracks_max_ = ps.getParameter<int>("n_straight_tracks_max");
30 bdt_disc_min_ = ps.getParameter<double>("bdt_disc_min");
31 fiducial_level_ = ps.getParameter<int>("fiducial_level");
32
33 return;
34}
35
37 bool passedPreselection{false};
38 bool fiducialDecision{true};
39 const auto &ecalVeto{
41
42 // Boolean to if we skim for fiducial / nonfiducial
43 fiducialDecision = (fiducial_level_ == 0 ||
44 (fiducial_level_ == 1 && ecalVeto.getFiducial()) ||
45 (fiducial_level_ == 2 && !ecalVeto.getFiducial()));
46
47 // Boolean to check if we pass preselection
48 passedPreselection =
49 (ecalVeto.getSummedDet() < summed_det_max_) &&
50 (ecalVeto.getSummedTightIso() < summed_tight_iso_max_) &&
51 (ecalVeto.getEcalBackEnergy() < ecal_back_energy_max_) &&
52 (ecalVeto.getNReadoutHits() < n_readout_hits_max_) &&
53 (ecalVeto.getShowerRMS() < shower_rms_max_) &&
54 (ecalVeto.getYStd() < shower_y_std_max_) &&
55 (ecalVeto.getXStd() < shower_x_std_max_) &&
56 (ecalVeto.getMaxCellDep() < max_cell_dep_max_) &&
57 (ecalVeto.getStdLayerHit() < std_layer_hit_max_) &&
58 (ecalVeto.getNStraightTracks() < n_straight_tracks_max_) &&
59 (ecalVeto.getDisc() > bdt_disc_min_) && fiducialDecision;
60
61 // Tell the skimmer to keep or drop the event based on whether preselection
62 // passed
63 if (passedPreselection) {
64 ldmx_log(debug) << "This event passed preselection!";
66 } else {
68 }
69 // Add the boolean to the event
70 event.add("EcalPreselectionDecision", passedPreselection);
71}
72} // namespace recon
73
74DECLARE_PRODUCER_NS(recon, EcalPreselectionSkimmer);
Processor used to pre-select events for the ECAL studies.
#define DECLARE_PRODUCER_NS(NS, 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:41
Class which represents the process under execution.
Definition Process.h:36
Class encapsulating parameters for configuring a processor.
Definition Parameters.h:27
T getParameter(const std::string &name) const
Retrieve the parameter of the given name.
Definition Parameters.h:89
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.
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...
All classes in the ldmx-sw project use this namespace.
Definition PerfDict.cxx:45
constexpr StorageControl::Hint hint_shouldKeep
storage control hint alias for backwards compatibility
constexpr StorageControl::Hint hint_shouldDrop
storage control hint alias for backwards compatibility