LDMX Software
EcalMipTrackingProcessor.h
Go to the documentation of this file.
1
8#ifndef EVENTPROC_ECALMIPTRACKINGPROCESSOR_H_
9#define EVENTPROC_ECALMIPTRACKINGPROCESSOR_H_
10
11// LDMX
13#include "DetDescr/EcalID.h"
14#include "Ecal/EcalHelper.h"
18#include "Framework/Configure/Parameters.h"
20
21// C++ Standard Library
22#include <algorithm>
23#include <chrono>
24#include <cmath>
25#include <iomanip>
26#include <map>
27#include <memory>
28#include <string>
29#include <utility>
30#include <vector>
31
32// ROOT
33#include "Math/Vector3D.h"
34#include "TDecompSVD.h"
35#include "TMatrixD.h"
36
37namespace ecal {
39 public:
40 typedef std::pair<ldmx::EcalID, float> CellEnergyPair;
41
42 using XYCoords = ldmx::XYCoords;
43
44 EcalMipTrackingProcessor(const std::string& name, framework::Process& process)
45 : Producer(name, process) {}
46
47 virtual ~EcalMipTrackingProcessor() = default;
48
55 void onNewRun(const ldmx::RunHeader& rh) override;
56
60 void onProcessEnd() override;
61
67 void configure(framework::config::Parameters& parameters) override;
68
69 void produce(framework::Event& event) override;
70
71 using HitData = ldmx::HitData;
72
73 private:
74 void clearProcessor();
75
76 private:
77 int nevents_{0};
78 double processing_time_{0.};
79
80 std::map<std::string, double> profiling_map_;
81
82 double linreg_radius_{0};
83
84 int n_ecal_layers_{0};
85 int n_readout_hits_{0};
86
87 // MIP tracking
99
100 std::string ecal_collection_name_{"EcalVeto"};
101 std::string ecal_pass_name_{""};
102 std::string mip_collection_name_{"EcalTrajectoryInfo"};
103 std::string mip_pass_name_{""};
104 std::string mip_result_name_{"EcalMipResult"};
105
108};
109
110} // namespace ecal
111
112#endif
Class that translates raw positions of ECal module hits into cells in a hexagonal readout.
Class that propagates tracks to the ECAL face.
Class that defines an ECal detector ID with a cell number.
Class used to encapsulate the results obtained from EcalMipTrackingProcessor.
Class that determines MIP tracking information using ECAL hit information.
Class used to encapsulate the results obtained from EcalVetoProcessor.
Base classes for all user event processing components to extend.
const ldmx::EcalGeometry * geometry_
handle to current geometry (to share with member functions)
int photon_territory_hits_
Number of hits in the photon territory.
void produce(framework::Event &event) override
Process the event and put new data products into it.
void onProcessEnd() override
Callback for the EventProcessor to take any necessary action when the processing of events finishes,...
int n_linreg_tracks_
Number of "linreg" tracks found in the event.
void onNewRun(const ldmx::RunHeader &rh) override
onNewRun is the first function called for each processor after the conditions are fully configured an...
int n_near_ph_hits_
Number of hits near the photon trajectory.
void configure(framework::config::Parameters &parameters) override
Configure the processor using the given user specified parameters.
int first_near_ph_layer_
Earliest ECal layer in which a hit is found near the projected photon trajectory.
int n_straight_tracks_
Number of "straight" tracks found in the event.
Implements an event buffer system for storing event data.
Definition Event.h:42
Class which represents the process under execution.
Definition Process.h:36
Base class for a module which produces a data product.
Producer(const std::string &name, Process &process)
Class constructor.
virtual void process(Event &event) final
Processing an event for a Producer is calling produce.
Class encapsulating parameters for configuring a processor.
Definition Parameters.h:29
Translation between real-space positions and cell IDs within the ECal.
Run-specific configuration and data stored in its own output TTree alongside the event TTree in the o...
Definition RunHeader.h:57