Added a collaborative work between Getter and Tasks (Digitizer and Clustrizer) so...
[u/mrichter/AliRoot.git] / PHOS / AliPHOSClusterizer.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 //_________________________________________________________________________
19 //  Base class for the clusterization algorithm (pure abstract)
20 //*--
21 //*-- Author: Yves Schutz  SUBATECH 
22 //////////////////////////////////////////////////////////////////////////////
23
24 // --- ROOT system ---
25 #include "TGeometry.h"
26 #include "TDirectory.h"
27 #include "TFile.h"
28 #include "TTree.h"
29
30
31 // --- Standard library ---
32 #include <iostream.h>
33 #include <stdlib.h>   
34
35 // --- AliRoot header files ---
36 #include "AliRun.h" 
37 #include "AliPHOSClusterizer.h"
38 #include "AliHeader.h" 
39 #include "AliPHOSGetter.h"
40 #include "AliPHOSSDigitizer.h"
41 #include "AliPHOSDigitizer.h"
42
43 ClassImp(AliPHOSClusterizer)
44
45 //____________________________________________________________________________
46   AliPHOSClusterizer::AliPHOSClusterizer():TTask("","")
47 {
48   // ctor
49   fSplitFile= 0 ; 
50   fHitsFileName = "" ; 
51   fSDigitsFileName = "" ; 
52   fDigitsFileName = "" ; 
53
54 }
55
56 //____________________________________________________________________________
57 AliPHOSClusterizer::AliPHOSClusterizer(const char* headerFile, const char* name):
58 TTask(name, headerFile)
59 {
60   // ctor
61   fSplitFile= 0 ; 
62   fDigitsFileName = headerFile ; 
63   AliPHOSGetter * gime = AliPHOSGetter::GetInstance(headerFile, name) ; 
64   gime->Event(0,"D") ; 
65   fSDigitsFileName = gime->Digitizer()->GetTitle() ; 
66   gime = AliPHOSGetter::GetInstance(fSDigitsFileName, name) ; 
67   gime->Event(0,"S") ; 
68   fHitsFileName = gime->SDigitizer()->GetTitle() ; 
69 }
70
71 //____________________________________________________________________________
72 AliPHOSClusterizer::~AliPHOSClusterizer()
73 {
74   // dtor
75          
76   fSplitFile = 0 ; ;
77 }
78
79 //____________________________________________________________________________
80 void AliPHOSClusterizer::SetSplitFile(const TString splitFileName) 
81 {
82   // Diverts the RecPoints in a file separate from the Digits file
83   
84
85   TDirectory * cwd = gDirectory ;
86   fSplitFile = gAlice->InitTreeFile("R",splitFileName.Data());
87   fSplitFile->cd() ; 
88   gAlice->Write(0, TObject::kOverwrite);
89
90   TTree *treeE  = gAlice->TreeE();
91   if (!treeE) {
92     cerr << "ERROR: AliPHOSClusterizer::SetSplitFile -> No TreeE found "<<endl;
93     abort() ;
94   }      
95   
96   // copy TreeE
97   AliHeader *header = new AliHeader();
98   treeE->SetBranchAddress("Header", &header);
99   treeE->SetBranchStatus("*",1);
100   TTree *treeENew =  treeE->CloneTree();
101   treeENew->Write(0, TObject::kOverwrite);
102     
103   // copy AliceGeom
104   TGeometry *AliceGeom = static_cast<TGeometry*>(cwd->Get("AliceGeom"));
105   if (!AliceGeom) {
106     cerr << "ERROR: AliPHOSClusterizer::SetSplitFile -> AliceGeom was not found in the input file "<<endl;
107     abort() ;
108   }
109   AliceGeom->Write(0, TObject::kOverwrite);
110   
111   gAlice->MakeTree("R", fSplitFile);
112   cwd->cd() ; 
113   cout << "INFO: AliPHOSClusterizer::SetSPlitMode -> RecPoints will be stored in " << splitFileName.Data() << endl ;   
114 }