fe4da5cc |
1 | #ifndef RICH_H |
2 | #define RICH_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 "AliRICHSegRes.h" |
16 | #include "DataStructures.h" |
17 | #include "AliRICHChamber.h" |
18 | #include "AliRICHSegRes.h" |
ddae0931 |
19 | #include <TVector.h> |
2e5f0f7b |
20 | #include <TArrayF.h> |
ddae0931 |
21 | #include <TObjArray.h> |
22 | #include <TFile.h> |
23 | #include <TTree.h> |
2e5f0f7b |
24 | #include <TParticle.h> |
fe4da5cc |
25 | |
ddae0931 |
26 | static const int NCH=7; |
fe4da5cc |
27 | |
fe4da5cc |
28 | |
fe4da5cc |
29 | |
2e5f0f7b |
30 | class AliRICHPadHit; |
31 | class AliRICHRawCluster; |
32 | class AliRICHRecHit; |
33 | class AliRICHClusterFinder; |
34 | class AliRICHDetect; |
35 | class AliRICHChamber; |
36 | class AliRICHCerenkov; |
37 | class AliRICHSegmentation; |
38 | class AliRICHResponse; |
39 | class AliRICHEllipse; |
ddae0931 |
40 | |
41 | class AliRICH : public AliDetector { |
42 | public: |
43 | AliRICH(); |
44 | AliRICH(const char *name, const char *title); |
45 | virtual ~AliRICH(); |
46 | virtual void AddHit(Int_t, Int_t*, Float_t*); |
47 | virtual void AddCerenkov(Int_t, Int_t*, Float_t*); |
2e5f0f7b |
48 | virtual void AddPadHit(Int_t*); |
ddae0931 |
49 | virtual void AddDigits(Int_t, Int_t*, Int_t*, Int_t*); |
2e5f0f7b |
50 | virtual void AddRawCluster(Int_t, const AliRICHRawCluster&); |
51 | virtual void AddRecHit(Int_t, Float_t*); |
52 | |
53 | |
ddae0931 |
54 | virtual void BuildGeometry(); |
55 | virtual void CreateGeometry() {} |
56 | virtual void CreateMaterials() {} |
57 | virtual void StepManager(); |
58 | Int_t DistancetoPrimitive(Int_t px, Int_t py); |
59 | virtual Int_t IsVersion() const =0; |
60 | // |
2e5f0f7b |
61 | TClonesArray *PadHits() {return fPadHits;} |
62 | TClonesArray *Cerenkovs() {return fCerenkovs;} |
ddae0931 |
63 | virtual void MakeBranch(Option_t *opt=" "); |
64 | void SetTreeAddress(); |
65 | virtual void ResetHits(); |
66 | virtual void ResetDigits(); |
2e5f0f7b |
67 | virtual void ResetRawClusters(); |
68 | virtual void ResetRecHits(); |
69 | virtual void FindClusters(Int_t,Int_t); |
d28b5fc2 |
70 | virtual void Digitise(Int_t nev,Int_t flag,Option_t *opt=" ",Text_t *name=" "); |
ddae0931 |
71 | // |
72 | // Configuration Methods (per station id) |
73 | // |
74 | // Set Chamber Segmentation Parameters |
75 | // id refers to the station and isec to the cathode plane |
ddae0931 |
76 | // Set Segmentation and Response Model |
2e5f0f7b |
77 | virtual void SetGeometryModel(Int_t id, AliRICHGeometry *geometry); |
78 | virtual void SetSegmentationModel(Int_t id, AliRICHSegmentation *segmentation); |
79 | virtual void SetResponseModel(Int_t id, AliRICHResponse *response); |
ddae0931 |
80 | virtual void SetNsec(Int_t id, Int_t nsec); |
2e5f0f7b |
81 | // Set Reconstruction Model |
82 | virtual void SetReconstructionModel(Int_t id, AliRICHClusterFinder *reconstruction); |
ddae0931 |
83 | // Response Simulation |
378f6387 |
84 | virtual Int_t MakePadHits(Float_t xhit,Float_t yhit,Float_t eloss,Int_t id,Response_t res); |
ddae0931 |
85 | // Return reference to Chamber #id |
2e5f0f7b |
86 | virtual AliRICHChamber& Chamber(Int_t id) {return *((AliRICHChamber *) (*fChambers)[id]);} |
ddae0931 |
87 | // Retrieve pad hits for a given Hit |
2e5f0f7b |
88 | virtual AliRICHPadHit* FirstPad(AliRICHHit *, TClonesArray *); |
89 | virtual AliRICHPadHit* NextPad(TClonesArray *); |
ddae0931 |
90 | // Return pointers to digits |
91 | TObjArray *Dchambers() {return fDchambers;} |
92 | Int_t *Ndch() {return fNdch;} |
93 | virtual TClonesArray *DigitsAddress(Int_t id) {return ((TClonesArray *) (*fDchambers)[id]);} |
2e5f0f7b |
94 | // Return pointers to rec. hits |
95 | TObjArray *RecHits() {return fRecHits;} |
96 | Int_t *Nrechits() {return fNrechits;} |
97 | virtual TClonesArray *RecHitsAddress(Int_t id) {return ((TClonesArray *) (*fRecHits)[id]);} |
ddae0931 |
98 | // Return pointers to reconstructed clusters |
2e5f0f7b |
99 | virtual TClonesArray *RawClustAddress(Int_t id) {return ((TClonesArray *) (*fRawClusters)[id]);} |
ddae0931 |
100 | |
101 | |
102 | protected: |
103 | TObjArray *fChambers; // List of Tracking Chambers |
2e5f0f7b |
104 | Int_t fNPadHits; // Number of clusters |
105 | Int_t fNcerenkovs; // Number of cerenkovs |
106 | TClonesArray *fPadHits; // List of clusters |
ddae0931 |
107 | TObjArray *fDchambers; // List of digits |
ddae0931 |
108 | TClonesArray *fCerenkovs; // List of cerenkovs |
109 | Int_t *fNdch; // Number of digits |
110 | Text_t *fFileName; // Filename for event mixing |
2e5f0f7b |
111 | TObjArray *fRawClusters; // List of raw clusters |
112 | TObjArray *fRecHits; // List of rec. hits |
113 | Int_t *fNrawch; // Number of raw clusters |
378f6387 |
114 | Int_t *fNrechits; // Number of rec hits |
115 | |
ddae0931 |
116 | protected: |
117 | |
118 | ClassDef(AliRICH,1) //Hits manager for set:RICH |
2e5f0f7b |
119 | }; |
fe4da5cc |
120 | #endif |
121 | |
122 | |
123 | |
ddae0931 |
124 | |
125 | |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 | |
134 | |
135 | |