Bugfix in AliL3FileHandler::GetDigitsTree.
authorvestbo <vestbo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 28 May 2002 14:53:36 +0000 (14:53 +0000)
committervestbo <vestbo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 28 May 2002 14:53:36 +0000 (14:53 +0000)
Added a new function AliL3FileHandler::FreeDigitsTree(), in order
to be able to clear the digits tree from memory, without deleting
the object. Useful feature if you want to loop over several events
in a single rootfile.

HLT/src/AliL3FileHandler.cxx
HLT/src/AliL3FileHandler.h
HLT/src/AliL3MemHandler.h

index b26415c67ebebbf32a72ce8995e6c9a81ff0982c..397ba2089ed4c4b865687ed9528312e088ae0865 100644 (file)
@@ -70,11 +70,25 @@ AliL3FileHandler::~AliL3FileHandler()
 {
   //Destructor
   if(fMC) CloseMCOutput();
-  if(fDigitsTree) delete fDigitsTree;
+  FreeDigitsTree();
   if(fInAli) CloseAliInput();
   
 }
 
+void AliL3FileHandler::FreeDigitsTree()
+{
+  if(!fDigitsTree)
+    {
+      LOG(AliL3Log::kWarning,"AliL3FileHandler::FreeDigitsTree()","Pointer")
+       <<"Cannot free digitstree, it is not present"<<ENDLOG;
+      return;
+    }
+  fDigits=0;
+  fDigitsTree->Delete();
+  fDigitsTree=0;
+}
+
+
 Bool_t AliL3FileHandler::SetMCOutput(char *name)
 {
   fMC = fopen(name,"w");
@@ -233,7 +247,7 @@ AliL3DigitRowData * AliL3FileHandler::AliDigits2Memory(UInt_t & nrow,Int_t event
   
   if(!fDigitsTree)
     GetDigitsTree(event);
-    
+  
   UShort_t dig;
   Int_t time,pad,sector,row;
   Int_t nrows=0;
@@ -252,7 +266,7 @@ AliL3DigitRowData * AliL3FileHandler::AliDigits2Memory(UInt_t & nrow,Int_t event
       if(lslice != fSlice) break;
       if(lrow < fRowMin) continue;
       if(lrow > fRowMax) break;
-
+      
       Float_t xyz[3];
       ndigits[lrow] = 0;
       fDigits->First();
@@ -352,6 +366,7 @@ AliL3DigitRowData * AliL3FileHandler::AliDigits2Memory(UInt_t & nrow,Int_t event
   return data;
 }
 
+
 Bool_t AliL3FileHandler::GetDigitsTree(Int_t event)
 {
   //Connects to the TPC digit tree in the AliROOT file.
@@ -359,7 +374,7 @@ Bool_t AliL3FileHandler::GetDigitsTree(Int_t event)
   fInAli->cd();
   Char_t dname[100];
   sprintf(dname,"TreeD_75x40_100x60_%d",event);
-  fDigitsTree = (TTree*)fInAli->Get("TreeD_75x40_100x60_0");
+  fDigitsTree = (TTree*)fInAli->Get(dname);
   if(!fDigitsTree) 
     {
       LOG(AliL3Log::kError,"AliL3FileHandler::GetDigitsTree","Digits Tree")
index 31e0d6f71a21f50e7dcdfcdbdeb448e19971f27d..08b8b4fdaa17043b7ebb7eb5745fbe6883d1ba6e 100644 (file)
@@ -30,11 +30,13 @@ class AliL3FileHandler:public AliL3MemHandler{
   AliL3FileHandler();
   virtual ~AliL3FileHandler();
 
+  void FreeDigitsTree();
   Bool_t SetAliInput(char *name);
   Bool_t SetAliInput(TFile *file);
   void CloseAliInput(); 
   Bool_t IsDigit();
+  
+
   Bool_t SetMCOutput(char *name);
   Bool_t SetMCOutput(FILE *file);
   void CloseMCOutput();
index 120f90f7bde22045d9966b661b720ee507b2856b..0e7c0295ef38e58a6d746a758bf6954e891e853b 100644 (file)
@@ -136,6 +136,7 @@ class AliL3MemHandler{
   Int_t GetPatch(){return fPatch;}
   
   //virtual functions:
+  virtual void FreeDigitsTree() {return;}
   virtual Bool_t SetAliInput(char *name){return 0;}
   virtual void CloseAliInput(){return;} 
   virtual Bool_t IsDigit(){return 0;}