File indexing completed on 2025-09-18 08:17:53
0001
0002
0003
0004
0005
0006 #include <Evaluator/DD4hepUnits.h>
0007 #include <JANA/JApplication.h>
0008 #include <JANA/JApplicationFwd.h>
0009 #include <JANA/JException.h>
0010 #include <JANA/Utils/JTypeInfo.h>
0011 #include <stdexcept>
0012 #include <string>
0013 #include <vector>
0014
0015 #include "extensions/jana/JOmniFactoryGeneratorT.h"
0016 #include "factories/digi/MPGDTrackerDigi_factory.h"
0017 #include "factories/digi/SiliconTrackerDigi_factory.h"
0018 #include "factories/tracking/TrackerHitReconstruction_factory.h"
0019
0020
0021
0022
0023
0024
0025
0026 extern "C" {
0027 void InitPlugin(JApplication* app) {
0028 InitJANAPlugin(app);
0029
0030 using namespace eicrecon;
0031
0032
0033
0034
0035 unsigned int SiFactoryPattern = 0x3;
0036 std::string SiFactoryPattern_str;
0037 app->SetDefaultParameter("MPGD:SiFactoryPattern", SiFactoryPattern_str,
0038 "Hexadecimal Pattern of MPGDs digitized via \"SiliconTrackerDigi\"");
0039 if (!SiFactoryPattern_str.empty()) {
0040 try {
0041 SiFactoryPattern = std::stoul(SiFactoryPattern_str, nullptr, 16);
0042 } catch (const std::invalid_argument& e) {
0043 throw JException(
0044 R"(Option "MPGD:SiFactoryPattern": Error ("%s") parsing input
0045 string: '%s')",
0046 e.what(), SiFactoryPattern_str.c_str());
0047 }
0048 }
0049
0050
0051
0052 if ((SiFactoryPattern & 0x1) != 0U) {
0053 app->Add(new JOmniFactoryGeneratorT<SiliconTrackerDigi_factory>(
0054 "MPGDBarrelRawHits", {"EventHeader", "MPGDBarrelHits"},
0055 {"MPGDBarrelRawHits", "MPGDBarrelRawHitAssociations"},
0056 {
0057 .threshold = 100 * dd4hep::eV,
0058 .timeResolution = 10,
0059 },
0060 app));
0061 } else {
0062 app->Add(new JOmniFactoryGeneratorT<MPGDTrackerDigi_factory>(
0063 "MPGDBarrelRawHits", {"EventHeader", "MPGDBarrelHits"},
0064 {"MPGDBarrelRawHits", "MPGDBarrelRawHitAssociations"},
0065 {
0066 .readout = "MPGDBarrelHits",
0067 .threshold = 100 * dd4hep::eV,
0068 .timeResolution = 10,
0069 },
0070 app));
0071 }
0072
0073
0074 app->Add(new JOmniFactoryGeneratorT<TrackerHitReconstruction_factory>(
0075 "MPGDBarrelRecHits", {"MPGDBarrelRawHits"},
0076 {"MPGDBarrelRecHits"},
0077 {
0078 .timeResolution = 10,
0079 },
0080 app));
0081
0082
0083
0084 if ((SiFactoryPattern & 0x2) != 0U) {
0085 app->Add(new JOmniFactoryGeneratorT<SiliconTrackerDigi_factory>(
0086 "OuterMPGDBarrelRawHits", {"EventHeader", "OuterMPGDBarrelHits"},
0087 {"OuterMPGDBarrelRawHits", "OuterMPGDBarrelRawHitAssociations"},
0088 {
0089 .threshold = 100 * dd4hep::eV,
0090 .timeResolution = 10,
0091 },
0092 app));
0093 } else {
0094 app->Add(new JOmniFactoryGeneratorT<MPGDTrackerDigi_factory>(
0095 "OuterMPGDBarrelRawHits", {"EventHeader", "OuterMPGDBarrelHits"},
0096 {"OuterMPGDBarrelRawHits", "OuterMPGDBarrelRawHitAssociations"},
0097 {
0098 .readout = "OuterMPGDBarrelHits",
0099 .threshold = 100 * dd4hep::eV,
0100 .timeResolution = 10,
0101 },
0102 app));
0103 }
0104
0105
0106 app->Add(new JOmniFactoryGeneratorT<TrackerHitReconstruction_factory>(
0107 "OuterMPGDBarrelRecHits", {"OuterMPGDBarrelRawHits"},
0108 {"OuterMPGDBarrelRecHits"},
0109 {
0110 .timeResolution = 10,
0111 },
0112 app));
0113
0114
0115
0116 app->Add(new JOmniFactoryGeneratorT<SiliconTrackerDigi_factory>(
0117 "BackwardMPGDEndcapRawHits", {"EventHeader", "BackwardMPGDEndcapHits"},
0118 {"BackwardMPGDEndcapRawHits", "BackwardMPGDEndcapRawHitAssociations"},
0119 {
0120 .threshold = 100 * dd4hep::eV,
0121 .timeResolution = 10,
0122 },
0123 app));
0124
0125
0126 app->Add(new JOmniFactoryGeneratorT<TrackerHitReconstruction_factory>(
0127 "BackwardMPGDEndcapRecHits", {"BackwardMPGDEndcapRawHits"},
0128 {"BackwardMPGDEndcapRecHits"},
0129 {
0130 .timeResolution = 10,
0131 },
0132 app));
0133
0134
0135
0136 app->Add(new JOmniFactoryGeneratorT<SiliconTrackerDigi_factory>(
0137 "ForwardMPGDEndcapRawHits", {"EventHeader", "ForwardMPGDEndcapHits"},
0138 {"ForwardMPGDEndcapRawHits", "ForwardMPGDEndcapRawHitAssociations"},
0139 {
0140 .threshold = 100 * dd4hep::eV,
0141 .timeResolution = 10,
0142 },
0143 app));
0144
0145
0146 app->Add(new JOmniFactoryGeneratorT<TrackerHitReconstruction_factory>(
0147 "ForwardMPGDEndcapRecHits", {"ForwardMPGDEndcapRawHits"},
0148 {"ForwardMPGDEndcapRecHits"},
0149 {
0150 .timeResolution = 10,
0151 },
0152 app));
0153 }
0154 }