Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:20:26

0001 #ifndef SYS_CALO_C
0002 #define SYS_CALO_C
0003 #include <caloreco/CaloTowerCalib.h>
0004 #include <caloreco/RawClusterBuilderTemplate.h>
0005 
0006 #include <fun4all/Fun4AllServer.h>
0007 #include <fun4all/Fun4AllUtils.h>
0008 #include <fun4all/SubsysReco.h>
0009 
0010 #include <ffamodules/CDBInterface.h>
0011 
0012 R__LOAD_LIBRARY(libfun4all.so)
0013 R__LOAD_LIBRARY(libcalo_reco.so)
0014 
0015 //draft macro... put all info under namespace, so user only need to turn on and off the option
0016 
0017 namespace CALOSYS{
0018 
0019     std::vector<std::string> EMCalinputprefix = {
0020       "TOWERINFO_CALIB_", 
0021       "TOWERINFO_CALIB_",
0022       "TOWERINFO_CALIB_" 
0023     };
0024     std::vector<std::string> EMCaloutputprefix = {
0025       "TOWERINFO_CALIB_SYST1_", 
0026       "TOWERINFO_CALIB_SYST2_",
0027       "TOWERINFO_CALIB_SYST3_" 
0028     };
0029 
0030     std::vector<std::string> EMCalpayload = {
0031       "CEMC_stat_syst",
0032       "CEMC_shift_syst",
0033       "CEMC_v1Modulation_syst"
0034     };
0035     std::vector<bool> EMCaldosys = {
0036       true, 
0037       true,
0038       true
0039     };
0040 
0041 
0042     std::vector<std::string> OHCalinputprefix = {
0043       "TOWERINFO_CALIB_", 
0044       "TOWERINFO_CALIB_",
0045       "TOWERINFO_CALIB_"
0046     };
0047     std::vector<std::string> OHCaloutputprefix = {
0048       "TOWERINFO_CALIB_SYST1_", 
0049       "TOWERINFO_CALIB_SYST2_",
0050       "TOWERINFO_CALIB_SYST3_"
0051     };
0052 
0053     std::vector<std::string> OHCalpayload = {
0054       "HCALOUT_stat_syst",
0055       "HCALOUT_shift_syst",
0056       "HCALOUT_v1Modulation_syst"
0057     };
0058     std::vector<bool> OHCaldosys = {
0059       true, 
0060       false,
0061       false
0062     };
0063 
0064 
0065     std::vector<std::string> IHCalinputprefix = {
0066       "TOWERINFO_CALIB_", 
0067       "TOWERINFO_CALIB_",
0068       "TOWERINFO_CALIB_" 
0069     };
0070     std::vector<std::string> IHCaloutputprefix = {
0071       "TOWERINFO_CALIB_SYST1_", 
0072       "TOWERINFO_CALIB_SYST2_",
0073       "TOWERINFO_CALIB_SYST3_" 
0074     };
0075 
0076     std::vector<std::string> IHCalpayload = {
0077       "HCALIN_stat_syst",
0078       "HCALIN_shift_syst",
0079       "HCALIN_v1Modulation_syst"
0080     };
0081     std::vector<bool> IHCaldosys = {
0082       true, 
0083       false,
0084       false
0085     };
0086 
0087 }//namespace CALOSYS
0088 
0089 
0090 
0091 void Register_Tower_sys(){
0092     Fun4AllServer *se = Fun4AllServer::instance();
0093     //EMCal
0094     for (int i = 0; i< (int) CALOSYS::EMCaldosys.size(); i++){
0095         if (CALOSYS::EMCaldosys[i]){
0096             //tower calib
0097             std::cout<< "Adding Node:"<< CALOSYS::EMCaloutputprefix[i] <<"_EMCAL"<<std::endl;
0098             std::string caliburl  = CDBInterface::instance()->getUrl(CALOSYS::EMCalpayload[i]);
0099             CaloTowerCalib *EMCalsys = new CaloTowerCalib(Form("CaloCalib_calo_sysT%d",i));
0100             EMCalsys->set_inputNodePrefix(CALOSYS::EMCalinputprefix[i]);
0101             EMCalsys->set_outputNodePrefix(CALOSYS::EMCaloutputprefix[i]);
0102             EMCalsys->set_directURL(caliburl);
0103             EMCalsys->setFieldName("calo_sys");
0104             EMCalsys->set_doCalibOnly(true);
0105             EMCalsys->set_detector_type(CaloTowerDefs::CEMC);
0106             se->registerSubsystem(EMCalsys);
0107 
0108         //cluster stuff?
0109         }
0110     }
0111 
0112     //OHCal
0113     for (int i = 0; i< (int) CALOSYS::OHCaldosys.size(); i++){
0114         if (CALOSYS::OHCaldosys[i]){
0115             //tower calib
0116             std::cout<< "Adding Node:"<< "_HCALOUT"<<std::endl;
0117             std::string caliburl  = CDBInterface::instance()->getUrl(CALOSYS::OHCalpayload[i]);
0118             CaloTowerCalib *OHCalsys = new CaloTowerCalib();
0119             OHCalsys->set_inputNodePrefix(CALOSYS::OHCalinputprefix[i]);
0120             OHCalsys->set_outputNodePrefix(CALOSYS::OHCaloutputprefix[i]);
0121             OHCalsys->set_directURL(caliburl);
0122             OHCalsys->setFieldName("calo_sys");
0123             OHCalsys->set_doCalibOnly(true);
0124             OHCalsys->set_detector_type(CaloTowerDefs::HCALOUT);
0125             se->registerSubsystem(OHCalsys);
0126 
0127         }
0128     }
0129 
0130     //IHCal
0131     for (int i = 0; i< (int) CALOSYS::IHCaldosys.size(); i++){
0132         if (CALOSYS::IHCaldosys[i]){
0133             //tower calib
0134             std::cout<< "Adding Node:"<<"_HCALIN"<<std::endl;
0135             std::string caliburl  = CDBInterface::instance()->getUrl(CALOSYS::IHCalpayload[i]);
0136             CaloTowerCalib *IHCalsys = new CaloTowerCalib();
0137             IHCalsys->set_inputNodePrefix(CALOSYS::IHCalinputprefix[i]);
0138             IHCalsys->set_outputNodePrefix(CALOSYS::IHCaloutputprefix[i]);
0139             IHCalsys->set_directURL(caliburl);
0140             IHCalsys->setFieldName("calo_sys");
0141             IHCalsys->set_doCalibOnly(true);
0142             IHCalsys->set_detector_type(CaloTowerDefs::HCALIN);
0143             se->registerSubsystem(IHCalsys);
0144 
0145         }
0146     }
0147 
0148   std::cout << "All calo systematics added" << std::endl;
0149 }
0150 
0151 #endif /* SYS_CALO_C */