]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Sergey modified the code to release the memory of the pad vectors. Useful when proces...
authorkaamodt <kaamodt@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 3 Nov 2009 21:38:16 +0000 (21:38 +0000)
committerkaamodt <kaamodt@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 3 Nov 2009 21:38:16 +0000 (21:38 +0000)
HLT/TPCLib/AliHLTTPCClusterFinder.cxx
HLT/TPCLib/AliHLTTPCClusterFinder.h
HLT/TPCLib/AliHLTTPCClusterFinderComponent.cxx
HLT/TPCLib/AliHLTTPCClusterFinderComponent.h

index 71fffa6a82de1ab4cc1e2e798d1c7e6dae2bb215..fef7b58236fa197275b4dd0ff91d230dbd67ae43 100644 (file)
@@ -87,7 +87,8 @@ AliHLTTPCClusterFinder::AliHLTTPCClusterFinder()
   fClusterMCVector(),
   fOfflineTransform(NULL),
   fOfflineTPCRecoParam(),
-  fTimeMeanDiff(2)
+  fTimeMeanDiff(2),
+  fReleaseMemory(0)
 {
   //constructor  
   fOfflineTransform = AliTPCcalibDB::Instance()->GetTransform(); 
@@ -149,6 +150,8 @@ void AliHLTTPCClusterFinder::InitializePadArray(){
 
   memset( fNumberOfPadsInRow, 0, sizeof(Int_t)*(fNumberOfRows));
 
+  fRowPadVector.clear();
+
   for(UInt_t i=0;i<fNumberOfRows;i++){
     fNumberOfPadsInRow[i]=AliHLTTPCTransform::GetNPads(i+fFirstRow);
     AliHLTTPCPadVector tmpRow;
@@ -165,17 +168,21 @@ void AliHLTTPCClusterFinder::InitializePadArray(){
 Int_t AliHLTTPCClusterFinder::DeInitializePadArray(){
   // see header file for class documentation
 
-  for(UInt_t i=0;i<fNumberOfRows;i++){
-    for(UInt_t j=0;j<=fNumberOfPadsInRow[i];j++){
-      delete fRowPadVector[i][j];
-      fRowPadVector[i][j]=NULL;
+  if( fVectorInitialized ){
+    for(UInt_t i=0;i<fNumberOfRows;i++){
+      for(UInt_t j=0;j<=fNumberOfPadsInRow[i];j++){
+       delete fRowPadVector[i][j];
+       fRowPadVector[i][j]=NULL;
+      }
+      fRowPadVector[i].clear();
     }
-    fRowPadVector[i].clear();
+    fRowPadVector.clear();
+    delete[] fNumberOfPadsInRow;
+    fNumberOfPadsInRow = 0;
   }
-  fRowPadVector.clear();
+  fVectorInitialized=kFALSE;
   return 1;
-} 
-
+}
 
 
 void AliHLTTPCClusterFinder::SetOutputArray(AliHLTTPCSpacePointData *pt){
@@ -620,6 +627,7 @@ void AliHLTTPCClusterFinder::FindClusters(){
   WriteClusters(fClusters.size(),clusterlist);
   delete [] clusterlist;
   fClusters.clear();
+  if( fReleaseMemory ) DeInitializePadArray();// call this when  the -releaseMemory flag is set
 }
 
 
index 65ba628b677132223e961a7fd89fb44fcdcc991c..364144022d3be1a89d82ffd1f9b73148cb572b8e 100644 (file)
@@ -187,6 +187,7 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
   void SetDoPadSelection(Bool_t input){fDoPadSelection=input;}
   void SetLastTimeBin(Int_t ltb){fLastTimeBin=ltb;}
   void SetFirstTimeBin(Int_t ftb){fFirstTimeBin=ftb;}
+  void SetReleaseMemory( Bool_t v ){ fReleaseMemory = v;}
   void UpdateLastTimeBin(){fLastTimeBin=AliHLTTPCTransform::GetNTimeBins();}
 
 //---------------------------------- Under this line the old sorted clusterfinder functions can be found --------------------------------
@@ -290,10 +291,12 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
 
   Float_t fTimeMeanDiff;                                           //! transient
 
+  Bool_t fReleaseMemory; //! flag to release the memory after each event
+
 #ifdef do_mc
   void GetTrackID(Int_t pad,Int_t time,Int_t *trackID);
 #endif
   
-  ClassDef(AliHLTTPCClusterFinder,10) //Fast cluster finder
+  ClassDef(AliHLTTPCClusterFinder,11) //Fast cluster finder
 };
 #endif
index b11218fc5ab75691bc9b3d0e4aa964e792956ea0..8307363f0f8982d89c98a203bb8d98032ee1f718 100644 (file)
@@ -77,7 +77,8 @@ AliHLTTPCClusterFinderComponent::AliHLTTPCClusterFinderComponent(int mode)
   fGetActivePads(0),
   fFirstTimeBin(-1),
   fLastTimeBin(-1),
-  fDoMC(kFALSE)
+  fDoMC(kFALSE),
+  fReleaseMemory( kFALSE )
 {
   // see header file for class documentation
   // or
@@ -619,6 +620,12 @@ int AliHLTTPCClusterFinderComponent::ScanConfigurationArgument(int argc, const c
     HLTDebug("Setting fDoMC to true.");
     return 1;
   }
+  if (argument.CompareTo("-release-memory")==0) {
+    fReleaseMemory=kTRUE;
+    fClusterFinder->SetReleaseMemory( fReleaseMemory );
+    HLTDebug("Setting fReleaseMemory to true.");
+    return 1;
+  }
 
   if (argument.CompareTo("-active-pads")==0 || argument.CompareTo("activepads")==0){
     if(argument.CompareTo("activepads" )==0){
@@ -800,6 +807,11 @@ int AliHLTTPCClusterFinderComponent::Configure(const char* arguments){
        fClusterFinder->SetDoMC(fDoMC);
        HLTInfo("Setting fDoMC to true.");
       }
+      else if (argument.CompareTo("-release-memory")==0) {
+       fReleaseMemory = kTRUE;
+       fClusterFinder->SetReleaseMemory( kTRUE );
+       HLTInfo("Setting fReleaseMemory to true.");
+      }
       else if (argument.CompareTo("-active-pads")==0 || argument.CompareTo("activepads")==0){
        if(argument.CompareTo("activepads" )==0){
          HLTWarning("Please change to new component argument naming scheme and use '-active-pads' instead of 'activepads'");
index cf25dcafc366edd46faf6b4967059a70f6822727..b40573459df07164a45a5d9bf899c75b4010b4e2 100644 (file)
@@ -200,15 +200,15 @@ class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
        /** Last timebin taken in to account when reading the data */
        Int_t fLastTimeBin;                                                            //!transient
 
-       Bool_t fDoMC;
-
+       Bool_t fDoMC; // flag to provide MC labels
+       Bool_t fReleaseMemory; // flag to release the memory after each event
        /// the default configuration entry for this component
        static const char* fgkOCDBEntryPacked; //!transient
        static const char* fgkOCDBEntryUnpacked; //!transient
        static const char* fgkOCDBEntryDecoder; //!transient
        static const char* fgkOCDBEntry32Bit; //!transient
 
-       ClassDef(AliHLTTPCClusterFinderComponent, 7)
+       ClassDef(AliHLTTPCClusterFinderComponent, 8)
 
 };
 #endif