]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSPID.cxx
Charged jets (pPb): Improved trackcut analysis
[u/mrichter/AliRoot.git] / PHOS / AliPHOSPID.cxx
index 7a9f60cf7e3a5106845335a67b2c12d5998696d6..c6eaaaf7e52fc2e57a8909bc092069133d104784 100644 (file)
 
 
 // --- ROOT system ---
-#include "TGeometry.h"
-#include "TDirectory.h"
-#include "TFile.h"
+#include "TBranch.h"
+#include "TClonesArray.h"
 #include "TTree.h"
-// --- Standard library ---
-#include <iostream.h>
-#include <stdlib.h>
 
+// --- Standard library ---
 
 // --- AliRoot header files ---
-#include "AliRun.h" 
+#include "AliConfig.h"
+#include "AliLog.h"
 #include "AliPHOSPID.h"
-#include "AliHeader.h" 
 
 ClassImp(AliPHOSPID)
 
 //____________________________________________________________________________
-  AliPHOSPID::AliPHOSPID():TTask("","")
+AliPHOSPID::AliPHOSPID():
+  TObject(),
+  fGeom(NULL),
+  fESD(0x0),
+  fEMCRecPoints(NULL),
+  fCPVRecPoints(NULL),
+  fTrackSegments(NULL),
+  fRecParticles(NULL)
 {
   // ctor
-  fSplitFile= 0 ; 
-
 }
 
 
 //____________________________________________________________________________
-AliPHOSPID::AliPHOSPID(const char* headerFile, const char * name, const Bool_t toSplit):TTask(name, headerFile)
+AliPHOSPID::AliPHOSPID(AliPHOSGeometry *geom):
+  TObject(),
+  fGeom(geom),
+  fESD(0x0),
+  fEMCRecPoints(NULL),
+  fCPVRecPoints(NULL),
+  fTrackSegments(NULL),
+  fRecParticles(NULL)
 {
   // ctor
+  fEMCRecPoints = new TObjArray(100) ;
+  fCPVRecPoints = new TObjArray(100) ;
+  fRecParticles = new TClonesArray("AliPHOSRecParticle",100) ;
+  fRecParticles->SetName("RECPARTICLES");
 
-  fToSplit = toSplit ;
-  fSplitFile= 0 ; 
+}
+
+//____________________________________________________________________________
+AliPHOSPID::AliPHOSPID(const AliPHOSPID & pid) :
+  TObject(pid),
+  fGeom(pid.fGeom),
+  fESD(pid.fESD), 
+  fEMCRecPoints(pid.fEMCRecPoints),
+  fCPVRecPoints(pid.fCPVRecPoints),
+  fTrackSegments(pid.fTrackSegments),
+  fRecParticles(pid.fRecParticles)
+{
+  // Copy constructor
 }
 
 //____________________________________________________________________________
 AliPHOSPID::~AliPHOSPID()
 {
   // dtor
-        
-  fSplitFile = 0 ;
+  if (fEMCRecPoints) {
+    fEMCRecPoints->Delete();
+    delete fEMCRecPoints;
+  }
+  if (fCPVRecPoints) {
+    fCPVRecPoints->Delete();
+    delete fCPVRecPoints;
+  }
+  if (fRecParticles) {
+    fRecParticles->Delete();
+    delete fRecParticles;
+  }
 }
 
-// //____________________________________________________________________________
-// void AliPHOSPID::SetSplitFile(const TString splitFileName) const
-// {
-//   // Diverts the Digits in a file separate from the hits file
-  
-
-//   TDirectory * cwd = gDirectory ;
-//   TFile * splitFile = gAlice->InitTreeFile("R",splitFileName.Data());
-//   splitFile->cd() ; 
-//   gAlice->Write(0, TObject::kOverwrite);
-  
-//   TTree *treeE  = gAlice->TreeE();
-//   if (!treeE) {
-//     cerr << "ERROR: AliPHOSPID::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: AliPHOSPID::SetSplitFile -> AliceGeom was not found in the input file "<<endl;
-//     abort() ;
-//     }
-//   AliceGeom->Write(0, TObject::kOverwrite) ;
-  
-//   gAlice->MakeTree("R",splitFile);
-//   cwd->cd() ; 
-//   cout << "INFO: AliPHOSPID::SetSPlitMode -> RecParticles will be stored in " << splitFileName.Data() << endl ;   
-// }
+//____________________________________________________________________________
+void AliPHOSPID::SetInput(TTree *clustersTree, TClonesArray *trackSegments)
+{
+  // Read the clusters tree and creates the
+  // arrays with the EMC and CPV
+  // clusters.
+  // and set the corresponding branch addresses
+
+  fTrackSegments = trackSegments;
+
+  TBranch *emcbranch = clustersTree->GetBranch("PHOSEmcRP");
+  if (!emcbranch) { 
+    AliError("can't get the branch with the PHOS EMC clusters !");
+    return;
+  }
+  emcbranch->SetAddress(&fEMCRecPoints);
+  fEMCRecPoints->Delete();
+  emcbranch->GetEntry(0);
+
+  TBranch *cpvbranch = clustersTree->GetBranch("PHOSCpvRP");
+  if (!cpvbranch) { 
+    AliError("can't get the branch with the PHOS CPV clusters !");
+    return;
+  }
+  cpvbranch->SetAddress(&fCPVRecPoints);
+  fCPVRecPoints->Delete();
+  cpvbranch->GetEntry(0);
+}