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#include "Tracking/Sim/TrackingUtils.h"
12
13// --- ACTS --- //
14
15// Utils and definitions
16
17#include "Acts/Definitions/Common.hpp"
18#include "Acts/Definitions/Units.hpp"
19
20// Propagator
21
22#include "Acts/Propagator/Propagator.hpp"
24// #include "Acts/Propagator/Navigator.hpp"
25// #include "Acts/Propagator/StandardAborters.hpp"
26
27// Vertexing
28
29#include "Acts/Vertexing/FullBilloirVertexFitter.hpp"
30#include "Acts/Vertexing/HelicalTrackLinearizer.hpp"
31#include "Acts/Vertexing/Vertex.hpp"
32
33// Magfield
34
35#include "Acts/MagneticField/ConstantBField.hpp"
36#include "Acts/MagneticField/MagneticFieldContext.hpp"
37#include "Acts/MagneticField/MagneticFieldProvider.hpp"
38
39// Geometry
40#include "Acts/Surfaces/PerigeeSurface.hpp"
41
42// Propagator with void navigator
43#include "Acts/Propagator/VoidNavigator.hpp"
44using VoidPropagator =
45 Acts::Propagator<Acts::EigenStepper<>, Acts::VoidNavigator>;
46
47namespace tracking {
48namespace reco {
49
51 public:
52 Vertexer(const std::string& name, framework::Process& process);
53
54 virtual ~Vertexer() = default;
55
56 void onProcessStart() override;
57 void onProcessEnd() override;
58
59 void configure(framework::config::Parameters& parameters) override;
60
61 void produce(framework::Event& event) override;
62
63 void taggerRecoilMonitoring(const std::vector<ldmx::Track>& tagger_tracks,
64 const std::vector<ldmx::Track>& recoil_tracks);
65
66 private:
67 Acts::MagneticFieldContext bctx_;
68
69 int nevents_{0};
70 int nvertices_{0};
71 int nreconstructable_{0};
72 std::shared_ptr<InterpolatedMagneticField3> sp_interpolated_b_field_;
73 std::shared_ptr<Acts::ConstantBField> b_field_;
74
76 std::string field_map_;
77
78 std::string trk_c_name_1_{"TaggerTracks"};
79 std::string trk_c_name_2_{"RecoilTracks"};
80 std::string input_pass_name_{""};
81 std::shared_ptr<VoidPropagator> propagator_;
82
83 // Monitoring histograms
84 TH1F* h_delta_d0_;
85 TH1F* h_delta_z0_;
86 TH1F* h_delta_p_;
87
88 TH1F* h_delta_phi_;
89 TH1F* h_delta_theta_;
90
91 TH2F* h_delta_d0_vs_recoil_p_;
92 TH2F* h_delta_z0_vs_recoil_p_;
93
94 TH2F* h_td0_vs_rd0_;
95 TH2F* h_tz0_vs_rz0_;
96};
97
98} // namespace reco
99} // namespace tracking
100
101#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:42
Class which represents the process under execution.
Definition Process.h:37
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:29
void produce(framework::Event &event) override
Process the event and put new data products into it.
Definition Vertexer.cxx:88
void onProcessEnd() override
Callback for the EventProcessor to take any necessary action when the processing of events finishes,...
Definition Vertexer.cxx:174
void onProcessStart() override
Callback for the EventProcessor to take any necessary action when the processing of events starts,...
Definition Vertexer.cxx:20
std::string field_map_
Path to the magnetic field map.
Definition Vertexer.h:76
void configure(framework::config::Parameters &parameters) override
Callback for the EventProcessor to configure itself from the given set of parameters.
Definition Vertexer.cxx:79
The measurement calibrator can be a function or a class/struct able to retrieve the sim hits containe...