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