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// Vertexing
21
22#include "Acts/Vertexing/FullBilloirVertexFitter.hpp"
23#include "Acts/Vertexing/HelicalTrackLinearizer.hpp"
24#include "Acts/Vertexing/Vertex.hpp"
25
26// Magfield
27
28#include "Acts/MagneticField/ConstantBField.hpp"
29#include "Acts/MagneticField/MagneticFieldContext.hpp"
30#include "Acts/MagneticField/MagneticFieldProvider.hpp"
31
32// Propagator
33
34#include "Acts/Propagator/EigenStepper.hpp"
35#include "Acts/Propagator/Propagator.hpp"
36//#include "Acts/Propagator/Navigator.hpp"
37//#include "Acts/Propagator/StandardAborters.hpp"
38
39// Geometry
40#include "Acts/Surfaces/PerigeeSurface.hpp"
41
42// Propagator with void navigator
43using VoidPropagator = Acts::Propagator<Acts::EigenStepper<>>;
44
45namespace tracking {
46namespace reco {
47
49 public:
50 Vertexer(const std::string& name, framework::Process& process);
51
52 virtual ~Vertexer() = default;
53
54 void onProcessStart() override;
55 void onProcessEnd() override;
56
57 void configure(framework::config::Parameters& parameters) override;
58
59 void produce(framework::Event& event) override;
60
61 void TaggerRecoilMonitoring(const std::vector<ldmx::Track>& tagger_tracks,
62 const std::vector<ldmx::Track>& recoil_tracks);
63
64 private:
65 Acts::GeometryContext gctx_;
66 Acts::MagneticFieldContext bctx_;
67
68 int nevents_{0};
69 int nvertices_{0};
70 int nreconstructable_{0};
71 std::shared_ptr<InterpolatedMagneticField3> sp_interpolated_bField_;
72 std::shared_ptr<Acts::ConstantBField> bField_;
73
75 std::string field_map_;
76
77 std::string trk_c_name_1{"TaggerTracks"};
78 std::string trk_c_name_2{"RecoilTracks"};
79 std::shared_ptr<VoidPropagator> propagator_;
80
81 // Monitoring histograms
82 TH1F* h_delta_d0;
83 TH1F* h_delta_z0;
84 TH1F* h_delta_p;
85
86 TH1F* h_delta_phi;
87 TH1F* h_delta_theta;
88
89 TH2F* h_delta_d0_vs_recoil_p;
90 TH2F* h_delta_z0_vs_recoil_p;
91
92 TH2F* h_td0_vs_rd0;
93 TH2F* h_tz0_vs_rz0;
94};
95
96} // namespace reco
97} // namespace tracking
98
99#endif
Base classes for all user event processing components to extend.
Implements an event buffer system for storing event data.
Definition Event.h:41
Class which represents the process under execution.
Definition Process.h:36
Base class for a module which produces a data product.
Class encapsulating parameters for configuring a processor.
Definition Parameters.h:27
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:200
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:75
void configure(framework::config::Parameters &parameters) override
Callback for the EventProcessor to configure itself from the given set of parameters.
Definition Vertexer.cxx:80
The measurement calibrator can be a function or a class/struct able to retrieve the sim hits containe...