13 ps.getParameter<std::string>(
"tagger_track_collection",
"TaggerTracks");
15 ps.getParameter<std::string>(
"recoil_track_collection",
"RecoilTracks");
17 ps.getParameter<std::string>(
"input_tagger_pass_name",
"");
19 ps.getParameter<std::string>(
"input_recoil_pass_name",
"");
20 output_collection_ = ps.getParameter<std::string>(
"output_collection",
"");
22 max_d0_ = ps.getParameter<
double>(
"max_d0", 10.);
23 max_z0_ = ps.getParameter<
double>(
"max_z0", 40.);
33 auto tagger_track_collection{
event.getCollection<
ldmx::Track>(
35 auto recoil_track_collection{
event.getCollection<
ldmx::Track>(
38 bool passes_veto{
false}, passes_tagger_veto{
false}, passes_recoil_veto{
false};
42 for (
const auto& trk : tagger_track_collection) {
43 if ((std::abs(trk.getD0()) <
max_d0_) &&
44 (std::abs(trk.getZ0()) <
max_z0_)) {
45 auto charge_over_momentum = trk.getQoP();
46 auto tagger_momentum = 1000. / std::abs(charge_over_momentum);
47 float chi2_per_ndf = trk.getChi2() / trk.getNdf();
52 passes_tagger_veto =
true;
57 ldmx_log(info) <<
"Tagger requirements passed for " << tagger_n <<
" tracks";
61 for (
const auto& trk : recoil_track_collection) {
62 float chi2_per_ndf = trk.getChi2() / trk.getNdf();
63 if ((std::abs(trk.getD0()) <
max_d0_) &&
64 (std::abs(trk.getZ0()) <
max_z0_) &&
74 ldmx_log(info) <<
"Recoil requirements passed for " << recoil_n <<
" tracks";
77 passes_recoil_veto =
true;
80 passes_veto = passes_tagger_veto && passes_recoil_veto;
87 event.add(output_collection_, result);
91 ldmx_log(info) <<
"Tracker veto passed, skim will keep the event";
94 ldmx_log(info) <<
"Tracker veto failed";
99 ldmx_log(info) <<
"Inverse tracker veto passed";
102 ldmx_log(info) <<
"Inverse tracker veto failed, skim will keep the event";
#define DECLARE_PRODUCER_NS(NS, CLASS)
Macro which allows the framework to construct a producer given its name during configuration.
Class that flags events if they pass the tracker veto.
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.
Implementation of a track object.
Class that holds reco-level tracking veto decision.
void setRecoilVetoResult(bool passes_recoil_veto)
Sets whether the Recoil Tracker veto was passed or not.
void setTaggerVetoResult(bool passes_tagger_veto)
Sets whether the Tagger Tracker veto was passed or not.
void setVetoResult(bool passes_veto)
Sets whether the Tracker veto was passed or not.
std::string input_tagger_pass_name_
The pass name of the input tagger collections.
float max_d0_
Maximum allowed transverse impact parameter (d0) for tracks.
int min_recoil_n_
Minimum number of recoil tracks required.
int min_tagger_hits_
Min number of hits for tagger tracks required.
void configure(framework::config::Parameters ¶meters) override
Configure the processor using the given user-specified parameters.
void produce(framework::Event &event) override
Process an event and apply tracker veto selection criteria.
bool inverse_skim_
Boolean flag to invert the selection criteria for skimming purposes.
float max_z0_
Maximum allowed longitudinal impact parameter (z0) for tracks.
std::string input_recoil_pass_name_
The pass name of the input recoil collections.
int max_recoil_n_
Maximum number of recoil tracks allowed.
std::string recoil_track_collection_name_
The name of the recoil track collection.
int min_recoil_hits_
Min number of hits for recoil tracks required.
float min_tagger_momentum_
Minimum required momentum for tagger tracks.
std::string tagger_track_collection_name_
The name of the tagger track collection.
float max_chi2_per_ndf_
Max chi2/ndf required for tracks.
constexpr StorageControl::Hint hint_shouldKeep
storage control hint alias for backwards compatibility
constexpr StorageControl::Hint hint_shouldDrop
storage control hint alias for backwards compatibility
The measurement calibrator can be a function or a class/struct able to retrieve the sim hits containe...