File indexing completed on 2026-06-29 07:39:54
0001
0002
0003
0004 #include <Acts/Definitions/Units.hpp>
0005 #include <Evaluator/DD4hepUnits.h>
0006 #include <JANA/JApplication.h>
0007 #include <JANA/JApplicationFwd.h>
0008 #include <JANA/Utils/JTypeInfo.h>
0009 #include <edm4eic/EDM4eicVersion.h>
0010 #include <edm4eic/MCRecoTrackParticleAssociationCollection.h>
0011 #include <edm4eic/MCRecoTrackerHitAssociationCollection.h>
0012 #include <edm4eic/Measurement2D.h>
0013 #include <cmath>
0014 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0015 #include <edm4eic/MCRecoTrackerHitLinkCollection.h>
0016 #endif
0017 #include <edm4eic/TrackCollection.h>
0018 #include <edm4eic/TrackParameters.h>
0019 #include <edm4eic/TrackSeed.h>
0020 #include <edm4eic/TrackerHitCollection.h>
0021 #include <podio/detail/Link.h>
0022 #include <deque>
0023 #include <functional>
0024 #include <memory>
0025 #include <string>
0026 #include <utility>
0027 #include <variant>
0028 #include <vector>
0029
0030 #include "algorithms/meta/SubDivideFunctors.h"
0031 #include "algorithms/tracking/TrackPropagationConfig.h"
0032 #include "extensions/jana/JOmniFactoryGeneratorT.h"
0033 #include "factories/meta/CollectionCollector_factory.h"
0034 #include "factories/meta/SubDivideCollection_factory.h"
0035 #include "factories/tracking/ActsToTracks_factory.h"
0036 #include "factories/tracking/ActsTrackMerger_factory.h"
0037 #include "factories/tracking/AmbiguitySolver_factory.h"
0038 #include "factories/tracking/CKFTracking_factory.h"
0039 #include "factories/tracking/IterativeVertexFinder_factory.h"
0040 #include "factories/tracking/SecondaryVertexFinder_factory.h"
0041 #include "factories/tracking/TrackParamTruthInit_factory.h"
0042 #include "factories/tracking/TrackProjector_factory.h"
0043 #include "factories/tracking/TrackPropagation_factory.h"
0044 #include "factories/tracking/TrackSeeding_factory.h"
0045 #include "factories/tracking/TrackerMeasurementFromHits_factory.h"
0046 #include "factories/tracking/TracksToParticles_factory.h"
0047
0048
0049 extern "C" {
0050 void InitPlugin(JApplication* app) {
0051 InitJANAPlugin(app);
0052
0053 using namespace eicrecon;
0054
0055 app->Add(new JOmniFactoryGeneratorT<TrackParamTruthInit_factory>(
0056 "TrackerTruthSeeds", {"EventHeader", "MCParticles"},
0057 {"TrackerTruthSeeds", "TrackerTruthSeedParameters"}, {}, app));
0058
0059 std::vector<std::pair<double, double>> thetaRanges{{0, 50 * dd4hep::mrad},
0060 {50 * dd4hep::mrad, 180 * dd4hep::deg}};
0061 app->Add(new JOmniFactoryGeneratorT<SubDivideCollection_factory<edm4eic::TrackSeed>>(
0062 "CentralB0TrackerTruthSeeds", {"TrackerTruthSeeds"},
0063 {"B0TrackerTruthSeeds", "CentralTrackerTruthSeeds"},
0064 {
0065 .function = RangeSplit<
0066 Chain<&edm4eic::TrackSeed::getParams, &edm4eic::TrackParameters::getTheta>>(
0067 thetaRanges),
0068 },
0069 app));
0070
0071
0072
0073
0074 app->Add(new JOmniFactoryGeneratorT<CollectionCollector_factory<edm4eic::TrackerHit, true>>(
0075 "CentralTrackingRecHits",
0076 {"SiBarrelTrackerRecHits", "SiBarrelVertexRecHits", "SiEndcapTrackerRecHits",
0077 "MPGDBarrelRecHits", "OuterMPGDBarrelRecHits", "BackwardMPGDEndcapRecHits",
0078 "ForwardMPGDEndcapRecHits"},
0079 {"CentralTrackingRecHits"},
0080 app));
0081
0082
0083 app->Add(new JOmniFactoryGeneratorT<
0084 CollectionCollector_factory<edm4eic::MCRecoTrackerHitAssociation, true>>(
0085 "CentralTrackingRawHitAssociations",
0086 {"SiBarrelRawHitAssociations", "SiBarrelVertexRawHitAssociations",
0087 "SiEndcapTrackerRawHitAssociations", "MPGDBarrelRawHitAssociations",
0088 "OuterMPGDBarrelRawHitAssociations", "BackwardMPGDEndcapRawHitAssociations",
0089 "ForwardMPGDEndcapRawHitAssociations"},
0090 {"CentralTrackingRawHitAssociations"},
0091 app));
0092
0093 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0094
0095 app->Add(
0096 new JOmniFactoryGeneratorT<CollectionCollector_factory<edm4eic::MCRecoTrackerHitLink, true>>(
0097 "CentralTrackingRawHitLinks",
0098 {"SiBarrelRawHitLinks", "SiBarrelVertexRawHitLinks", "SiEndcapTrackerRawHitLinks",
0099 "TOFBarrelSharedRawHitLinks", "TOFEndcapSharedRawHitLinks", "MPGDBarrelRawHitLinks",
0100 "OuterMPGDBarrelRawHitLinks", "BackwardMPGDEndcapRawHitLinks",
0101 "ForwardMPGDEndcapRawHitLinks"},
0102 {"CentralTrackingRawHitLinks"},
0103 app));
0104 #endif
0105
0106 app->Add(new JOmniFactoryGeneratorT<TrackerMeasurementFromHits_factory>(
0107 "CentralWithoutTOFTrackerMeasurements", {"CentralTrackingRecHits"},
0108 {"CentralWithoutTOFTrackerMeasurements"}, app));
0109
0110
0111 app->Add(new JOmniFactoryGeneratorT<CollectionCollector_factory<edm4eic::Measurement2D, true>>(
0112 "CentralTrackerMeasurements",
0113 {"CentralWithoutTOFTrackerMeasurements", "TOFBarrelClusterHits", "TOFEndcapClusterHits"},
0114 {"CentralTrackerMeasurements"},
0115 app));
0116
0117 app->Add(new JOmniFactoryGeneratorT<CKFTracking_factory>(
0118 "CentralCKFTruthSeededTrajectories",
0119 {"CentralTrackerTruthSeeds", "CentralTrackerMeasurements"},
0120 {
0121 "CentralCKFTruthSeededActsTrackStatesUnfiltered",
0122 "CentralCKFTruthSeededActsTracksUnfiltered",
0123 },
0124 app));
0125
0126 app->Add(new JOmniFactoryGeneratorT<ActsToTracks_factory>(
0127 "CentralCKFTruthSeededTracksUnfiltered",
0128 {
0129 "CentralTrackerMeasurements",
0130 "CentralTrackerTruthSeeds",
0131 "CentralCKFTruthSeededActsTrackStatesUnfiltered",
0132 "CentralCKFTruthSeededActsTracksUnfiltered",
0133 "CentralTrackingRawHitAssociations",
0134 },
0135 {
0136 "CentralCKFTruthSeededTrajectoriesUnfiltered",
0137 "CentralCKFTruthSeededTrackParametersUnfiltered",
0138 "CentralCKFTruthSeededTracksUnfiltered",
0139 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0140 "CentralCKFTruthSeededTrackUnfilteredLinks",
0141 #endif
0142 "CentralCKFTruthSeededTrackUnfilteredAssociations",
0143 },
0144 app));
0145
0146 app->Add(new JOmniFactoryGeneratorT<AmbiguitySolver_factory>(
0147 "TruthSeededAmbiguityResolutionSolver",
0148 {"CentralCKFTruthSeededActsTrackStatesUnfiltered",
0149 "CentralCKFTruthSeededActsTracksUnfiltered"},
0150 {
0151 "CentralCKFTruthSeededActsTrackStates",
0152 "CentralCKFTruthSeededActsTracks",
0153 },
0154 app));
0155
0156 app->Add(
0157 new JOmniFactoryGeneratorT<ActsToTracks_factory>("CentralCKFTruthSeededTracks",
0158 {
0159 "CentralTrackerMeasurements",
0160 "CentralTrackerTruthSeeds",
0161 "CentralCKFTruthSeededActsTrackStates",
0162 "CentralCKFTruthSeededActsTracks",
0163 "CentralTrackingRawHitAssociations",
0164 },
0165 {
0166 "CentralCKFTruthSeededTrajectories",
0167 "CentralCKFTruthSeededTrackParameters",
0168 "CentralCKFTruthSeededTracks",
0169 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0170 "CentralCKFTruthSeededTrackLinks",
0171 #endif
0172 "CentralCKFTruthSeededTrackAssociations",
0173 },
0174 app));
0175
0176 app->Add(new JOmniFactoryGeneratorT<TrackSeeding_factory>(
0177 "CentralTrackSeeds", {"CentralTrackingRecHits"},
0178 {"CentralTrackSeeds", "CentralTrackSeedParameters"}, {}, app));
0179
0180 app->Add(new JOmniFactoryGeneratorT<CKFTracking_factory>(
0181 "CentralCKFTrajectories", {"CentralTrackSeeds", "CentralTrackerMeasurements"},
0182 {
0183 "CentralCKFActsTrackStatesUnfiltered",
0184 "CentralCKFActsTracksUnfiltered",
0185 },
0186 app));
0187
0188 app->Add(
0189 new JOmniFactoryGeneratorT<ActsToTracks_factory>("CentralCKFTracksUnfiltered",
0190 {
0191 "CentralTrackerMeasurements",
0192 "CentralTrackSeeds",
0193 "CentralCKFActsTrackStatesUnfiltered",
0194 "CentralCKFActsTracksUnfiltered",
0195 "CentralTrackingRawHitAssociations",
0196 },
0197 {
0198 "CentralCKFTrajectoriesUnfiltered",
0199 "CentralCKFTrackParametersUnfiltered",
0200 "CentralCKFTracksUnfiltered",
0201 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0202 "CentralCKFTrackUnfilteredLinks",
0203 #endif
0204 "CentralCKFTrackUnfilteredAssociations",
0205 },
0206 app));
0207
0208 app->Add(new JOmniFactoryGeneratorT<AmbiguitySolver_factory>(
0209 "AmbiguityResolutionSolver",
0210 {"CentralCKFActsTrackStatesUnfiltered", "CentralCKFActsTracksUnfiltered"},
0211 {
0212 "CentralCKFActsTrackStates",
0213 "CentralCKFActsTracks",
0214 },
0215 app));
0216
0217 app->Add(new JOmniFactoryGeneratorT<ActsToTracks_factory>("CentralCKFTracks",
0218 {
0219 "CentralTrackerMeasurements",
0220 "CentralTrackSeeds",
0221 "CentralCKFActsTrackStates",
0222 "CentralCKFActsTracks",
0223 "CentralTrackingRawHitAssociations",
0224 },
0225 {
0226 "CentralCKFTrajectories",
0227 "CentralCKFTrackParameters",
0228 "CentralCKFTracks",
0229 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0230 "CentralCKFTrackLinks",
0231 #endif
0232 "CentralCKFTrackAssociations",
0233 },
0234 app));
0235
0236 app->Add(new JOmniFactoryGeneratorT<TrackProjector_factory>("CentralTrackSegments",
0237 {
0238 "CentralCKFActsTrackStates",
0239 "CentralCKFActsTracks",
0240 "CentralCKFTracks",
0241 },
0242 {
0243 "CentralTrackSegments",
0244 },
0245 app));
0246
0247 app->Add(
0248 new JOmniFactoryGeneratorT<IterativeVertexFinder_factory>("CentralTrackVertices",
0249 {
0250 "CentralCKFActsTrackStates",
0251 "CentralCKFActsTracks",
0252 "ReconstructedChargedParticles",
0253 },
0254 {
0255 "CentralTrackVertices",
0256 },
0257 {}, app));
0258
0259 app->Add(new JOmniFactoryGeneratorT<TrackPropagation_factory>(
0260 "CalorimeterTrackPropagator",
0261 {"CentralCKFTracks", "CentralCKFActsTrackStates", "CentralCKFActsTracks"},
0262 {"CalorimeterTrackProjections"},
0263 {.target_surfaces{
0264
0265 eicrecon::CylinderSurfaceConfig{.id = "BarrelDIRC_ID",
0266 .rmin = "DIRC_rmin",
0267 .zmin = "DIRC_offset - DIRC_length / 2.0",
0268 .zmax = "DIRC_offset + DIRC_length / 2.0"},
0269
0270 eicrecon::DiscSurfaceConfig{.id = "EcalEndcapN_ID",
0271 .zmin = "- EcalEndcapN_zmin",
0272 .rmin = 0.,
0273 .rmax = "1.1*EcalEndcapN_rmax"},
0274 eicrecon::DiscSurfaceConfig{.id = "EcalEndcapN_ID",
0275 .zmin = "- EcalEndcapN_zmin - 50*mm",
0276 .rmin = 0.,
0277 .rmax = "1.1*EcalEndcapN_rmax"},
0278 eicrecon::CylinderSurfaceConfig{
0279 .id = "EcalBarrel_ID",
0280 .rmin = "EcalBarrel_rmin",
0281 .zmin = "- 1.1*max(EcalBarrelBackward_zmax,EcalBarrelForward_zmax)",
0282 .zmax = "1.1*max(EcalBarrelBackward_zmax,EcalBarrelForward_zmax)"},
0283 eicrecon::CylinderSurfaceConfig{
0284 .id = "EcalBarrel_ID",
0285 .rmin = "EcalBarrel_rmin + 50*mm",
0286 .zmin = "- 1.1*max(EcalBarrelBackward_zmax,EcalBarrelForward_zmax)",
0287 .zmax = "1.1*max(EcalBarrelBackward_zmax,EcalBarrelForward_zmax)"},
0288 eicrecon::DiscSurfaceConfig{.id = "EcalEndcapP_ID",
0289 .zmin = "EcalEndcapP_zmin",
0290 .rmin = 0.,
0291 .rmax = "1.1*EcalEndcapP_rmax"},
0292 eicrecon::DiscSurfaceConfig{.id = "EcalEndcapP_ID",
0293 .zmin = "EcalEndcapP_zmin + 50*mm",
0294 .rmin = 0.,
0295 .rmax = "1.1*EcalEndcapP_rmax"},
0296
0297 eicrecon::DiscSurfaceConfig{.id = "HcalEndcapN_ID",
0298 .zmin = "- HcalEndcapN_zmin",
0299 .rmin = 0.,
0300 .rmax = "1.1*HcalEndcapN_rmax"},
0301 eicrecon::DiscSurfaceConfig{.id = "HcalEndcapN_ID",
0302 .zmin = "- HcalEndcapN_zmin - 150*mm",
0303 .rmin = 0.,
0304 .rmax = "1.1*HcalEndcapN_rmax"},
0305 eicrecon::CylinderSurfaceConfig{
0306 .id = "HcalBarrel_ID",
0307 .rmin = "HcalBarrel_rmin",
0308 .zmin = "- 1.1*max(HcalBarrelBackward_zmax,HcalBarrelForward_zmax)",
0309 .zmax = "1.1*max(HcalBarrelBackward_zmax,HcalBarrelForward_zmax)"},
0310 eicrecon::CylinderSurfaceConfig{
0311 .id = "HcalBarrel_ID",
0312 .rmin = "HcalBarrel_rmin + 150*mm",
0313 .zmin = "- 1.1*max(HcalBarrelBackward_zmax,HcalBarrelForward_zmax)",
0314 .zmax = "1.1*max(HcalBarrelBackward_zmax,HcalBarrelForward_zmax)"},
0315 eicrecon::DiscSurfaceConfig{
0316 .id = "LFHCAL_ID", .zmin = "LFHCAL_zmin", .rmin = 0., .rmax = "1.1*LFHCAL_rmax"},
0317 eicrecon::DiscSurfaceConfig{.id = "LFHCAL_ID",
0318 .zmin = "LFHCAL_zmin + 150*mm",
0319 .rmin = 0.,
0320 .rmax = "1.1*LFHCAL_rmax"},
0321 }},
0322 app));
0323
0324
0325
0326 app->Add(new JOmniFactoryGeneratorT<TrackerMeasurementFromHits_factory>(
0327 "B0TrackerMeasurements", {"B0TrackerRecHits"}, {"B0TrackerMeasurements"}, app));
0328
0329 app->Add(new JOmniFactoryGeneratorT<CKFTracking_factory>(
0330 "B0TrackerCKFTruthSeededTrajectories", {"B0TrackerTruthSeeds", "B0TrackerMeasurements"},
0331 {
0332 "B0TrackerCKFTruthSeededActsTrackStatesUnfiltered",
0333 "B0TrackerCKFTruthSeededActsTracksUnfiltered",
0334 },
0335 {
0336 .numMeasurementsMin = 3,
0337 },
0338 app));
0339
0340 app->Add(new JOmniFactoryGeneratorT<ActsToTracks_factory>(
0341 "B0TrackerCKFTruthSeededTracksUnfiltered",
0342 {
0343 "B0TrackerMeasurements",
0344 "B0TrackerTruthSeeds",
0345 "B0TrackerCKFTruthSeededActsTrackStatesUnfiltered",
0346 "B0TrackerCKFTruthSeededActsTracksUnfiltered",
0347 "B0TrackerRawHitAssociations",
0348 },
0349 {
0350 "B0TrackerCKFTruthSeededTrajectoriesUnfiltered",
0351 "B0TrackerCKFTruthSeededTrackParametersUnfiltered",
0352 "B0TrackerCKFTruthSeededTracksUnfiltered",
0353 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0354 "B0TrackerCKFTruthSeededTrackUnfilteredLinks",
0355 #endif
0356 "B0TrackerCKFTruthSeededTrackUnfilteredAssociations",
0357 },
0358 app));
0359
0360 app->Add(new JOmniFactoryGeneratorT<AmbiguitySolver_factory>(
0361 "B0TrackerTruthSeededAmbiguityResolutionSolver",
0362 {"B0TrackerCKFTruthSeededActsTrackStatesUnfiltered",
0363 "B0TrackerCKFTruthSeededActsTracksUnfiltered"},
0364 {
0365 "B0TrackerCKFTruthSeededActsTrackStates",
0366 "B0TrackerCKFTruthSeededActsTracks",
0367 },
0368 {
0369 .n_measurements_min = 3,
0370 },
0371 app));
0372
0373 app->Add(new JOmniFactoryGeneratorT<ActsToTracks_factory>(
0374 "B0TrackerCKFTruthSeededTracks",
0375 {
0376 "B0TrackerMeasurements",
0377 "B0TrackerTruthSeeds",
0378 "B0TrackerCKFTruthSeededActsTrackStates",
0379 "B0TrackerCKFTruthSeededActsTracks",
0380 "B0TrackerRawHitAssociations",
0381 },
0382 {
0383 "B0TrackerCKFTruthSeededTrajectories",
0384 "B0TrackerCKFTruthSeededTrackParameters",
0385 "B0TrackerCKFTruthSeededTracks",
0386 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0387 "B0TrackerCKFTruthSeededTrackLinks",
0388 #endif
0389 "B0TrackerCKFTruthSeededTrackAssociations",
0390 },
0391 app));
0392
0393 app->Add(new JOmniFactoryGeneratorT<TrackSeeding_factory>(
0394 "B0TrackerSeeds", {"B0TrackerRecHits"}, {"B0TrackerSeeds", "B0TrackerSeedParameters"}, {},
0395 app));
0396
0397 app->Add(new JOmniFactoryGeneratorT<CKFTracking_factory>(
0398 "B0TrackerCKFTrajectories", {"B0TrackerSeeds", "B0TrackerMeasurements"},
0399 {
0400 "B0TrackerCKFActsTrackStatesUnfiltered",
0401 "B0TrackerCKFActsTracksUnfiltered",
0402 },
0403 app));
0404
0405 app->Add(new JOmniFactoryGeneratorT<ActsToTracks_factory>(
0406 "B0TrackerCKFTracksUnfiltered",
0407 {
0408 "B0TrackerMeasurements",
0409 "B0TrackerSeeds",
0410 "B0TrackerCKFActsTrackStatesUnfiltered",
0411 "B0TrackerCKFActsTracksUnfiltered",
0412 "B0TrackerRawHitAssociations",
0413 },
0414 {
0415 "B0TrackerCKFTrajectoriesUnfiltered",
0416 "B0TrackerCKFTrackParametersUnfiltered",
0417 "B0TrackerCKFTracksUnfiltered",
0418 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0419 "B0TrackerCKFTrackUnfilteredLinks",
0420 #endif
0421 "B0TrackerCKFTrackUnfilteredAssociations",
0422 },
0423 app));
0424
0425 app->Add(new JOmniFactoryGeneratorT<AmbiguitySolver_factory>(
0426 "B0TrackerAmbiguityResolutionSolver",
0427 {"B0TrackerCKFActsTrackStatesUnfiltered", "B0TrackerCKFActsTracksUnfiltered"},
0428 {
0429 "B0TrackerCKFActsTrackStates",
0430 "B0TrackerCKFActsTracks",
0431 },
0432 app));
0433
0434 app->Add(new JOmniFactoryGeneratorT<ActsToTracks_factory>("B0TrackerCKFTracks",
0435 {
0436 "B0TrackerMeasurements",
0437 "B0TrackerSeeds",
0438 "B0TrackerCKFActsTrackStates",
0439 "B0TrackerCKFActsTracks",
0440 "B0TrackerRawHitAssociations",
0441 },
0442 {
0443 "B0TrackerCKFTrajectories",
0444 "B0TrackerCKFTrackParameters",
0445 "B0TrackerCKFTracks",
0446 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0447 "B0TrackerCKFTrackLinks",
0448 #endif
0449 "B0TrackerCKFTrackAssociations",
0450 },
0451 app));
0452
0453
0454
0455
0456 app->Add(new JOmniFactoryGeneratorT<ActsTrackMerger_factory>(
0457 "CentralAndB0TrackerCKFActsTracks",
0458 {
0459 "CentralCKFActsTrackStates",
0460 "CentralCKFActsTracks",
0461 "B0TrackerCKFActsTrackStates",
0462 "B0TrackerCKFActsTracks",
0463 },
0464 {
0465 "CentralAndB0TrackerCKFActsTrackStates",
0466 "CentralAndB0TrackerCKFActsTracks",
0467 },
0468 app));
0469
0470 app->Add(new JOmniFactoryGeneratorT<IterativeVertexFinder_factory>(
0471 "CentralAndB0TrackVertices",
0472 {
0473 "CentralAndB0TrackerCKFActsTrackStates",
0474 "CentralAndB0TrackerCKFActsTracks",
0475 "ReconstructedChargedParticles",
0476 },
0477 {
0478 "CentralAndB0TrackVertices",
0479 },
0480 {}, app));
0481
0482
0483 app->Add(new JOmniFactoryGeneratorT<CollectionCollector_factory<edm4eic::Track, true>>(
0484 "CombinedTracks", {"CentralCKFTracks", "B0TrackerCKFTracks"}, {"CombinedTracks"}, app));
0485
0486 app->Add(new JOmniFactoryGeneratorT<SecondaryVertexFinder_factory>(
0487 "PrimaryVerticesAMVF",
0488 {"ReconstructedParticles", "CentralCKFActsTrackStates", "CentralCKFActsTracks"},
0489 {
0490 "PrimaryVerticesAMVF",
0491 },
0492 {
0493 .isPrimary = true,
0494 },
0495 app));
0496
0497 app->Add(new JOmniFactoryGeneratorT<SecondaryVertexFinder_factory>(
0498 "SecondaryVerticesAMVF",
0499 {"ReconstructedParticles", "CentralCKFActsTrackStates", "CentralCKFActsTracks"},
0500 {
0501 "SecondaryVerticesAMVF",
0502 },
0503 {
0504 .isPrimary = false,
0505 .maxIterations = 1000,
0506 .tracksMaxZinterval = 10. * Acts::UnitConstants::mm,
0507 .useSeedConstraint = true,
0508 },
0509 app));
0510
0511 app->Add(new JOmniFactoryGeneratorT<
0512 CollectionCollector_factory<edm4eic::MCRecoTrackParticleAssociation, true>>(
0513 "CombinedTrackAssociations", {"CentralCKFTrackAssociations", "B0TrackerCKFTrackAssociations"},
0514 {"CombinedTrackAssociations"}, app));
0515
0516 app->Add(new JOmniFactoryGeneratorT<CollectionCollector_factory<edm4eic::Track, true>>(
0517 "CombinedTruthSeededTracks", {"CentralCKFTruthSeededTracks", "B0TrackerCKFTruthSeededTracks"},
0518 {"CombinedTruthSeededTracks"}, app));
0519
0520 app->Add(new JOmniFactoryGeneratorT<
0521 CollectionCollector_factory<edm4eic::MCRecoTrackParticleAssociation, true>>(
0522 "CombinedTruthSeededTrackAssociations",
0523 {"CentralCKFTruthSeededTrackAssociations", "B0TrackerCKFTruthSeededTrackAssociations"},
0524 {"CombinedTruthSeededTrackAssociations"}, app));
0525
0526 app->Add(new JOmniFactoryGeneratorT<TracksToParticles_factory>(
0527 "ChargedTruthSeededParticlesWithAssociations",
0528 {
0529 "CombinedTruthSeededTracks",
0530 "CombinedTruthSeededTrackAssociations",
0531 },
0532 {"ReconstructedTruthSeededChargedWithoutPIDParticles",
0533 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0534 "ReconstructedTruthSeededChargedWithoutPIDParticleLinks",
0535 #endif
0536 "ReconstructedTruthSeededChargedWithoutPIDParticleAssociations"},
0537 {}, app));
0538
0539 app->Add(new JOmniFactoryGeneratorT<TracksToParticles_factory>(
0540 "ChargedParticlesWithAssociations",
0541 {
0542 "CombinedTracks",
0543 "CombinedTrackAssociations",
0544 },
0545 {"ReconstructedChargedWithoutPIDParticles",
0546 #if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
0547 "ReconstructedChargedWithoutPIDParticleLinks",
0548 #endif
0549 "ReconstructedChargedWithoutPIDParticleAssociations"},
0550 {}, app));
0551 }
0552 }