File indexing completed on 2025-08-05 08:13:25
0001
0002
0003
0004
0005
0006
0007
0008
0009 #define FUN4ALL_TESTTRIGGERCLUSTERMAKER_C
0010
0011
0012 #include <string>
0013 #include <vector>
0014
0015 #include <caloreco/CaloTowerCalib.h>
0016 #include <caloreco/CaloTowerBuilder.h>
0017 #include <caloreco/CaloWaveformProcessing.h>
0018 #include <calotrigger/LL1PacketGetter.h>
0019 #include <calotrigger/CaloTriggerEmulator.h>
0020
0021 #include <ffamodules/FlagHandler.h>
0022 #include <ffamodules/CDBInterface.h>
0023
0024 #include <fun4all/SubsysReco.h>
0025 #include <fun4all/Fun4AllServer.h>
0026 #include <fun4all/Fun4AllInputManager.h>
0027 #include <fun4all/Fun4AllDstInputManager.h>
0028 #include <fun4all/Fun4AllDstOutputManager.h>
0029 #include <fun4allraw/Fun4AllPrdfInputManager.h>
0030
0031 #include <phool/recoConsts.h>
0032
0033 #include <triggerclustermaker/TriggerClusterMaker.h>
0034
0035
0036 R__LOAD_LIBRARY(libcalo_io.so)
0037 R__LOAD_LIBRARY(libcalotrigger.so)
0038 R__LOAD_LIBRARY(libfun4all.so)
0039 R__LOAD_LIBRARY(libfun4allraw.so)
0040 R__LOAD_LIBRARY(libtriggerclustermaker.so)
0041
0042
0043 typedef std::vector<std::string> SVec;
0044
0045
0046
0047
0048
0049
0050 void Fun4All_TestTriggerClusterMakerOnSim(
0051 const int runnumber = 11,
0052 const int nEvents = 10,
0053 const int verbosity = 5,
0054 const SVec vecInFiles = {
0055 "input/pp200py8jet10run11.DstCaloCluster.list",
0056 "input/pp200py8jet10run11.DstG4Hits.list"
0057 },
0058 const SVec lutFiles = {
0059 "/sphenix/user/dlis/Projects/macros/CDBTest/emcal_ll1_lut.root",
0060 "/sphenix/user/dlis/Projects/macros/CDBTest/hcalin_ll1_lut.root",
0061 "/sphenix/user/dlis/Projects/macros/CDBTest/hcalout_ll1_lut.root"
0062 },
0063 const std::string outFile = "test.root"
0064 ) {
0065
0066
0067
0068
0069 const bool offline = true;
0070 const uint32_t nSamples = 12;
0071 const std::string wavePrefix = "WAVEFORM_";
0072 const std::string calibPrefix = "TOWERSWAVEFORM_CALIB_";
0073
0074
0075 CaloTowerDefs::BuilderType build = CaloTowerDefs::kPRDFWaveform;
0076
0077
0078 const bool useEMCal = true;
0079 const bool useIHCal = true;
0080 const bool useOHCal = true;
0081 const uint32_t iThresh = 1;
0082 const uint32_t nSampUse = 6;
0083 const uint32_t nDelay = 5;
0084 const std::string type = "JET";
0085
0086
0087 TriggerClusterMakerConfig cfg_maker {
0088 .debug = true,
0089 .outNodeName = "TriggerClusters",
0090 .inLL1Nodes = {
0091 "LL1OUT_JET"
0092 },
0093 .inPrimNodes = {
0094 "TRIGGERPRIMITIVES_JET",
0095 "TRIGGERPRIMITIVES_EMCAL",
0096 "TRIGGERPRIMITIVES_EMCAL_LL1",
0097 "TRIGGERPRIMITIVES_HCAL_LL1",
0098 "TRIGGERPRIMITIVES_HCALIN",
0099 "TRIGGERPRIMITIVES_HCALOUT"
0100 },
0101 .inEMCalTowerNode = "TOWERINFO_CALIB_CEMC",
0102 .inIHCalTowerNode = "TOWERINFO_CALIB_HCALIN",
0103 .inOHCalTowerNode = "TOWERINFO_CALIB_HCALOUT"
0104 };
0105
0106
0107
0108 Fun4AllServer* f4a = Fun4AllServer::instance();
0109 CDBInterface* cdb = CDBInterface::instance();
0110 recoConsts* rc = recoConsts::instance();
0111 f4a -> Verbosity(verbosity);
0112 cdb -> Verbosity(verbosity);
0113
0114
0115 rc -> set_StringFlag("CDB_GLOBALTAG", "ProdA_2023");
0116 rc -> set_uint64Flag("TIMESTAMP", runnumber);
0117
0118
0119
0120
0121 for (size_t iInput = 0; iInput < vecInFiles.size(); ++iInput) {
0122 Fun4AllDstInputManager* input = new Fun4AllDstInputManager("InputDstManager" + std::to_string(iInput));
0123 input -> AddListFile(vecInFiles[iInput]);
0124 f4a -> registerInputManager(input);
0125 }
0126
0127
0128 Fun4AllDstOutputManager* output = new Fun4AllDstOutputManager("OutputDstManager", outFile);
0129 f4a -> registerOutputManager(output);
0130
0131
0132 FlagHandler* handler = new FlagHandler();
0133 f4a -> registerSubsystem(handler);
0134
0135
0136
0137
0138 CaloTowerBuilder* emBuilder = new CaloTowerBuilder("EMCALBUILDER");
0139 emBuilder -> set_detector_type(CaloTowerDefs::CEMC);
0140 emBuilder -> set_processing_type(CaloWaveformProcessing::FAST);
0141 emBuilder -> set_builder_type(build);
0142 emBuilder -> set_outputNodePrefix(wavePrefix);
0143 emBuilder -> set_nsamples(nSamples);
0144 emBuilder -> set_offlineflag(offline);
0145 f4a -> registerSubsystem(emBuilder);
0146
0147
0148 CaloTowerBuilder* ihBuilder = new CaloTowerBuilder("HCALINBUILDER");
0149 ihBuilder -> set_detector_type(CaloTowerDefs::HCALIN);
0150 ihBuilder -> set_processing_type(CaloWaveformProcessing::FAST);
0151 ihBuilder -> set_builder_type(build);
0152 ihBuilder -> set_outputNodePrefix(wavePrefix);
0153 ihBuilder -> set_nsamples(nSamples);
0154 ihBuilder -> set_offlineflag(offline);
0155 f4a -> registerSubsystem(ihBuilder);
0156
0157
0158 CaloTowerBuilder* ohBuilder = new CaloTowerBuilder("HCALOUTBUILDER");
0159 ohBuilder -> set_detector_type(CaloTowerDefs::HCALOUT);
0160 ohBuilder -> set_processing_type(CaloWaveformProcessing::FAST);
0161 ohBuilder -> set_builder_type(build);
0162 ohBuilder -> set_outputNodePrefix(wavePrefix);
0163 ohBuilder -> set_nsamples(nSamples);
0164 ohBuilder -> set_offlineflag(offline);
0165 f4a -> registerSubsystem(ohBuilder);
0166
0167
0168 CaloTowerCalib* emCalib = new CaloTowerCalib();
0169 emCalib -> set_detector_type(CaloTowerDefs::CEMC);
0170 emCalib -> set_inputNodePrefix(wavePrefix);
0171 emCalib -> set_outputNodePrefix(calibPrefix);
0172 f4a -> registerSubsystem(emCalib);
0173
0174
0175 CaloTowerCalib* ihCalib = new CaloTowerCalib();
0176 ihCalib -> set_detector_type(CaloTowerDefs::HCALIN);
0177 ihCalib -> set_inputNodePrefix(wavePrefix);
0178 ihCalib -> set_outputNodePrefix(calibPrefix);
0179 f4a -> registerSubsystem(ihCalib);
0180
0181
0182 CaloTowerCalib* ohCalib = new CaloTowerCalib();
0183 ohCalib -> set_detector_type(CaloTowerDefs::HCALOUT);
0184 ohCalib -> set_inputNodePrefix(wavePrefix);
0185 ohCalib -> set_outputNodePrefix(calibPrefix);
0186 f4a -> registerSubsystem(ohCalib);
0187
0188
0189 CaloTriggerEmulator* emulator = new CaloTriggerEmulator("TriggerEmulator");
0190 emulator -> Verbosity(verbosity);
0191 emulator -> setTriggerType(type);
0192 emulator -> setNSamples(nSamples);
0193 emulator -> setTriggerSample(nSampUse);
0194 emulator -> useEMCAL(useEMCal);
0195 emulator -> useHCALIN(useIHCal);
0196 emulator -> useHCALOUT(useOHCal);
0197 emulator -> setEmcalLUTFile(lutFiles.at(0));
0198 emulator -> setHcalinLUTFile(lutFiles.at(1));
0199 emulator -> setHcaloutLUTFile(lutFiles.at(2));
0200 emulator -> setThreshold(iThresh);
0201 f4a -> registerSubsystem(emulator);
0202
0203
0204 TriggerClusterMaker* maker = new TriggerClusterMaker("TriggerClusterMaker");
0205 maker -> Verbosity(verbosity);
0206 maker -> SetConfig(cfg_maker);
0207 f4a -> registerSubsystem(maker);
0208
0209
0210
0211
0212 f4a -> run(nEvents);
0213 f4a -> End();
0214 delete f4a;
0215
0216
0217 gSystem -> Exit(0);
0218 return;
0219
0220 }
0221
0222