Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:13:25

0001 // ----------------------------------------------------------------------------
0002 // 'Fun4All_TestTriggerClusterMakerOnSim.C'
0003 // Derek Anderson
0004 // 05.16.2024
0005 //
0006 // A small Fun4All macro to test the 'TriggerClusterMaker' module.
0007 // ----------------------------------------------------------------------------
0008 
0009 #define FUN4ALL_TESTTRIGGERCLUSTERMAKER_C
0010 
0011 // c++ utilities
0012 #include <string>
0013 // calotrigger utilities
0014 #include <caloreco/CaloTowerCalib.h>
0015 #include <caloreco/CaloTowerBuilder.h>
0016 #include <caloreco/CaloWaveformProcessing.h>
0017 #include <calotrigger/LL1PacketGetter.h>
0018 #include <calotrigger/CaloTriggerEmulator.h>
0019 // ffa modules
0020 #include <ffamodules/FlagHandler.h>
0021 #include <ffamodules/CDBInterface.h>
0022 // fun4all libraries
0023 #include <fun4all/SubsysReco.h>
0024 #include <fun4all/Fun4AllServer.h>
0025 #include <fun4all/Fun4AllInputManager.h>
0026 #include <fun4all/Fun4AllDstInputManager.h>
0027 #include <fun4all/Fun4AllDstOutputManager.h>
0028 #include <fun4allraw/Fun4AllPrdfInputManager.h>
0029 // phool utilities
0030 #include <phool/recoConsts.h>
0031 // module definitions
0032 #include <triggerclustermaker/TriggerClusterMaker.h>
0033 
0034 R__LOAD_LIBRARY(libcalo_io.so)
0035 R__LOAD_LIBRARY(libcalotrigger.so)
0036 R__LOAD_LIBRARY(libfun4all.so)
0037 R__LOAD_LIBRARY(libfun4allraw.so)
0038 R__LOAD_LIBRARY(libtriggerclustermaker.so)
0039 
0040 
0041 
0042 // macro body -----------------------------------------------------------------
0043 
0044 void Fun4All_TestTriggerClusterMakerOnData(
0045   const int runnumber = 41725,
0046   const int nEvents = 0,
0047   const int verbosity = 5,
0048   const std::string inFile = "input/DST_PRDF-00041725-0000.root",
0049   const std::string lutFile = "/sphenix/user/dlis/Projects/macros/CDBTest/emcal_ll1_lut.root"
0050 ) {
0051 
0052   // options ------------------------------------------------------------------
0053 
0054   // tower builder options
0055   const bool        offline     = true;
0056   const uint32_t    nSamples    = 12;
0057   const std::string wavePrefix  = "WAVEFORM_";
0058   const std::string calibPrefix = "TOWERSWAVEFORM_CALIB_";
0059 
0060   // tower builder type: need waveforms for trigger primitives
0061   CaloTowerDefs::BuilderType build = CaloTowerDefs::kPRDFWaveform;
0062 
0063   // emulator options
0064   const bool        useEMCal = true;
0065   const bool        useIHCal = false;
0066   const bool        useOHCal = false;
0067   const uint32_t    iThresh  = 1;
0068   const uint32_t    nSampUse = 6;
0069   const uint32_t    nDelay   = 5;
0070   const std::string type     = "PHOTON";
0071 
0072   // trigger cluster maker options
0073   TriggerClusterMakerConfig cfg_maker {
0074     .debug      = true,
0075     .saveToNode = false,
0076     .saveToFile = false
0077   };
0078 
0079   // initialize f4a -----------------------------------------------------------
0080 
0081   Fun4AllServer* f4a = Fun4AllServer::instance();
0082   CDBInterface*  cdb = CDBInterface::instance();
0083   recoConsts*    rc  = recoConsts::instance();
0084   f4a -> Verbosity(verbosity);
0085   cdb -> Verbosity(verbosity);
0086 
0087   // grab lookup tables
0088   rc -> set_StringFlag("CDB_GLOBALTAG", "ProdA_2023");
0089   rc -> set_uint64Flag("TIMESTAMP", runnumber);
0090 
0091   // register inputs/outputs --------------------------------------------------
0092 
0093   Fun4AllPrdfInputManager* input = new Fun4AllPrdfInputManager("InputPrdfManager");
0094   input -> fileopen(inFile);
0095   f4a   -> registerInputManager(input);
0096 
0097   // register subsystem reco modules ------------------------------------------
0098 
0099   // place LL1 onto NodeTree for jet LL1 board
0100   LL1PacketGetter* lloJetGetter = new LL1PacketGetter("LL1PACKETGETTER_JET", "JET", "HCAL");
0101   lloJetGetter -> Verbosity(verbosity);
0102   f4a          -> registerSubsystem(lloJetGetter);
0103 
0104   // likewise for emcal LL1 boards
0105   LL1PacketGetter* lloEMCalGetter = new LL1PacketGetter("LL1PACKETGETTER_EMCAL", "NONE", "EMCAL");
0106   lloEMCalGetter -> Verbosity(verbosity);
0107   f4a            -> registerSubsystem(lloEMCalGetter);
0108 
0109   // build emcal towers  
0110   CaloTowerBuilder* emBuilder = new CaloTowerBuilder("EMCALBUILDER");
0111   emBuilder -> set_detector_type(CaloTowerDefs::CEMC);
0112   emBuilder -> set_processing_type(CaloWaveformProcessing::FAST);
0113   emBuilder -> set_builder_type(build);
0114   emBuilder -> set_outputNodePrefix(wavePrefix);
0115   emBuilder -> set_nsamples(nSamples);
0116   emBuilder -> set_offlineflag(offline);
0117   f4a       -> registerSubsystem(emBuilder);
0118 
0119   // build inner hcal towers
0120   CaloTowerBuilder* ihBuilder = new CaloTowerBuilder("HCALINBUILDER");
0121   ihBuilder -> set_detector_type(CaloTowerDefs::HCALIN);
0122   ihBuilder -> set_processing_type(CaloWaveformProcessing::FAST);
0123   ihBuilder -> set_builder_type(build);
0124   ihBuilder -> set_outputNodePrefix(wavePrefix);
0125   ihBuilder -> set_nsamples(nSamples);
0126   ihBuilder -> set_offlineflag(offline);
0127   f4a       -> registerSubsystem(ihBuilder);
0128 
0129   // build outer hcal towers
0130   CaloTowerBuilder* ohBuilder = new CaloTowerBuilder("HCALOUTBUILDER");
0131   ohBuilder -> set_detector_type(CaloTowerDefs::HCALOUT);
0132   ohBuilder -> set_processing_type(CaloWaveformProcessing::FAST);
0133   ohBuilder -> set_builder_type(build);
0134   ohBuilder -> set_outputNodePrefix(wavePrefix);
0135   ohBuilder -> set_nsamples(nSamples);
0136   ohBuilder -> set_offlineflag(offline);
0137   f4a       -> registerSubsystem(ohBuilder);
0138 
0139   // calibrate emcal towers
0140   CaloTowerCalib* emCalib = new CaloTowerCalib();
0141   emCalib -> set_detector_type(CaloTowerDefs::CEMC);
0142   emCalib -> set_inputNodePrefix(wavePrefix);
0143   emCalib -> set_outputNodePrefix(calibPrefix);
0144   f4a     -> registerSubsystem(emCalib);
0145 
0146   // calibrate inner hcal towers
0147   CaloTowerCalib* ihCalib = new CaloTowerCalib();
0148   ihCalib -> set_detector_type(CaloTowerDefs::HCALIN);
0149   ihCalib -> set_inputNodePrefix(wavePrefix);
0150   ihCalib -> set_outputNodePrefix(calibPrefix);
0151   f4a     -> registerSubsystem(ihCalib);
0152 
0153   // calibrate outer hcal towers
0154   CaloTowerCalib* ohCalib = new CaloTowerCalib();
0155   ohCalib -> set_detector_type(CaloTowerDefs::HCALOUT);
0156   ohCalib -> set_inputNodePrefix(wavePrefix);
0157   ohCalib -> set_outputNodePrefix(calibPrefix);
0158   f4a     -> registerSubsystem(ohCalib);
0159 
0160   // run emulator
0161   CaloTriggerEmulator* emulator = new CaloTriggerEmulator("TriggerEmulator");
0162   emulator -> Verbosity(verbosity);
0163   emulator -> setTriggerType(type);
0164   emulator -> setNSamples(nSamples);
0165   emulator -> setTriggerSample(nSampUse);
0166   emulator -> useEMCAL(useEMCal);
0167   emulator -> useHCALIN(useIHCal);
0168   emulator -> useHCALOUT(useOHCal);
0169   emulator -> setEmcalLUTFile(lutFile);
0170   emulator -> setThreshold(iThresh);
0171   f4a      -> registerSubsystem(emulator);
0172 
0173   // finally, make trigger clusters
0174   TriggerClusterMaker* maker = new TriggerClusterMaker("TriggerClusterMaker");
0175   maker -> SetConfig(cfg_maker);
0176   f4a   -> registerSubsystem(maker);
0177 
0178   // run modules and exit -----------------------------------------------------
0179 
0180   // run4all
0181   f4a -> run(nEvents);
0182   f4a -> End();
0183   delete f4a;
0184 
0185   // exit
0186   gSystem -> Exit(0);
0187   return;
0188 
0189 }
0190 
0191 // end ------------------------------------------------------------------------