enum EChamberData{kMinCh=0,kMaxCh=6,kMinPc=0,kMaxPc=5}; //Segmenation
enum EPadxData{kPadPcX=80,kMinPx=0,kMaxPx=79,kMaxPcx=159}; //Segmentation structure along x
enum EPadyData{kPadPcY=48,kMinPy=0,kMaxPy=47,kMaxPcy=143}; //Segmentation structure along y
-
+ //The electronics takes the 32bit int as: first 9 bits for the pedestal and the second 9 bits for threshold - values below should be within range
+ enum EPedestalData{kPadMeanZeroCharge=400,kPadSigmaZeroCharge=20,kPadMeanMasked=401,kPadSigmaMasked=20}; //One can go up to 5 sigma cut, overflow is protected in AliHMPIDCalib
+
+
+ static Float_t r2d ( ) {return 57.2957795; }
static Float_t SizePadX ( ) {return fgCellX; } //pad size x, [cm]
static Float_t SizePadY ( ) {return fgCellY; } //pad size y, [cm]
static Float_t SizeAllX ( ) {return fgAllX; } //all PCs size x, [cm]
static Float_t SizeAllY ( ) {return fgAllY; } //all PCs size y, [cm]
- static Float_t LorsX (Int_t pc,Int_t padx ) {return (padx +0.5)*SizePadX()+fgkMinPcX[pc]; } //center of the pad x, [cm]
+ static Float_t LorsX (Int_t pc,Int_t padx ) {return (padx +0.5)*SizePadX()+fgkMinPcX[pc]; } //center of the pad x, [cm]
static Float_t LorsY (Int_t pc,Int_t pady ) {return (pady +0.5)*SizePadY()+fgkMinPcY[pc]; } //center of the pad y, [cm]
+ Float_t ChPhiMin (Int_t ch ) {return Lors2Mars(ch,LorsX(ch,kMinPx)-fX,LorsY(ch,kMinPy)-fY).Phi()*r2d();} //PhiMin (degree) of the camber ch
+ Float_t ChThMin (Int_t ch ) {return Lors2Mars(ch,LorsX(ch,kMinPx)-fX,LorsY(ch,kMinPy)-fY).Theta()*r2d();} //ThMin (degree) of the camber ch
+ Float_t ChPhiMax (Int_t ch ) {return Lors2Mars(ch,LorsX(ch,kMaxPcx)-fX,LorsY(ch,kMaxPcy)-fY).Phi()*r2d();} //PhiMax (degree) of the camber ch
+ Float_t ChThMax (Int_t ch ) {return Lors2Mars(ch,LorsX(ch,kMaxPcx)-fX,LorsY(ch,kMaxPcy)-fY).Theta()*r2d();} //ThMax (degree) of the camber ch
+
inline static void Lors2Pad(Float_t x,Float_t y,Int_t &pc,Int_t &px,Int_t &py); //(x,y)->(pc,px,py)
static Int_t Abs (Int_t ch,Int_t pc,Int_t x,Int_t y) {return ch*100000000+pc*1000000+x*1000+y; } //(ch,pc,padx,pady)-> abs pad
Float_t pt=TMath::Sqrt(l[0]*l[0]+l[1]*l[1]);
th=TMath::ATan(pt/l[2]);
ph=TMath::ATan2(l[1],l[0]);}
- void Lors2MarsVec(Int_t c,Double_t *m,Double_t *l )const{fM[c]->MasterToLocalVect(m,l); }//LRS->MRS
+ void Lors2MarsVec(Int_t c,Double_t *m,Double_t *l )const{fM[c]->LocalToMasterVect(m,l); }//LRS->MRS
TVector3 Norm (Int_t c )const{Double_t n[3]; Norm(c,n); return TVector3(n); }//norm
void Norm (Int_t c,Double_t *n )const{Double_t l[3]={0,0,1};fM[c]->LocalToMasterVect(l,n); }//norm
void Point (Int_t c,Double_t *p,Int_t plane )const{Lors2Mars(c,0,0,p,plane);} //point of given chamber plane