Data member initialization is added for copy constructor
[u/mrichter/AliRoot.git] / PHOS / AliPHOSReconstructor.h
1 #ifndef ALIPHOSRECONSTRUCTOR_H
2 #define ALIPHOSRECONSTRUCTOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 /* History of cvs commits:
9  *
10  * $Log$
11  * Revision 1.15  2007/10/01 20:24:08  kharlov
12  * Memory leaks fixed
13  *
14  * Revision 1.14  2007/09/26 14:22:18  cvetan
15  * Important changes to the reconstructor classes. Complete elimination of the run-loaders, which are now steered only from AliReconstruction. Removal of the corresponding Reconstruct() and FillESD() methods.
16  *
17  * Revision 1.13  2007/08/30 10:40:27  cvetan
18  * Minor
19  *
20  * Revision 1.12  2007/08/28 12:55:08  policheh
21  * Loaders removed from the reconstruction code (C.Cheshkov)
22  *
23  * Revision 1.11  2007/07/24 17:20:35  policheh
24  * Usage of RecoParam objects instead of hardcoded parameters in reconstruction.
25  * (See $ALICE_ROOT/PHOS/macros/BeamTest2006/RawReconstruction.C).
26  *
27  * Revision 1.10  2007/07/11 13:43:30  hristov
28  * New class AliESDEvent, backward compatibility with the old AliESD (Christian)
29  *
30  * Revision 1.9  2006/11/15 16:05:03  kharlov
31  * New FillESD() for raw data is added
32  *
33  * Revision 1.8  2005/05/28 14:19:04  schutz
34  * Compilation warnings fixed by T.P.
35  *
36  */
37
38 //_________________________________________________________________________
39 //  Wrapping class for reconstruction
40 //--
41 //-- Author: Yves Schutz (SUBATECH) 
42 // Reconstruction class. Redesigned from the old AliReconstructionner class and 
43 // derived from STEER/AliReconstructor. 
44 //_________________________________________________________________________
45
46 // --- ROOT system ---
47
48 #include <Riostream.h>
49 #include "AliReconstructor.h" 
50 #include "AliPHOSRecoParamEmc.h"
51 #include "AliPHOSRecoParamCpv.h"
52 class AliPHOSDigitizer ;
53 class AliPHOSClusterizer ;
54 class AliPHOSClusterizerv1 ;
55 class AliPHOSTrackSegmentMaker ;
56 class AliPHOSPID ;
57 class AliPHOSSDigitizer ;
58 class AliESDEvent ;
59 class AliRawReader; 
60 class AliPHOSRecoParam;
61 class AliPHOSGeometry;
62
63 // --- Standard library ---
64
65 // --- AliRoot header files ---
66
67 class AliPHOSReconstructor : public AliReconstructor {
68
69 public:
70
71   AliPHOSReconstructor() ; //ctor            
72   AliPHOSReconstructor(const AliPHOSReconstructor & rec) :
73     AliReconstructor(rec),
74     fGeom(rec.fGeom),
75     fClusterizer(rec.fClusterizer),
76     fTSM(rec.fTSM),
77     fPID(rec.fPID)
78     {
79     // cpy ctor: 
80     // requested by the Coding Convention
81     Fatal("cpy ctor", "not implemented") ;
82   }
83   virtual ~AliPHOSReconstructor() ; //dtor            
84
85   static void                SetDebug()   { fgDebug = kTRUE ; }
86   static void                ResetDebug() { fgDebug = kFALSE ; }
87   static Bool_t              Debug() { return fgDebug ; }
88   AliTracker *CreateTracker() const;
89   using AliReconstructor::FillESD;
90   virtual void               FillESD(TTree* digitsTree, TTree* clustersTree, 
91                                      AliESDEvent* esd) const;
92   using AliReconstructor::Reconstruct;
93   virtual void               Reconstruct(TTree* digitsTree, TTree* clustersTree) const;
94
95   virtual Bool_t             HasDigitConversion() const {return kTRUE;};
96   virtual void               ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const;
97
98   AliPHOSReconstructor & operator = (const AliPHOSReconstructor & /*rvalue*/)  {
99     // assignement operator requested by coding convention but not needed
100     Fatal("operator =", "not implemented") ;
101     return *this ; 
102   }
103   
104   static void SetRecoParamEmc(AliPHOSRecoParam * param){ fgkRecoParamEmc = param;}
105   static void SetRecoParamCpv(AliPHOSRecoParam * param){ fgkRecoParamCpv = param;}
106
107   static const AliPHOSRecoParam* GetRecoParamEmc(){ 
108     if (!fgkRecoParamEmc) {
109       cerr<<"The Reconstruction parameters for EMC nonitialized - Used default one"<<endl;
110       fgkRecoParamEmc = AliPHOSRecoParamEmc::GetEmcDefaultParameters();
111     }
112     return fgkRecoParamEmc;
113   }
114   static const AliPHOSRecoParam* GetRecoParamCpv(){
115     if (!fgkRecoParamCpv) {
116       cerr<<"The Reconstruction parameters for CPV nonitialized - Used default one"<<endl;
117       fgkRecoParamCpv = AliPHOSRecoParamCpv::GetCpvDefaultParameters();
118     }
119     return fgkRecoParamCpv;
120   }
121
122 private:
123   
124   static Bool_t fgDebug ; //! verbosity controller
125   static AliPHOSRecoParam  *fgkRecoParamEmc; // reconstruction parameters for EMC
126   static AliPHOSRecoParam  *fgkRecoParamCpv; // reconstruction parameters for EMC
127   AliPHOSGeometry          *fGeom;           // pointer to the PHOS geometry
128   AliPHOSClusterizerv1     *fClusterizer;    //! PHOS clusterizer
129   AliPHOSTrackSegmentMaker *fTSM;            //! PHOS TrackSegmentMaker
130   AliPHOSPID               *fPID;            //! PHOS PID maker
131   static TClonesArray      *fgDigitsArray;   //! Array of PHOS digits
132   static TObjArray         *fgEMCRecPoints;  //! Array of EMC rec.points
133
134   ClassDef(AliPHOSReconstructor,7)  // PHOS Reconstruction class
135
136 }; 
137
138 #endif // ALIPHOSRECONSTRUCTOR_H