File indexing completed on 2025-11-05 08:57:56
0001
0002
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},
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
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
0057 ));
0058 app->Add(new JOmniFactoryGeneratorT<CalorimeterTruthClustering_factory>(
0059 "EcalLumiSpecTruthProtoClusters", {"EcalLumiSpecRecHits", "EcalLumiSpecHits"},
0060 {"EcalLumiSpecTruthProtoClusters"},
0061 app
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
0087 ));
0088
0089 app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0090 "EcalLumiSpecClustersWithoutShapes",
0091 {
0092 "EcalLumiSpecIslandProtoClusters",
0093 "EcalLumiSpecRawHitAssociations"
0094 },
0095 {"EcalLumiSpecClustersWithoutShapes",
0096 "EcalLumiSpecClusterAssociationsWithoutShapes"},
0097 {.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 3.6, .enableEtaBounds = false},
0098 app
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",
0110 "EcalLumiSpecRawHitAssociations"
0111 },
0112 {"EcalLumiSpecTruthClustersWithoutShapes",
0113 "EcalLumiSpecTruthClusterAssociationsWithoutShapes"},
0114 {.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 4.6, .enableEtaBounds = false},
0115 app
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 }