]>
Commit | Line | Data |
---|---|---|
3b9df642 | 1 | #ifndef ALIITSDETTYPEREC_H |
2 | #define ALIITSDETTYPEREC_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* | |
7 | $Id$ | |
8 | */ | |
9 | ||
7d62fb64 | 10 | //////////////////////////////////////////////////////////////////////// |
11 | // This class contains all of the "external" information needed to do // | |
12 | // detector specific reconstruction for the ITS. // | |
13 | //////////////////////////////////////////////////////////////////////// | |
3b9df642 | 14 | #include <TObject.h> |
15 | #include <TObjArray.h> | |
16 | #include <TClonesArray.h> | |
ff44c37c | 17 | #include <TBits.h> |
979b5a5f | 18 | #include "AliITSDDLModuleMapSDD.h" |
253e68a0 | 19 | #include "AliITSresponseSDD.h" |
979b5a5f | 20 | #include "AliITSgeom.h" |
6cae184e | 21 | class TTree; |
22 | class TBranch; | |
23 | ||
24 | //#include "AliITSLoader.h" | |
25 | //#include "AliRunLoader.h" | |
3b9df642 | 26 | |
3b9df642 | 27 | class AliITSsegmentation; |
fcf95fc7 | 28 | class AliITSCalibration; |
ced4d9bc | 29 | class AliITSCalibrationSSD; |
253e68a0 | 30 | class AliITSresponseSDD; |
7d62fb64 | 31 | class AliITSClusterFinder; |
32 | class AliITSRawCluster; | |
33 | class AliITSRecPoint; | |
7d62fb64 | 34 | class AliRawReader; |
88128115 | 35 | class AliITSGainSSDv2; |
36 | class AliITSBadChannelsSSDv2; | |
37 | class AliITSNoiseSSDv2; | |
8ba39da9 | 38 | |
3b9df642 | 39 | class AliITSDetTypeRec : public TObject { |
40 | public: | |
41 | AliITSDetTypeRec(); // Default constructor | |
e56160b8 | 42 | |
3b9df642 | 43 | virtual ~AliITSDetTypeRec(); // Proper Destructor |
7d62fb64 | 44 | |
6cae184e | 45 | virtual AliITSgeom* GetITSgeom() const { return fITSgeom; } |
46 | virtual void SetITSgeom(AliITSgeom *geom) { fITSgeom = geom; } | |
7d62fb64 | 47 | virtual void SetDefaults(); |
48 | virtual void SetDefaultClusterFinders(); | |
3a7c3e6d | 49 | virtual void SetDefaultClusterFindersV2(Bool_t rawdata=kFALSE); |
6cae184e | 50 | virtual void MakeBranch(TTree *tree,Option_t *opt); |
7d62fb64 | 51 | virtual void SetTreeAddressD(TTree* treeD); |
52 | ||
53 | virtual void SetSegmentationModel(Int_t dettype, AliITSsegmentation *seg); | |
fcf95fc7 | 54 | virtual void SetCalibrationModel(Int_t iMod, AliITSCalibration *cal); |
23197852 | 55 | virtual void SetSPDDeadModel(Int_t iMod, AliITSCalibration *cal); |
7d62fb64 | 56 | virtual void SetReconstructionModel(Int_t dettype, AliITSClusterFinder *rec); |
8ba39da9 | 57 | virtual Bool_t GetCalibration(); |
75065a60 | 58 | virtual Bool_t GetCalibrationSPD(Bool_t cacheStatus); |
59 | virtual Bool_t GetCalibrationSDD(Bool_t cacheStatus); | |
60 | virtual Bool_t GetCalibrationSSD(Bool_t cacheStatus); | |
7d62fb64 | 61 | virtual AliITSsegmentation* GetSegmentationModel(Int_t dettype); |
fcf95fc7 | 62 | virtual AliITSCalibration* GetCalibrationModel(Int_t iMod); |
23197852 | 63 | virtual AliITSCalibration* GetSPDDeadModel(Int_t iMod); |
7d62fb64 | 64 | virtual AliITSClusterFinder* GetReconstructionModel(Int_t dettype); |
979b5a5f | 65 | virtual AliITSDDLModuleMapSDD* GetDDLModuleMapSDD() const { return fDDLMapSDD;} |
253e68a0 | 66 | virtual AliITSresponseSDD* GetResponseSDD() const { return fRespSDD;} |
2f8ed7ab | 67 | virtual Bool_t IsHLTmodeC() const {return fIsHLTmodeC;} |
f3a3f329 | 68 | virtual void SetHLTmodeC(Bool_t ishltc){fIsHLTmodeC=ishltc;} |
75065a60 | 69 | virtual Float_t GetAverageGainSDD() const { |
70 | if(fAveGainSDD>0.) return fAveGainSDD; | |
71 | else return 1.; | |
72 | } | |
7d62fb64 | 73 | |
74 | virtual void SetDigitClassName(Int_t i,Char_t *digit) | |
75 | {fDigClassName[i]=digit;} | |
76 | virtual void SetClusterClassName(Int_t i,Char_t *cluster) | |
77 | {fClusterClassName[i]=cluster;} | |
78 | virtual void SetRecPointClassName(Int_t i,Char_t *recpoint) | |
79 | {fRecPointClassName[i]=recpoint;} | |
80 | ||
62b93da7 | 81 | virtual void SetLoadOnlySPDCalib(Bool_t opt=kFALSE) |
82 | {fLoadOnlySPDCalib=opt;} | |
83 | ||
7d62fb64 | 84 | Char_t* GetDigitClassName(Int_t i) const {return fDigClassName[i];} |
85 | Char_t* GetClusterClassName(Int_t i) const {return fClusterClassName[i];} | |
86 | Char_t* GetRecPointClassName(Int_t i) const {return fRecPointClassName[i];} | |
87 | ||
88 | TObjArray* GetDigits() const {return fDigits;} | |
89 | Int_t *Ndtype() {return fNdtype;} | |
90 | TClonesArray *DigitsAddress(Int_t id) const {return ((TClonesArray*)(*fDigits)[id]);} | |
91 | virtual void SelectVertexer(TString sel=" "){fSelectedVertexer = sel;} | |
92 | // | |
7d62fb64 | 93 | virtual void AddCluster(Int_t branch, AliITSRawCluster *c); |
94 | virtual void ResetClusters(); | |
95 | virtual void ResetClusters(Int_t branch); | |
6cae184e | 96 | TBranch* MakeBranchInTree(TTree *tree, const char* name, const char *classname, void* address,Int_t size, Int_t splitlevel); |
7d62fb64 | 97 | |
98 | TObjArray *Ctype() {return fCtype;} | |
99 | Int_t *Nctype() {return fNctype;} | |
100 | TClonesArray *ClustersAddress(Int_t id) const {return ((TClonesArray*)(*fCtype)[id]);} | |
101 | virtual void ResetDigits(); | |
102 | virtual void ResetDigits(Int_t branch); | |
103 | ||
6cae184e | 104 | void MakeBranchR(TTree *treeR,Option_t *opt=" "); |
7d62fb64 | 105 | void SetTreeAddressR(TTree *treeR); |
106 | void AddRecPoint(const AliITSRecPoint &p); | |
107 | void ResetRecPoints(){if(fRecPoints) fRecPoints->Clear();fNRecPoints = 0;}; | |
108 | // Return pointer to rec points | |
109 | TClonesArray *RecPoints() {return fRecPoints;} | |
6cae184e | 110 | void MakeBranchRF(TTree *treeR){MakeBranchR(treeR,"Fast");} |
111 | void DigitsToRecPoints(TTree *treeD,TTree *treeR,Int_t lastEntry,Option_t *det,Bool_t v2=kFALSE); | |
8484b32d | 112 | void DigitsToRecPoints(AliRawReader* rawReader,TTree *treeR,Option_t *det="All"); |
8ba39da9 | 113 | |
ff44c37c | 114 | void SetFastOrFiredMap(UInt_t chip){fFastOrFiredMap.SetBitNumber(chip);} |
115 | TBits GetFastOrFiredMap() const {return fFastOrFiredMap;} | |
116 | void ResetFastOrFiredMap(){fFastOrFiredMap.ResetAllBits();} | |
117 | ||
3b9df642 | 118 | private: |
8e50d897 | 119 | // private methods |
e56160b8 | 120 | AliITSDetTypeRec(const AliITSDetTypeRec& rec); |
121 | AliITSDetTypeRec& operator=(const AliITSDetTypeRec &source); | |
122 | ||
88128115 | 123 | //conversion of the old SSD calibration objects tothe new ones |
124 | void ReadOldSSDNoise(TObjArray *array, | |
125 | AliITSNoiseSSDv2 *noiseSSD); | |
126 | void ReadOldSSDBadChannels(TObjArray *array, | |
127 | AliITSBadChannelsSSDv2 *badChannelsSSD); | |
128 | void ReadOldSSDGain(TObjArray *array, | |
129 | AliITSGainSSDv2 *gainSSD); | |
130 | ||
6cae184e | 131 | // virtual void SetLoader(AliITSLoader* loader) {fLoader=loader;} |
8ba39da9 | 132 | static const Int_t fgkNdettypes; // number of det. types |
133 | static const Int_t fgkDefaultNModulesSPD; // Total numbers of SPD modules by default | |
134 | static const Int_t fgkDefaultNModulesSDD; // Total numbers of SDD modules by default | |
135 | static const Int_t fgkDefaultNModulesSSD; // Total numbers of SSD modules by default | |
8e50d897 | 136 | Int_t *fNMod; // numbers of modules from different types |
8ba39da9 | 137 | |
6cae184e | 138 | AliITSgeom *fITSgeom; //! ITS geometry |
139 | ||
7d62fb64 | 140 | TObjArray *fReconstruction;//! [NDet] |
141 | TObjArray *fSegmentation; //! [NDet] | |
142 | TObjArray *fCalibration; //! [NMod] | |
ced4d9bc | 143 | AliITSCalibrationSSD* fSSDCalibration; //! SSD calibration object |
23197852 | 144 | TObjArray *fSPDDead; //! [fgkDefaultNModulesSPD] |
7d62fb64 | 145 | TObjArray *fPreProcess; //! [] e.g. Find Calibration values |
146 | TObjArray *fPostProcess; //! [] e.g. find primary vertex | |
147 | TObjArray *fDigits; //! [NMod][NDigits] | |
979b5a5f | 148 | AliITSDDLModuleMapSDD *fDDLMapSDD; //! mapping DDL/module -> SDD module number |
253e68a0 | 149 | AliITSresponseSDD *fRespSDD; //! SDD response parameters |
75065a60 | 150 | Float_t fAveGainSDD; //! Average gain of SDD good anodes |
2f8ed7ab | 151 | Bool_t fIsHLTmodeC; //! flag for HLT mode C status (used by SDD) |
7d62fb64 | 152 | Int_t *fNdtype; //! detector types |
153 | Char_t* fClusterClassName[3]; //! String with Cluster class name | |
154 | Char_t* fDigClassName[3]; //! String with digit class name. | |
155 | Char_t* fRecPointClassName[3];//! String with RecPoint class name | |
156 | ||
157 | TObjArray *fCtype; //! List of clusters | |
158 | Int_t *fNctype; //[fNDetTypes] Num. of clust. per type of det. | |
159 | ||
160 | TClonesArray *fRecPoints; //! List of reconstructed points | |
161 | Int_t fNRecPoints; // Number of rec points | |
162 | ||
7d62fb64 | 163 | TString fSelectedVertexer; // Vertexer selected in CreateVertexer |
b17dae48 | 164 | Bool_t fFirstcall; //! flag |
62b93da7 | 165 | Bool_t fLoadOnlySPDCalib; //! flag for loading calibrations only fr SPD |
3b9df642 | 166 | |
ff44c37c | 167 | TBits fFastOrFiredMap; // Map of FastOr fired chips |
168 | ||
169 | ClassDef(AliITSDetTypeRec,14) // ITS Reconstruction structure | |
7d62fb64 | 170 | }; |
171 | ||
3b9df642 | 172 | #endif |