diff --git a/offline/packages/CaloReco/CaloTowerCalib.cc b/offline/packages/CaloReco/CaloTowerCalib.cc index cbd13ce4ed..ecc7da5157 100644 --- a/offline/packages/CaloReco/CaloTowerCalib.cc +++ b/offline/packages/CaloReco/CaloTowerCalib.cc @@ -114,6 +114,12 @@ int CaloTowerCalib::InitRun(PHCompositeNode *topNode) } else { + if (m_doAbortNoEnergyCalib) + { + std::cout << "CaloTowerCalib::InitRun: No energy calibration found for " << m_calibName << " and abort mode is set. Exiting." << std::endl; + gSystem->Exit(1); + } + calibdir = CDBInterface::instance()->getUrl(default_time_independent_calib); if (calibdir.empty()) @@ -151,6 +157,11 @@ int CaloTowerCalib::InitRun(PHCompositeNode *topNode) } else { + if (m_doAbortNoTimeCalib) + { + std::cout << "CaloTowerCalib::InitRun: No time calibration found for " << m_calibName_time << " and abort mode is set. Exiting." << std::endl; + gSystem->Exit(1); + } m_dotimecalib = false; if (Verbosity() > 0) { @@ -185,6 +196,11 @@ int CaloTowerCalib::InitRun(PHCompositeNode *topNode) } else { + if (m_doAbortNoZSCalib) + { + std::cout << "CaloTowerCalib::InitRun: No ZS cross calibration found for " << m_calibName_ZScrosscalib << " and abort mode is set. Exiting." << std::endl; + gSystem->Exit(1); + } m_doZScrosscalib = false; if (Verbosity() > 0) { diff --git a/offline/packages/CaloReco/CaloTowerCalib.h b/offline/packages/CaloReco/CaloTowerCalib.h index 06ae6148a1..10a3f2771f 100644 --- a/offline/packages/CaloReco/CaloTowerCalib.h +++ b/offline/packages/CaloReco/CaloTowerCalib.h @@ -92,6 +92,32 @@ class CaloTowerCalib : public SubsysReco } } + void set_doAbortNoEnergyCalib(bool doAbort = true) + { + m_doAbortNoEnergyCalib = doAbort; + return; + } + + void set_doAbortNoTimeCalib(bool doAbort = true) + { + m_doAbortNoTimeCalib = doAbort; + return; + } + + void set_doAbortNoZSCalib(bool doAbort = true) + { + m_doAbortNoZSCalib = doAbort; + return; + } + + void set_doAbortMissingCalib(bool doAbort = true) + { + m_doAbortNoEnergyCalib = doAbort; + m_doAbortNoTimeCalib = doAbort; + m_doAbortNoZSCalib = doAbort; + return; + } + void set_use_TowerInfov2(bool use) { m_use_TowerInfov2 = use; } private: @@ -125,6 +151,10 @@ class CaloTowerCalib : public SubsysReco std::string m_directURL_ZScrosscalib = ""; bool m_doZScrosscalib = true; + bool m_doAbortNoEnergyCalib{false}; + bool m_doAbortNoTimeCalib{false}; + bool m_doAbortNoZSCalib{false}; + CDBTTree *cdbttree = nullptr; CDBTTree *cdbttree_time = nullptr; CDBTTree *cdbttree_ZScrosscalib = nullptr; diff --git a/offline/packages/CaloReco/CaloTowerStatus.cc b/offline/packages/CaloReco/CaloTowerStatus.cc index c5401edb33..0445dc9374 100644 --- a/offline/packages/CaloReco/CaloTowerStatus.cc +++ b/offline/packages/CaloReco/CaloTowerStatus.cc @@ -105,6 +105,11 @@ int CaloTowerStatus::InitRun(PHCompositeNode *topNode) } else { + if (m_doAbortNoChi2) + { + std::cout << "CaloTowerStatus::InitRun: No chi2 calibration found for " << m_calibName_chi2 << " and abort mode is set. Exiting." << std::endl; + gSystem->Exit(1); + } m_doHotChi2 = false; if (Verbosity() > 0) { @@ -135,6 +140,11 @@ int CaloTowerStatus::InitRun(PHCompositeNode *topNode) } else { + if (m_doAbortNoTime) + { + std::cout << "CaloTowerStatus::InitRun: No time calibration found for " << m_calibName_time << " and abort mode is set. Exiting." << std::endl; + gSystem->Exit(1); + } m_doTime = false; if (Verbosity() > 1) { @@ -164,7 +174,7 @@ int CaloTowerStatus::InitRun(PHCompositeNode *topNode) { if (m_doAbortNoHotMap) { - std::cout << "CaloTowerStatus::InitRun: No hot map.. exiting" << std::endl; + std::cout << "CaloTowerStatus::InitRun: No hot map found for " << m_calibName_hotMap << " and abort mode is set. Exiting." << std::endl; gSystem->Exit(1); } if (use_directURL_hotMap) diff --git a/offline/packages/CaloReco/CaloTowerStatus.h b/offline/packages/CaloReco/CaloTowerStatus.h index 8c6f20ecf6..1c961c9f0e 100644 --- a/offline/packages/CaloReco/CaloTowerStatus.h +++ b/offline/packages/CaloReco/CaloTowerStatus.h @@ -91,6 +91,23 @@ class CaloTowerStatus : public SubsysReco m_doAbortNoHotMap = status; return; } + void set_doAbortNoTime(bool status = true) + { + m_doAbortNoTime = status; + return; + } + void set_doAbortNoChi2(bool status = true) + { + m_doAbortNoChi2 = status; + return; + } + void set_doAbortMissingCalib(bool status = true) + { + m_doAbortNoHotMap = status; + m_doAbortNoTime = status; + m_doAbortNoChi2 = status; + return; + } private: TowerInfoContainer *m_raw_towers{nullptr}; @@ -103,6 +120,8 @@ class CaloTowerStatus : public SubsysReco bool m_doTime{true}; bool m_doHotMap{true}; bool m_doAbortNoHotMap{false}; + bool m_doAbortNoTime{false}; + bool m_doAbortNoChi2{false}; CaloTowerDefs::DetectorSystem m_dettype{CaloTowerDefs::DETECTOR_INVALID};