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