]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSModuleDaSSD.cxx
Eff C++ warning removal (Marian)
[u/mrichter/AliRoot.git] / ITS / AliITSModuleDaSSD.cxx
index 698acdb73534ccf7198ae6db17f797af2734f993..95773b5aba3600a8e20c6425849f242cb758653a 100644 (file)
@@ -13,7 +13,7 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/* $Id$  */
+/* $Id:$  */
 
 ///////////////////////////////////////////////////////////////////////////////
 ///
@@ -23,6 +23,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "AliITSNoiseSSD.h"
+#include "AliITSPedestalSSD.h"
+#include "AliITSBadChannelsSSD.h"
 #include "AliITSModuleDaSSD.h"
 #include "TString.h"
 #include "AliLog.h"
@@ -151,14 +153,43 @@ AliITSModuleDaSSD::AliITSModuleDaSSD(const AliITSModuleDaSSD& module) :
   fAdc(module.fAdc),
   fModuleId(module.fModuleId),
   fNumberOfStrips(module.fNumberOfStrips),
-  fStrips(module.fStrips),
+  fStrips(NULL),
   fNumberOfChips(module.fNumberOfChips),
-  fCm(module.fCm),
+  fCm(NULL),
   fEventsNumber(module.fEventsNumber)
 {
 // copy constructor
-
-  AliFatal("AliITSModuleDaSSD, copy constructor not implemented");
+  if ((module.fNumberOfStrips > 0) && (module.fStrips)) {
+    fStrips = new (nothrow) AliITSChannelDaSSD* [module.fNumberOfStrips];
+    if (fStrips) {
+      for (Int_t strind = 0; strind < module.fNumberOfStrips; strind++) {
+        if (module.fStrips[strind]) {
+         fStrips[strind] = new AliITSChannelDaSSD(*(module.fStrips[strind]));
+         if (!fStrips[strind]) { 
+           AliError("AliITSModuleDaSSD: Error copy constructor");
+            for (Int_t i = (strind - 1); i >= 0; i--) delete fStrips[strind];
+           delete [] fStrips;
+           fStrips = NULL;
+           break;
+         }
+       } else fStrips[strind] = NULL; 
+      }          
+    } else {
+       AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i AliITSChannelDaSSD* objects!", module.fNumberOfStrips));
+       fNumberOfStrips = 0;
+       fStrips = NULL;
+    }  
+  }
+  if (module.fCm) {
+    fCm = new (nothrow) TArrayF [module.fNumberOfChips];
+    if (fCm) {
+      for (Int_t chind = 0; chind < module.fNumberOfChips; chind++) fCm[chind] = module.fCm[chind]; 
+    } else {
+       AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i TArrayF objects!", module.fNumberOfChips));
+       fNumberOfChips = 0;
+       fCm = NULL;
+    }  
+  }  
 }
 
 
@@ -167,8 +198,54 @@ AliITSModuleDaSSD::AliITSModuleDaSSD(const AliITSModuleDaSSD& module) :
 AliITSModuleDaSSD& AliITSModuleDaSSD::operator = (const AliITSModuleDaSSD& module)
 {
 // assignment operator
-
-  AliFatal("AliITSModuleDaSSD: operator =, assignment operator not implemented");
+  if (this == &module)  return *this;  
+  if (fStrips) {
+    for (Long_t i = 0; i < fNumberOfStrips; i++) if (fStrips[i]) delete fStrips[i];
+    delete [] fStrips;
+  } 
+  fEquipId = module.fEquipId;
+  fEquipType = module.fEquipType;
+  fDdlId = module.fDdlId;
+  fAd = module.fAd;
+  fAdc = module.fAdc;
+  fModuleId = module.fModuleId;
+  fNumberOfStrips = module.fNumberOfStrips;
+  fStrips = NULL;
+  fNumberOfChips = module.fNumberOfChips;
+  fCm = NULL;
+  fEventsNumber = module.fEventsNumber;
+  if ((module.fNumberOfStrips > 0) && (module.fStrips)) {
+    fStrips = new (nothrow) AliITSChannelDaSSD* [module.fNumberOfStrips];
+    if (fStrips) {
+      for (Int_t strind = 0; strind < module.fNumberOfStrips; strind++) {
+        if (module.fStrips[strind]) {
+         fStrips[strind] = new AliITSChannelDaSSD(*(module.fStrips[strind]));
+         if (!fStrips[strind]) { 
+           AliError("AliITSModuleDaSSD: Error copy constructor");
+            for (Int_t i = (strind - 1); i >= 0; i--) delete fStrips[strind];
+           delete [] fStrips;
+           fStrips = NULL;
+           break;
+         }
+       } else fStrips[strind] = NULL; 
+      }          
+    } else {
+       AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i AliITSChannelDaSSD* objects!", module.fNumberOfStrips));
+       fNumberOfStrips = 0;
+       fStrips = NULL;
+    }  
+  }
+  if (fCm) delete [] fCm;
+  if (module.fCm) {
+    fCm = new (nothrow) TArrayF [module.fNumberOfChips];
+    if (fCm) {
+      for (Int_t chind = 0; chind < module.fNumberOfChips; chind++) fCm[chind] = module.fCm[chind]; 
+    } else {
+       AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i TArrayF objects!", module.fNumberOfChips));
+       fNumberOfChips = 0;
+       fCm = NULL;
+    }  
+  }  
   return *this;
 }
     
