]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUON.h
switch to activate ResponseTriggerV1 from Config
[u/mrichter/AliRoot.git] / MUON / AliMUON.h
... / ...
CommitLineData
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 07/05/2004
8
9/// \ingroup base
10/// \class AliMUON
11/// \brief AliDetector class for MUON subsystem providing
12/// simulation data management
13
14
15#include <TObjArray.h>
16
17#include "AliDetector.h"
18#include "AliMUONData.h"
19#include "AliMUONChamber.h"
20#include "AliMUONTrigger.h"
21
22#include <TVectorfwd.h>
23
24class TFile;
25class TTree;
26
27class AliLoader;
28class AliMUONTriggerCircuit;
29class AliMUONTriggerCircuitNew;
30class AliMUONData;
31class AliMUONResponse;
32class AliMUONSegmentation;
33class AliMUONHit;
34class AliMUONRawCluster;
35class AliMUONGeometry;
36class AliMUONGeometryTransformer;
37class AliMUONGeometryBuilder;
38class AliMUONRawWriter;
39class AliMUONVGeometryBuilder;
40class AliESD;
41
42class AliMUON : public AliDetector
43{
44 public:
45 AliMUON();
46 AliMUON(const char* name, const char *title="FactoryV4",
47 const char* sDigitizerType="sdigitizer:AliMUONSDigitizerV2",
48 const char* digitizerType="digitizer:NewDigitizerWithNoiseOldTrigger");
49 virtual ~AliMUON();
50
51 // Geometry
52 void AddGeometryBuilder(AliMUONVGeometryBuilder* geomBuilder);
53 void ResetGeometryBuilder();
54
55 virtual void BuildGeometry();
56
57 /// Return geometry builder
58 AliMUONGeometryBuilder* GetGeometryBuilder() const {return fGeometryBuilder;}
59 const AliMUONGeometryTransformer* GetGeometryTransformer() const;
60 /// Return segmentation
61 AliMUONSegmentation* GetSegmentation() const { return fSegmentation; }
62
63 /// Return MUONData
64 AliMUONData* GetMUONData() {return fMUONData;}
65
66 // MUONLoader definition
67 virtual AliLoader* MakeLoader(const char* topfoldername); //builds standard getter (AliLoader type)
68
69 // Interface with AliMUONData
70 /// Make branch
71 virtual void MakeBranch(Option_t *opt=" ") {GetMUONData()->MakeBranch(opt);}
72 virtual void SetTreeAddress();
73 /// Reset hits
74 virtual void ResetHits() {GetMUONData()->ResetHits();}
75 /// Reset digits
76 virtual void ResetDigits() {GetMUONData()->ResetDigits();}
77 /// Reset trigger
78 virtual void ResetTrigger() {GetMUONData()->ResetTrigger();}
79 /// Reset raw clusters
80 virtual void ResetRawClusters() {GetMUONData()->ResetRawClusters();}
81 /// Set split level
82 virtual void SetSplitLevel(Int_t SplitLevel) {fSplitLevel=SplitLevel;}
83
84 // Digitisation
85 virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
86 virtual void SDigits2Digits();
87 virtual void Hits2SDigits();
88 virtual void Digits2Raw();
89
90 // Trigger
91 /// Create trigger
92 virtual AliTriggerDetector* CreateTriggerDetector() const
93 { return new AliMUONTrigger(); }
94
95
96 // Configuration Methods (per station id)
97 //
98 // Set Signal Generation Parameters
99 virtual void SetSigmaIntegration(Int_t id, Float_t p1);
100 virtual void SetChargeSlope(Int_t id, Float_t p1);
101 virtual void SetChargeSpread(Int_t id, Float_t p1, Float_t p2);
102 virtual void SetMaxAdc(Int_t id, Int_t p1);
103 // Set Response Model
104 virtual void SetResponseModel(Int_t id, AliMUONResponse *response);
105
106 // Set Stepping Parameters
107 virtual void SetMaxStepGas(Float_t p1);
108 virtual void SetMaxStepAlu(Float_t p1);
109 virtual void SetMaxDestepGas(Float_t p1);
110 virtual void SetMaxDestepAlu(Float_t p1);
111
112 // Get Stepping Parameters
113 virtual Float_t GetMaxStepGas() const;
114 virtual Float_t GetMaxStepAlu() const;
115 virtual Float_t GetMaxDestepGas() const;
116 virtual Float_t GetMaxDestepAlu() const;
117
118 // Set alignement option
119 virtual void SetAlign(Bool_t align = true);
120 virtual void SetAlign(const TString& fileName, Bool_t align = true);
121
122 /// Set scaler event for trigger
123 virtual void SetTriggerScalerEvent(Bool_t scaler = true){fTriggerScalerEvent = scaler;}
124
125 // trigger response version
126 virtual void SetTriggerResponseV1(Bool_t trigResV1 = false)
127 {fTriggerResponseV1 = trigResV1;}
128 virtual Bool_t GetTriggerResponseV1() const;
129
130 // Getters
131 /// Return reference to Chamber \a id
132 virtual AliMUONChamber& Chamber(Int_t id)
133 {return *((AliMUONChamber *) (*fChambers)[id]);}
134 /// Return reference to Circuit \a id
135 virtual AliMUONTriggerCircuit& TriggerCircuit(Int_t id)
136 {return *((AliMUONTriggerCircuit *) (*fTriggerCircuits)[id]);}
137 /// Return reference to New Circuit \a id
138 virtual AliMUONTriggerCircuitNew& TriggerCircuitNew(Int_t id)
139 {return *((AliMUONTriggerCircuitNew*) (*fTriggerCircuitsNew)[id]);}
140
141 // Return pointers to digit
142 AliMUONRawCluster *RawCluster(Int_t ichamber, Int_t icathod,
143 Int_t icluster);
144 // Inherited and overridden from AliModule:
145 //PH virtual void RemapTrackHitIDs(Int_t * map);
146
147 TString SDigitizerType() const;
148 TString DigitizerType() const;
149
150 protected:
151 AliMUON(const AliMUON& rMUON);
152 AliMUON& operator = (const AliMUON& rhs);
153
154 const AliMUONGeometry* GetGeometry() const;
155
156 Int_t fNCh; ///< Number of chambers
157 Int_t fNTrackingCh; ///< Number of tracking chambers*
158 AliMUONData* fMUONData; ///< Data container for MUON subsystem
159 Int_t fSplitLevel; ///< Splitlevel when making branches in outfiles.
160 TObjArray* fChambers; ///< List of Tracking Chambers
161 TObjArray* fTriggerCircuits; ///< List of Trigger Circuits
162 TObjArray* fTriggerCircuitsNew; ///< List of Trigger Circuits
163 AliMUONGeometryBuilder* fGeometryBuilder; ///< Geometry builder
164 AliMUONSegmentation* fSegmentation; ///< New segmentation
165
166 //
167 Bool_t fAccCut; ///<Transport acceptance cut
168 Float_t fAccMin; ///<Minimum acceptance cut used during transport
169 Float_t fAccMax; ///<Minimum acceptance cut used during transport
170 //
171 // Stepping Parameters
172 Float_t fMaxStepGas; ///< Maximum step size inside the chamber gas
173 Float_t fMaxStepAlu; ///< Maximum step size inside the chamber aluminum
174 Float_t fMaxDestepGas; ///< Maximum relative energy loss in gas
175 Float_t fMaxDestepAlu; ///< Maximum relative energy loss in aluminum
176
177 // Pad Iterator
178 Int_t fMaxIterPad; ///< Maximum pad index
179 Int_t fCurIterPad; ///< Current pad index
180
181 // setting scaler for trigger
182 Bool_t fTriggerScalerEvent; ///< Flag to generates scaler event
183 Bool_t fTriggerResponseV1; ///< Flag to select TriggerResponseV1
184
185 TString fSDigitizerType; ///< Class to use for SDigitizer
186 TString fDigitizerType; ///< Class to use for Digitizer
187
188 AliMUONRawWriter* fRawWriter; //!< Raw data writer
189
190 ClassDef(AliMUON,13) // MUON Detector base class
191};
192#endif
193