2f614988 |
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 | |
c11ee6f0 |
10 | #include <TObjArray.h> |
11 | #include <AliDetector.h> |
dfb4e77d |
12 | #include "AliRICHConst.h" |
13 | #include "AliRICHChamber.h" |
237c933d |
14 | static const int kNCH=7; |
fe4da5cc |
15 | |
2ab0c725 |
16 | class TFile; |
fe4da5cc |
17 | |
237c933d |
18 | class AliRICHHit; |
b251a2b5 |
19 | class AliRICHSDigit; |
2e5f0f7b |
20 | class AliRICHRawCluster; |
a4622d0f |
21 | class AliRICHRecHit1D; |
22 | class AliRICHRecHit3D; |
2e5f0f7b |
23 | class AliRICHClusterFinder; |
24 | class AliRICHDetect; |
25 | class AliRICHChamber; |
26 | class AliRICHCerenkov; |
a2f7eaf6 |
27 | class AliSegmentation; |
2e5f0f7b |
28 | class AliRICHResponse; |
237c933d |
29 | class AliRICHGeometry; |
d8a72780 |
30 | class AliRICHMerger; |
ddae0931 |
31 | |
2f614988 |
32 | class AliRICH : public AliDetector |
33 | { |
2f614988 |
34 | public: |
3ba5db3e |
35 | AliRICH(); //default ctor |
36 | AliRICH(const char *name, const char *title); //named ctor |
37 | AliRICH(const AliRICH& RICH) {;} //copy ctor |
38 | virtual ~AliRICH(); //dtor |
dfb4e77d |
39 | |
3ba5db3e |
40 | AliRICH& operator=(const AliRICH& rhs) { return *this;} |
41 | virtual Int_t IsVersion() const =0; |
dfb4e77d |
42 | |
43 | virtual void AddHit(Int_t track, Int_t *vol, Float_t *hits); |
44 | void AddCerenkov(Int_t track, Int_t *vol, Float_t *cerenkovs); |
45 | void AddSDigit(Int_t *clhits); |
46 | void AddDigits(Int_t id, Int_t *tracks, Int_t *charges, Int_t *digits); |
47 | void AddRawCluster(Int_t id, const AliRICHRawCluster& cluster); |
48 | void AddRecHit1D(Int_t id, Float_t* rechit, Float_t* photons, Int_t* padsx, Int_t* padsy); |
49 | void AddRecHit3D(Int_t id, Float_t* rechit, Float_t omega, Float_t theta, Float_t phi); |
50 | virtual void ResetHits(); |
51 | virtual void ResetDigits(); |
52 | void ResetRawClusters(); |
53 | void ResetRecHits1D(); |
54 | void ResetRecHits3D(); |
55 | virtual void FindClusters(Int_t nev,Int_t lastEntry); |
56 | virtual void Hits2SDigits(); |
57 | Int_t Hits2SDigits(Float_t xhit,Float_t yhit,Float_t eloss,Int_t id, ResponseType res); |
58 | virtual void SDigits2Digits(); |
59 | virtual void Digits2Reco(); |
60 | |
61 | virtual void CreateMaterials(); //GEANT materials definition |
62 | Float_t AbsoCH4(Float_t x); |
63 | Float_t Fresnel(Float_t ene,Float_t pdoti, Bool_t pola); |
64 | virtual void BuildGeometry(); //TNode ROOT variant for event display |
65 | virtual void CreateGeometry(); //GEANT volumes tree for simulation |
66 | virtual void StepManager()=0; |
2f614988 |
67 | |
3ba5db3e |
68 | Int_t DistancetoPrimitive(Int_t px, Int_t py) {return 9999;} |
2f614988 |
69 | |
dfb4e77d |
70 | virtual void MakeBranch(Option_t *opt=" "); |
71 | virtual void MakeBranchInTreeD(TTree *treeD, const char *file=0); |
72 | virtual void SetTreeAddress(); |
2f614988 |
73 | |
dfb4e77d |
74 | |
2f614988 |
75 | |
2f614988 |
76 | |
dfb4e77d |
77 | AliRICHSDigit* FirstPad(AliRICHHit *hit, TClonesArray *clusters); |
78 | AliRICHSDigit* NextPad(TClonesArray *clusters); |
2f614988 |
79 | |
c11ee6f0 |
80 | |
dfb4e77d |
81 | void SetGeometryModel(Int_t iChamberN, AliRICHGeometry *pRICHGeo) { GetChamber(iChamberN)->SetGeometryModel(pRICHGeo);} |
82 | AliRICHGeometry* GetGeometryModel(Int_t iChamberN=0) const{return GetChamber(iChamberN)->GetGeometryModel();} |
83 | void SetSegmentationModel(Int_t iChamberN, AliSegmentation *pAliSeg) { GetChamber(iChamberN)->SetSegmentationModel(pAliSeg);} |
84 | AliSegmentation* GetSegmentationModel(Int_t iChamberN=0) const{return GetChamber(iChamberN)->GetSegmentationModel();} |
85 | void SetResponseModel(Int_t iChamberN, AliRICHResponse *pRICHRes) { GetChamber(iChamberN)->SetResponseModel(pRICHRes);} |
86 | AliRICHResponse* GetResponseModel(Int_t iChamberN) const{return GetChamber(iChamberN)->GetResponseModel();} |
87 | void SetReconstructionModel(Int_t iChamberN, AliRICHClusterFinder *pRICHReco){GetChamber(iChamberN)->SetReconstructionModel(pRICHReco);} |
88 | |
89 | virtual void SetMerger(AliRICHMerger* thisMerger) {fMerger=thisMerger;} |
90 | AliRICHChamber& Chamber(Int_t id) {return *((AliRICHChamber *) (*fChambers)[id]);} |
91 | AliRICHChamber* GetChamber(Int_t iChamberN) const{return (AliRICHChamber*) (*fChambers)[iChamberN];} |
92 | |
3ba5db3e |
93 | TObjArray *Dchambers() {return fDchambers;} |
94 | TObjArray *RecHits3D() const{return fRecHits3D;} |
95 | TObjArray *RecHits1D() const{return fRecHits1D;} |
96 | Int_t *Ndch() {return fNdch;} |
97 | Int_t *Nrechits1D() {return fNrechits1D;} |
98 | Int_t *Nrechits3D() {return fNrechits3D;} |
99 | TClonesArray *SDigits() const{return fSDigits;} |
100 | TClonesArray *Cerenkovs() const{return fCerenkovs;} |
101 | TClonesArray *DigitsAddress(Int_t id) {return ((TClonesArray *) (*fDchambers)[id]);} |
102 | TClonesArray *RecHitsAddress1D(Int_t id) const{return ((TClonesArray *) (*fRecHits1D)[id]);} |
103 | TClonesArray *RecHitsAddress3D(Int_t id) const{return ((TClonesArray *) (*fRecHits3D)[id]);} |
104 | TClonesArray *RawClustAddress(Int_t id) const{return ((TClonesArray *) (*fRawClusters)[id]);} |
dfb4e77d |
105 | |
106 | void DiagnosticsFE(Int_t evNumber1=0,Int_t evNumber2=0); // Full events |
107 | void DiagnosticsSE(Int_t diaglevel,Int_t evNumber1=0,Int_t evNumber2=0); // Single events |
c11ee6f0 |
108 | |
dfb4e77d |
109 | virtual void Print(Option_t *option)const; // Prints debug information |
2f614988 |
110 | |
111 | protected: |
dfb4e77d |
112 | TObjArray *fChambers; //! List of RICH chambers |
113 | Int_t fNSDigits; //Current number of sdigits |
114 | Int_t fNcerenkovs; //Current number of cerenkovs |
115 | TClonesArray *fSDigits; //! List of sdigits |
116 | TObjArray *fDchambers; //! Array of lists of digits |
117 | TClonesArray *fCerenkovs; //! List of cerenkovs |
118 | Int_t fNdch[kNCH]; //Array of current numbers of digits |
119 | TObjArray *fRawClusters; // !List of raw clusters |
120 | TObjArray *fRecHits1D; // !List of rec. hits |
121 | TObjArray *fRecHits3D; // !List of rec. hits |
122 | Int_t fNrawch[kNCH]; //Array of current numbers of raw clusters |
123 | Int_t fNrechits1D[kNCH]; //Array of current numbers of rec hits 1D |
124 | Int_t fNrechits3D[kNCH]; //Array of current numbers of rec hits 3D |
125 | |
126 | Int_t fCkovNumber; // Number of Cerenkov photons |
127 | Int_t fCkovQuarz; // Cerenkovs crossing quartz |
128 | Int_t fCkovGap; // Cerenkovs crossing gap |
129 | Int_t fCkovCsi; // Cerenkovs crossing csi |
130 | Int_t fLostRfreo; // Cerenkovs reflected in freon |
131 | Int_t fLostRquar; // Cerenkovs reflected in quartz |
132 | Int_t fLostAfreo; // Cerenkovs absorbed in freon |
133 | Int_t fLostAquarz; // Cerenkovs absorbed in quartz |
134 | Int_t fLostAmeta; // Cerenkovs absorbed in methane |
135 | Int_t fLostCsi; // Cerenkovs below csi quantum efficiency |
136 | Int_t fLostWires; // Cerenkovs lost in wires |
137 | Int_t fFreonProd; // Cerenkovs produced in freon |
138 | Float_t fMipx; // x coord. of MIP |
139 | Float_t fMipy; // y coord. of MIP |
140 | Int_t fFeedbacks; // Number of feedback photons |
141 | Int_t fLostFresnel; // Cerenkovs lost by Fresnel reflection |
d8a72780 |
142 | |
2f614988 |
143 | // Background event for event mixing |
dfb4e77d |
144 | Text_t *fFileName; //! File with background hits |
145 | AliRICHMerger *fMerger; //! pointer to merger |
ddae0931 |
146 | |
dfb4e77d |
147 | ClassDef(AliRICH,2) //Main RICH class |
c11ee6f0 |
148 | };//class AliRICH |
2f614988 |
149 | |
2f614988 |
150 | #endif |