]>
Commit | Line | Data |
---|---|---|
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 |