]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIMUON_H | |
2 | #define ALIMUON_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 | // Revision of includes 12/01/2009 | |
8 | ||
9 | /// \ingroup sim | |
10 | /// \class AliMUON | |
11 | /// \brief AliDetector class for MUON subsystem providing | |
12 | /// simulation data management | |
13 | ||
14 | ||
15 | #include "AliDetector.h" | |
16 | #include "AliMUONChamber.h" | |
17 | #include "AliMUONTrigger.h" | |
18 | ||
19 | #include <TString.h> | |
20 | ||
21 | class AliMUONResponse; | |
22 | class AliMUONGeometry; | |
23 | class AliMUONGeometryTransformer; | |
24 | class AliMUONGeometryBuilder; | |
25 | class AliMUONRawWriter; | |
26 | class AliMUONVGeometryBuilder; | |
27 | class AliMUONDigitMaker; | |
28 | class AliMUONVHitStore; | |
29 | class AliMUONCalibrationData; | |
30 | class AliMUONDigitCalibrator; | |
31 | class AliMUONRecoParam; | |
32 | ||
33 | class AliLoader; | |
34 | ||
35 | class TObjArray; | |
36 | ||
37 | class AliMUON : public AliDetector | |
38 | { | |
39 | public: | |
40 | AliMUON(); | |
41 | AliMUON(const char* name, const char* title); | |
42 | virtual ~AliMUON(); | |
43 | ||
44 | // Geometry | |
45 | void AddGeometryBuilder(AliMUONVGeometryBuilder* geomBuilder); | |
46 | void ResetGeometryBuilder(); | |
47 | ||
48 | ||
49 | /// Return geometry builder | |
50 | AliMUONGeometryBuilder* GetGeometryBuilder() const {return fGeometryBuilder;} | |
51 | const AliMUONGeometryTransformer* GetGeometryTransformer() const; | |
52 | /// Return segmentation | |
53 | ||
54 | // MUONLoader definition | |
55 | virtual AliLoader* MakeLoader(const char* topfoldername); //builds standard getter (AliLoader type) | |
56 | ||
57 | virtual void SetTreeAddress(); | |
58 | ||
59 | /// Set split level for making branches in outfiles | |
60 | virtual void SetSplitLevel(Int_t SplitLevel) {fSplitLevel=SplitLevel;} | |
61 | ||
62 | // Digitisation | |
63 | virtual AliDigitizer* CreateDigitizer(AliDigitizationInput* digInput) const; | |
64 | virtual void SDigits2Digits(); | |
65 | virtual void Hits2SDigits(); | |
66 | virtual void Digits2Raw(); | |
67 | virtual Bool_t Raw2SDigits(AliRawReader* rawReader); | |
68 | ||
69 | // Trigger | |
70 | /// Create trigger | |
71 | virtual AliTriggerDetector* CreateTriggerDetector() const | |
72 | { return new AliMUONTrigger(); } | |
73 | ||
74 | ||
75 | // Configuration Methods (per station id) | |
76 | // | |
77 | // Set Signal Generation Parameters | |
78 | virtual void SetSigmaIntegration(Int_t id, Float_t p1); | |
79 | virtual void SetChargeSlope(Int_t id, Float_t p1); | |
80 | virtual void SetChargeSpread(Int_t id, Float_t p1, Float_t p2); | |
81 | virtual void SetMaxAdc(Int_t id, Int_t p1); | |
82 | // Set Response Model | |
83 | virtual void SetResponseModel(Int_t id, const AliMUONResponse& response); | |
84 | ||
85 | // Set Stepping Parameters | |
86 | virtual void SetMaxStepGas(Float_t p1); | |
87 | virtual void SetMaxStepAlu(Float_t p1); | |
88 | virtual void SetMaxDestepGas(Float_t p1); | |
89 | virtual void SetMaxDestepAlu(Float_t p1); | |
90 | ||
91 | // Get Stepping Parameters | |
92 | virtual Float_t GetMaxStepGas() const; | |
93 | virtual Float_t GetMaxStepAlu() const; | |
94 | virtual Float_t GetMaxDestepGas() const; | |
95 | virtual Float_t GetMaxDestepAlu() const; | |
96 | ||
97 | // Set alignement option | |
98 | virtual void SetAlign(Bool_t align = true); | |
99 | virtual void SetAlign(const TString& fileName, Bool_t align = true); | |
100 | ||
101 | /// Set flag to inactivate calls to gMC->SetMaxStep | |
102 | virtual void SetIsMaxStep(Bool_t isMaxStep) { fIsMaxStep = isMaxStep; } | |
103 | ||
104 | /// Set scaler event for trigger | |
105 | virtual void SetTriggerScalerEvent(Bool_t scaler = true){fTriggerScalerEvent = scaler;} | |
106 | ||
107 | /// Set trigger response version | |
108 | virtual void SetTriggerResponseV1(Int_t trigResV1 = 0) | |
109 | { fTriggerResponseV1 = trigResV1; } | |
110 | virtual Int_t GetTriggerResponseV1() const; | |
111 | /// Set trigger coinc44 | |
112 | virtual void SetTriggerCoinc44(Int_t trigCoinc44 = 0) | |
113 | { fTriggerCoinc44 = trigCoinc44; } | |
114 | virtual Int_t GetTriggerCoinc44() const; | |
115 | /// Set trigger chamber efficiency by cells | |
116 | virtual void SetTriggerEffCells(Bool_t trigEffCells = true) | |
117 | { fTriggerEffCells = trigEffCells; } | |
118 | virtual Bool_t GetTriggerEffCells() const; | |
119 | /// Set off generation of noisy digits | |
120 | virtual void SetDigitizerWithNoise(Int_t digitizerWithNoise, Double_t nsigmas=4.0) | |
121 | { fDigitizerWithNoise = digitizerWithNoise; fDigitizerNSigmas = nsigmas; } | |
122 | ||
123 | virtual Int_t GetDigitizerWithNoise() const; | |
124 | ||
125 | virtual Double_t GetDigitizerNSigmas() const { return fDigitizerNSigmas; } | |
126 | ||
127 | /// Parametrised tail effect in resolution histogram | |
128 | virtual void SetTailEffect(Bool_t isTailEffect) { fIsTailEffect=isTailEffect; } | |
129 | ||
130 | /// Enable trigger raw2sdigits conversion | |
131 | virtual void SetConvertTrigger(Bool_t convertTrigger = true) { fConvertTrigger = convertTrigger;} | |
132 | ||
133 | // Getters | |
134 | /// Return reference to Chamber \a id | |
135 | virtual AliMUONChamber& Chamber(Int_t id) | |
136 | {return *((AliMUONChamber *) (*fChambers)[id]);} | |
137 | ||
138 | virtual void MakeBranch(Option_t* opt=" "); | |
139 | virtual void ResetHits(); | |
140 | ||
141 | /// Set digit store class name | |
142 | void SetDigitStoreClassName(const char* classname) { fDigitStoreConcreteClassName = classname; } | |
143 | /// Return digit store class name | |
144 | const TString DigitStoreClassName() const { return fDigitStoreConcreteClassName; } | |
145 | ||
146 | protected: | |
147 | /// Not implemented | |
148 | AliMUON(const AliMUON& rMUON); | |
149 | /// Not implemented | |
150 | AliMUON& operator = (const AliMUON& rhs); | |
151 | ||
152 | const AliMUONGeometry* GetGeometry() const; | |
153 | ||
154 | AliMUONRecoParam* GetRecoParam() const; | |
155 | ||
156 | Int_t fNCh; ///< Number of chambers | |
157 | Int_t fNTrackingCh; ///< Number of tracking chambers* | |
158 | Int_t fSplitLevel; ///< Splitlevel when making branches in outfiles. | |
159 | TObjArray* fChambers; ///< List of Tracking Chambers | |
160 | AliMUONGeometryBuilder* fGeometryBuilder; ///< Geometry builder | |
161 | ||
162 | // | |
163 | Bool_t fAccCut; ///< Transport acceptance cut | |
164 | Float_t fAccMin; ///< Minimum acceptance cut used during transport | |
165 | Float_t fAccMax; ///< Minimum acceptance cut used during transport | |
166 | // | |
167 | // Stepping Parameters | |
168 | Float_t fMaxStepGas; ///< Maximum step size inside the chamber gas | |
169 | Float_t fMaxStepAlu; ///< Maximum step size inside the chamber aluminum | |
170 | Float_t fMaxDestepGas; ///< Maximum relative energy loss in gas | |
171 | Float_t fMaxDestepAlu; ///< Maximum relative energy loss in aluminum | |
172 | ||
173 | // Pad Iterator | |
174 | Int_t fMaxIterPad; ///< Maximum pad index | |
175 | Int_t fCurIterPad; ///< Current pad index | |
176 | ||
177 | // Options | |
178 | Bool_t fIsMaxStep; ///< Flag to inactivate calls to gMC->SetMaxStep | |
179 | Bool_t fTriggerScalerEvent; ///< Flag to generates scaler event | |
180 | Int_t fTriggerResponseV1; ///< Flag to select TriggerResponseV1 (for cluster size in MTR) | |
181 | Int_t fTriggerCoinc44; ///< Flag to select TriggerCoinc44 | |
182 | Bool_t fTriggerEffCells; ///< Flag to select TriggerEffCells | |
183 | Int_t fDigitizerWithNoise; ///< Flag to switch on/off generation of noisy digits | |
184 | Double_t fDigitizerNSigmas; ///< nsigma cut for noise generation | |
185 | Bool_t fIsTailEffect; ///< Switch to turn on/off the tail effect | |
186 | Bool_t fConvertTrigger; ///< Switch to enable trigger raw2sdigit conversion | |
187 | ||
188 | AliMUONRawWriter* fRawWriter; //!< Raw data writer | |
189 | ||
190 | AliMUONDigitMaker* fDigitMaker; //!< pointer to the digit maker class | |
191 | ||
192 | AliMUONVHitStore* fHitStore; //!< container of hits | |
193 | ||
194 | TString fDigitStoreConcreteClassName; ///< to be able to select what the sdigitizer uses | |
195 | ||
196 | AliMUONCalibrationData* fCalibrationData; ///< pointer of calibration data | |
197 | ||
198 | AliMUONDigitCalibrator* fDigitCalibrator; //!< digit calibrator (for raw2sdigits) | |
199 | ||
200 | ClassDef(AliMUON,25) // MUON Detector base class | |
201 | }; | |
202 | #endif | |
203 |