20void Vertexer::onProcessStart() {
28 h_delta_d0_ =
new TH1F(
"h_delta_d0",
"h_delta_d0", 400, d0min, d0max);
29 h_delta_z0_ =
new TH1F(
"h_delta_z0",
"h_delta_z0", 200, z0min, z0max);
30 h_delta_p_ =
new TH1F(
"h_delta_p",
"h_delta_p", 200, -1, 4);
32 h_delta_phi_ =
new TH1F(
"h_delta_phi",
"h_delta_phi", 400, -0.2, 0.2);
33 h_delta_theta_ =
new TH1F(
"h_delta_theta",
"h_delta_theta", 200, -0.1, 0.1);
35 h_delta_d0_vs_recoil_p_ =
36 new TH2F(
"h_delta_d0_vs_recoil_p",
"h_delta_d0_vs_recoil_p", 200, 0, 5,
38 h_delta_z0_vs_recoil_p_ =
39 new TH2F(
"h_delta_z0_vs_recoil_p",
"h_delta_z0_vs_recoil_p", 200, 0, 5,
43 new TH2F(
"h_td0_vs_rd0",
"h_td0_vs_rd0", 100, -40, 40, 100, -40, 40);
45 new TH2F(
"h_tz0_vs_rz0",
"h_tz0_vs_rz0", 100, -40, 40, 100, -40, 40);
47 gctx_ = Acts::GeometryContext();
48 bctx_ = Acts::MagneticFieldContext();
61 sp_interpolated_b_field_ =
62 std::make_shared<InterpolatedMagneticField3>(loadDefaultBField(
63 field_map_, defaultTransformPos, defaultTransformBField));
66 Acts::Vector3 b_field(0., 0., -1.5 * Acts::UnitConstants::T);
67 b_field_ = std::make_shared<Acts::ConstantBField>(b_field);
69 std::cout <<
"Check if nullptr::" << sp_interpolated_b_field_.get()
76 auto&& stepper_const = Acts::EigenStepper<>{b_field_};
77 propagator_ = std::make_shared<VoidPropagator>(stepper_const);
94 using Linearizer = Acts::HelicalTrackLinearizer;
95 Linearizer::Config linearizer_config;
96 linearizer_config.bField = b_field_;
97 linearizer_config.propagator = propagator_;
98 Linearizer linearizer(linearizer_config);
101 using VertexFitter = Acts::FullBilloirVertexFitter;
107 VertexFitter::Config vertex_fitter_cfg;
108 VertexFitter billoir_fitter(vertex_fitter_cfg);
120 Acts::VertexingOptions vf_options(gctx_, bctx_);
124 const std::vector<ldmx::Track> tracks_1 =
125 event.getCollection<
ldmx::Track>(trk_c_name_1_, input_pass_name_);
126 const std::vector<ldmx::Track> tracks_2 =
127 event.getCollection<
ldmx::Track>(trk_c_name_2_, input_pass_name_);
129 ldmx_log(debug) <<
"Retrieved track collections" << std::endl
130 <<
"Track 1 size:" << tracks_1.size() << std::endl
131 <<
"Track 2 size:" << tracks_2.size() << std::endl;
133 if (tracks_1.size() < 1 || tracks_2.size() < 1)
return;
135 std::vector<Acts::BoundTrackParameters> billoir_tracks_1, billoir_tracks_2;
139 std::shared_ptr<Acts::PerigeeSurface> perigee_surface =
140 Acts::Surface::makeShared<Acts::PerigeeSurface>(Acts::Vector3(
141 tracks_1.front().getPerigeeX(), tracks_1.front().getPerigeeY(),
142 tracks_1.front().getPerigeeZ()));
145 taggerRecoilMonitoring(tracks_1, tracks_2);
151 for (
auto& trk : tracks_1) {
152 billoir_tracks_1.push_back(
153 tracking::sim::utils::boundTrackParameters(trk, perigee_surface));
156 for (
auto& trk : tracks_2) {
157 billoir_tracks_2.push_back(
158 tracking::sim::utils::boundTrackParameters(trk, perigee_surface));
162 std::vector<Acts::Vertex> fit_vertices;
164 for (
auto& b_trk_1 : billoir_tracks_1) {
165 std::vector<const Acts::BoundTrackParameters*> fit_tracks_ptr;
167 for (
auto& b_trk_2 : billoir_tracks_2) {
168 fit_tracks_ptr.push_back(&b_trk_1);
169 fit_tracks_ptr.push_back(&b_trk_2);
171 ldmx_log(debug) <<
"Calling vertex fitter" << std::endl
172 <<
"Track 1 parameters" << std::endl
173 << b_trk_1 << std::endl
174 <<
"Track 2 parameters" << std::endl
175 << b_trk_2 << std::endl;
191 ldmx_log(warn) <<
"Vertex fit failed" << std::endl;