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