]>
Commit | Line | Data |
---|---|---|
237c933d | 1 | #ifndef ALIRICH_H |
2 | #define ALIRICH_H | |
2e5f0f7b | 3 | |
3da30618 | 4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | /* $Id$ */ | |
8 | ||
2e5f0f7b | 9 | |
fe4da5cc | 10 | //////////////////////////////////////////////// |
11 | // Manager and hits classes for set:RICH // | |
12 | //////////////////////////////////////////////// | |
fe4da5cc | 13 | #include "AliDetector.h" |
ddae0931 | 14 | #include "AliRICHConst.h" |
2e5f0f7b | 15 | #include "AliRICHChamber.h" |
237c933d | 16 | static const int kNCH=7; |
fe4da5cc | 17 | |
2ab0c725 | 18 | class TFile; |
fe4da5cc | 19 | |
237c933d | 20 | class AliRICHHit; |
b251a2b5 | 21 | class AliRICHSDigit; |
2e5f0f7b | 22 | class AliRICHRawCluster; |
a4622d0f | 23 | class AliRICHRecHit1D; |
24 | class AliRICHRecHit3D; | |
2e5f0f7b | 25 | class AliRICHClusterFinder; |
26 | class AliRICHDetect; | |
27 | class AliRICHChamber; | |
28 | class AliRICHCerenkov; | |
a2f7eaf6 | 29 | class AliSegmentation; |
2e5f0f7b | 30 | class AliRICHResponse; |
31 | class AliRICHEllipse; | |
237c933d | 32 | class AliRICHGeometry; |
ddae0931 | 33 | |
34 | class AliRICH : public AliDetector { | |
35 | public: | |
36 | AliRICH(); | |
37 | AliRICH(const char *name, const char *title); | |
237c933d | 38 | AliRICH(const AliRICH& RICH); |
ddae0931 | 39 | virtual ~AliRICH(); |
237c933d | 40 | virtual void AddHit(Int_t track, Int_t *vol, Float_t *hits); |
41 | virtual void AddCerenkov(Int_t track, Int_t *vol, Float_t *cerenkovs); | |
b251a2b5 | 42 | virtual void AddSDigit(Int_t *clhits); |
237c933d | 43 | virtual void AddDigits(Int_t id, Int_t *tracks, Int_t *charges, Int_t *digits); |
44 | virtual void AddRawCluster(Int_t id, const AliRICHRawCluster& cluster); | |
a4622d0f | 45 | virtual void AddRecHit1D(Int_t id, Float_t* rechit, Float_t* photons, Int_t* padsx, Int_t* padsy); |
46 | virtual void AddRecHit3D(Int_t id, Float_t* rechit); | |
2e5f0f7b | 47 | |
48 | ||
ddae0931 | 49 | virtual void BuildGeometry(); |
452a64c6 | 50 | virtual void CreateGeometry(); |
51 | virtual void CreateMaterials(); | |
52 | virtual Float_t AbsoCH4(Float_t x); | |
53 | virtual Float_t Fresnel(Float_t ene,Float_t pdoti, Bool_t pola); | |
ddae0931 | 54 | virtual void StepManager(); |
55 | Int_t DistancetoPrimitive(Int_t px, Int_t py); | |
56 | virtual Int_t IsVersion() const =0; | |
57 | // | |
b251a2b5 | 58 | TClonesArray *SDigits() {return fSDigits;} |
2e5f0f7b | 59 | TClonesArray *Cerenkovs() {return fCerenkovs;} |
2ab0c725 | 60 | virtual void MakeBranch(Option_t *opt=" ", char *file=0); |
ddae0931 | 61 | void SetTreeAddress(); |
62 | virtual void ResetHits(); | |
63 | virtual void ResetDigits(); | |
2e5f0f7b | 64 | virtual void ResetRawClusters(); |
a4622d0f | 65 | virtual void ResetRecHits1D(); |
66 | virtual void ResetRecHits3D(); | |
237c933d | 67 | virtual void FindClusters(Int_t nev,Int_t lastEntry); |
d28b5fc2 | 68 | virtual void Digitise(Int_t nev,Int_t flag,Option_t *opt=" ",Text_t *name=" "); |
2ab0c725 | 69 | virtual void SDigits2Digits(); |
ddae0931 | 70 | // |
71 | // Configuration Methods (per station id) | |
72 | // | |
73 | // Set Chamber Segmentation Parameters | |
74 | // id refers to the station and isec to the cathode plane | |
ddae0931 | 75 | // Set Segmentation and Response Model |
2e5f0f7b | 76 | virtual void SetGeometryModel(Int_t id, AliRICHGeometry *geometry); |
a2f7eaf6 | 77 | virtual void SetSegmentationModel(Int_t id, AliSegmentation *segmentation); |
2e5f0f7b | 78 | virtual void SetResponseModel(Int_t id, AliRICHResponse *response); |
2e5f0f7b | 79 | // Set Reconstruction Model |
80 | virtual void SetReconstructionModel(Int_t id, AliRICHClusterFinder *reconstruction); | |
6fb24c3c | 81 | // Set source debugging level |
82 | void SetDebugLevel(Int_t level) {fDebugLevel=level;} | |
83 | // Get source debugging level | |
84 | Int_t GetDebugLevel() {return fDebugLevel;} | |
ddae0931 | 85 | // Response Simulation |
b251a2b5 | 86 | virtual Int_t Hits2SDigits(Float_t xhit,Float_t yhit,Float_t eloss,Int_t id, ResponseType res); |
ddae0931 | 87 | // Return reference to Chamber #id |
2e5f0f7b | 88 | virtual AliRICHChamber& Chamber(Int_t id) {return *((AliRICHChamber *) (*fChambers)[id]);} |
ddae0931 | 89 | // Retrieve pad hits for a given Hit |
b251a2b5 | 90 | virtual AliRICHSDigit* FirstPad(AliRICHHit *hit, TClonesArray *clusters); |
91 | virtual AliRICHSDigit* NextPad(TClonesArray *clusters); | |
ddae0931 | 92 | // Return pointers to digits |
93 | TObjArray *Dchambers() {return fDchambers;} | |
94 | Int_t *Ndch() {return fNdch;} | |
95 | virtual TClonesArray *DigitsAddress(Int_t id) {return ((TClonesArray *) (*fDchambers)[id]);} | |
2e5f0f7b | 96 | // Return pointers to rec. hits |
a4622d0f | 97 | TObjArray *RecHits1D() {return fRecHits1D;} |
98 | Int_t *Nrechits1D() {return fNrechits1D;} | |
99 | virtual TClonesArray *RecHitsAddress1D(Int_t id) {return ((TClonesArray *) (*fRecHits1D)[id]);} | |
100 | TObjArray *RecHits3D() {return fRecHits3D;} | |
101 | Int_t *Nrechits3D() {return fNrechits3D;} | |
102 | virtual TClonesArray *RecHitsAddress3D(Int_t id) {return ((TClonesArray *) (*fRecHits3D)[id]);} | |
103 | ||
ddae0931 | 104 | // Return pointers to reconstructed clusters |
2e5f0f7b | 105 | virtual TClonesArray *RawClustAddress(Int_t id) {return ((TClonesArray *) (*fRawClusters)[id]);} |
237c933d | 106 | // Assignment operator |
107 | AliRICH& operator=(const AliRICH& rhs); | |
ddae0931 | 108 | |
109 | ||
110 | protected: | |
111 | TObjArray *fChambers; // List of Tracking Chambers | |
b251a2b5 | 112 | Int_t fNSDigits; // Number of clusters |
2e5f0f7b | 113 | Int_t fNcerenkovs; // Number of cerenkovs |
b251a2b5 | 114 | TClonesArray *fSDigits; // List of clusters |
ddae0931 | 115 | TObjArray *fDchambers; // List of digits |
ddae0931 | 116 | TClonesArray *fCerenkovs; // List of cerenkovs |
a4622d0f | 117 | Int_t fNdch[kNCH]; // Number of digits |
2ab0c725 | 118 | Text_t *fFileName; //! Filename for event mixing |
2e5f0f7b | 119 | TObjArray *fRawClusters; // List of raw clusters |
a4622d0f | 120 | TObjArray *fRecHits1D; // List of rec. hits |
121 | TObjArray *fRecHits3D; // List of rec. hits | |
122 | Int_t fNrawch[kNCH]; // Number of raw clusters | |
123 | Int_t fNrechits1D[kNCH]; // Number of rec hits | |
124 | Int_t fNrechits3D[kNCH]; // Number of rec hits | |
125 | Int_t fDebugLevel; // Source debugging level | |
378f6387 | 126 | |
452a64c6 | 127 | Int_t fCkovNumber; // Number of Cerenkov photons |
128 | Int_t fCkovQuarz; // Cerenkovs crossing quartz | |
129 | Int_t fCkovGap; // Cerenkovs crossing gap | |
130 | Int_t fCkovCsi; // Cerenkovs crossing csi | |
131 | Int_t fLostRfreo; // Cerenkovs reflected in freon | |
132 | Int_t fLostRquar; // Cerenkovs reflected in quartz | |
133 | Int_t fLostAfreo; // Cerenkovs absorbed in freon | |
134 | Int_t fLostAquarz; // Cerenkovs absorbed in quartz | |
135 | Int_t fLostAmeta; // Cerenkovs absorbed in methane | |
136 | Int_t fLostCsi; // Cerenkovs below csi quantum efficiency | |
137 | Int_t fLostWires; // Cerenkovs lost in wires | |
138 | Int_t fFreonProd; // Cerenkovs produced in freon | |
139 | Float_t fMipx; // x coord. of MIP | |
140 | Float_t fMipy; // y coord. of MIP | |
141 | Int_t fFeedbacks; // Number of feedback photons | |
142 | Int_t fLostFresnel; // Cerenkovs lost by Fresnel reflection | |
ddae0931 | 143 | |
144 | ClassDef(AliRICH,1) //Hits manager for set:RICH | |
2e5f0f7b | 145 | }; |
fe4da5cc | 146 | #endif |
147 | ||
148 | ||
149 | ||
ddae0931 | 150 | |
151 | ||
152 | ||
153 | ||
154 | ||
155 | ||
156 | ||
157 | ||
158 | ||
159 | ||
160 | ||
161 |