Bug fixes in HGLG flags
authorprsnko <Dmitri.Peressounko@cern.ch>
Tue, 1 Jul 2014 19:52:10 +0000 (23:52 +0400)
committermorsch <andreas.morsch@cern.ch>
Thu, 3 Jul 2014 13:47:59 +0000 (15:47 +0200)
STEER/AOD/AliAODCaloCells.cxx
STEER/AOD/AliAODCaloCells.h
STEER/ESD/AliESDCaloCells.cxx
STEER/ESD/AliESDCaloCells.h
STEER/STEERBase/AliVCaloCells.h

index 2651765..44bb2d9 100644 (file)
@@ -49,7 +49,6 @@ AliAODCaloCells::AliAODCaloCells(const AliAODCaloCells& cells) :
     fIsSorted(cells.fIsSorted), fType(cells.fType)
 {
 // Copy constructor
-  fHGLG       = new Bool_t[fNCells] ;
   fCellNumber = new Short_t[fNCells];
   fAmplitude  = new Double32_t[fNCells]; 
   fTime       = new Double32_t[fNCells]; 
@@ -57,13 +56,18 @@ AliAODCaloCells::AliAODCaloCells(const AliAODCaloCells& cells) :
   fEFraction  = new Double32_t[fNCells]; 
 
   for (Int_t i = 0; i < fNCells; i++) {
-    fHGLG[i]          = cells.fHGLG[i];     
     fCellNumber[i]    = cells.fCellNumber[i];
     fAmplitude[i]     = cells.fAmplitude[i];
     if(cells.fTime)  fTime[i]      = cells.fTime[i];
     if(cells.fMCLabel)  fMCLabel[i]   = cells.fMCLabel[i];
     if(cells.fEFraction)fEFraction[i] = cells.fEFraction[i];    
   }
+  if(cells.fHGLG){
+    fHGLG       = new Bool_t[fNCells] ;
+    for (Int_t i = 0; i < fNCells; i++) {
+      fHGLG[i]          = cells.fHGLG[i];     
+    }
+  }
 }
 
 //________________________________________________________________________
@@ -76,7 +80,8 @@ AliAODCaloCells& AliAODCaloCells::operator=(const AliAODCaloCells& source)
     
     if(fNCells != source.fNCells) 
     {
-      delete [] fHGLG ;
+      if(fHGLG)
+        delete [] fHGLG ;
       delete [] fCellNumber;
       delete [] fAmplitude;
       delete [] fTime;
@@ -85,7 +90,8 @@ AliAODCaloCells& AliAODCaloCells::operator=(const AliAODCaloCells& source)
 
       fNCells     = source.fNCells;
       
-      fHGLG       = new Bool_t[fNCells] ;
+      if(source.fHGLG)
+        fHGLG       = new Bool_t[fNCells] ;
       fCellNumber = new Short_t[fNCells];
       fAmplitude  = new Double32_t[fNCells];
       fTime       = new Double32_t[fNCells];
@@ -93,7 +99,8 @@ AliAODCaloCells& AliAODCaloCells::operator=(const AliAODCaloCells& source)
       fEFraction  = new Double32_t[fNCells];
     }
     
-    memcpy(fCellNumber,source.fHGLG,fNCells*sizeof(Bool_t));
+    if(source.fHGLG)
+      memcpy(fCellNumber,source.fHGLG,fNCells*sizeof(Bool_t));
     memcpy(fCellNumber,source.fCellNumber, fNCells*sizeof(Short_t));
     memcpy(fAmplitude, source.fAmplitude,  fNCells*sizeof(Double32_t));
     if(source.fTime      && fTime)      memcpy(fTime,      source.fTime,      fNCells*sizeof(Double32_t));
@@ -257,7 +264,8 @@ void AliAODCaloCells::Sort()
   Int_t *idxArray = new Int_t[fNCells];
   TMath::Sort(fNCells,fCellNumber,idxArray,kFALSE);
   
-  Bool_t     *newHGLG      = new Bool_t[fNCells];
+  Bool_t     *newHGLG =0x0 ;
+  if(fHGLG) newHGLG = new Bool_t[fNCells];
   Short_t    *newIndex     = new Short_t[fNCells];
   Double32_t *newAmplitude = new Double32_t[fNCells];
   
