Adding support for HLT code
[u/mrichter/AliRoot.git] / RICH / AliRICHParam.h
CommitLineData
d48cca74 1#ifndef AliRICHParam_h
2#define AliRICHParam_h
3
4#include <TObject.h>
5#include "AliRICHConst.h"
6
7class AliRICHParam :public TObject
8{
9public:
853634d3 10 AliRICHParam();
11 virtual ~AliRICHParam() {;}
12
c2c6679b 13 void Recalc(); //Recalculates dependent parameters after changes applied
14 Int_t Sector(Float_t x,Float_t y)const; //Returns sector number for given point (x,y)
15 Int_t L2P(Float_t x,Float_t y,Int_t &iPadX,Int_t &iPadY)const;//Which pad contains point (x,y), returns sector code
16 inline Int_t Wire(Float_t x)const; //Returns wire number for local point (x,y)
17 inline void SigGenInit(Float_t x,Float_t y);
18 inline Bool_t SigGenCond(Float_t x,Float_t y);
19 Float_t Gain(Float_t y); //Returns total charge induced by single photon
20 Float_t TotalCharge(Int_t iPID,Float_t eloss,Float_t y); //Returns total charge induced by particle lost eloss GeV
34988b46 21 Float_t PadCharge(Int_t /* iPadX */,Int_t /* iPadY */) {return 0;} //Returns charge for a given pad
c2c6679b 22
23 void Segmentation(Int_t Nx,Int_t Ny) {fNpadX=Nx;fNpadY=Ny;Recalc();}
24 Int_t Nx() const{return fNpadX;}
25 Int_t Ny() const{return fNpadY;}
3ba5db3e 26 void DeadZone(Float_t a) { fDeadZone=a;Recalc();}
27 Float_t DeadZone() const{return fDeadZone;}
c2c6679b 28 void PadSize(Float_t x,Float_t y) { fPadSizeX=x;fPadSizeY=y;Recalc();}
29 Float_t PadSizeX() const{return fPadSizeX;}
30 Float_t PadSizeY() const{return fPadSizeY;}
31 Float_t SectorSizeX() const{return fSectorSizeX;}
32 Float_t SectorSizeY() const{return fSectorSizeY;}
33 Float_t PcSizeX() const{return fPcSizeX;}
34 Float_t PcSizeY() const{return fPcSizeY;}
35
3ba5db3e 36 void Size(Float_t x,Float_t y,Float_t z){fSizeX=x;fSizeY=y;fSizeZ=z;}
853634d3 37 void GeantSize(Float_t *pArr) const{pArr[0]=fSizeX/2;pArr[1]=fSizeY/2;pArr[2]=fSizeZ/2;}
3ba5db3e 38 Float_t SizeX() const{return fSizeX;}
39 Float_t SizeY() const{return fSizeY;}
40 Float_t SizeZ() const{return fSizeZ;}
41 void Offset(Float_t offset) { fOffset=offset;}
42 Float_t Offset() const{return fOffset;}
853634d3 43 void Angles(Float_t xy,Float_t yz) { fAngleXY=xy;fAngleYZ=yz;}
3ba5db3e 44 Float_t AngleYZ() const{return fAngleYZ*d2r;}
45 Float_t AngleXY() const{return fAngleXY*d2r;}
46 void AngleRot(Float_t angle) { fAngleRot=angle;}
47 Float_t AngleRot() const{return fAngleRot*d2r;}
48 void GapThickness(Float_t a) { fGapThickness=a;}
49 Float_t GapThickness() const{return fGapThickness;}
50 void ProximityGapThickness(Float_t a) { fProximityGapThickness=a;}
51 Float_t ProximityGapThickness() const{return fProximityGapThickness;}
52 void QuartzLength(Float_t a) { fQuartzLength=a;}
53 Float_t QuartzLength() const{return fQuartzLength;}
54 void QuartzWidth(Float_t a) { fQuartzWidth=a;}
55 Float_t QuartzWidth() const{return fQuartzWidth;}
56 void QuartzThickness(Float_t a) { fQuartzThickness=a;}
57 Float_t QuartzThickness() const{return fQuartzThickness;}
58 void OuterFreonLength(Float_t a) { fOuterFreonLength=a;}
59 Float_t OuterFreonLength() const{return fOuterFreonLength;}
60 void OuterFreonWidth(Float_t a) { fOuterFreonWidth=a;}
61 Float_t OuterFreonWidth() const{return fOuterFreonWidth;}
62 void InnerFreonLength(Float_t a) { fInnerFreonLength=a;}
63 Float_t InnerFreonLength() const{return fInnerFreonLength;}
64 void InnerFreonWidth(Float_t a) { fInnerFreonWidth=a;}
65 Float_t InnerFreonWidth() const{return fInnerFreonWidth;}
66 void FreonThickness(Float_t a) { fFreonThickness=a;}
67 Float_t FreonThickness() const{return fFreonThickness;}
68 void RadiatorToPads(Float_t a) { fRadiatorToPads=a;}
69 Float_t RadiatorToPads() const{return fRadiatorToPads;}
70
71 void SigmaIntegration(Float_t a) { fSigmaIntegration=a;}
72 Float_t SigmaIntegration() const{return fSigmaIntegration;}
73 void ChargeSpreadX(Float_t a) { fChargeSpreadX=a;}
74 Float_t ChargeSpreadX() const{return fChargeSpreadX;}
75 void ChargeSpreadY(Float_t a) { fChargeSpreadY=a;}
76 Float_t ChargeSpreadY() const{return fChargeSpreadY;}
77 void ChargeSlope(Float_t a) { fChargeSlope=a;}
78 Float_t ChargeSlope() {return fChargeSlope;}
79 void MaxAdc(Float_t a) { fMaxAdc=a;}
80 Float_t MaxAdc() const{return fMaxAdc;}
c2c6679b 81 void Pitch(Float_t a) { fPitch=a;}
3ba5db3e 82 Float_t Pitch() const{return fPitch;}
83 void AlphaFeedback(Float_t a) { fAlphaFeedback=a;}
84 Float_t AlphaFeedback() const{return fAlphaFeedback;}
85 void EIonisation(Float_t a) { fEIonisation=a;}
86 Float_t EIonisation() const{return fEIonisation;}
87 void SqrtKx3(Float_t a) { fSqrtKx3=a;};
c2c6679b 88 void Kx2(Float_t a) { fKx2=a;}
89 void Kx4(Float_t a) { fKx4=a;}
90 void SqrtKy3(Float_t a) { fSqrtKy3=a;}
91 void Ky2(Float_t a) { fKy2=a;}
92 void Ky4(Float_t a) { fKy4=a;}
93 void WireSag(Int_t a) { fWireSag=a;}
94 void Voltage(Int_t a) { fVoltage=a;}
95 Float_t Voltage() const{return fVoltage;}
d48cca74 96protected:
c2c6679b 97 Int_t fNpadX; Int_t fNpadY; //number of pads along X-Y in whole chamber (6 sectors)
98 Float_t fDeadZone; //space between PC sectors, cm
99 Float_t fPadSizeX,fPadSizeY; //pad size, cm
100 Float_t fSectorSizeX,fSectorSizeY; //photocathod sector size, cm
101 Float_t fWirePitch; //not yet known parameter ???
102
103 Int_t fCurrentPadX,fCurrentPadY; //???
104 Int_t fCurrentWire; //???
105
106 Float_t fSizeX; Float_t fSizeY; Float_t fSizeZ; //chamber outer size, cm
107 Float_t fAngleRot; //azimuthal rotation XY plane, deg
108 Float_t fAngleYZ; //angle between chambers YZ plane, deg
109 Float_t fAngleXY; //angle between chambers XY plane, deg
110 Float_t fOffset; //chambers offset from IP, cm
111 Float_t fGapThickness; //gap thickness, cm
112 Float_t fProximityGapThickness; //proximity gap thickness, cm
113 Float_t fQuartzLength; Float_t fQuartzWidth; Float_t fQuartzThickness; //quartz window size, cm
114 Float_t fOuterFreonLength; Float_t fOuterFreonWidth; //freon box outer size, cm
115 Float_t fInnerFreonLength; Float_t fInnerFreonWidth; //freon box inner size, cm
116 Float_t fFreonThickness; //freon thickness
117 Float_t fRadiatorToPads; //distance from radiator to pads, cm
118 Float_t fPcSizeX,fPcSizeY; //photocathod active area size,cm
d48cca74 119
d48cca74 120 Float_t fChargeSlope; //Slope of the charge distribution
121 Float_t fChargeSpreadX; //Width of the charge distribution in x
122 Float_t fChargeSpreadY; //Width of the charge distribution in y
123 Float_t fSigmaIntegration; //Number of sigma's used for charge distribution
124 Float_t fAlphaFeedback; //Feedback photons coefficient
125 Float_t fEIonisation; //Mean ionisation energy
126 Float_t fMaxAdc; //Maximum ADC channel
127 Float_t fSqrtKx3; //Mathieson parameters for x
128 Float_t fKx2; //Mathieson parameters for x
129 Float_t fKx4; //Mathieson parameters for x
130 Float_t fSqrtKy3; //Mathieson parameters for y
131 Float_t fKy2; //Mathieson parameters for y
132 Float_t fKy4; //Mathieson parameters for y
133 Float_t fPitch; //Anode-cathode pitch
134 Int_t fWireSag; //Flag to turn on/off (0/1) wire sag
135 Int_t fVoltage; //Working voltage (2000, 2050, 2100, 2150)
136
137 ClassDef(AliRICHParam,1) //RICH main parameters
138};
c2c6679b 139//__________________________________________________________________________________________________
140Int_t AliRICHParam::Wire(Float_t x)const
141{
142 Int_t iWire=(x>0)?Int_t(x/fWirePitch)+1:Int_t(x/fWirePitch)-1;
143 return iWire;
144}//Int_t AliRICHParam::Wire(Float_t x, Float_t y)
145//__________________________________________________________________________________________________
146void AliRICHParam::SigGenInit(Float_t x,Float_t y)
147{//Initialises pad and wire position during stepping
148 L2P(x,y,fCurrentPadX,fCurrentPadY);
149 fCurrentWire= (x>0) ? Int_t(x/fWirePitch)+1 : Int_t(x/fWirePitch)-1 ;
150}
151//__________________________________________________________________________________________________
152Bool_t AliRICHParam::SigGenCond(Float_t x,Float_t y)
153{//Signal will be generated if particle crosses pad boundary or boundary between two wires.
154 Int_t curPadX,curPadY;
155 L2P(x,y,curPadX,curPadY);
156 Int_t currentWire=(x>0) ? Int_t(x/fWirePitch)+1 : Int_t(x/fWirePitch)-1;
157 if((curPadX != fCurrentPadX) || (curPadY != fCurrentPadY) || (currentWire!=fCurrentWire))
158 return kTRUE;
159 else
160 return kFALSE;
161}
162//__________________________________________________________________________________________________
d48cca74 163#endif //AliRICHParam_h