]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSClusterizer.cxx
Added the option to write objects into separate files and improved the cleaning
[u/mrichter/AliRoot.git] / PHOS / AliPHOSClusterizer.cxx
index 03cfac03027ffb04ee763f7e448ffaa6cca88686..2cef5a424f5b4f3152db035a0f8bd84eff899834 100644 (file)
 //////////////////////////////////////////////////////////////////////////////
 
 // --- ROOT system ---
+#include "TGeometry.h"
+#include "TDirectory.h"
+#include "TFile.h"
+#include "TTree.h"
 
 
 // --- Standard library ---
-
-
+#include <iostream.h>
+#include <stdlib.h>   
 
 // --- AliRoot header files ---
-
+#include "AliRun.h" 
 #include "AliPHOSClusterizer.h"
+#include "AliHeader.h" 
 
 ClassImp(AliPHOSClusterizer)
 
@@ -39,16 +43,59 @@ ClassImp(AliPHOSClusterizer)
   AliPHOSClusterizer::AliPHOSClusterizer():TTask("","")
 {
   // ctor
+  fSplitFile= 0 ; 
 }
+
 //____________________________________________________________________________
 AliPHOSClusterizer::AliPHOSClusterizer(const char* headerFile, const char* name):
 TTask(name, headerFile)
 {
   // ctor
+  fSplitFile= 0 ; 
+
 }
 
 //____________________________________________________________________________
 AliPHOSClusterizer::~AliPHOSClusterizer()
 {
   // dtor
+         
+  fSplitFile = 0 ; ;
+}
+
+//____________________________________________________________________________
+void AliPHOSClusterizer::SetSplitFile(const TString splitFileName) 
+{
+  // Diverts the RecPoints in a file separate from the Digits file
+  
+
+  TDirectory * cwd = gDirectory ;
+  fSplitFile = gAlice->InitTreeFile("R",splitFileName.Data());
+  fSplitFile->cd() ; 
+  gAlice->Write(0, TObject::kOverwrite);
+
+  TTree *treeE  = gAlice->TreeE();
+  if (!treeE) {
+    cerr << "ERROR: AliPHOSClusterizer::SetSplitFile -> No TreeE found "<<endl;
+    abort() ;
+  }      
+  
+  // copy TreeE
+  AliHeader *header = new AliHeader();
+  treeE->SetBranchAddress("Header", &header);
+  treeE->SetBranchStatus("*",1);
+  TTree *treeENew =  treeE->CloneTree();
+  treeENew->Write(0, TObject::kOverwrite);
+    
+  // copy AliceGeom
+  TGeometry *AliceGeom = static_cast<TGeometry*>(cwd->Get("AliceGeom"));
+  if (!AliceGeom) {
+    cerr << "ERROR: AliPHOSClusterizer::SetSplitFile -> AliceGeom was not found in the input file "<<endl;
+    abort() ;
+  }
+  AliceGeom->Write(0, TObject::kOverwrite);
+  
+  gAlice->MakeTree("R", fSplitFile);
+  cwd->cd() ; 
+  cout << "INFO: AliPHOSClusterizer::SetSPlitMode -> RecPoints will be stored in " << splitFileName.Data() << endl ;   
 }