@@ -270,15 +278,20 @@ void AliAODCaloCells::Sort()
   
   for (Int_t i=0; i < fNCells; i++) 
   {
-    newHGLG[i]      = fHGLG[idxArray[i]];
     newIndex[i]     = fCellNumber[idxArray[i]];
     newAmplitude[i] = fAmplitude [idxArray[i]];
     if(fTime)      newTime[i]      = fTime     [idxArray[i]];
     if(fMCLabel)   newMCLabel[i]   = fMCLabel  [idxArray[i]];
     if(fEFraction) newEFraction[i] = fEFraction[idxArray[i]];  
   }
+  if(fHGLG){
+    for (Int_t i=0; i < fNCells; i++) 
+    {
+      newHGLG[i]      = fHGLG[idxArray[i]];
+    }
+    delete [] fHGLG;
+  }
   
-  delete [] fHGLG;
   delete [] fCellNumber;
   delete [] fAmplitude;
   delete [] fTime;
@@ -305,7 +318,8 @@ Bool_t AliAODCaloCells::SetCell(Short_t pos,     Short_t cellNumber, Double32_t
 
   if (pos>=0 && pos < fNCells) 
   {
-    fHGLG[pos]=isHG ;
+    if(fHGLG)
+      fHGLG[pos]=isHG ;
     fCellNumber[pos] = cellNumber;
     fAmplitude[pos]  = amplitude;
     
index 0d64ba7..0648f12 100644 (file)
@@ -123,7 +123,10 @@ Bool_t AliAODCaloCells::GetCellHighGain(Short_t cellNumber)
 
   Short_t pos = TMath::BinarySearch(fNCells, fCellNumber, cellNumber);
   if (pos>=0 && pos < fNCells && fCellNumber[pos] == cellNumber ) {
-    return fHGLG[pos];
+    if(fHGLG)
+      return fHGLG[pos];
+    else //old version of AOD, 
+      return !(fMCLabel[pos]==-2) ;
   } else {
     return 0.;
   }
@@ -157,7 +160,10 @@ Double_t AliAODCaloCells::GetAmplitude(Short_t pos) const
 Bool_t AliAODCaloCells::GetHighGain(Short_t pos) const 
 { 
   if (pos>=0 && pos<fNCells) {
-    return fHGLG[pos];
+    if(fHGLG)
+      return fHGLG[pos];
+    else //Old version of AOD store this flag in MCLabel
+      return !(fMCLabel[pos]==-2) ;
   } else {
     return 0.;
   }
index 6c514ca..9586bb4 100644 (file)
@@ -58,13 +58,17 @@ AliESDCaloCells::AliESDCaloCells(const AliESDCaloCells& c) :
 
   for(Int_t i = 0; i < fNCells; i++)
   {
-    fHGLG[i]          = c.fHGLG[i];     
     fCellNumber[i]    = c.fCellNumber[i];
     fAmplitude[i]     = c.fAmplitude[i];
     fTime[i]          = c.fTime[i];
     if(c.fMCLabel)  fMCLabel[i]   = c.fMCLabel[i];
     if(c.fEFraction)fEFraction[i] = c.fEFraction[i];
   }
+  if(c.fHGLG){
+    for(Int_t i = 0; i < fNCells; i++){
+      fHGLG[i]          = c.fHGLG[i];   
+    }
+  }
 }
 
 //__________________________________________________________________________
@@ -78,7 +82,8 @@ AliESDCaloCells & AliESDCaloCells::operator =(const AliESDCaloCells& source)
     
     if(fNCells != source.fNCells) 
     {
-      delete [] fHGLG ;
+      if(fHGLG)
+        delete [] fHGLG ;
       delete [] fCellNumber;
       delete [] fAmplitude;
       delete [] fTime;
@@ -86,8 +91,9 @@ AliESDCaloCells & AliESDCaloCells::operator =(const AliESDCaloCells& source)
       delete [] fEFraction;
       
       fNCells = source.fNCells;
-      
-      fHGLG       = new Bool_t[fNCells] ;
+  
+      if(source.fHGLG)
+        fHGLG       = new Bool_t[fNCells] ;
       fCellNumber = new Short_t[fNCells];
       fAmplitude  = new Double32_t[fNCells];
       fTime       = new Double32_t[fNCells];
@@ -95,7 +101,8 @@ AliESDCaloCells & AliESDCaloCells::operator =(const AliESDCaloCells& source)
       fEFraction  = new Double32_t[fNCells];
     }
     
-    memcpy(fCellNumber,source.fHGLG,fNCells*sizeof(Bool_t));
+    if(source.fHGLG)
+      memcpy(fCellNumber,source.fHGLG,fNCells*sizeof(Bool_t));
     memcpy(fCellNumber,source.fCellNumber,fNCells*sizeof(Short_t));
     memcpy(fAmplitude, source.fAmplitude, fNCells*sizeof(Double32_t));
     memcpy(fTime,      source.fTime,      fNCells*sizeof(Double32_t));
@@ -257,7 +264,6 @@ void AliESDCaloCells::Sort()
   Int_t *idxArray = new Int_t[fNCells];
   TMath::Sort(fNCells,fCellNumber,idxArray,kFALSE);
   
-  Bool_t     *newHGLG      = new Bool_t[fNCells];
   Short_t    *newIndex     = new Short_t[fNCells];
   Double32_t *newAmplitude = new Double32_t[fNCells];
   Double32_t *newTime      = new Double32_t[fNCells];
@@ -269,22 +275,27 @@ void AliESDCaloCells::Sort()
     
   for (Int_t i=0; i < fNCells; i++) 
   {
-    newHGLG[i]      = fHGLG[idxArray[i]];
     newIndex[i]     = fCellNumber[idxArray[i]];
     newAmplitude[i] = fAmplitude [idxArray[i]];
     newTime[i]      = fTime      [idxArray[i]];
     if(fMCLabel)   newMCLabel[i]   = fMCLabel  [idxArray[i]];
     if(fEFraction) newEFraction[i] = fEFraction[idxArray[i]];
   }
+  if(fHGLG){
+    Bool_t     *newHGLG      = new Bool_t[fNCells];
+    for (Int_t i=0; i < fNCells; i++) {
+      newHGLG[i]      = fHGLG[idxArray[i]];
+    }
+    delete [] fHGLG;  
+    fHGLG = newHGLG;
+  }
   
-  delete [] fHGLG;
   delete [] fCellNumber;
   delete [] fAmplitude;
   delete [] fTime;
   delete [] fMCLabel;
   delete [] fEFraction;
 
-  fHGLG = newHGLG;
   fCellNumber = newIndex;
   fAmplitude  = newAmplitude;
   fTime       = newTime;
@@ -304,7 +315,8 @@ Bool_t AliESDCaloCells::SetCell(Short_t pos,     Short_t cellNumber, Double32_t
 
   if (pos>=0 && pos < fNCells) 
   {
-    fHGLG[pos]=isHG ;
+    if(fHGLG)
+      fHGLG[pos]=isHG ;
     fCellNumber[pos] = cellNumber;
     fAmplitude[pos]  = amplitude;
     fTime[pos]       = time;
index b8fd795..75310eb 100644 (file)
@@ -127,7 +127,10 @@ Bool_t AliESDCaloCells::GetCellHighGain(Short_t cellNumber)
 
   Short_t pos = TMath::BinarySearch(fNCells, fCellNumber, cellNumber);
   if (pos>=0 && pos < fNCells && fCellNumber[pos] == cellNumber ) {
-    return fHGLG[pos];
+    if(fHGLG)
+      return fHGLG[pos];
+    else //old version of ESD, for data HG flag stored in MCLabel 
+      return !(fMCLabel[pos]==-2) ;
   } else {
     return 0.;
   }
@@ -159,7 +162,10 @@ Double_t AliESDCaloCells::GetAmplitude(Short_t pos) const
 Bool_t AliESDCaloCells::GetHighGain(Short_t pos) const 
 { 
   if (pos>=0 && pos<fNCells) {
-    return fHGLG[pos];
+    if(fHGLG)
+      return fHGLG[pos];
+    else //old version of ESD, for data HG flag stored in MCLabel 
+      return !(fMCLabel[pos]==-2) ;
   } else {
     return 0.;
   }
index 318a47b..6b01e06 100644 (file)
@@ -48,8 +48,9 @@ class AliVCaloCells : public TNamed
   virtual Bool_t   GetCellHighGain(Short_t cellNumber)   = 0;
   virtual Double_t GetCellTime(Short_t cellNumber)       = 0;
   virtual Short_t  GetCellPosition(Short_t cellNumber)   = 0;
-  
+    
   virtual Double_t GetAmplitude(Short_t pos)  const      = 0;
+  virtual Bool_t   GetHighGain(Short_t pos)   const      = 0;
   virtual Double_t GetTime(Short_t pos)       const      = 0;
   virtual Short_t  GetCellNumber(Short_t pos) const      = 0;