]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Define Clear for AliEMCALDigits to delete the owned arrays when the TClonesArray...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 10 Aug 2010 16:37:58 +0000 (16:37 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 10 Aug 2010 16:37:58 +0000 (16:37 +0000)
EMCAL/AliEMCALDigit.cxx
EMCAL/AliEMCALDigit.h
EMCAL/AliEMCALDigitizer.cxx
EMCAL/AliEMCALLoader.cxx
EMCAL/AliEMCALQADataMakerRec.cxx
EMCAL/AliEMCALQADataMakerSim.cxx
EMCAL/AliEMCALRawDigit.cxx
EMCAL/AliEMCALRawDigit.h
EMCAL/AliEMCALRawUtils.cxx
EMCAL/AliEMCALSDigitizer.cxx

index 2037198d444de84d35336814c94b8b7e791f9cb9..b23fd68a45f4cd3ae5b93834ef19870f32b8607b 100644 (file)
@@ -149,17 +149,17 @@ AliEMCALDigit::AliEMCALDigit(const AliEMCALDigit & digit)
   : AliDigitNew(digit),
     fAmpFloat(digit.fAmpFloat),        
     fNSamples(digit.fNSamples),
-    fSamples(0x0),
+    fSamples(),
     fNSamplesHG(digit.fNSamplesHG),
-    fSamplesHG(0x0),
+    fSamplesHG(),
     fNprimary(digit.fNprimary),
     fNMaxPrimary(digit.fNMaxPrimary),
-    fPrimary(0x0),
-    fDEPrimary(0x0),
+    fPrimary(),
+    fDEPrimary(),
     fNiparent(digit.fNiparent),
     fNMaxiparent(digit.fNMaxiparent),
-    fIparent(0x0),
-    fDEParent(0x0),
+    fIparent(),
+    fDEParent(),
     fMaxIter(digit.fMaxIter),
     fTime(digit.fTime),
     fTimeR(digit.fTimeR), 
@@ -168,26 +168,31 @@ AliEMCALDigit::AliEMCALDigit(const AliEMCALDigit & digit)
     fDigitType(digit.fDigitType)
 {
   // copy ctor
-  
   // data memebrs of the base class (AliNewDigit)
   fAmp         = digit.fAmp ;
   fId          = digit.fId;
   fIndexInList = digit.fIndexInList ; 
 
   // data members  
-  if(fNSamples){
+  if (fSamples )   delete [] fSamples ;   fSamples   = NULL ;
+  if (fSamplesHG ) delete [] fSamplesHG ; fSamplesHG = NULL ;
+  if (fPrimary  )  delete [] fPrimary ;   fPrimary   = NULL ;
+  if (fDEPrimary)  delete [] fDEPrimary ; fDEPrimary = NULL ;
+  if (fIparent )   delete [] fIparent ;   fIparent   = NULL ;
+  if (fDEParent)   delete [] fDEParent ;  fDEParent  = NULL ;
+
+  if (fNSamples){
     fSamples     = new Int_t[fNSamples]; 
     for (Int_t i=0; i < digit.fNSamples; i++) fSamples[i] = digit.fSamples[i];
   }
-  else fNSamples = 0;
-
-  if(fNSamplesHG){
+  
+  if (fNSamplesHG){
     fSamplesHG   = new Int_t[fNSamplesHG]; 
     for (Int_t i=0; i < digit.fNSamplesHG; i++) fSamplesHG[i] = digit.fSamplesHG[i];
   }
-  else fNSamplesHG = 0;
-
-  if(fNMaxPrimary){
+  
+  if (fNMaxPrimary){
     fPrimary   = new Int_t  [fNMaxPrimary] ;  
     fDEPrimary = new Float_t[fNMaxPrimary] ;
     for ( Int_t i = 0; i < fNMaxPrimary ; i++) {
@@ -195,35 +200,43 @@ AliEMCALDigit::AliEMCALDigit(const AliEMCALDigit & digit)
       fDEPrimary[i] = digit.fDEPrimary[i] ;
     }
   }
-  else{
-    fPrimary   = 0 ;
-    fDEPrimary = 0 ;
-
-  }
-  if(fNMaxiparent){
+  
+  if (fNMaxiparent){
     fIparent  = new Int_t  [fNMaxiparent] ;
     fDEParent = new Float_t[fNMaxiparent] ;
     for (Int_t j = 0; j< fNMaxiparent ; j++) {
     fIparent[j]  = digit.fIparent[j] ;
     fDEParent[j] = digit.fDEParent[j] ;
     }
-  }
-  else {
-    fIparent  = 0 ;
-    fDEParent = 0 ;
-  }
+  }  
 }
 
 //____________________________________________________________________________
 AliEMCALDigit::~AliEMCALDigit() 
 {
-  // Delete array of primiries if any
-    delete [] fPrimary ;
-    delete [] fDEPrimary ;
-    delete [] fIparent ; 
-    delete [] fDEParent ;
-    delete [] fSamples;
-    delete [] fSamplesHG;
+  // Delete array of primaries if any
+
+  if (fSamples )   delete [] fSamples ;   fSamples   = NULL ;
+  if (fSamplesHG ) delete [] fSamplesHG ; fSamplesHG = NULL ;
+  if (fPrimary  )  delete [] fPrimary ;   fPrimary   = NULL ;
+  if (fDEPrimary)  delete [] fDEPrimary ; fDEPrimary = NULL ;
+  if (fIparent )   delete [] fIparent ;   fIparent   = NULL ;
+  if (fDEParent)   delete [] fDEParent ;  fDEParent  = NULL ;
+
+}
+
+
+//____________________________________________________________________________
+void AliEMCALDigit::Clear(const Option_t*) 
+{
+  // Delete array of primaries if any
+  if (fSamples )   delete [] fSamples ;   fSamples   = NULL ;
+  if (fSamplesHG ) delete [] fSamplesHG ; fSamplesHG = NULL ;
+  if (fPrimary  )  delete [] fPrimary ;   fPrimary   = NULL ;
+  if (fDEPrimary)  delete [] fDEPrimary ; fDEPrimary = NULL ;
+  if (fIparent )   delete [] fIparent ;   fIparent   = NULL ;
+  if (fDEParent)   delete [] fDEParent ;  fDEParent  = NULL ;
 
 }
 
index 37a52e31fd209e42c7d69dd97dd69b480c9b19db..c5771b756626b293d8f11708e9835ba90f8b4b73 100644 (file)
@@ -39,9 +39,9 @@ class AliEMCALDigit : public AliDigitNew {
   AliEMCALDigit operator+(const AliEMCALDigit &rValue) ;
   AliEMCALDigit operator*(Float_t factor) ; 
   const AliEMCALDigit& operator = (const AliEMCALDigit &) {return *this;}
-
   enum digitType{kUnknown=-1, kHG=0, kLG=1, kLGnoHG=2, kTrigger=3};
-       
+
+  void    Clear(const Option_t*) ;     
   Int_t   Compare(const TObject * obj) const ;
   Float_t GetAmplitude()   const { if(!fAmp)return fAmpFloat ; else return fAmp ;}//Keep backward compatibility.
   Float_t GetEta()         const ; 
index 57201d7c304abff067661883f9225561b1d1a845..6e1685240af8c82b4d2a806d805ba0c85c6b1d8f 100644 (file)
@@ -611,8 +611,8 @@ void AliEMCALDigitizer::Exec(Option_t *option)
          
        Unload();
          
-       digitsTRG->Clear();
-       digitsTMP->Clear();
+       digitsTRG->Clear("C");
+       digitsTMP->Clear("C");
        //-------------------------------------
 
     if(strstr(option,"deb"))
index ff96490a3fcf23c5928d219b1e9e2acaf26754bc..9c32e91d32ad7b7d5e922ab5f0b0396092b21829 100644 (file)
@@ -187,7 +187,7 @@ Int_t AliEMCALLoader::GetEvent()
     // Reset SDigits array and branch
     branchS->ResetAddress();
     TClonesArray* sdigits = const_cast<AliEMCALLoader *>(this)->SDigits();
-    if (sdigits) sdigits->Clear();
+    if (sdigits) sdigits->Clear("C");
     
     branchS->SetAddress(&sdigits);
     branchS->GetEntry(0);
@@ -204,7 +204,7 @@ Int_t AliEMCALLoader::GetEvent()
     // Reset Digits array and branch
     branchD->ResetAddress();
     TClonesArray* digits = const_cast<AliEMCALLoader *>(this)->Digits();
-    if (digits) digits->Clear();
+    if (digits) digits->Clear("C");
     
     branchD->SetAddress(&digits);
     branchD->GetEntry(0);
index ff795839da1a4d52509261daa46cbc2a65874ff0..351a2071023ef2078e5dbe109c014b4cb1ec894c 100644 (file)
@@ -830,7 +830,7 @@ void AliEMCALQADataMakerRec::MakeDigits(TTree * digitTree)
 {
   // makes data from Digit Tree
   if (fDigitsArray) 
-    fDigitsArray->Clear() ; 
+    fDigitsArray->Clear("C") ; 
   else
     fDigitsArray = new TClonesArray("AliEMCALDigit", 1000) ; 
   
index 318bd2b3469248c08113ff07957a683f6ee2d361..b9e120f7ab32dddf286b15cb52939bc289793621 100644 (file)
@@ -176,7 +176,7 @@ void AliEMCALQADataMakerSim::MakeDigits(TTree * digitTree)
 {
   // makes data from Digit Tree
   if (fDigitsArray) 
-    fDigitsArray->Clear() ; 
+    fDigitsArray->Clear("C") ; 
   else
     fDigitsArray = new TClonesArray("AliEMCALDigit", 1000) ; 
   
@@ -215,7 +215,7 @@ void AliEMCALQADataMakerSim::MakeSDigits(TTree * sdigitTree)
 {
   // makes data from SDigit Tree
   if (fSDigitsArray) 
-    fSDigitsArray->Clear() ; 
+    fSDigitsArray->Clear("C") ; 
   else 
     fSDigitsArray = new TClonesArray("AliEMCALDigit", 1000) ; 
   
index a7a8910a489a541b5faa721da26fe78cd8e09dcb..970408c6d7ffbbd3b06230abbdeccd5ff8a75db7 100644 (file)
@@ -64,10 +64,18 @@ fSamples(0x0)
 //____________________________________________________________________________
 AliEMCALRawDigit::~AliEMCALRawDigit() 
 {
-       // Delete array of time samples
-    delete [] fSamples;
+  // Delete array of time samples
+  delete [] fSamples;
 }
 
+//____________________________________________________________________________
+void AliEMCALRawDigit::Clear(Option_t *) 
+{
+  // Delete array of time samples
+  delete [] fSamples;
+}
+
+
 //____________________________________________________________________________
 Bool_t AliEMCALRawDigit::GetTimeSample(const Int_t iSample, Int_t& timeBin, Int_t& amp) const
 {
index 04c50c1f512304729053bb4612f391ebe90ec0c8..c69b7df8b239695c0416db27a02a9c2367df2c44 100644 (file)
@@ -25,7 +25,7 @@ public:
        AliEMCALRawDigit(const AliEMCALRawDigit& digit);
        
        virtual ~AliEMCALRawDigit();
-
+        void Clear(Option_t *);
        Bool_t operator==(const AliEMCALRawDigit &rValue) const;
        const AliEMCALRawDigit& operator = (const AliEMCALRawDigit&) {return *this;}
 
index 77d2ee7dbb9f7c888529903c31c8ca525d9a065e..dad0953c2a27d27373fd384da12d8c1edbb53cd9 100644 (file)
@@ -324,7 +324,7 @@ void AliEMCALRawUtils::Raw2Digits(AliRawReader* reader,TClonesArray *digitsArr,
 {
   // convert raw data of the current event to digits                                                                                     
 
-  digitsArr->Clear(); 
+  digitsArr->Clear("C"); 
 
   if (!digitsArr) {
     Error("Raw2Digits", "no digits found !");
index 9c6ee153513d8bff276273a1298a80185188e92a..86fedf03ed482da50f4ddcb0a38f587a36d1e9f2 100644 (file)
@@ -272,9 +272,9 @@ void AliEMCALSDigitizer::Exec(Option_t *option)
                        emcalLoader->MakeSDigitsContainer();
                        treeS = emcalLoader->TreeS();
                }
-               //TClonesArray * hits = emcalLoader->Hits() ; 
+
                TClonesArray * sdigits = emcalLoader->SDigits() ;
-               sdigits->Clear();
+               sdigits->Clear("C");
                
                Int_t nSdigits = 0 ;
                Int_t iHit, iTrack, iSDigit;
@@ -487,7 +487,7 @@ void AliEMCALSDigitizer::PrintSDigits(Option_t * option)
        printf("%s",tempo); 
       }         
     }
-    delete tempo ;
+    delete [] tempo ;
     printf("\n** Sum %2.3f : %10.3f GeV/c **\n ", isum, Calibrate(isum));
   } else printf("\n");
 }