1 #ifndef RICHDataStructures_H
2 #define RICHDataStructures_H
5 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6 * See cxx source for full Copyright notice */
13 #include <TObjArray.h>
18 class AliRICHHit : public AliHit {
20 Int_t fChamber; // Chamber number
21 Float_t fParticle; // Geant3 particle type
22 Float_t fTheta ; // Incident theta angle in degrees
23 Float_t fPhi ; // Incident phi angle in degrees
24 Float_t fTlength; // Track length inside the chamber
25 Float_t fEloss; // ionisation energy loss in gas
26 Float_t fPHfirst; // first padhit
27 Float_t fPHlast; // last padhit
28 Float_t fLoss; // did it hit the freon?
29 Float_t fMomX; // Local Momentum
30 Float_t fMomY; // Local Momentum
31 Float_t fMomZ; // Local Momentum
32 Float_t fNPads; // Pads hit
35 AliRICHHit(Int_t fIshunt, Int_t track, Int_t *vol, Float_t *hits);
36 virtual ~AliRICHHit() {}
38 ClassDef(AliRICHHit,1) //Hits object for set:RICH
41 //------------------------------------------------
42 // Cerenkov photon object
43 //------------------------------------------------
45 class AliRICHCerenkov: public AliHit {
47 Int_t fChamber; // Chamber number
48 Float_t fTheta ; // Incident theta angle in degrees
49 Float_t fPhi ; // Incident phi angle in degrees
50 Float_t fTlength; // Track length inside the chamber
51 Float_t fEloss; // ionisation energy loss in gas
52 Int_t fPHfirst; // first padhit
53 Int_t fPHlast; // last padhit
54 Int_t fCMother; // index of mother particle
55 Float_t fLoss; // nature of particle loss
56 Float_t fIndex; // Index of photon
57 Float_t fProduction; // Point of production
58 Float_t fMomX; // Local Momentum
59 Float_t fMomY; // Local Momentum
60 Float_t fMomZ; // Local Momentum
61 Float_t fNPads; // Pads hit
62 Float_t fCerenkovAngle; // Cerenkov Angle
65 AliRICHCerenkov(Int_t fIshunt, Int_t track, Int_t *vol, Float_t *Cerenkovs);
66 virtual ~AliRICHCerenkov() {}
68 ClassDef(AliRICHCerenkov,1) //Cerenkovs object for set:RICH
72 class AliRICHPadHit : public TObject {
75 Int_t fHitNumber; // Hit number
76 Int_t fCathode; // Cathode number
77 Int_t fQ ; // Total charge
78 Int_t fPadX ; // Pad number along X
79 Int_t fPadY ; // Pad number along Y
80 Int_t fQpad ; // Charge per pad
81 Int_t fRSec ; // R -sector of pad
85 fHitNumber=fQ=fPadX=fPadY=fQpad=fRSec=0;
87 AliRICHPadHit(Int_t *clhits);
88 virtual ~AliRICHPadHit() {;}
90 ClassDef(AliRICHPadHit,1) //Cluster object for set:RICH
93 class AliRICHDigit : public TObject {
95 Int_t fPadX; // Pad number along x
96 Int_t fPadY ; // Pad number along y
97 Int_t fSignal; // Signal amplitude
100 Int_t fTcharges[100]; // charge per track making this digit (up to 10)
101 Int_t fTracks[100]; // tracks making this digit (up to 10)
102 Int_t fPhysics; // physics contribution to signal
103 Int_t fHit; // hit number - temporary solution
107 AliRICHDigit(Int_t *digits);
108 AliRICHDigit(Int_t *tracks, Int_t *charges, Int_t *digits);
109 virtual ~AliRICHDigit() {}
110 ClassDef(AliRICHDigit,1) //Digits for set:RICH
112 //_____________________________________________________________________________
114 class AliRICHTransientDigit : public AliRICHDigit {
116 Int_t fRpad; // r_pos of pad
117 Int_t fChamber; // chamber number of pad
118 TObjArray *fTrackList;
120 AliRICHTransientDigit() {fTrackList=0;}
121 AliRICHTransientDigit(Int_t ich, Int_t *digits);
122 virtual ~AliRICHTransientDigit() {}
124 TObjArray *TrackList() {return fTrackList;}
126 ClassDef(AliRICHTransientDigit,1) //Digits for set:RICH
128 //___________________________________________
129 class AliRICHRawCluster : public TObject {
131 Int_t fTracks[3]; //labels of overlapped tracks
132 Int_t fQ ; // Q of cluster (in ADC counts)
133 Float_t fX ; // X of cluster
134 Float_t fY ; // Y of cluster
136 Int_t fIndexMap[50]; //indeces of digits
137 Int_t fOffsetMap[50];
138 Float_t fContMap[50]; //Contribution from digit
139 Int_t fPhysicsMap[50];
140 Int_t fMultiplicity; //cluster multiplicity
143 Int_t fCtype; //CL0, CL1, etc...
145 AliRICHRawCluster() {
146 fTracks[0]=fTracks[1]=fTracks[2]=-1;
147 fQ=0; fX=fY=0; fMultiplicity=0;
148 for (int k=0;k<50;k++) {
155 fNcluster[0]=fNcluster[1]=-1;
157 virtual ~AliRICHRawCluster() {}
159 Float_t GetRadius() {return TMath::Sqrt(fX*fX+fY*fY);}
161 Bool_t IsSortable() const {return kTRUE;}
162 Int_t Compare(TObject *obj);
163 Int_t PhysicsContribution();
164 static Int_t BinarySearch(Float_t r, TArrayF, Int_t from, Int_t upto);
165 static void SortMin(Int_t *,Float_t *,Float_t *,Float_t *,Float_t *,Int_t);
167 ClassDef(AliRICHRawCluster,1) //Cluster object for set:RICH
169 //___________________________________________
170 class AliRICHRecHit : public TObject {
172 Float_t Theta ; //Incidence Angle theta
173 Float_t Phi ; //Incidence Angle phi
174 Float_t Omega; //Cherenkov angle omega
175 Float_t fX; //Impact coordinate x
176 Float_t fY; //Impact coordinate y
181 AliRICHRecHit(Int_t id, Float_t* rechit);
182 virtual ~AliRICHRecHit() {}
183 ClassDef(AliRICHRecHit,1) //Reconstructed hit object for set:RICH