@@ -330,7 +407,7 @@ Float_t  AliITSModuleDaSSD::GetCM(const Int_t chipn, const Long_t evn)   const
 
 
 //______________________________________________________________________________
-AliITSNoiseSSD* AliITSModuleDaSSD::GetCalibrationSSDModule() const
+AliITSNoiseSSD* AliITSModuleDaSSD::GetCalibrationNoise() const
 {
 // Creates the AliITSNoiseSSD objects with callibration data
   AliITSNoiseSSD  *mc;
@@ -349,3 +426,53 @@ AliITSNoiseSSD* AliITSModuleDaSSD::GetCalibrationSSDModule() const
   }
   return mc;
 }
+
+
+
+//______________________________________________________________________________
+AliITSPedestalSSD* AliITSModuleDaSSD::GetCalibrationPedestal() const
+{
+// Creates the AliITSPedestalSSD objects with callibration data
+  AliITSPedestalSSD  *mc;
+  Float_t             ped;
+  if (!fStrips) return NULL;
+  mc = new AliITSPedestalSSD();
+  mc->SetMod(fModuleId);
+  mc->SetNPedestalP(fgkPNStripsPerModule);
+  mc->SetNPedestalN(fgkPNStripsPerModule);
+  for (Int_t i = 0; i < fNumberOfStrips; i++) {
+    if (!fStrips[i]) ped = AliITSChannelDaSSD::GetUndefinedValue();
+    else  ped = fStrips[i]->GetPedestal();
+    if (i < fgkPNStripsPerModule)
+          mc->AddPedestalP(i, ped);
+    else  mc->AddPedestalN((AliITSChannelDaSSD::GetMaxStripIdConst() - i), ped);                     
+  }
+  return mc;
+}
+
+
+
+//______________________________________________________________________________
+AliITSBadChannelsSSD* AliITSModuleDaSSD::GetCalibrationBadChannels() const
+{
+// Creates the AliITSBadChannelsSSD objects with callibration data
+  AliITSBadChannelsSSD  *mc;
+  Int_t                 *chlist, nch = 0, nchn = 0, nchp = 0;
+  if (!fStrips) return NULL;
+  chlist = new Int_t [GetStripsPerModuleConst()];
+  for (Int_t i = 0; i < fNumberOfStrips; i++) {
+    if (!fStrips[i]) { chlist[nch++] = i; if (i < fgkPNStripsPerModule) nchp++; else nchn++; continue;}
+    if (fStrips[i]->GetNoiseCM() == AliITSChannelDaSSD::GetUndefinedValue())
+       { chlist[nch++] = i; if (i < fgkPNStripsPerModule) nchp++; else nchn++; }
+  }
+  mc = new AliITSBadChannelsSSD();
+  mc->SetMod(fModuleId);
+  if (!nch) return mc;
+  mc->SetNBadPChannelsList(nchp);
+  mc->SetNBadNChannelsList(nchn);
+  for (Int_t i = 0; i < nch; i++) {
+    if (chlist[i] < fgkPNStripsPerModule) mc->AddBadPChannel(chlist[i], i);
+    else mc->AddBadNChannel((AliITSChannelDaSSD::GetMaxStripIdConst() - chlist[i]), (i-nchp));
+  }
+  return mc;
+}