LDMX Software
Vertexer.h
1#ifndef TRACKING_RECO_VERTEXER_H_
2#define TRACKING_RECO_VERTEXER_H_
3
4//--- Framework ---//
5#include "Framework/Configure/Parameters.h"
7
8// --- Tracking --- //
9#include "Tracking/Event/Track.h"
10#include "Tracking/Sim/BFieldXYZUtils.h"
11
12// --- ACTS --- //
13
14// Utils and definitions
15
16// Propagator
17
18#include "Acts/Propagator/Propagator.hpp"
19#include "Tracking/EigenStepper.h" // IWYU pragma: keep
20// #include "Acts/Propagator/Navigator.hpp"
21// #include "Acts/Propagator/StandardAborters.hpp"
22
23// Vertexing
24
25// Magfield
26
27#include "Acts/MagneticField/ConstantBField.hpp"
28#include "Acts/MagneticField/MagneticFieldContext.hpp"
29
30// Geometry
31
32// Propagator with void navigator
33#include "Acts/Propagator/VoidNavigator.hpp"
34using VoidPropagator =
35 Acts::Propagator<Acts::EigenStepper<>, Acts::VoidNavigator>;
36
37namespace tracking {
38namespace reco {
39
41 public:
42 Vertexer(const std::string& name, framework::Process& process);
43
44 virtual ~Vertexer() = default;
45
46 void onProcessStart() override;
47 void onProcessEnd() override;
48
49 void configure(framework::config::Parameters& parameters) override;
50
51 void produce(framework::Event& event) override;
52
53 void taggerRecoilMonitoring(const std::vector<ldmx::Track>& tagger_tracks,
54 const std::vector<ldmx::Track>& recoil_tracks);
55
56 private:
57 Acts::MagneticFieldContext bctx_;
58
59 int nevents_{0};
60 int nvertices_{0};
61 int nreconstructable_{0};
62 std::shared_ptr<InterpolatedMagneticField3> sp_interpolated_b_field_;
63 std::shared_ptr<Acts::ConstantBField> b_field_;
64
66 std::string field_map_;
67
68 std::string trk_c_name_1_{"TaggerTracks"};
69 std::string trk_c_name_2_{"RecoilTracks"};
70 std::string input_pass_name_{""};
71 std::shared_ptr<VoidPropagator> propagator_;
72
73 // Monitoring histograms
74 TH1F* h_delta_d0_;
75 TH1F* h_delta_z0_;
76 TH1F* h_delta_p_;
77
78 TH1F* h_delta_phi_;
79 TH1F* h_delta_theta_;
80
81 TH2F* h_delta_d0_vs_recoil_p_;
82 TH2F* h_delta_z0_vs_recoil_p_;
83
84 TH2F* h_td0_vs_rd0_;
85 TH2F* h_tz0_vs_rz0_;
86};
87
88} // namespace reco
89} // namespace tracking
90
91#endif
The only reason this file exists is to silence an annoying maybe-uninitialized warning that originate...
Base classes for all user event processing components to extend.
Implements an event buffer system for storing event data.
Definition Event.h:40
Class which represents the process under execution.
Definition Process.h:34
Base class for a module which produces a data product.
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:26
void produce(framework::Event &event) override
Process the event and put new data products into it.
Definition Vertexer.cxx:90
void onProcessEnd() override
Callback for the EventProcessor to take any necessary action when the processing of events finishes,...
Definition Vertexer.cxx:176
void onProcessStart() override
Callback for the EventProcessor to take any necessary action when the processing of events starts,...
Definition Vertexer.cxx:22
std::string field_map_
Path to the magnetic field map.
Definition Vertexer.h:66
void configure(framework::config::Parameters &parameters) override
Callback for the EventProcessor to configure itself from the given set of parameters.
Definition Vertexer.cxx:81
The measurement calibrator can be a function or a class/struct able to retrieve the sim hits containe...