]>
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 | /* $Id$ */ | |
8 | ||
9 | ||
10 | //////////////////////////////////////////////// | |
11 | // AliDetector Class for MUON subsystem // | |
12 | //////////////////////////////////////////////// | |
13 | #include "AliDetector.h" | |
14 | #include "AliMUONData.h" | |
15 | #include "AliMUONChamber.h" | |
16 | ||
17 | class AliLoader; | |
18 | class AliMUONLocalTrigger; | |
19 | class AliMUONGlobalTrigger; | |
20 | class AliMUONTriggerCircuit; | |
21 | class AliMUONTriggerDecision; | |
22 | class AliSegmentation; | |
23 | class AliMUONResponse; | |
24 | class AliMUONMerger; | |
25 | class AliMUONHit; | |
26 | class AliMUONPadHit; | |
27 | class AliMUONRawCluster; | |
28 | class AliMUONClusterFinderVS; | |
29 | class AliMUONReconstHit; | |
30 | class AliMUONMerger; | |
31 | ||
32 | class TVector; | |
33 | #include "TObjArray.h" | |
34 | class TFile; | |
35 | class TTree; | |
36 | ||
37 | ||
38 | class AliMUON : public AliDetector { | |
39 | public: | |
40 | AliMUON(); | |
41 | AliMUON(const char *name, const char *title); | |
42 | AliMUON(const AliMUON& rMUON); | |
43 | virtual ~AliMUON(); | |
44 | ||
45 | virtual void BuildGeometry(); | |
46 | Int_t DistancetoPrimitive(Int_t px, Int_t py); | |
47 | AliMUONData* GetMUONData() {return fMUONData;} | |
48 | virtual Int_t IsVersion() const {return 0;} | |
49 | ||
50 | // MUONLoader definition | |
51 | virtual AliLoader* MakeLoader(const char* topfoldername); //builds standard getter (AliLoader type) | |
52 | // Interface with AliMUONData | |
53 | virtual void MakeBranch(Option_t *opt=" ") {GetMUONData()->MakeBranch(opt);} | |
54 | virtual void SetTreeAddress(); | |
55 | virtual void ResetHits() {GetMUONData()->ResetHits();} | |
56 | virtual void ResetDigits() {GetMUONData()->ResetDigits();} | |
57 | virtual void ResetTrigger() {GetMUONData()->ResetTrigger();} | |
58 | virtual void ResetRawClusters() {GetMUONData()->ResetRawClusters();} | |
59 | virtual void SetSplitLevel(Int_t SplitLevel) {fSplitLevel=SplitLevel;} | |
60 | // Cluster Finding | |
61 | virtual void Digits2Reco(); | |
62 | virtual void FindClusters(); | |
63 | // Digitisation | |
64 | virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager); | |
65 | virtual void SDigits2Digits(); | |
66 | // Configuration Methods (per station id) | |
67 | // | |
68 | // Set Chamber Segmentation Parameters | |
69 | // id refers to the station and isec to the cathode plane | |
70 | // Set Z values for all chambers | |
71 | virtual void SetChambersZ(const Float_t *Z); | |
72 | virtual void SetChambersZToDefault(void); | |
73 | virtual void SetPadSize(Int_t id, Int_t isec, Float_t p1, Float_t p2); | |
74 | // Set Signal Generation Parameters | |
75 | virtual void SetSigmaIntegration(Int_t id, Float_t p1); | |
76 | virtual void SetChargeSlope(Int_t id, Float_t p1); | |
77 | virtual void SetChargeSpread(Int_t id, Float_t p1, Float_t p2); | |
78 | virtual void SetMaxAdc(Int_t id, Int_t p1); | |
79 | // Set Segmentation and Response Model | |
80 | virtual void SetSegmentationModel(Int_t id, Int_t isec, | |
81 | AliSegmentation *segmentation); | |
82 | virtual void SetResponseModel(Int_t id, AliMUONResponse *response); | |
83 | virtual void SetNsec(Int_t id, Int_t nsec); | |
84 | // Set Reconstruction Model | |
85 | virtual void SetReconstructionModel(Int_t id, AliMUONClusterFinderVS *reconstruction); | |
86 | // Set Merger/Digitizer | |
87 | virtual void SetMerger(AliMUONMerger* merger); | |
88 | virtual AliMUONMerger* Merger(); | |
89 | ||
90 | // Set Stepping Parameters | |
91 | virtual void SetMaxStepGas(Float_t p1); | |
92 | virtual void SetMaxStepAlu(Float_t p1); | |
93 | virtual void SetMaxDestepGas(Float_t p1); | |
94 | virtual void SetMaxDestepAlu(Float_t p1); | |
95 | virtual void SetAcceptance(Bool_t acc=0, Float_t angmin=2, Float_t angmax=9); | |
96 | ||
97 | // get Trigger answer | |
98 | void Trigger(Int_t nev); | |
99 | // Return reference to Chamber #id | |
100 | virtual AliMUONChamber& Chamber(Int_t id) | |
101 | {return *((AliMUONChamber *) (*fChambers)[id]);} | |
102 | // Return reference to Circuit #id | |
103 | virtual AliMUONTriggerCircuit& TriggerCircuit(Int_t id) | |
104 | {return *((AliMUONTriggerCircuit *) (*fTriggerCircuits)[id]);} | |
105 | // Retrieve pad hits for a given Hit | |
106 | virtual AliMUONPadHit* FirstPad(AliMUONHit *hit, TClonesArray *padHits); | |
107 | virtual AliMUONPadHit* NextPad(TClonesArray *padHits); | |
108 | // Return pointers to digits | |
109 | AliMUONRawCluster *RawCluster(Int_t ichamber, Int_t icathod, | |
110 | Int_t icluster); | |
111 | // Copy Operator | |
112 | AliMUON& operator = (const AliMUON& rhs); | |
113 | ||
114 | ||
115 | protected: | |
116 | Int_t fNCh; // Number of chambers | |
117 | Int_t fNTrackingCh; // Number of tracking chambers* | |
118 | AliMUONData* fMUONData; // Data container for MUON subsystem | |
119 | Int_t fSplitLevel; // Splitlevel when making branches in outfiles. | |
120 | TObjArray* fChambers; // List of Tracking Chambers | |
121 | TObjArray* fTriggerCircuits; // List of Trigger Circuits | |
122 | ||
123 | // | |
124 | Bool_t fAccCut; //Transport acceptance cut | |
125 | Float_t fAccMin; //Minimum acceptance cut used during transport | |
126 | Float_t fAccMax; //Minimum acceptance cut used during transport | |
127 | // | |
128 | // Stepping Parameters | |
129 | Float_t fMaxStepGas; // Maximum step size inside the chamber gas | |
130 | Float_t fMaxStepAlu; // Maximum step size inside the chamber aluminum | |
131 | Float_t fMaxDestepGas; // Maximum relative energy loss in gas | |
132 | Float_t fMaxDestepAlu; // Maximum relative energy loss in aluminum | |
133 | ||
134 | // Pad Iterator | |
135 | Int_t fMaxIterPad; // Maximum pad index | |
136 | Int_t fCurIterPad; // Current pad index | |
137 | // Background eent for event mixing | |
138 | Text_t *fFileName; // ! File with background hits | |
139 | AliMUONMerger *fMerger; // ! pointer to merger | |
140 | ||
141 | ClassDef(AliMUON,3) // MUON Detector base class | |
142 | }; | |
143 | #endif | |
144 |