Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-02 08:31:24

0001 // SPDX-License-Identifier: LGPL-3.0-or-later
0002 // Copyright (C) 2022 - 2025 Sylvester Joosten, Chao, Chao Peng, Whitney Armstrong, David Lawrence, Dhevan Gangadharan, Nathan Brei,, Wouter Deconinck, Dmitry Kalinkin, Derek Anderson
0003 
0004 #include <Evaluator/DD4hepUnits.h>
0005 #include <JANA/JApplicationFwd.h>
0006 #include <JANA/Utils/JTypeInfo.h>
0007 #include <cmath>
0008 #include <string>
0009 #include <variant>
0010 #include <vector>
0011 
0012 #include "extensions/jana/JOmniFactoryGeneratorT.h"
0013 #include "factories/calorimetry/CalorimeterClusterRecoCoG_factory.h"
0014 #include "factories/calorimetry/CalorimeterClusterShape_factory.h"
0015 #include "factories/calorimetry/CalorimeterHitDigi_factory.h"
0016 #include "factories/calorimetry/CalorimeterHitReco_factory.h"
0017 #include "factories/calorimetry/CalorimeterIslandCluster_factory.h"
0018 #include "factories/calorimetry/CalorimeterTruthClustering_factory.h"
0019 
0020 extern "C" {
0021 void InitPlugin(JApplication* app) {
0022 
0023   using namespace eicrecon;
0024 
0025   InitJANAPlugin(app);
0026 
0027   app->Add(new JOmniFactoryGeneratorT<CalorimeterHitDigi_factory>(
0028       "EcalLumiSpecRawHits", {"EventHeader", "EcalLumiSpecHits"},
0029       {"EcalLumiSpecRawHits", "EcalLumiSpecRawHitLinks", "EcalLumiSpecRawHitAssociations"},
0030       {
0031           .eRes          = {0.0 * sqrt(dd4hep::GeV), 0.02, 0.0 * dd4hep::GeV}, // flat 2%
0032           .tRes          = 0.0 * dd4hep::ns,
0033           .capADC        = 16384,
0034           .dyRangeADC    = 20 * dd4hep::GeV,
0035           .pedMeanADC    = 100,
0036           .pedSigmaADC   = 1,
0037           .resolutionTDC = 10 * dd4hep::picosecond,
0038           .corrMeanScale = "1.0",
0039           .readout       = "EcalLumiSpecHits",
0040       },
0041       app // TODO: Remove me once fixed
0042       ));
0043   app->Add(new JOmniFactoryGeneratorT<CalorimeterHitReco_factory>(
0044       "EcalLumiSpecRecHits", {"EcalLumiSpecRawHits"}, {"EcalLumiSpecRecHits"},
0045       {
0046           .capADC          = 16384,
0047           .dyRangeADC      = 20. * dd4hep::GeV,
0048           .pedMeanADC      = 100,
0049           .pedSigmaADC     = 1,
0050           .resolutionTDC   = 10 * dd4hep::picosecond,
0051           .thresholdFactor = 0.0,
0052           .thresholdValue  = 2.0,
0053           .sampFrac        = "1.0",
0054           .readout         = "EcalLumiSpecHits",
0055       },
0056       app // TODO: Remove me once fixed
0057       ));
0058   app->Add(new JOmniFactoryGeneratorT<CalorimeterTruthClustering_factory>(
0059       "EcalLumiSpecTruthProtoClusters", {"EcalLumiSpecRecHits", "EcalLumiSpecHits"},
0060       {"EcalLumiSpecTruthProtoClusters"},
0061       app // TODO: Remove me once fixed
0062       ));
0063   app->Add(new JOmniFactoryGeneratorT<CalorimeterIslandCluster_factory>(
0064       "EcalLumiSpecIslandProtoClusters", {"EcalLumiSpecRecHits"},
0065       {"EcalLumiSpecIslandProtoClusters"},
0066       {
0067           .adjacencyMatrix =
0068               "(sector_1 == sector_2) && ((abs(floor(module_1 / 10) - floor(module_2 / 10)) + "
0069               "abs(fmod(module_1, 10) - fmod(module_2, 10))) == 1)",
0070           .peakNeighbourhoodMatrix{},
0071           .readout    = "EcalLumiSpecHits",
0072           .sectorDist = 0.0 * dd4hep::cm,
0073           .localDistXY{},
0074           .localDistXZ{},
0075           .localDistYZ{},
0076           .globalDistRPhi{},
0077           .globalDistEtaPhi{},
0078           .dimScaledLocalDistXY{},
0079           .splitCluster                  = true,
0080           .minClusterHitEdep             = 1.0 * dd4hep::MeV,
0081           .minClusterCenterEdep          = 30.0 * dd4hep::MeV,
0082           .transverseEnergyProfileMetric = "localDistXY",
0083           .transverseEnergyProfileScale  = 10. * dd4hep::mm,
0084           .transverseEnergyProfileScaleUnits{},
0085       },
0086       app // TODO: Remove me once fixed
0087       ));
0088 
0089   app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0090       "EcalLumiSpecClustersWithoutShapes",
0091       {
0092           "EcalLumiSpecIslandProtoClusters", // edm4eic::ProtoClusterCollection
0093           "EcalLumiSpecRawHitLinks",         // edm4eic::MCRecoCalorimeterHitLink
0094           "EcalLumiSpecRawHitAssociations"   // edm4eic::MCRecoCalorimeterHitAssociationCollection
0095       },
0096       {"EcalLumiSpecClustersWithoutShapes", "EcalLumiSpecClusterLinksWithoutShapes",
0097        "EcalLumiSpecClusterAssociationsWithoutShapes"}, // edm4eic::MCRecoClusterParticleAssociation
0098       {.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 3.6, .enableEtaBounds = false},
0099       app // TODO: Remove me once fixed
0100       ));
0101   app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterShape_factory>(
0102       "EcalLumiSpecClusters",
0103       {"EcalLumiSpecClustersWithoutShapes", "EcalLumiSpecClusterAssociationsWithoutShapes"},
0104       {"EcalLumiSpecClusters", "EcalLumiSpecClusterLinks", "EcalLumiSpecClusterAssociations"},
0105       {.energyWeight = "log", .logWeightBase = 3.6}, app));
0106 
0107   app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0108       "EcalLumiSpecTruthClustersWithoutShapes",
0109       {
0110           "EcalLumiSpecTruthProtoClusters", // edm4eic::ProtoClusterCollection
0111           "EcalLumiSpecRawHitLinks",        // edm4eic::MCRecoCalorimeterHitLink
0112           "EcalLumiSpecRawHitAssociations"  // edm4eic::MCRecoCalorimeterHitAssociationCollection
0113       },
0114       {"EcalLumiSpecTruthClustersWithoutShapes", "EcalLumiSpecTruthClusterLinksWithoutShapes",
0115        "EcalLumiSpecTruthClusterAssociationsWithoutShapes"}, // edm4eic::MCRecoClusterParticleAssociation
0116       {.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 4.6, .enableEtaBounds = false},
0117       app // TODO: Remove me once fixed
0118       ));
0119   app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterShape_factory>(
0120       "EcalLumiSpecTruthClusters",
0121       {"EcalLumiSpecTruthClustersWithoutShapes",
0122        "EcalLumiSpecTruthClusterAssociationsWithoutShapes"},
0123       {"EcalLumiSpecTruthClusters", "EcalLumiSpecTruthClusterLinks",
0124        "EcalLumiSpecTruthClusterAssociations"},
0125       {.energyWeight = "log", .logWeightBase = 4.6}, app));
0126 }
0127 }