Warning, file /EICrecon/src/global/reco/reco.cc was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004 #include <Evaluator/DD4hepUnits.h>
0005 #include <JANA/JApplication.h>
0006 #include <JANA/JApplicationFwd.h>
0007 #include <JANA/Utils/JTypeInfo.h>
0008 #include <edm4eic/Cluster.h>
0009 #include <edm4eic/EDM4eicVersion.h>
0010 #include <edm4eic/InclusiveKinematics.h>
0011 #include <edm4eic/MCRecoClusterParticleAssociation.h>
0012 #include <edm4eic/MCRecoParticleAssociation.h>
0013 #include <edm4eic/ReconstructedParticle.h>
0014 #include <edm4hep/MCParticle.h>
0015 #include <fmt/core.h>
0016 #include <map>
0017 #include <memory>
0018 #include <string>
0019 #include <vector>
0020
0021 #include "algorithms/reco/HadronicFinalState.h"
0022 #include "algorithms/reco/InclusiveKinematicsDA.h"
0023 #include "algorithms/reco/InclusiveKinematicsESigma.h"
0024 #include "algorithms/reco/InclusiveKinematicsElectron.h"
0025 #include "algorithms/reco/InclusiveKinematicsJB.h"
0026 #include "algorithms/reco/InclusiveKinematicsSigma.h"
0027 #include "extensions/jana/JOmniFactoryGeneratorT.h"
0028 #include "factories/meta/CollectionCollector_factory.h"
0029 #include "factories/meta/FilterMatching_factory.h"
0030 #include "factories/reco/FarForwardLambdaReconstruction_factory.h"
0031 #include "factories/reco/FarForwardNeutralsReconstruction_factory.h"
0032 #include "factories/reco/InclusiveKinematicsML_factory.h"
0033 #include "factories/reco/ChargedReconstructedParticleSelector_factory.h"
0034 #include "factories/reco/HadronicFinalState_factory.h"
0035 #include "factories/reco/InclusiveKinematicsReconstructed_factory.h"
0036 #include "factories/reco/InclusiveKinematicsTruth_factory.h"
0037 #include "factories/reco/JetReconstruction_factory.h"
0038 #include "factories/reco/MC2ReconstructedParticle_factory.h"
0039 #include "factories/reco/MatchClusters_factory.h"
0040 #include "factories/reco/PrimaryVertices_factory.h"
0041 #include "factories/reco/ReconstructedElectrons_factory.h"
0042 #include "factories/reco/ScatteredElectronsEMinusPz_factory.h"
0043 #include "factories/reco/ScatteredElectronsTruth_factory.h"
0044 #include "factories/reco/TransformBreitFrame_factory.h"
0045 #include "factories/reco/UndoAfterBurnerMCParticles_factory.h"
0046
0047 #if EDM4EIC_VERSION_MAJOR >= 8
0048 #include "factories/reco/TrackClusterMatch_factory.h"
0049 #endif
0050
0051 extern "C" {
0052 void InitPlugin(JApplication* app) {
0053 InitJANAPlugin(app);
0054
0055 using namespace eicrecon;
0056
0057
0058 app->Add(
0059 new JOmniFactoryGeneratorT<FilterMatching_factory<
0060 edm4eic::MCRecoParticleAssociation, [](auto* obj) { return obj->getSim().getObjectID(); },
0061 edm4hep::MCParticle, [](auto* obj) { return obj->getObjectID(); }>>(
0062 "MCScatteredElectronAssociations",
0063 {"ReconstructedChargedParticleAssociations", "MCScatteredElectrons"},
0064 {"MCScatteredElectronAssociations", "MCNonScatteredElectronAssociations"}, app));
0065
0066 app->Add(new JOmniFactoryGeneratorT<MC2ReconstructedParticle_factory>(
0067 "GeneratedParticles", {"MCParticles"}, {"GeneratedParticles"}, app));
0068
0069 app->Add(new JOmniFactoryGeneratorT<CollectionCollector_factory<edm4eic::Cluster, true>>(
0070 "EcalClusters", {"EcalEndcapNClusters", "EcalBarrelScFiClusters", "EcalEndcapPClusters"},
0071 {"EcalClusters"}, app));
0072
0073 app->Add(new JOmniFactoryGeneratorT<
0074 CollectionCollector_factory<edm4eic::MCRecoClusterParticleAssociation, true>>(
0075 "EcalClusterAssociations",
0076 {"EcalEndcapNClusterAssociations", "EcalBarrelScFiClusterAssociations",
0077 "EcalEndcapPClusterAssociations"},
0078 {"EcalClusterAssociations"}, app));
0079
0080 app->Add(new JOmniFactoryGeneratorT<MatchClusters_factory>(
0081 "ReconstructedParticlesWithAssoc",
0082 {
0083 "MCParticles",
0084 "ReconstructedChargedParticles",
0085 "ReconstructedChargedParticleAssociations",
0086 "EcalClusters",
0087 "EcalClusterAssociations",
0088 },
0089 {
0090 "ReconstructedParticles",
0091 "ReconstructedParticleAssociations"
0092 },
0093 app));
0094
0095 app->Add(new JOmniFactoryGeneratorT<InclusiveKinematicsTruth_factory>(
0096 "InclusiveKinematicsTruth", {"MCParticles"}, {"InclusiveKinematicsTruth"}, app));
0097
0098 app->Add(new JOmniFactoryGeneratorT<
0099 InclusiveKinematicsReconstructed_factory<InclusiveKinematicsElectron>>(
0100 "InclusiveKinematicsElectron",
0101 {"MCParticles", "ScatteredElectronsTruth", "HadronicFinalState"},
0102 {"InclusiveKinematicsElectron"}, app));
0103
0104 app->Add(
0105 new JOmniFactoryGeneratorT<InclusiveKinematicsReconstructed_factory<InclusiveKinematicsJB>>(
0106 "InclusiveKinematicsJB", {"MCParticles", "ScatteredElectronsTruth", "HadronicFinalState"},
0107 {"InclusiveKinematicsJB"}, app));
0108
0109 app->Add(
0110 new JOmniFactoryGeneratorT<InclusiveKinematicsReconstructed_factory<InclusiveKinematicsDA>>(
0111 "InclusiveKinematicsDA", {"MCParticles", "ScatteredElectronsTruth", "HadronicFinalState"},
0112 {"InclusiveKinematicsDA"}, app));
0113
0114 app->Add(new JOmniFactoryGeneratorT<
0115 InclusiveKinematicsReconstructed_factory<InclusiveKinematicsESigma>>(
0116 "InclusiveKinematicsESigma", {"MCParticles", "ScatteredElectronsTruth", "HadronicFinalState"},
0117 {"InclusiveKinematicsESigma"}, app));
0118
0119
0120 app->Add(new JOmniFactoryGeneratorT<CollectionCollector_factory<edm4eic::InclusiveKinematics>>(
0121 "InclusiveKinematicseSigma_legacy", {"InclusiveKinematicsESigma"},
0122 {"InclusiveKinematicseSigma"}, app));
0123
0124 app->Add(new JOmniFactoryGeneratorT<
0125 InclusiveKinematicsReconstructed_factory<InclusiveKinematicsSigma>>(
0126 "InclusiveKinematicsSigma", {"MCParticles", "ScatteredElectronsTruth", "HadronicFinalState"},
0127 {"InclusiveKinematicsSigma"}, app));
0128
0129 app->Add(new JOmniFactoryGeneratorT<InclusiveKinematicsML_factory>(
0130 "InclusiveKinematicsML", {"InclusiveKinematicsElectron", "InclusiveKinematicsDA"},
0131 {"InclusiveKinematicsML"}, app));
0132
0133 app->Add(new JOmniFactoryGeneratorT<ReconstructedElectrons_factory>(
0134 "ReconstructedElectrons", {"ReconstructedParticles"}, {"ReconstructedElectrons"}, {}, app));
0135
0136 app->Add(new JOmniFactoryGeneratorT<ReconstructedElectrons_factory>(
0137 "ReconstructedElectronsForDIS", {"ReconstructedParticles"}, {"ReconstructedElectronsForDIS"},
0138 {
0139 .min_energy_over_momentum = 0.7,
0140 .max_energy_over_momentum = 1.3
0141 },
0142 app));
0143
0144 app->Add(new JOmniFactoryGeneratorT<JetReconstruction_factory<edm4eic::ReconstructedParticle>>(
0145 "GeneratedJets", {"GeneratedParticles"}, {"GeneratedJets"}, {}, app));
0146
0147 app->Add(new JOmniFactoryGeneratorT<JetReconstruction_factory<edm4eic::ReconstructedParticle>>(
0148 "ReconstructedJets", {"ReconstructedParticles"}, {"ReconstructedJets"}, {}, app));
0149
0150 app->Add(new JOmniFactoryGeneratorT<ChargedReconstructedParticleSelector_factory>(
0151 "GeneratedChargedParticles", {"GeneratedParticles"}, {"GeneratedChargedParticles"}, app));
0152
0153 app->Add(new JOmniFactoryGeneratorT<JetReconstruction_factory<edm4eic::ReconstructedParticle>>(
0154 "GeneratedChargedJets", {"GeneratedChargedParticles"}, {"GeneratedChargedJets"}, {}, app));
0155
0156 app->Add(new JOmniFactoryGeneratorT<JetReconstruction_factory<edm4eic::ReconstructedParticle>>(
0157 "ReconstructedChargedJets", {"ReconstructedChargedParticles"}, {"ReconstructedChargedJets"},
0158 {}, app));
0159
0160 app->Add(new JOmniFactoryGeneratorT<ScatteredElectronsTruth_factory>(
0161 "ScatteredElectronsTruth",
0162 {"MCParticles", "ReconstructedChargedParticles", "ReconstructedChargedParticleAssociations"},
0163 {"ScatteredElectronsTruth"}, app));
0164
0165 app->Add(new JOmniFactoryGeneratorT<ScatteredElectronsEMinusPz_factory>(
0166 "ScatteredElectronsEMinusPz",
0167 {"ReconstructedChargedParticles", "ReconstructedElectronsForDIS"},
0168 {"ScatteredElectronsEMinusPz"},
0169 {
0170 .minEMinusPz = 0,
0171 .maxEMinusPz = 10000000.0
0172 },
0173 app));
0174
0175 #if EDM4EIC_VERSION_MAJOR >= 8
0176
0177 app->Add(new JOmniFactoryGeneratorT<TrackClusterMatch_factory>(
0178 "EcalEndcapPTrackClusterMatches", {"CalorimeterTrackProjections", "EcalEndcapPClusters"},
0179 {"EcalEndcapPTrackClusterMatches"}, {.calo_id = "EcalEndcapP_ID"}, app));
0180
0181 app->Add(new JOmniFactoryGeneratorT<TrackClusterMatch_factory>(
0182 "LFHCALTrackClusterMatches", {"CalorimeterTrackProjections", "LFHCALClusters"},
0183 {"LFHCALTrackClusterMatches"}, {.calo_id = "LFHCAL_ID"}, app));
0184
0185 app->Add(new JOmniFactoryGeneratorT<TrackClusterMatch_factory>(
0186 "HcalEndcapPInsertClusterMatches",
0187 {"CalorimeterTrackProjections", "HcalEndcapPInsertClusters"},
0188 {"HcalEndcapPInsertTrackClusterMatches"}, {.calo_id = "HcalEndcapPInsert_ID"}, app));
0189
0190
0191 app->Add(new JOmniFactoryGeneratorT<TrackClusterMatch_factory>(
0192 "EcalBarrelTrackClusterMatches", {"CalorimeterTrackProjections", "EcalBarrelClusters"},
0193 {"EcalBarrelTrackClusterMatches"}, {.calo_id = "EcalBarrel_ID"}, app));
0194
0195 app->Add(new JOmniFactoryGeneratorT<TrackClusterMatch_factory>(
0196 "HcalBarrelTrackClusterMatches", {"CalorimeterTrackProjections", "HcalBarrelClusters"},
0197 {"HcalBarrelTrackClusterMatches"}, {.calo_id = "HcalBarrel_ID"}, app));
0198
0199
0200 app->Add(new JOmniFactoryGeneratorT<TrackClusterMatch_factory>(
0201 "EcalEndcapNBarrelTrackClusterMatches",
0202 {"CalorimeterTrackProjections", "EcalEndcapNClusters"}, {"EcalEndcapNTrackClusterMatches"},
0203 {.calo_id = "EcalEndcapN_ID"}, app));
0204
0205 app->Add(new JOmniFactoryGeneratorT<TrackClusterMatch_factory>(
0206 "HcalEndcapNBarrelTrackClusterMatches",
0207 {"CalorimeterTrackProjections", "HcalEndcapNClusters"}, {"HcalEndcapNTrackClusterMatches"},
0208 {.calo_id = "HcalEndcapN_ID"}, app));
0209
0210 #endif
0211
0212 app->Add(new JOmniFactoryGeneratorT<TransformBreitFrame_factory>(
0213 "ReconstructedBreitFrameParticles",
0214 {"MCParticles", "InclusiveKinematicsElectron", "ReconstructedParticles"},
0215 {"ReconstructedBreitFrameParticles"}, {}, app));
0216
0217 app->Add(new JOmniFactoryGeneratorT<FarForwardNeutralsReconstruction_factory>(
0218 "ReconstructedFarForwardZDCNeutrons",
0219 {"HcalFarForwardZDCClusters"},
0220 {"ReconstructedFarForwardZDCNeutrals"},
0221 {.offsetPositionName = "HcalFarForwardZDC_SiPMonTile_r_pos",
0222 .neutronScaleCorrCoeffHcal = {-0.11, -1.5, 0},
0223 .gammaScaleCorrCoeffHcal = {0, -.13, 0},
0224 .globalToProtonRotation = -0.025,
0225 .gammaZMaxOffset = 300 * dd4hep::mm,
0226 .gammaMaxLength = 100 * dd4hep::mm,
0227 .gammaMaxWidth = 12 * dd4hep::mm},
0228 app
0229 ));
0230
0231 app->Add(new JOmniFactoryGeneratorT<FarForwardLambdaReconstruction_factory>(
0232 "ReconstructedFarForwardZDCLambdas",
0233 {"ReconstructedFarForwardZDCNeutrals"},
0234 {"ReconstructedFarForwardZDCLambdas", "ReconstructedFarForwardZDCLambdaDecayProductsC"
0235 "M"},
0236 {.offsetPositionName = "HcalFarForwardZDC_SiPMonTile_r_pos",
0237 .globalToProtonRotation = -0.025,
0238 .lambdaMaxMassDev = 0.030 * dd4hep::GeV,
0239 .iterations = 10},
0240 app
0241 ));
0242
0243 app->Add(new JOmniFactoryGeneratorT<HadronicFinalState_factory<HadronicFinalState>>(
0244 "HadronicFinalState",
0245 {"MCParticles", "ReconstructedParticles", "ReconstructedParticleAssociations"},
0246 {"HadronicFinalState"}, app));
0247
0248 app->Add(new JOmniFactoryGeneratorT<TransformBreitFrame_factory>(
0249 "GeneratedBreitFrameParticles",
0250 {"MCParticles", "InclusiveKinematicsElectron", "GeneratedParticles"},
0251 {"GeneratedBreitFrameParticles"}, {}, app));
0252
0253 app->Add(new JOmniFactoryGeneratorT<JetReconstruction_factory<edm4eic::ReconstructedParticle>>(
0254 "GeneratedCentauroJets", {"GeneratedBreitFrameParticles"}, {"GeneratedCentauroJets"},
0255 {.rJet = 0.8, .jetAlgo = "plugin_algorithm", .jetContribAlgo = "Centauro"}, app));
0256
0257 app->Add(new JOmniFactoryGeneratorT<JetReconstruction_factory<edm4eic::ReconstructedParticle>>(
0258 "ReconstructedCentauroJets", {"ReconstructedBreitFrameParticles"},
0259 {"ReconstructedCentauroJets"},
0260 {.rJet = 0.8, .jetAlgo = "plugin_algorithm", .jetContribAlgo = "Centauro"}, app));
0261
0262
0263 app->Add(new JOmniFactoryGeneratorT<UndoAfterBurnerMCParticles_factory>(
0264 "MCParticlesHeadOnFrameNoBeamFX", {"MCParticles"}, {"MCParticlesHeadOnFrameNoBeamFX"},
0265 {
0266 .m_pid_assume_pion_mass = false,
0267 .m_crossing_angle = -0.025 * dd4hep::rad,
0268 .m_pid_purity = 0.51,
0269 .m_correct_beam_FX = true,
0270 .m_pid_use_MC_truth = true,
0271 },
0272 app));
0273
0274 app->Add(new JOmniFactoryGeneratorT<PrimaryVertices_factory>(
0275 "PrimaryVertices", {"CentralTrackVertices"}, {"PrimaryVertices"}, {}, app));
0276 }
0277 }