]>
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" | |
a9e2aefa | 14 | |
3fa6cfdd | 15 | class AliLoader; |
a9e2aefa | 16 | class AliMUONChamber; |
17 | class AliMUONLocalTrigger; | |
18 | class AliMUONGlobalTrigger; | |
19 | class AliMUONTriggerCircuit; | |
20 | class AliMUONTriggerDecision; | |
a30a000f | 21 | class AliSegmentation; |
a9e2aefa | 22 | class AliMUONResponse; |
375da359 | 23 | class AliMUONMerger; |
a9e2aefa | 24 | class AliMUONHit; |
25 | class AliMUONPadHit; | |
a897a37a | 26 | class AliMUONRawCluster; |
30aaba74 | 27 | class AliMUONClusterFinderVS; |
a9e2aefa | 28 | class AliMUONReconstHit; |
1cae9436 | 29 | class AliMUONMerger; |
30 | ||
a9e2aefa | 31 | class TVector; |
94de3818 | 32 | #include "TObjArray.h" |
a9e2aefa | 33 | class TFile; |
34 | class TTree; | |
fe4da5cc | 35 | |
36 | ||
fe4da5cc | 37 | class AliMUON : public AliDetector { |
38 | public: | |
39 | AliMUON(); | |
40 | AliMUON(const char *name, const char *title); | |
a9e2aefa | 41 | AliMUON(const AliMUON& rMUON); |
fe4da5cc | 42 | virtual ~AliMUON(); |
a9e2aefa | 43 | virtual void AddHit(Int_t track , Int_t *vol, Float_t *hits); |
5a35ac13 | 44 | virtual void AddHit(Int_t fIshunt, Int_t track, Int_t iChamber, |
45 | Int_t idpart, Float_t X, Float_t Y, Float_t Z, | |
46 | Float_t tof, Float_t momentum, Float_t theta, | |
47 | Float_t phi, Float_t length, Float_t destep); | |
48 | virtual void AddPadHit(Int_t* clhits); // To be removed ! | |
a9e2aefa | 49 | virtual void AddDigits(Int_t id, Int_t* tracks, Int_t* charges, |
50 | Int_t* digits); | |
51 | virtual void AddRawCluster(Int_t id, const AliMUONRawCluster& clust); | |
fe4da5cc | 52 | virtual void BuildGeometry(); |
a9e2aefa | 53 | void AddGlobalTrigger(Int_t *singlePlus, Int_t *singleMinus, |
54 | Int_t *singleUndef, Int_t *pairUnlike, | |
55 | Int_t *pairLike); | |
56 | void AddLocalTrigger(Int_t* ltrigger); | |
fe4da5cc | 57 | Int_t DistancetoPrimitive(Int_t px, Int_t py); |
a9e2aefa | 58 | virtual Int_t IsVersion() const {return 0;} |
59 | TClonesArray *PadHits() {return fPadHits;} | |
60 | TClonesArray *LocalTrigger() {return fLocalTrigger;} | |
61 | TClonesArray *GlobalTrigger() {return fGlobalTrigger;} | |
3fa6cfdd | 62 | |
63 | virtual AliLoader* MakeLoader(const char* topfoldername); //builds standard getter (AliLoader type) | |
64 | ||
65 | virtual void MakeBranch(Option_t *opt=" "); | |
66 | virtual void MakeBranchInTreeD(TTree *treeD, const char *file=0); | |
67 | void SetTreeAddress(); | |
68 | virtual void ResetHits(); | |
69 | virtual void ResetDigits(); | |
70 | virtual void ResetTrigger(); | |
71 | virtual void ResetRawClusters(); | |
a9e2aefa | 72 | // Cluster Finding |
fe311ef1 | 73 | virtual void Digits2Reco(); |
74 | virtual void FindClusters(); | |
a9e2aefa | 75 | // Digitisation |
2ab0c725 | 76 | virtual void SDigits2Digits(); |
fe4da5cc | 77 | // Configuration Methods (per station id) |
78 | // | |
79 | // Set Chamber Segmentation Parameters | |
a9e2aefa | 80 | // id refers to the station and isec to the cathode plane |
81 | // Set Z values for all chambers | |
82 | virtual void SetChambersZ(const Float_t *Z); | |
83 | virtual void SetChambersZToDefault(void); | |
84 | virtual void SetPadSize(Int_t id, Int_t isec, Float_t p1, Float_t p2); | |
fe4da5cc | 85 | // Set Signal Generation Parameters |
a897a37a | 86 | virtual void SetSigmaIntegration(Int_t id, Float_t p1); |
87 | virtual void SetChargeSlope(Int_t id, Float_t p1); | |
88 | virtual void SetChargeSpread(Int_t id, Float_t p1, Float_t p2); | |
3b3ee6f4 | 89 | virtual void SetMaxAdc(Int_t id, Int_t p1); |
fe4da5cc | 90 | // Set Segmentation and Response Model |
a9e2aefa | 91 | virtual void SetSegmentationModel(Int_t id, Int_t isec, |
a30a000f | 92 | AliSegmentation *segmentation); |
a9e2aefa | 93 | virtual void SetResponseModel(Int_t id, AliMUONResponse *response); |
fe4da5cc | 94 | virtual void SetNsec(Int_t id, Int_t nsec); |
a897a37a | 95 | // Set Reconstruction Model |
30aaba74 | 96 | virtual void SetReconstructionModel(Int_t id, AliMUONClusterFinderVS *reconstruction); |
1cae9436 | 97 | // Set Merger/Digitizer |
98 | virtual void SetMerger(AliMUONMerger* merger); | |
99 | virtual AliMUONMerger* Merger(); | |
100 | ||
fe4da5cc | 101 | // Set Stepping Parameters |
a897a37a | 102 | virtual void SetMaxStepGas(Float_t p1); |
103 | virtual void SetMaxStepAlu(Float_t p1); | |
104 | virtual void SetMaxDestepGas(Float_t p1); | |
105 | virtual void SetMaxDestepAlu(Float_t p1); | |
5c1f55c5 | 106 | virtual void SetAcceptance(Bool_t acc=0, Float_t angmin=2, Float_t angmax=9); |
fe4da5cc | 107 | // Response Simulation |
802a864d | 108 | virtual void MakePadHits(Float_t xhit,Float_t yhit, Float_t zhit, |
a9e2aefa | 109 | Float_t eloss, Float_t tof, Int_t id); |
110 | // get Trigger answer | |
111 | void Trigger(Int_t nev); | |
fe4da5cc | 112 | // Return reference to Chamber #id |
a9e2aefa | 113 | virtual AliMUONChamber& Chamber(Int_t id) |
114 | {return *((AliMUONChamber *) (*fChambers)[id]);} | |
115 | // Return reference to Circuit #id | |
116 | virtual AliMUONTriggerCircuit& TriggerCircuit(Int_t id) | |
117 | {return *((AliMUONTriggerCircuit *) (*fTriggerCircuits)[id]);} | |
fe4da5cc | 118 | // Retrieve pad hits for a given Hit |
a9e2aefa | 119 | virtual AliMUONPadHit* FirstPad(AliMUONHit *hit, TClonesArray *padHits); |
120 | virtual AliMUONPadHit* NextPad(TClonesArray *padHits); | |
121 | // Return pointers to digits | |
fe4da5cc | 122 | TObjArray *Dchambers() {return fDchambers;} |
123 | Int_t *Ndch() {return fNdch;} | |
a9e2aefa | 124 | virtual TClonesArray *DigitsAddress(Int_t id) |
125 | {return ((TClonesArray *) (*fDchambers)[id]);} | |
fe4da5cc | 126 | // Return pointers to reconstructed clusters |
a897a37a | 127 | TObjArray *RawClusters() {return fRawClusters;} |
a9e2aefa | 128 | Int_t *Nrawch() {return fNrawch;} |
129 | virtual TClonesArray *RawClustAddress(Int_t id) | |
130 | {return ((TClonesArray *) (*fRawClusters)[id]);} | |
131 | ||
132 | AliMUONRawCluster *RawCluster(Int_t ichamber, Int_t icathod, | |
133 | Int_t icluster); | |
134 | // Copy Operator | |
135 | AliMUON& operator = (const AliMUON& rhs); | |
a897a37a | 136 | |
a9e2aefa | 137 | |
fe4da5cc | 138 | protected: |
1bd26093 | 139 | Int_t fNCh; // Number of chambers |
140 | Int_t fNTrackingCh; // Number of tracking chambers | |
613b84f5 | 141 | TObjArray *fChambers; // List of Tracking Chambers |
142 | TObjArray *fTriggerCircuits; // List of Trigger Circuits | |
a9e2aefa | 143 | Int_t fNPadHits; // Number of pad hits |
88cb7938 | 144 | TClonesArray *fPadHits; //! List of pad hits |
145 | TObjArray *fDchambers; //! List of digits | |
1bd26093 | 146 | Int_t *fNdch; // [fNCh] Number of digits per chamber |
88cb7938 | 147 | TObjArray *fRawClusters; //! List of raw clusters |
1bd26093 | 148 | Int_t *fNrawch; // [fNTrackingCh] Number of raw clusters per chamber |
a9e2aefa | 149 | Int_t fNLocalTrigger; // Number of Local Trigger |
88cb7938 | 150 | TClonesArray *fLocalTrigger; //! List of Local Trigger |
a9e2aefa | 151 | Int_t fNGlobalTrigger; // Number of Global Trigger |
88cb7938 | 152 | TClonesArray *fGlobalTrigger; //! List of Global Trigger |
1cae9436 | 153 | |
fe4da5cc | 154 | // |
155 | Bool_t fAccCut; //Transport acceptance cut | |
156 | Float_t fAccMin; //Minimum acceptance cut used during transport | |
157 | Float_t fAccMax; //Minimum acceptance cut used during transport | |
158 | // | |
159 | ||
160 | // Stepping Parameters | |
161 | Float_t fMaxStepGas; // Maximum step size inside the chamber gas | |
162 | Float_t fMaxStepAlu; // Maximum step size inside the chamber aluminum | |
163 | Float_t fMaxDestepGas; // Maximum relative energy loss in gas | |
164 | Float_t fMaxDestepAlu; // Maximum relative energy loss in aluminum | |
a897a37a | 165 | |
fe4da5cc | 166 | |
a897a37a | 167 | |
a9e2aefa | 168 | // Pad Iterator |
169 | Int_t fMaxIterPad; // Maximum pad index | |
170 | Int_t fCurIterPad; // Current pad index | |
171 | // Background eent for event mixing | |
30f212b7 | 172 | Text_t *fFileName; // ! File with background hits |
375da359 | 173 | AliMUONMerger *fMerger; // ! pointer to merger |
a897a37a | 174 | |
88cb7938 | 175 | ClassDef(AliMUON,3) // MUON Detector base class |
a897a37a | 176 | }; |
fe4da5cc | 177 | #endif |
178 |