File indexing completed on 2025-09-18 08:17:53
0001
0002
0003
0004 #include <Evaluator/DD4hepUnits.h>
0005 #include <JANA/JApplicationFwd.h>
0006 #include <JANA/Utils/JTypeInfo.h>
0007 #include <string>
0008 #include <variant>
0009 #include <vector>
0010
0011 #include "algorithms/calorimetry/CalorimeterHitDigiConfig.h"
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/CalorimeterHitsMerger_factory.h"
0018 #include "factories/calorimetry/CalorimeterIslandCluster_factory.h"
0019 #include "factories/calorimetry/CalorimeterTruthClustering_factory.h"
0020 #include "factories/calorimetry/TrackClusterMergeSplitter_factory.h"
0021
0022 extern "C" {
0023 void InitPlugin(JApplication* app) {
0024
0025 using namespace eicrecon;
0026
0027 InitJANAPlugin(app);
0028
0029 decltype(CalorimeterHitDigiConfig::capADC) HcalEndcapN_capADC =
0030 32768;
0031 decltype(CalorimeterHitDigiConfig::dyRangeADC) HcalEndcapN_dyRangeADC =
0032 200 * dd4hep::MeV;
0033 decltype(CalorimeterHitDigiConfig::pedMeanADC) HcalEndcapN_pedMeanADC = 10;
0034 decltype(CalorimeterHitDigiConfig::pedSigmaADC) HcalEndcapN_pedSigmaADC = 2;
0035 decltype(CalorimeterHitDigiConfig::resolutionTDC) HcalEndcapN_resolutionTDC =
0036 10 * dd4hep::picosecond;
0037
0038 app->Add(new JOmniFactoryGeneratorT<CalorimeterHitDigi_factory>(
0039 "HcalEndcapNRawHits", {"EventHeader", "HcalEndcapNHits"},
0040 {"HcalEndcapNRawHits", "HcalEndcapNRawHitAssociations"},
0041 {
0042 .eRes{},
0043 .tRes = 0.0 * dd4hep::ns,
0044 .capADC = HcalEndcapN_capADC,
0045 .capTime = 100,
0046 .dyRangeADC = HcalEndcapN_dyRangeADC,
0047 .pedMeanADC = HcalEndcapN_pedMeanADC,
0048 .pedSigmaADC = HcalEndcapN_pedSigmaADC,
0049 .resolutionTDC = HcalEndcapN_resolutionTDC,
0050 .corrMeanScale = "1.0",
0051 .readout = "HcalEndcapNHits",
0052 },
0053 app
0054 ));
0055 app->Add(new JOmniFactoryGeneratorT<CalorimeterHitReco_factory>(
0056 "HcalEndcapNRecHits", {"HcalEndcapNRawHits"}, {"HcalEndcapNRecHits"},
0057 {
0058 .capADC = HcalEndcapN_capADC,
0059 .dyRangeADC = HcalEndcapN_dyRangeADC,
0060 .pedMeanADC = HcalEndcapN_pedMeanADC,
0061 .pedSigmaADC = HcalEndcapN_pedSigmaADC,
0062 .resolutionTDC = HcalEndcapN_resolutionTDC,
0063 .thresholdFactor = 0.0,
0064 .thresholdValue =
0065 41.0,
0066 .sampFrac =
0067 "0.0095",
0068 .readout = "HcalEndcapNHits",
0069 },
0070 app
0071 ));
0072 app->Add(new JOmniFactoryGeneratorT<CalorimeterHitsMerger_factory>(
0073 "HcalEndcapNMergedHits", {"HcalEndcapNRecHits"}, {"HcalEndcapNMergedHits"},
0074 {.readout = "HcalEndcapNHits", .fieldTransformations = {"layer:4", "slice:0"}},
0075 app
0076 ));
0077 app->Add(new JOmniFactoryGeneratorT<CalorimeterTruthClustering_factory>(
0078 "HcalEndcapNTruthProtoClusters", {"HcalEndcapNMergedHits", "HcalEndcapNHits"},
0079 {"HcalEndcapNTruthProtoClusters"},
0080 app
0081 ));
0082 app->Add(new JOmniFactoryGeneratorT<CalorimeterIslandCluster_factory>(
0083 "HcalEndcapNIslandProtoClusters", {"HcalEndcapNMergedHits"},
0084 {"HcalEndcapNIslandProtoClusters"},
0085 {
0086 .adjacencyMatrix{},
0087 .peakNeighbourhoodMatrix{},
0088 .readout{},
0089 .sectorDist = 5.0 * dd4hep::cm,
0090 .localDistXY = {15 * dd4hep::cm, 15 * dd4hep::cm},
0091 .localDistXZ{},
0092 .localDistYZ{},
0093 .globalDistRPhi{},
0094 .globalDistEtaPhi{},
0095 .dimScaledLocalDistXY{},
0096 .splitCluster = true,
0097 .minClusterHitEdep = 0.0 * dd4hep::MeV,
0098 .minClusterCenterEdep = 30.0 * dd4hep::MeV,
0099 .transverseEnergyProfileMetric = "globalDistEtaPhi",
0100 .transverseEnergyProfileScale = 1.,
0101 .transverseEnergyProfileScaleUnits{},
0102 },
0103 app
0104 ));
0105 app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0106 "HcalEndcapNTruthClustersWithoutShapes",
0107 {
0108 "HcalEndcapNTruthProtoClusters",
0109 "HcalEndcapNRawHitAssociations"
0110 },
0111 {"HcalEndcapNTruthClustersWithoutShapes",
0112 "HcalEndcapNTruthClusterAssociationsWithoutShapes"},
0113 {.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 6.2, .enableEtaBounds = false},
0114 app
0115 ));
0116 app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterShape_factory>(
0117 "HcalEndcapNTruthClusters",
0118 {"HcalEndcapNTruthClustersWithoutShapes", "HcalEndcapNTruthClusterAssociationsWithoutShapes"},
0119 {"HcalEndcapNTruthClusters", "HcalEndcapNTruthClusterAssociations"},
0120 {.energyWeight = "log", .logWeightBase = 6.2}, app));
0121 app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0122 "HcalEndcapNClustersWithoutShapes",
0123 {
0124 "HcalEndcapNIslandProtoClusters",
0125 "HcalEndcapNRawHitAssociations"
0126 },
0127 {"HcalEndcapNClustersWithoutShapes",
0128 "HcalEndcapNClusterAssociationsWithoutShapes"},
0129 {
0130 .energyWeight = "log",
0131 .sampFrac = 1.0,
0132 .logWeightBase = 6.2,
0133 .enableEtaBounds = false,
0134 },
0135 app
0136 ));
0137 app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterShape_factory>(
0138 "HcalEndcapNClusters",
0139 {"HcalEndcapNClustersWithoutShapes", "HcalEndcapNClusterAssociationsWithoutShapes"},
0140 {"HcalEndcapNClusters", "HcalEndcapNClusterAssociations"},
0141 {.energyWeight = "log", .logWeightBase = 6.2}, app));
0142 app->Add(new JOmniFactoryGeneratorT<TrackClusterMergeSplitter_factory>(
0143 "HcalEndcapNSplitMergeProtoClusters",
0144 {"HcalEndcapNIslandProtoClusters", "CalorimeterTrackProjections"},
0145 {"HcalEndcapNSplitMergeProtoClusters"},
0146 {.idCalo = "HcalEndcapN_ID",
0147 .minSigCut = -2.0,
0148 .avgEP = 0.60,
0149 .sigEP = 0.40,
0150 .drAdd = 0.40,
0151 .sampFrac = 1.0,
0152 .transverseEnergyProfileScale = 1.0},
0153 app
0154 ));
0155 app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0156 "HcalEndcapNSplitMergeClustersWithoutShapes",
0157 {
0158 "HcalEndcapNSplitMergeProtoClusters",
0159 "HcalEndcapNRawHitAssociations"
0160 },
0161 {"HcalEndcapNSplitMergeClustersWithoutShapes",
0162 "HcalEndcapNSplitMergeClusterAssociationsWithoutShapes"},
0163 {.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 6.2, .enableEtaBounds = false},
0164 app
0165 ));
0166 app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterShape_factory>(
0167 "HcalEndcapNSplitMergeClusters",
0168 {"HcalEndcapNSplitMergeClustersWithoutShapes",
0169 "HcalEndcapNSplitMergeClusterAssociationsWithoutShapes"},
0170 {"HcalEndcapNSplitMergeClusters", "HcalEndcapNSplitMergeClusterAssociations"},
0171 {.energyWeight = "log", .logWeightBase = 6.2}, app));
0172 }
0173 }