From 5ebfc18883a7ea960f26e0bae928fc9b7dae2152 Mon Sep 17 00:00:00 2001 From: Shaun Roe <shaun.roe@cern.ch> Date: Fri, 28 Jan 2022 14:51:26 +0100 Subject: [PATCH] 22.0-cleanup-PixelConditionsData --- .../src/PixelOfflineCalibCondAlg.cxx | 10 +-- .../PixelOfflineCalibData.h | 73 ++++++------------- .../src/PixelOfflineCalibData.cxx | 44 +++++------ 3 files changed, 45 insertions(+), 82 deletions(-) diff --git a/InnerDetector/InDetConditions/PixelConditionsAlgorithms/src/PixelOfflineCalibCondAlg.cxx b/InnerDetector/InDetConditions/PixelConditionsAlgorithms/src/PixelOfflineCalibCondAlg.cxx index 345bb22341c..aa17222fdb0 100644 --- a/InnerDetector/InDetConditions/PixelConditionsAlgorithms/src/PixelOfflineCalibCondAlg.cxx +++ b/InnerDetector/InDetConditions/PixelConditionsAlgorithms/src/PixelOfflineCalibCondAlg.cxx @@ -76,7 +76,7 @@ StatusCode PixelOfflineCalibCondAlg::execute(const EventContext& ctx) const { // First constants are info on the number of bins of parametrizations ATH_MSG_DEBUG("Get error constants"); - std::vector<float> constants = calibData->GetConstants(); + std::vector<float> constants = calibData->getConstants(); if (!constants.empty()) { ATH_MSG_VERBOSE("constants are defined"); } else { ATH_MSG_ERROR("constants size is NULL!!!"); } @@ -88,7 +88,7 @@ StatusCode PixelOfflineCalibCondAlg::execute(const EventContext& ctx) const { if (!constants.empty()) { ATH_MSG_DEBUG("Found constants with new-style Identifier key"); - writeCdo->SetConstants(constants); + writeCdo->setConstants(constants); } if (writeHandle.record(rangeW, std::move(writeCdo)).isFailure()) { @@ -99,7 +99,7 @@ StatusCode PixelOfflineCalibCondAlg::execute(const EventContext& ctx) const { if (m_dump!=0) { ATH_MSG_DEBUG("Dump the constants to file"); - calibData->Dump(); + calibData->dump(); } delete calibData; @@ -127,7 +127,7 @@ for (int i=0; i<readCdo->size(); i++) { constants.push_back(readCdo->get(Identif if (!constants.empty()) { ATH_MSG_DEBUG("Found constants with new-style Identifier key"); - writeCdo->SetConstants(constants); + writeCdo->setConstants(constants); } else { Identifier key; @@ -140,7 +140,7 @@ for (int i=0; i<readCdo->size(); i++) { const2.push_back(readCdo->get(key.set_li if (!const2.empty()) { ATH_MSG_DEBUG("Found constants with old-style Identifier key"); - writeCdo->SetConstants(const2); + writeCdo->setConstants(const2); } else { ATH_MSG_ERROR("Could not get the constants!"); diff --git a/InnerDetector/InDetConditions/PixelConditionsData/PixelConditionsData/PixelOfflineCalibData.h b/InnerDetector/InDetConditions/PixelConditionsData/PixelConditionsData/PixelOfflineCalibData.h index c77c29d0da4..5b01aab755b 100644 --- a/InnerDetector/InDetConditions/PixelConditionsData/PixelConditionsData/PixelOfflineCalibData.h +++ b/InnerDetector/InDetConditions/PixelConditionsData/PixelConditionsData/PixelOfflineCalibData.h @@ -22,9 +22,6 @@ The PixelOfflineCalibData is a class that designed to hold the data used by pixel offline algorithms. This includes Pixel Cluster error parametrizations, and other stuff will follow - - The details can be found at - https://twiki.cern.ch/twiki/bin/view/Atlas/AWikiPageNotExistingYet @author Tommaso Lari <lari@mi.infn.it> */ @@ -36,13 +33,12 @@ class PixelOfflineCalibData{ public: /** Constructor:*/ PixelOfflineCalibData(); - PixelOfflineCalibData(const PixelOfflineCalibData& rhs); - PixelOfflineCalibData& operator=(const PixelOfflineCalibData& rhs); - // PixelOfflineCalibData(const Identifier & ident); - // PixelOfflineCalibData(Identifier & ident); + PixelOfflineCalibData(const PixelOfflineCalibData& rhs) = delete; + PixelOfflineCalibData& operator=(const PixelOfflineCalibData& rhs) = delete; + /** default destructor */ - ~PixelOfflineCalibData (); + ~PixelOfflineCalibData () = default; bool update(const PixelClusterErrorData& idat); bool update(const PixelChargeInterpolationParameters& idat); @@ -50,7 +46,7 @@ class PixelOfflineCalibData{ int size() const; - // get the pointer to pixel cluster error data + // get the pointer to pixel cluster error data (observer only) PixelClusterErrorData* getPixelClusterErrorData(); PixelChargeInterpolationParameters* getPixelChargeInterpolationParameters(); PixelClusterOnTrackErrorData* getPixelClusterOnTrackErrorData(); @@ -59,50 +55,32 @@ class PixelOfflineCalibData{ const PixelClusterOnTrackErrorData* getPixelClusterOnTrackErrorData() const; // Get/Set the numerical constants - int GetNumberOfConstants() const; + int getNumberOfConstants() const; - std::vector<float> GetConstants() const; - void SetConstants(const std::vector<float> &constants); + std::vector<float> getConstants() const; + void setConstants(const std::vector<float> &constants); - void Dump(); + void dump(); private: - // Identifier m_ident; - PixelClusterErrorData* m_clustererrordata; - PixelChargeInterpolationParameters* m_chargeinterpolationparameters; - PixelClusterOnTrackErrorData* m_clusterontrackerrordata; + std::unique_ptr<PixelClusterErrorData> m_clustererrordata{}; + std::unique_ptr<PixelChargeInterpolationParameters> m_chargeinterpolationparameters{}; + std::unique_ptr<PixelClusterOnTrackErrorData> m_clusterontrackerrordata{}; }; -//CLASS_DEF(PixelOfflineCalibData, 27089939, 1) inline PixelOfflineCalibData::PixelOfflineCalibData() { - m_clustererrordata = new PixelClusterErrorData(); - m_clusterontrackerrordata = new PixelClusterOnTrackErrorData(); - m_chargeinterpolationparameters = new PixelChargeInterpolationParameters(); + m_clustererrordata = std::make_unique<PixelClusterErrorData>(); + m_clusterontrackerrordata = std::make_unique<PixelClusterOnTrackErrorData>(); + m_chargeinterpolationparameters = std::make_unique<PixelChargeInterpolationParameters>(); } -inline PixelOfflineCalibData::PixelOfflineCalibData(const PixelOfflineCalibData& rhs){ - m_clustererrordata = rhs.m_clustererrordata; - m_clusterontrackerrordata = rhs.m_clusterontrackerrordata; - m_chargeinterpolationparameters = rhs.m_chargeinterpolationparameters; -} - -inline PixelOfflineCalibData& PixelOfflineCalibData::operator=(const PixelOfflineCalibData& rhs){ - if(this != &rhs){ - m_clustererrordata = rhs.m_clustererrordata; - m_clusterontrackerrordata = rhs.m_clusterontrackerrordata; - m_chargeinterpolationparameters = rhs.m_chargeinterpolationparameters; - } - return (*this); -} - inline bool PixelOfflineCalibData::update(const PixelClusterErrorData& idat){ *m_clustererrordata = idat; return true; } -inline bool PixelOfflineCalibData::update( - const PixelChargeInterpolationParameters& idat){ +inline bool PixelOfflineCalibData::update(const PixelChargeInterpolationParameters& idat){ *m_chargeinterpolationparameters = idat; return true; } @@ -113,39 +91,32 @@ inline bool PixelOfflineCalibData::update(const PixelClusterOnTrackErrorData& id } inline PixelClusterErrorData* PixelOfflineCalibData::getPixelClusterErrorData() { - return m_clustererrordata; + return m_clustererrordata.get(); } inline PixelChargeInterpolationParameters* PixelOfflineCalibData::getPixelChargeInterpolationParameters() { - return m_chargeinterpolationparameters; + return m_chargeinterpolationparameters.get(); } inline PixelClusterOnTrackErrorData* PixelOfflineCalibData::getPixelClusterOnTrackErrorData() { - return m_clusterontrackerrordata; + return m_clusterontrackerrordata.get(); } inline const PixelClusterErrorData* PixelOfflineCalibData::getPixelClusterErrorData() const { - return m_clustererrordata; + return m_clustererrordata.get(); } inline const PixelChargeInterpolationParameters* PixelOfflineCalibData::getPixelChargeInterpolationParameters() const { - return m_chargeinterpolationparameters; + return m_chargeinterpolationparameters.get(); } inline const PixelClusterOnTrackErrorData* PixelOfflineCalibData::getPixelClusterOnTrackErrorData() const { - return m_clusterontrackerrordata; + return m_clusterontrackerrordata.get(); } -//================ Destructor ================================================= -inline PixelOfflineCalibData::~PixelOfflineCalibData(){ -delete m_clustererrordata; -delete m_chargeinterpolationparameters; -delete m_clusterontrackerrordata; -} - } CLASS_DEF(PixelCalib::PixelOfflineCalibData, 209342487, 1) diff --git a/InnerDetector/InDetConditions/PixelConditionsData/src/PixelOfflineCalibData.cxx b/InnerDetector/InDetConditions/PixelConditionsData/src/PixelOfflineCalibData.cxx index c5062503525..4d4995d61b4 100644 --- a/InnerDetector/InDetConditions/PixelConditionsData/src/PixelOfflineCalibData.cxx +++ b/InnerDetector/InDetConditions/PixelConditionsData/src/PixelOfflineCalibData.cxx @@ -12,12 +12,13 @@ namespace PixelCalib{ // PixelCalibData::~PixelCalibData(){} -std::vector<float> PixelOfflineCalibData::GetConstants() const { +std::vector<float> PixelOfflineCalibData::getConstants() const { // format version of parametrizations (note it is an increasing NEGATIVE number) int v1 = m_clustererrordata->getVersion(); int v2 = m_clusterontrackerrordata->getVersion(); - int v3 = m_chargeinterpolationparameters->getVersion(); + int v3 = m_chargeinterpolationparameters->getVersion(); + const bool includesIBL = (v1< -1) or (v2< -1) or (v3< -1); int n1 = m_clustererrordata->getNumberOfBarrelBins(); int n2 = m_clustererrordata->getNumberOfEndcapBins(); @@ -78,27 +79,15 @@ std::vector<float> PixelOfflineCalibData::GetConstants() const { +n4+n5; // number of ChargeInterpolation values int offset = 13; - if(v1<-1||v2<-1||v3<-1) { // including IBL + if(includesIBL) { offset +=8; datasize +=2*n1 + netaibl+1 + nalphaibl+1 + n3c +n3d + netaibl2+1 + nalphaibl2+1 + n6 + n7; } std::vector<float> constants; - constants.resize(datasize+offset); - - constants.push_back(v1); - constants.push_back(v2); - constants.push_back(v3); - constants.push_back(n1); - constants.push_back(n2); - constants.push_back(ncsx); - constants.push_back(ncsy); - constants.push_back(neta); - constants.push_back(nalpha); - constants.push_back(ncsx2); - constants.push_back(ncsy2); - constants.push_back(neta2); - constants.push_back(nalpha2); + constants.reserve(datasize+offset);// NOTE: this was 'resize' before; may change output + constants = {float(v1),float(v2), float(v3), float(n1), float(n2), float(ncsx), float(ncsy), float(neta), + float(nalpha), float(ncsx2),float(ncsy2), float(neta2), float(nalpha2)}; if(offset>13){ constants.push_back(ncsx_ibl); constants.push_back(ncsx_ibl); @@ -111,19 +100,22 @@ std::vector<float> PixelOfflineCalibData::GetConstants() const { } // set bins of cluster error on track parametrization (uppermost value implicit) - for(int i=0; i<ncsx; i++){ constants.push_back(csx[i]); } - for(int i=0; i<ncsy; i++){ constants.push_back(csy[i]); } + auto insert = [&constants](const std::vector<float> & v)->void{ + if (not v.empty()) constants.insert(constants.end(), v.begin(), v.end()); + }; + insert(csx); + insert(csy); if(netaibl>0){ for(int i=0; i<netaibl+1; i++){ constants.push_back(etaibl[i]); } } if(nalphaibl>0){ for(int i=0; i<nalphaibl+1; i++){ constants.push_back(alphaibl[i]); } } - for(int i=0; i<neta; i++){ constants.push_back(eta[i]); } - for(int i=0; i<nalpha; i++){ constants.push_back(alpha[i]); } + insert(eta); + insert(alpha); // set bins of charge interpolation parametrization (uppermost value stored) - for(int i=0; i<ncsx2+1; i++){ constants.push_back(csx2[i]); } - for(int i=0; i<ncsy2+1; i++){ constants.push_back(csy2[i]); } + insert(csx2); + insert(csy2); if(netaibl2>0){ for(int i=0; i<netaibl2+1; i++){ constants.push_back(etaibl2[i]); } } @@ -156,13 +148,13 @@ std::vector<float> PixelOfflineCalibData::GetConstants() const { return constants; } -void PixelOfflineCalibData::Dump(){ +void PixelOfflineCalibData::dump(){ m_clustererrordata->Print("PixelClusterDump.txt"); m_clusterontrackerrordata->Print("PixelClusterOnTrackDump.txt"); m_chargeinterpolationparameters->Print("PixelChargeInterpolationParametersDump.txt"); } -void PixelOfflineCalibData::SetConstants(const std::vector<float> &constants){ +void PixelOfflineCalibData::setConstants(const std::vector<float> &constants){ if(constants.at(0) > 0){ // old format m_clustererrordata->setVersion(0); -- GitLab