Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-11-05 08:57:56

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", "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           "EcalLumiSpecRawHitAssociations"   // edm4eic::MCRecoCalorimeterHitAssociationCollection
0094       },
0095       {"EcalLumiSpecClustersWithoutShapes",             // edm4eic::Cluster
0096        "EcalLumiSpecClusterAssociationsWithoutShapes"}, // edm4eic::MCRecoClusterParticleAssociation
0097       {.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 3.6, .enableEtaBounds = false},
0098       app // TODO: Remove me once fixed
0099       ));
0100   app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterShape_factory>(
0101       "EcalLumiSpecClusters",
0102       {"EcalLumiSpecClustersWithoutShapes", "EcalLumiSpecClusterAssociationsWithoutShapes"},
0103       {"EcalLumiSpecClusters", "EcalLumiSpecClusterAssociations"},
0104       {.energyWeight = "log", .logWeightBase = 3.6}, app));
0105 
0106   app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0107       "EcalLumiSpecTruthClustersWithoutShapes",
0108       {
0109           "EcalLumiSpecTruthProtoClusters", // edm4eic::ProtoClusterCollection
0110           "EcalLumiSpecRawHitAssociations"  // edm4eic::MCRecoCalorimeterHitAssociationCollection
0111       },
0112       {"EcalLumiSpecTruthClustersWithoutShapes",             // edm4eic::Cluster
0113        "EcalLumiSpecTruthClusterAssociationsWithoutShapes"}, // edm4eic::MCRecoClusterParticleAssociation
0114       {.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 4.6, .enableEtaBounds = false},
0115       app // TODO: Remove me once fixed
0116       ));
0117   app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterShape_factory>(
0118       "EcalLumiSpecTruthClusters",
0119       {"EcalLumiSpecTruthClustersWithoutShapes",
0120        "EcalLumiSpecTruthClusterAssociationsWithoutShapes"},
0121       {"EcalLumiSpecTruthClusters", "EcalLumiSpecTruthClusterAssociations"},
0122       {.energyWeight = "log", .logWeightBase = 4.6}, app));
0123 }
0124 }