1 #ifndef ALIPHOSINDEXTOOBJECT_H
2 #define ALIPHOSINDEXTOOBJECT_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 //_________________________________________________________________________
9 // A singleton that returns objects from their indexes.
10 // Should be used on the analysis stage to avoid confusing between different
11 // branches of reconstruction tree: e.g. reading RecPoints and TS made from
12 // another set of RecPoints.
14 //*-- Author: Yves Schutz (SUBATECH) & Dmitri Peressounko (RRC KI & SUBATECH)
18 // --- ROOT system ---
19 #include "TClonesArray.h"
23 // --- Standard library ---
25 // --- AliRoot header files ---
28 class AliPHOSDigitizer ;
29 class AliPHOSEmcRecPoint ;
30 class AliPHOSRecPoint ;
31 class AliPHOSClusterizer ;
32 class AliPHOSTrackSegment ;
33 class AliPHOSTrackSegmentMaker ;
34 class AliPHOSRecParticle ;
37 class AliPHOSIndexToObject : public TObject {
41 AliPHOSIndexToObject(){
42 // ctor: this is a singleton, the ctor should never be called but cint needs it as public
45 AliPHOSIndexToObject(const AliPHOSIndexToObject & obj) {
46 // cpy ctor requested by Coding Convention
51 virtual ~AliPHOSIndexToObject(){
55 void GetEvent(Int_t event) ; // reads event from file
56 Int_t GetEventNumber(){ return fEvent; }
57 Int_t GetMaxEvent() { return fMaxEvent;}
59 static AliPHOSIndexToObject * GetInstance(char* headerFile,char* branch = "PHOSRP",
60 char* branchTitle =0 ) ;
61 static AliPHOSIndexToObject * GetInstance() ;
63 AliPHOSDigit * GimeDigit(Int_t index)
64 {if(fDigits) return (AliPHOSDigit*)fDigits->At(index);
66 TParticle * GimePrimary(Int_t index) ;
67 AliPHOSRecParticle * GimeRecParticle(Int_t index)
68 { if(fRecParticles) return (AliPHOSRecParticle*)fRecParticles->At(index);
70 AliPHOSEmcRecPoint * GimeEmcRecPoint(Int_t index)
71 { if(fEmcRecPoints) return (AliPHOSEmcRecPoint*)fEmcRecPoints->At(index);
73 AliPHOSRecPoint * GimeCpvRecPoint(Int_t index)
74 { if(fCpvRecPoints) return (AliPHOSRecPoint*)fCpvRecPoints->At(index);
76 AliPHOSTrackSegment * GimeTrackSegment(Int_t index)
77 { if(fTS) return (AliPHOSTrackSegment*)fTS->At(index);
79 AliPHOSDigitizer* GimeDigitizer()
80 { return fDigitizer; }
81 AliPHOSClusterizer* GimeClusterizer()
82 { return fClusterizer; }
83 AliPHOSTrackSegmentMaker* GimeTSMaker()
85 AliPHOSPID * GimePID()
88 AliPHOSIndexToObject & operator = (const AliPHOSIndexToObject & ) {
89 // assignement operator requested by coding convention
97 AliPHOSIndexToObject(char* headerFile,char* branch = "RecParticles",
98 char* branchTitle =0) ;
99 Bool_t ReadRecParticles(char * branchTitle) ;
100 Bool_t ReadTS(char * branchTitle) ;
101 Bool_t ReadRecPoints(char * branchTitle) ;
102 Bool_t ReadDigits(char * branchTitle) ;
103 Bool_t ReadPrimaries() ;
108 TString fHeaderFile ;
110 Int_t fEvent ; //! Current event
111 Int_t fMaxEvent ; //! Number of events in currect headers file
113 TClonesArray * fDigits ; //! list of digits
114 TObjArray * fEmcRecPoints ; //! emc rec points
115 TObjArray * fCpvRecPoints ; //! CPV/PPSD rec points
116 TClonesArray * fTS ; //! TrackSegments
117 TClonesArray * fRecParticles ; //! RecParticles
118 TObjArray * fPrimaries ; //! list of lists of primaries-for the case of mixing
120 AliPHOSDigitizer * fDigitizer ;
121 AliPHOSClusterizer* fClusterizer ;
122 AliPHOSTrackSegmentMaker * fTSMaker ;
125 static AliPHOSIndexToObject * fgObjGetter ; // pointer to the unique instance of the singleton
127 ClassDef(AliPHOSIndexToObject,1) // Algorithm class that provides methods to retrieve objects from a list knowing the index
131 #endif // AliPHOSINDEXTOOBJECT_H