From f1741d51dcb06987e8f6313f64673ca76aee948e Mon Sep 17 00:00:00 2001
From: Adam Edward Barton <adam.edward.barton@cern.ch>
Date: Fri, 28 Jan 2022 20:55:42 +0100
Subject: [PATCH] Revert "Merge branch '22.0-cleanup-PixelConditionsData' into
 'master'"

---
 .../src/PixelOfflineCalibCondAlg.cxx          | 10 +--
 .../PixelOfflineCalibData.h                   | 73 +++++++++++++------
 .../src/PixelOfflineCalibData.cxx             | 44 ++++++-----
 3 files changed, 82 insertions(+), 45 deletions(-)

diff --git a/InnerDetector/InDetConditions/PixelConditionsAlgorithms/src/PixelOfflineCalibCondAlg.cxx b/InnerDetector/InDetConditions/PixelConditionsAlgorithms/src/PixelOfflineCalibCondAlg.cxx
index aa17222fdb0..345bb22341c 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 5b01aab755b..c77c29d0da4 100644
--- a/InnerDetector/InDetConditions/PixelConditionsData/PixelConditionsData/PixelOfflineCalibData.h
+++ b/InnerDetector/InDetConditions/PixelConditionsData/PixelConditionsData/PixelOfflineCalibData.h
@@ -22,6 +22,9 @@
     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>
 */  
@@ -33,12 +36,13 @@ class PixelOfflineCalibData{
   public:
   /** Constructor:*/
   PixelOfflineCalibData(); 
-  PixelOfflineCalibData(const PixelOfflineCalibData& rhs) = delete;
-  PixelOfflineCalibData& operator=(const PixelOfflineCalibData& rhs) = delete;
- 
+  PixelOfflineCalibData(const PixelOfflineCalibData& rhs);
+  PixelOfflineCalibData& operator=(const PixelOfflineCalibData& rhs);
+  // PixelOfflineCalibData(const Identifier & ident); 
+  // PixelOfflineCalibData(Identifier & ident);  
 
   /** default destructor */
-  ~PixelOfflineCalibData () = default;
+  ~PixelOfflineCalibData ();
 
   bool update(const PixelClusterErrorData& idat);
   bool update(const PixelChargeInterpolationParameters& idat);
@@ -46,7 +50,7 @@ class PixelOfflineCalibData{
   
   int size() const;
   
-  // get the pointer to pixel cluster error data (observer only)
+  // get the pointer to pixel cluster error data
   PixelClusterErrorData* getPixelClusterErrorData();
   PixelChargeInterpolationParameters* getPixelChargeInterpolationParameters();
   PixelClusterOnTrackErrorData* getPixelClusterOnTrackErrorData();
@@ -55,32 +59,50 @@ 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: 
-  std::unique_ptr<PixelClusterErrorData> m_clustererrordata{}; 
-  std::unique_ptr<PixelChargeInterpolationParameters> m_chargeinterpolationparameters{}; 
-  std::unique_ptr<PixelClusterOnTrackErrorData> m_clusterontrackerrordata{};
+  //  Identifier m_ident; 
+  PixelClusterErrorData* m_clustererrordata; 
+  PixelChargeInterpolationParameters* m_chargeinterpolationparameters; 
+  PixelClusterOnTrackErrorData* m_clusterontrackerrordata;
 }; 
 
+//CLASS_DEF(PixelOfflineCalibData, 27089939, 1)
 
 inline PixelOfflineCalibData::PixelOfflineCalibData() {
-  m_clustererrordata = std::make_unique<PixelClusterErrorData>();
-  m_clusterontrackerrordata = std::make_unique<PixelClusterOnTrackErrorData>();
-  m_chargeinterpolationparameters = std::make_unique<PixelChargeInterpolationParameters>();
+  m_clustererrordata = new PixelClusterErrorData();
+  m_clusterontrackerrordata = new PixelClusterOnTrackErrorData();
+  m_chargeinterpolationparameters = new 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;
 }
@@ -91,32 +113,39 @@ inline bool PixelOfflineCalibData::update(const PixelClusterOnTrackErrorData& id
 }
 
 inline PixelClusterErrorData* PixelOfflineCalibData::getPixelClusterErrorData() {
-  return m_clustererrordata.get();
+  return m_clustererrordata;
 }
 
 inline PixelChargeInterpolationParameters* PixelOfflineCalibData::getPixelChargeInterpolationParameters() {
-  return m_chargeinterpolationparameters.get();
+  return m_chargeinterpolationparameters;
 }
 
 inline PixelClusterOnTrackErrorData* 
     PixelOfflineCalibData::getPixelClusterOnTrackErrorData() {
-  return m_clusterontrackerrordata.get();
+  return m_clusterontrackerrordata;
 }
 
 inline const PixelClusterErrorData* PixelOfflineCalibData::getPixelClusterErrorData() const {
-  return m_clustererrordata.get();
+  return m_clustererrordata;
 }
 
 inline const PixelChargeInterpolationParameters* PixelOfflineCalibData::getPixelChargeInterpolationParameters() const {
-  return m_chargeinterpolationparameters.get();
+  return m_chargeinterpolationparameters;
 }
 
 inline const PixelClusterOnTrackErrorData* 
     PixelOfflineCalibData::getPixelClusterOnTrackErrorData() const {
-  return m_clusterontrackerrordata.get();
+  return m_clusterontrackerrordata;
 }
 
 
+//================ 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 4d4995d61b4..c5062503525 100644
--- a/InnerDetector/InDetConditions/PixelConditionsData/src/PixelOfflineCalibData.cxx
+++ b/InnerDetector/InDetConditions/PixelConditionsData/src/PixelOfflineCalibData.cxx
@@ -12,13 +12,12 @@ 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();
-  const bool includesIBL = (v1< -1) or (v2< -1) or (v3< -1);
+  int v3 = m_chargeinterpolationparameters->getVersion(); 
 
   int n1 = m_clustererrordata->getNumberOfBarrelBins(); 
   int n2 = m_clustererrordata->getNumberOfEndcapBins();
@@ -79,15 +78,27 @@ std::vector<float> PixelOfflineCalibData::getConstants() const {
     +n4+n5; // number of ChargeInterpolation values
 
   int offset = 13;
-  if(includesIBL) { 
+  if(v1<-1||v2<-1||v3<-1) { // including IBL
     offset +=8;
     datasize +=2*n1 + netaibl+1 + nalphaibl+1 + n3c +n3d + netaibl2+1 + nalphaibl2+1 + n6 + n7;
   }
 
   std::vector<float> constants;
-  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)};
+  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);
   if(offset>13){
     constants.push_back(ncsx_ibl);
     constants.push_back(ncsx_ibl); 
@@ -100,22 +111,19 @@ std::vector<float> PixelOfflineCalibData::getConstants() const {
   }
 
   // set bins of cluster error on track parametrization (uppermost value implicit)
-  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);
+  for(int i=0; i<ncsx; i++){ constants.push_back(csx[i]); }
+  for(int i=0; i<ncsy; i++){ constants.push_back(csy[i]); }
   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]); }
   }
-  insert(eta);
-  insert(alpha);
+  for(int i=0; i<neta; i++){ constants.push_back(eta[i]); }
+  for(int i=0; i<nalpha; i++){ constants.push_back(alpha[i]); }
   // set bins of charge interpolation parametrization (uppermost value stored)
-  insert(csx2);
-  insert(csy2);
+  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]); }
   if(netaibl2>0){
     for(int i=0; i<netaibl2+1; i++){ constants.push_back(etaibl2[i]); }
   }
@@ -148,13 +156,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