LDMX Software
ElectronCounter.cxx
1#include "Recon/ElectronCounter.h"
2
3namespace recon {
4
5ElectronCounter::ElectronCounter(const std::string& name,
6 framework::Process& process)
7 : framework::Producer(name, process) {}
8
10
12 inputColl_ = parameters.getParameter<std::string>("input_collection");
13 inputPassName_ = parameters.getParameter<std::string>("input_pass_name");
14 outputColl_ = parameters.getParameter<std::string>("output_collection");
15 nElectronsSim_ = parameters.getParameter<int>("simulated_electron_number");
17 parameters.getParameter<bool>("use_simulated_electron_number");
18
19 /* // can rehash this for cluster vs track counting
20 if (mode_ == 0) {
21 algoName_ = "LayerSumTrig";
22 } else if (mode_ == 1) {
23 algoName_ = "CenterTower";
24 }
25 */
26 ldmx_log(debug) << "ElectronCounter is using parameters: "
27 << " \n\tinput_collection = " << inputColl_
28 << " \n\tinput_pass_name = " << inputPassName_
29 << " \n\toutput_collection = " << outputColl_
30 << " \n\tsimulated_electron_number = " << nElectronsSim_
31 << " \n\tuse_simulated_electron_number = "
33}
34
36 int nElectrons = -1;
37
39 if (nElectronsSim_ < 0) {
40 ldmx_log(fatal)
41 << "Can't use unset number of simulated electrons as electron count! "
42 "Set with 'simulated_electron_number' ";
43 return;
44 }
45 // then we just set it equal to simulated number and we're done
46 nElectrons = nElectronsSim_;
47 }
48 // Check if the collection of trig scint tracks exist. If not,
49 // don't bother processing the event.
50 else {
51 if (!event.exists(inputColl_, inputPassName_)) {
52 ldmx_log(fatal) << "Attemping to use non-existing input collection "
53 << inputColl_ << "_" << inputPassName_
54 << " to count electrons! Exiting.";
55 return;
56 }
57 // TODO, if cluster counting is needed: have two functions, one with tracks,
58 // one with clusters, and just call one or the other.
59
60 // Get the collection of TS tracks
61 const std::vector<ldmx::TrigScintTrack> tracks =
62 event.getCollection<ldmx::TrigScintTrack>(inputColl_, inputPassName_);
63
64 nElectrons = tracks.size();
65 ldmx_log(debug) << "Found " << tracks.size()
66 << " electrons (tracks) using input collection "
67 << inputColl_ << "_" << inputPassName_;
68 }
69 // add number of electrons to event header. allow for it to be unset (-1)
70 event.getEventHeader().setIntParameter("nElectrons", nElectrons);
71 event.setElectronCount(nElectrons);
72}
73} // namespace recon
74
75DECLARE_PRODUCER_NS(recon, ElectronCounter)
#define DECLARE_PRODUCER_NS(NS, CLASS)
Macro which allows the framework to construct a producer given its name during configuration.
Implements an event buffer system for storing event data.
Definition Event.h:41
bool exists(const std::string &name, const std::string &passName="", bool unique=true) const
Check for the existence of an object or collection with the given name and pass name in the event.
Definition Event.cxx:92
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
Represents a track of trigger scintillator clusters.
void configure(framework::config::Parameters &parameters) override
Configure the processor using the given user specified parameters.
void produce(framework::Event &event) override
Process the event and put new data products into it.
std::string inputColl_
The name of the input collection used for counting electrons.
int nElectronsSim_
The number of electrons actually simulated in the event.
ElectronCounter(const std::string &name, framework::Process &process)
Constructor.
int useSimElectronCount_
Use the number of electrons actually simulated in the event as the electron count.
std::string outputColl_
The name of the output collection used to save some electron counting variables.
std::string inputPassName_
The pass name of the input collection used for counting electrons.
All classes in the ldmx-sw project use this namespace.
Definition PerfDict.cxx:45