]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIITSDETTYPESIM_H | |
2 | #define ALIITSDETTYPESIM_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 | ||
10 | ///////////////////////////////////////////////////////////////////////// | |
11 | // * This class contains all of the "external" information needed to do// | |
12 | // * detector specific simulations for the ITS. // | |
13 | ///////////////////////////////////////////////////////////////////////// | |
14 | ||
15 | #include <TObject.h> | |
16 | #include "AliITSLoader.h" | |
17 | #include "AliITSSimuParam.h" | |
18 | #include "AliITSFOGeneratorSPD.h" | |
19 | ||
20 | class TObjArray; | |
21 | class TClonesArray; | |
22 | class TTree; | |
23 | class AliCDBMetaData; | |
24 | class AliITSdigit; | |
25 | class AliITSmodule; | |
26 | class AliITSpListItem; | |
27 | class AliITSsimulation; | |
28 | class AliITSsegmentation; | |
29 | class AliITSresponse; | |
30 | class AliITSCalibrationSSD; | |
31 | class AliITSGainSSDv2; | |
32 | class AliITSBadChannelsSSDv2; | |
33 | class AliITSNoiseSSDv2; | |
34 | class AliITSresponseSDD; | |
35 | class AliITSDDLModuleMapSDD; | |
36 | class AliITSCalibration; | |
37 | class AliITSgeom; | |
38 | class AliITSFOSignalsSPD; | |
39 | class AliITSTriggerConditions; | |
40 | ||
41 | class AliITSDetTypeSim : public TObject { | |
42 | public: | |
43 | ||
44 | AliITSDetTypeSim(); | |
45 | virtual ~AliITSDetTypeSim(); | |
46 | AliITSgeom *GetITSgeom() const { | |
47 | if(fLoader)return ((AliITSLoader*)fLoader)->GetITSgeom(); | |
48 | else return 0;} | |
49 | void SetITSgeom(AliITSgeom *geom); | |
50 | ||
51 | virtual void SetSimulationModel(Int_t dettype,AliITSsimulation *sim); | |
52 | virtual AliITSsimulation* GetSimulationModel(Int_t dettype) const; | |
53 | virtual AliITSsimulation* GetSimulationModelByModule(Int_t module) const; | |
54 | ||
55 | virtual void SetSegmentationModel(Int_t dettype,AliITSsegmentation *seg); | |
56 | virtual AliITSsegmentation* GetSegmentationModel(Int_t dettype) const; | |
57 | virtual AliITSsegmentation* GetSegmentationModelByModule(Int_t module) const; | |
58 | ||
59 | virtual void SetCalibrationModel(Int_t iMod,AliITSCalibration *resp); | |
60 | virtual void SetSPDNoisyModel(Int_t iMod, AliITSCalibration *cal); | |
61 | virtual void SetSPDSparseDeadModel(Int_t iMod, AliITSCalibration *cal); | |
62 | ||
63 | virtual AliITSCalibration* GetCalibrationModel(Int_t iMod) const; | |
64 | virtual AliITSCalibration* GetSPDNoisyModel(Int_t iMod) const; | |
65 | virtual AliITSTriggerConditions* GetTriggerConditions(); | |
66 | ||
67 | virtual void SetSimuParam(const AliITSSimuParam* spar){ | |
68 | if(fSimuPar) delete fSimuPar; | |
69 | fSimuPar = new AliITSSimuParam(*spar); | |
70 | } | |
71 | virtual AliITSSimuParam* GetSimuParam() const {return fSimuPar;} | |
72 | ||
73 | virtual AliITSDDLModuleMapSDD* GetDDLModuleMapSDD()const { return fDDLMapSDD;} | |
74 | virtual AliITSresponseSDD* GetResponseSDD() const { return fRespSDD;} | |
75 | TObjArray* GetCalibrationArray() const {return fCalibration;} | |
76 | TObjArray* GetSegmentation() const {return fSegmentation;} | |
77 | void ResetCalibrationArray(); | |
78 | void ResetSegmentation(); | |
79 | ||
80 | virtual void SetLoader(AliITSLoader* loader); | |
81 | AliITSLoader* GetLoader() const {return fLoader;} | |
82 | ||
83 | virtual void SetDefaults(); | |
84 | virtual void SetDefaultSimulation(); | |
85 | virtual void SetRunNumber(Int_t rn=0){fRunNumber = rn;} | |
86 | virtual Int_t GetRunNumber() const {return fRunNumber;} | |
87 | virtual void SetTreeAddressS(TTree* treeS, const Char_t* name); | |
88 | virtual void SetTreeAddressD(TTree* treeD, const Char_t* name); | |
89 | ||
90 | virtual void SetDigits(TObjArray* digits) {fDigits=digits;} | |
91 | const TClonesArray* GetSDigits() const { return &fSDigits;} | |
92 | TObjArray* GetDigits() const {return fDigits;} | |
93 | Int_t* GetNDigitArray() const {return fNDigits;} | |
94 | TClonesArray *DigitsAddress(Int_t id) const { | |
95 | return ((TClonesArray*)(*fDigits)[id]);} | |
96 | virtual void ResetSDigits(){fNSDigits=0; fSDigits.Clear();} | |
97 | virtual void ResetDigits(); | |
98 | virtual void ResetDigits(Int_t branch); | |
99 | virtual void SDigitsToDigits(Option_t *opt, Char_t* name); | |
100 | ||
101 | virtual void AddSumDigit(AliITSpListItem &sdig); | |
102 | virtual void AddSimDigit(Int_t branch, const AliITSdigit *d); | |
103 | virtual void AddSimDigit(Int_t branch,Float_t phys,Int_t* digits, | |
104 | Int_t* tracks,Int_t *hits,Float_t* trkcharges, | |
105 | Int_t sigexpanded=-1000); | |
106 | virtual void SetDigitClassName(Int_t i, const Char_t* name) { | |
107 | fkDigClassName[i]=name;} | |
108 | const Char_t* GetDigitClassName(Int_t i) const {return fkDigClassName[i];} | |
109 | ||
110 | virtual void ResetFOSignals() {fFOGenerator.ResetSignals();} | |
111 | virtual void ProcessSPDDigitForFastOr(UInt_t module, UInt_t colM, UInt_t rowM); | |
112 | virtual void ProcessNoiseForFastOr() {fFOGenerator.ProcessNoise();} | |
113 | virtual AliITSFOSignalsSPD* GetFOSignals() {return fFOGenerator.GetFOSignals();} | |
114 | virtual void WriteFOSignals(); | |
115 | virtual Float_t GetAverageGainSDD() const { | |
116 | if(fAveGainSDD>0.) return fAveGainSDD; | |
117 | else return 1.; | |
118 | } | |
119 | ||
120 | ||
121 | protected: | |
122 | virtual void CreateCalibrationArray(); | |
123 | virtual Bool_t GetCalibration(); | |
124 | ||
125 | private: | |
126 | AliITSDetTypeSim(const AliITSDetTypeSim &source); | |
127 | AliITSDetTypeSim& operator=(const AliITSDetTypeSim &source); | |
128 | void SetDefaultSegmentation(Int_t idet); // creates def segm. | |
129 | ||
130 | //conversion of the old SSD calibration objects tothe new ones | |
131 | void ReadOldSSDNoise(const TObjArray *array, | |
132 | AliITSNoiseSSDv2 *noiseSSD); | |
133 | void ReadOldSSDBadChannels(const TObjArray *array, | |
134 | AliITSBadChannelsSSDv2 *badChannelsSSD); | |
135 | void ReadOldSSDGain(const TObjArray *array, | |
136 | AliITSGainSSDv2 *gainSSD); | |
137 | ||
138 | static const Int_t fgkNdettypes; // number of different det. types | |
139 | static const Int_t fgkDefaultNModulesSPD; // Total numbers of SPD modules by default | |
140 | static const Int_t fgkDefaultNModulesSDD; // Total numbers of SDD modules by default | |
141 | static const Int_t fgkDefaultNModulesSSD; // Total numbers of SSD modules by default | |
142 | ||
143 | TObjArray *fSimulation; //! [NDet] | |
144 | TObjArray *fSegmentation; //! [NDet] | |
145 | TObjArray *fCalibration; //! [NMod] | |
146 | AliITSCalibrationSSD* fSSDCalibration; //! SSD calibration object | |
147 | TObjArray *fSPDNoisy; //! [fgkDefaultNModulesSPD] | |
148 | TObjArray *fSPDSparseDead;//! [fgkDefaultNModulesSPD] | |
149 | Int_t fNSDigits; //! number of SDigits | |
150 | TClonesArray fSDigits; //! Summable digits | |
151 | Int_t* fNDigits; //! [NDet] number of Digits for det. | |
152 | Int_t fRunNumber; //! run number (to access DB) | |
153 | TObjArray *fDigits; //! [NMod][NDigits] | |
154 | AliITSSimuParam *fSimuPar; //! detector simulation parameters | |
155 | AliITSDDLModuleMapSDD *fDDLMapSDD; //! mapping DDL/module -> SDD module number | |
156 | AliITSresponseSDD *fRespSDD; //! SDD response parameters | |
157 | Float_t fAveGainSDD; //! Average gain of SDD good anodes | |
158 | const Char_t* fkDigClassName[3]; //! String with digit class name. | |
159 | AliITSLoader* fLoader; //! loader | |
160 | Bool_t fFirstcall; //! flag | |
161 | AliITSFOGeneratorSPD fFOGenerator; //! Fast-OR generator object | |
162 | AliITSTriggerConditions* fTriggerConditions; //! Trigger conditions | |
163 | ||
164 | ClassDef(AliITSDetTypeSim,15) // ITS Simulation structure | |
165 | ||
166 | }; | |
167 | ||
168 | #endif |