File indexing completed on 2024-09-27 07:03:04
0001
0002
0003
0004
0005
0006 #include <edm4eic/EDM4eicVersion.h>
0007 #include <Evaluator/DD4hepUnits.h>
0008 #include <JANA/JApplication.h>
0009 #include <math.h>
0010 #include <string>
0011
0012 #include "algorithms/calorimetry/ImagingTopoClusterConfig.h"
0013 #include "extensions/jana/JOmniFactoryGeneratorT.h"
0014 #include "factories/calorimetry/CalorimeterClusterRecoCoG_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 #include "factories/calorimetry/HEXPLIT_factory.h"
0020 #include "factories/calorimetry/ImagingTopoCluster_factory.h"
0021
0022 extern "C" {
0023 void InitPlugin(JApplication *app) {
0024
0025 using namespace eicrecon;
0026
0027 InitJANAPlugin(app);
0028
0029
0030 app->Add(new JOmniFactoryGeneratorT<CalorimeterHitDigi_factory>(
0031 "EcalFarForwardZDCRawHits",
0032 {"EcalFarForwardZDCHits"},
0033 #if EDM4EIC_VERSION_MAJOR >= 7
0034 {"EcalFarForwardZDCRawHits", "EcalFarForwardZDCRawHitAssociations"},
0035 #else
0036 {"EcalFarForwardZDCRawHits"},
0037 #endif
0038 {
0039 .tRes = 0.0 * dd4hep::ns,
0040 .capADC = 32768,
0041 .dyRangeADC = 2000 * dd4hep::MeV,
0042 .pedMeanADC = 400,
0043 .pedSigmaADC = 3.2,
0044 .resolutionTDC = 10 * dd4hep::picosecond,
0045 .corrMeanScale = "1.0",
0046 .readout = "EcalFarForwardZDCHits",
0047 },
0048 app
0049 ));
0050 app->Add(new JOmniFactoryGeneratorT<CalorimeterHitReco_factory>(
0051 "EcalFarForwardZDCRecHits", {"EcalFarForwardZDCRawHits"}, {"EcalFarForwardZDCRecHits"},
0052 {
0053 .capADC = 32768,
0054 .dyRangeADC = 2000. * dd4hep::MeV,
0055 .pedMeanADC = 400,
0056 .pedSigmaADC = 3.2,
0057 .resolutionTDC = 10 * dd4hep::picosecond,
0058 .thresholdFactor = 4.0,
0059 .thresholdValue = 0.0,
0060 .sampFrac = "1.0",
0061 .readout = "EcalFarForwardZDCHits",
0062 },
0063 app
0064 ));
0065 app->Add(new JOmniFactoryGeneratorT<CalorimeterTruthClustering_factory>(
0066 "EcalFarForwardZDCTruthProtoClusters", {"EcalFarForwardZDCRecHits", "EcalFarForwardZDCHits"}, {"EcalFarForwardZDCTruthProtoClusters"},
0067 app
0068 ));
0069 app->Add(new JOmniFactoryGeneratorT<CalorimeterIslandCluster_factory>(
0070 "EcalFarForwardZDCIslandProtoClusters", {"EcalFarForwardZDCRecHits"}, {"EcalFarForwardZDCIslandProtoClusters"},
0071 {
0072 .sectorDist = 5.0 * dd4hep::cm,
0073 .localDistXY = {50 * dd4hep::cm, 50 * dd4hep::cm},
0074 .splitCluster = true,
0075 .minClusterHitEdep = 0.1 * dd4hep::MeV,
0076 .minClusterCenterEdep = 3.0 * dd4hep::MeV,
0077 .transverseEnergyProfileMetric = "globalDistEtaPhi",
0078 .transverseEnergyProfileScale = 1.,
0079 },
0080 app
0081 ));
0082
0083 app->Add(
0084 new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0085 "EcalFarForwardZDCTruthClusters",
0086 {"EcalFarForwardZDCTruthProtoClusters",
0087 #if EDM4EIC_VERSION_MAJOR >= 7
0088 "EcalFarForwardZDCRawHitAssociations"},
0089 #else
0090 "EcalFarForwardZDCHits"},
0091 #endif
0092 {"EcalFarForwardZDCTruthClusters",
0093 "EcalFarForwardZDCTruthClusterAssociations"},
0094 {
0095 .energyWeight = "log",
0096 .sampFrac = 1.0,
0097 .logWeightBase = 3.6,
0098 .longitudinalShowerInfoAvailable = true,
0099 .enableEtaBounds = false
0100 },
0101 app
0102 )
0103 );
0104
0105 app->Add(
0106 new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0107 "EcalFarForwardZDCClusters",
0108 {"EcalFarForwardZDCIslandProtoClusters",
0109 #if EDM4EIC_VERSION_MAJOR >= 7
0110 "EcalFarForwardZDCRawHitAssociations"},
0111 #else
0112 "EcalFarForwardZDCHits"},
0113 #endif
0114 {"EcalFarForwardZDCClusters",
0115 "EcalFarForwardZDCClusterAssociations"},
0116 {
0117 .energyWeight = "log",
0118 .sampFrac = 1.0,
0119 .logWeightBase = 6.2,
0120 .longitudinalShowerInfoAvailable = true,
0121 .enableEtaBounds = false,
0122 },
0123 app
0124 )
0125 );
0126
0127 app->Add(new JOmniFactoryGeneratorT<CalorimeterHitDigi_factory>(
0128 "HcalFarForwardZDCRawHits",
0129 {"HcalFarForwardZDCHits"},
0130 #if EDM4EIC_VERSION_MAJOR >= 7
0131 {"HcalFarForwardZDCRawHits", "HcalFarForwardZDCRawHitAssociations"},
0132 #else
0133 {"HcalFarForwardZDCRawHits"},
0134 #endif
0135 {
0136 .tRes = 0.0 * dd4hep::ns,
0137 .capADC = 65536,
0138 .dyRangeADC = 1000. * dd4hep::MeV,
0139 .pedMeanADC = 400,
0140 .pedSigmaADC = 2,
0141 .resolutionTDC = 10 * dd4hep::picosecond,
0142 .corrMeanScale = "1.0",
0143 .readout = "HcalFarForwardZDCHits",
0144 },
0145 app
0146 ));
0147
0148 app->Add(new JOmniFactoryGeneratorT<CalorimeterHitReco_factory>(
0149 "HcalFarForwardZDCRecHits", {"HcalFarForwardZDCRawHits"}, {"HcalFarForwardZDCRecHits"},
0150 {
0151 .capADC = 65536,
0152 .dyRangeADC = 1000. * dd4hep::MeV,
0153 .pedMeanADC = 400,
0154 .pedSigmaADC = 2,
0155 .resolutionTDC = 10 * dd4hep::picosecond,
0156 .thresholdFactor = 3.0,
0157 .thresholdValue = 0.0,
0158 .sampFrac = "1.0",
0159 .readout = "HcalFarForwardZDCHits",
0160 .layerField = "layer",
0161 .sectorField = "system",
0162 },
0163 app
0164 ));
0165
0166 app->Add(new JOmniFactoryGeneratorT<HEXPLIT_factory>(
0167 "HcalFarForwardZDCSubcellHits", {"HcalFarForwardZDCRecHits"}, {"HcalFarForwardZDCSubcellHits"},
0168 {
0169 .MIP = 472. * dd4hep::keV,
0170 .Emin_in_MIPs=0.5,
0171 .tmax=269 * dd4hep::ns,
0172 },
0173 app
0174 ));
0175
0176 double side_length=31.3 * dd4hep::mm;
0177 app->Add(new JOmniFactoryGeneratorT<ImagingTopoCluster_factory>(
0178 "HcalFarForwardZDCImagingProtoClusters", {"HcalFarForwardZDCSubcellHits"}, {"HcalFarForwardZDCImagingProtoClusters"},
0179 {
0180 .neighbourLayersRange = 1,
0181 .localDistXY = {0.5*side_length, 0.5*side_length*sin(M_PI/3)},
0182 .layerDistXY = {0.25*side_length, 0.25*side_length*sin(M_PI/3)},
0183 .layerMode=eicrecon::ImagingTopoClusterConfig::ELayerMode::xy,
0184 .sectorDist = 10.0 * dd4hep::cm,
0185 .minClusterHitEdep = 100.0 * dd4hep::keV,
0186 .minClusterCenterEdep = 3.0 * dd4hep::MeV,
0187 .minClusterEdep = 11.0 * dd4hep::MeV,
0188 .minClusterNhits = 100,
0189 },
0190 app
0191 ));
0192
0193 app->Add(new JOmniFactoryGeneratorT<CalorimeterIslandCluster_factory>(
0194 "HcalFarForwardZDCIslandProtoClusters", {"HcalFarForwardZDCSubcellHits"}, {"HcalFarForwardZDCIslandProtoClusters"},
0195 {
0196 .sectorDist = 1.5 * dd4hep::cm,
0197 .localDistXY = {0.9*side_length, 0.76*side_length*sin(M_PI/3)},
0198 .splitCluster = false,
0199 .minClusterHitEdep = 100.0 * dd4hep::keV,
0200 .minClusterCenterEdep = 1.0 * dd4hep::MeV,
0201
0202
0203 },
0204 app
0205 ));
0206
0207 app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0208 "HcalFarForwardZDCClusters",
0209 {"HcalFarForwardZDCImagingProtoClusters",
0210 #if EDM4EIC_VERSION_MAJOR >= 7
0211 "HcalFarForwardZDCRawHitAssociations"},
0212 #else
0213 "HcalFarForwardZDCHits"},
0214 #endif
0215 {"HcalFarForwardZDCClusters",
0216 "HcalFarForwardZDCClusterAssociations"},
0217 {
0218 .energyWeight = "log",
0219 .sampFrac = 0.0203,
0220 .logWeightBaseCoeffs={5.8,0.65,0.31},
0221 .logWeightBase_Eref=50*dd4hep::GeV,
0222 .longitudinalShowerInfoAvailable = true,
0223 },
0224 app
0225 ));
0226
0227 app->Add(new JOmniFactoryGeneratorT<CalorimeterTruthClustering_factory>(
0228 "HcalFarForwardZDCTruthProtoClusters", {"HcalFarForwardZDCRecHits", "HcalFarForwardZDCHits"}, {"HcalFarForwardZDCTruthProtoClusters"},
0229 app
0230 ));
0231
0232
0233 app->Add(new JOmniFactoryGeneratorT<CalorimeterIslandCluster_factory>(
0234 "HcalFarForwardZDCIslandProtoClustersBaseline", {"HcalFarForwardZDCRecHits"}, {"HcalFarForwardZDCIslandProtoClustersBaseline"},
0235 {
0236 .sectorDist = 5.0 * dd4hep::cm,
0237 .localDistXY = {50 * dd4hep::cm, 50 * dd4hep::cm},
0238 .splitCluster = true,
0239 .minClusterHitEdep = 0.1 * dd4hep::MeV,
0240 .minClusterCenterEdep = 3.0 * dd4hep::MeV,
0241 .transverseEnergyProfileMetric = "globalDistEtaPhi",
0242 .transverseEnergyProfileScale = 1.,
0243 },
0244 app
0245 ));
0246
0247 app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0248 "HcalFarForwardZDCTruthClusters",
0249 {"HcalFarForwardZDCTruthProtoClusters",
0250 #if EDM4EIC_VERSION_MAJOR >= 7
0251 "HcalFarForwardZDCRawHitAssociations"},
0252 #else
0253 "HcalFarForwardZDCHits"},
0254 #endif
0255 {"HcalFarForwardZDCTruthClusters",
0256 "HcalFarForwardZDCTruthClusterAssociations"},
0257 {
0258 .energyWeight = "log",
0259 .sampFrac = 1.0,
0260 .logWeightBase = 3.6,
0261 .longitudinalShowerInfoAvailable = true,
0262 .enableEtaBounds = false
0263 },
0264 app
0265 )
0266 );
0267
0268 app->Add(new JOmniFactoryGeneratorT<CalorimeterClusterRecoCoG_factory>(
0269 "HcalFarForwardZDCClustersBaseline",
0270 {"HcalFarForwardZDCIslandProtoClustersBaseline",
0271 #if EDM4EIC_VERSION_MAJOR >= 7
0272 "HcalFarForwardZDCRawHitAssociations"},
0273 #else
0274 "HcalFarForwardZDCHits"},
0275 #endif
0276 {"HcalFarForwardZDCClustersBaseline",
0277 "HcalFarForwardZDCClusterAssociationsBaseline"},
0278 {
0279 .energyWeight = "log",
0280 .sampFrac = 0.0203,
0281 .logWeightBase = 6.2,
0282 .longitudinalShowerInfoAvailable = true,
0283 .enableEtaBounds = false,
0284 },
0285 app
0286 )
0287 );
0288 }
0289 }