* provided "as is" without express or implied warranty. *
**************************************************************************/
-/* $Id$ */
-
//_________________________________________________________________________
// Base class for the clusterization algorithm (pure abstract)
//*--
//*-- Author: Yves Schutz SUBATECH
//////////////////////////////////////////////////////////////////////////////
-// --- ROOT system ---
-#include "TGeometry.h"
-#include "TDirectory.h"
-#include "TFile.h"
-#include "TTree.h"
-
+#include <TClonesArray.h>
+#include <TTree.h>
-// --- Standard library ---
-#include <iostream.h>
-#include <stdlib.h>
-
-// --- AliRoot header files ---
-#include "AliRun.h"
#include "AliPHOSClusterizer.h"
-#include "AliHeader.h"
-#include "AliPHOSGetter.h"
-#include "AliPHOSSDigitizer.h"
-#include "AliPHOSDigitizer.h"
+#include "AliPHOSDigit.h"
+#include "AliLog.h"
ClassImp(AliPHOSClusterizer)
+AliPHOSCalibData * AliPHOSClusterizer::fgCalibData = 0 ;
+
//____________________________________________________________________________
- AliPHOSClusterizer::AliPHOSClusterizer():TTask("","")
+AliPHOSClusterizer::AliPHOSClusterizer():
+ fGeom(NULL),
+ fDigitsArr(0),
+ fTreeR(0),
+ fEMCRecPoints(0),
+ fCPVRecPoints(0)
{
// ctor
- fSplitFile= 0 ;
- fHitsFileName = "" ;
- fSDigitsFileName = "" ;
- fDigitsFileName = "" ;
-
+ fDigitsArr = new TClonesArray("AliPHOSDigit",100);
+ fEMCRecPoints = new TObjArray(100) ;
+ fEMCRecPoints ->SetName("EMCRECPOINTS") ;
+ fCPVRecPoints = new TObjArray(100) ;
+ fCPVRecPoints ->SetName("CPVRECPOINTS") ;
}
//____________________________________________________________________________
-AliPHOSClusterizer::AliPHOSClusterizer(const char* headerFile, const char* name):
-TTask(name, headerFile)
+AliPHOSClusterizer::AliPHOSClusterizer(AliPHOSGeometry *geom):
+ fGeom(geom),
+ fDigitsArr(0),
+ fTreeR(0),
+ fEMCRecPoints(0),
+ fCPVRecPoints(0)
{
// ctor
- fSplitFile= 0 ;
- fDigitsFileName = headerFile ;
- AliPHOSGetter * gime = AliPHOSGetter::GetInstance(headerFile, name) ;
- gime->Event(0,"D") ;
- fSDigitsFileName = gime->Digitizer()->GetTitle() ;
- gime = AliPHOSGetter::GetInstance(fSDigitsFileName, name) ;
- gime->Event(0,"S") ;
- fHitsFileName = gime->SDigitizer()->GetTitle() ;
+ fDigitsArr = new TClonesArray("AliPHOSDigit",100);
+ fEMCRecPoints = new TObjArray(100) ;
+ fEMCRecPoints ->SetName("EMCRECPOINTS") ;
+ fCPVRecPoints = new TObjArray(100) ;
+ fCPVRecPoints ->SetName("CPVRECPOINTS") ;
}
//____________________________________________________________________________
AliPHOSClusterizer::~AliPHOSClusterizer()
{
// dtor
-
- fSplitFile = 0 ; ;
+ if (fDigitsArr) {
+ fDigitsArr->Delete();
+ delete fDigitsArr;
+ }
+ if (fEMCRecPoints) {
+ fEMCRecPoints->Delete();
+ delete fEMCRecPoints;
+ }
+ if (fCPVRecPoints) {
+ fCPVRecPoints->Delete();
+ delete fCPVRecPoints;
+ }
}
//____________________________________________________________________________
-void AliPHOSClusterizer::SetSplitFile(const TString splitFileName)
+void AliPHOSClusterizer::SetInput(TTree * digitsTree)
{
- // Diverts the RecPoints in a file separate from the Digits file
-
+ // Get the tree with digits and sets
+ // the input array with digits for PHOS
+ TBranch *branch = digitsTree->GetBranch("PHOS");
+ if (!branch) {
+ AliError("can't get the branch with the PHOS digits !");
+ return;
+ }
+ fDigitsArr->Clear();
+ branch->SetAddress(&fDigitsArr);
+ branch->GetEntry(0);
+}
- TDirectory * cwd = gDirectory ;
- fSplitFile = gAlice->InitTreeFile("R",splitFileName.Data());
- fSplitFile->cd() ;
- gAlice->Write(0, TObject::kOverwrite);
+//____________________________________________________________________________
+void AliPHOSClusterizer::SetOutput(TTree * clustersTree)
+{
+ // Set the output clusters tree,
+ // creates the arrays for EMC and CPV,
+ // and set the corresponding branch addresses
+ fTreeR = clustersTree;
- 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 ;
+ AliDebug(9, "Making array for EMC clusters");
+ Int_t split = 0;
+ Int_t bufsize = 32000;
+ fTreeR->Branch("PHOSEmcRP", "TObjArray", &fEMCRecPoints, bufsize, split);
+
+ AliDebug(9, "Making array for CPV clusters");
+ fTreeR->Branch("PHOSCpvRP", "TObjArray", &fCPVRecPoints, bufsize, split);
}