LDMX Software
ClusterTripletMaker.cxx
2
3#include <algorithm>
4
5namespace tools {
6
7ClusterTripletMaker::ClusterTripletMaker(const std::string& name,
8 framework::Process& process)
9 : Analyzer(name, process) {}
10
11void ClusterTripletMaker::configure(framework::config::Parameters& ps) {
12 pass_name_ = ps.get<std::string>("pass_name");
13 cluster_input_collections_ =
14 ps.get<std::vector<std::string>>("cluster_input_collections");
15 output_file_ = ps.get<std::string>("output_file");
16 verbose_ = ps.get<int>("verbosity");
17
18 if (verbose_) {
19 ldmx_log(info) << "In ClusterTripletMaker: configure done!"
20 << "\nInput collection 1: "
21 << cluster_input_collections_.at(0)
22 << "\nInput collection 2: "
23 << cluster_input_collections_.at(1)
24 << "\nInput collection 3: "
25 << cluster_input_collections_.at(2)
26 << "\nPass name: " << pass_name_
27 << "\nOutput file: " << output_file_
28 << "\nVerbosity: " << verbose_;
29 }
30 return;
31}
32
33void ClusterTripletMaker::onProcessStart() {
34 output_stream_.open(output_file_);
35
36 if (verbose_) {
37 ldmx_log(info) << "Opened output file " << output_file_;
38 }
39 return;
40}
41
42void ClusterTripletMaker::analyze(const framework::Event& event) {
43 const auto clusters_pad1{event.getCollection<ldmx::TrigScintCluster>(
44 cluster_input_collections_.at(0), pass_name_)};
45 const auto clusters_pad2{event.getCollection<ldmx::TrigScintCluster>(
46 cluster_input_collections_.at(1), pass_name_)};
47 const auto clusters_pad3{event.getCollection<ldmx::TrigScintCluster>(
48 cluster_input_collections_.at(2), pass_name_)};
49
50 const size_t num_clusters = std::min( //in the event of multiple clusters in
51 {clusters_pad1.size(), //one pad in one event, select that with the lowest
52 clusters_pad2.size(), //centroid value for simplicity (not always accurate
53 clusters_pad3.size()}); //unfortunately)
54
55 ldmx_log(debug) << "Event " << event.getEventNumber() << " has " << clusters_pad1.size()
56 << ", " << clusters_pad2.size() << ", " << clusters_pad3.size()
57 << " clusters in pads 1, 2, and 3.";
58
59 for (size_t cluster_index = 0; cluster_index < num_clusters; ++cluster_index) {
60 const int event_number = event.getEventNumber();
61 const float pad1_centroid = clusters_pad1.at(cluster_index).getCentroid();
62 const float pad2_centroid = clusters_pad2.at(cluster_index).getCentroid();
63 const float pad3_centroid = clusters_pad3.at(cluster_index).getCentroid();
64
65 //write to output file
66 output_stream_ << event_number << " " << pad1_centroid << " "
67 << pad2_centroid << " " << pad3_centroid << " " << "\n";
68 }
69
70 if (verbose_) {
71 for (size_t cluster_index = 1; cluster_index < clusters_pad1.size();
72 ++cluster_index) {
73 ldmx_log(info) << "Event " << event.getEventNumber()
74 << ", extra cluster in pad 1: "
75 << clusters_pad1.at(cluster_index).getCentroid();
76 }
77
78 for (size_t cluster_index = 1; cluster_index < clusters_pad2.size();
79 ++cluster_index) {
80 ldmx_log(info) << "Event " << event.getEventNumber()
81 << ", extra cluster in pad 2: "
82 << clusters_pad2.at(cluster_index).getCentroid();
83 }
84
85 for (size_t cluster_index = 1; cluster_index < clusters_pad3.size();
86 ++cluster_index) {
87 ldmx_log(info) << "Event " << event.getEventNumber()
88 << ", extra cluster in pad 3: "
89 << clusters_pad3.at(cluster_index).getCentroid();
90 }
91 }
92 return;
93}
94
95void ClusterTripletMaker::onProcessEnd() {
96 if (output_stream_.is_open()) {
97 output_stream_.close();
98 }
99
100 if (verbose_) {
101 ldmx_log(info) << "Closed output file " << output_file_;
102 }
103 return;
104}
105
106} // namespace tools
107
Writes cluster combinations to text file.
#define DECLARE_ANALYZER(CLASS)
Macro which allows the framework to construct an analyzer given its name during configuration.
Implements an event buffer system for storing event data.
Definition Event.h:42
Class which represents the process under execution.
Definition Process.h:37
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
Stores cluster information from the trigger scintillator pads.
Write trigger scintillator cluster triplets to a text file.