// --- 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);
+}