- Int_t Pc ( )const{return A2P(fPad);} //PC position number
- static void PrintSize ( ); //print all segmentation sizes
- inline Int_t Raw (UInt_t &w32 )const; //raw
- Int_t Row ( )const{Int_t r=1+Pc()/2*8+PadY()/kDilY; return (Pc()%2)?kNrow-r+1:r;} //row r=1..24
- void Set (Int_t c,Int_t s,Int_t x,Int_t y) {fPad=Abs(c,s,x,y);} //set new digit
- void ReadRaw (Int_t ddl,Int_t r,Int_t d,Int_t a){Int_t mapA2Y[kDilY]={3,2,4,1,5,0};fPad=Abs(ddl/2,ddl%7,d*kDilX+a/kDilY,r*kDilY+mapA2Y[a%kDilY]);} //from raw
- inline void ReadRaw (Int_t ddl,UInt_t w32 ); //read raw word
-
- static Float_t SizeAllX ( ) {return SizePadX()*kPadAllX+SizeDead();} //all PCs size x, [cm]
- static Float_t SizeAllY ( ) {return SizePadY()*kPadAllY+2*SizeDead();} //all PCs size y, [cm]
- static Float_t SizeArea ( ) {return SizePcX()*SizePcY()*kPcAll;} //sence area, [cm^2]
- static Float_t SizeDead ( ) {return 2.6;} //dead zone size x, [cm]
- static Float_t SizeGap ( ) {return 8; }
- static Float_t SizePadX ( ) {return 0.8;} //pad size x, [cm]
- static Float_t SizePadY ( ) {return 0.84;} //pad size y, [cm]
- static Float_t SizePcX ( ) {return SizePadX()*kPadPcX;} //PC size x, [cm]
- static Float_t SizePcY ( ) {return SizePadY()*kPadPcY;} //PC size y, [cm]
- static Float_t SizeWin ( ) {return 0.5;}
- static Float_t SizeRad ( ) {return 1.5;}
- static void TestSeg ( ); //test segmentation
- void Zoom ( );
-protected: //AliDigit has fTracks[3]
- Int_t fPad; //absolute pad number is chamber*kCham
- Float_t fQ; //QDC value, fractions are permitted for summable procedure
- ClassDef(AliHMPIDDigit,4) //HMPID digit class
-};//class AliHMPIDDigitN
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-AliHMPIDDigit::AliHMPIDDigit(Int_t c,Float_t q,Int_t t,Float_t x,Float_t y,Int_t flag):AliDigit(),fPad(Abs(-1,-1,-1,-1)),fQ(-1)
-{
-// Creation of sdigit
-// Arguments: c- chamber
-// q- total QDC
-// t -TID
-// x,y - hit position, LORS
-// Returns: none
- Int_t pc,padx,pady;
- if (x>= 0 && x<= SizePcX() ) {pc=0; padx=Int_t( x / SizePadX());}//PC 0 or 2 or 4
- else if(x>=SizePcX()+SizeDead() && x<= SizeAllX() ) {pc=1; padx=Int_t((x- SizePcX()- SizeDead()) / SizePadX());}//PC 2 or 4 or 6
- else return;
- if (y>= 0 && y<= SizePcY() ) { pady=Int_t( y / SizePadY());}//PC 0 or 1
- else if(y>=SizePcY()+SizeDead() && y<=2*SizePcY()+SizeDead() ) {pc+=2;pady=Int_t((y- SizePcY()- SizeDead()) / SizePadY());}//PC 2 or 3
- else if(y>=SizeAllY()-SizePcY() && y<= SizeAllY() ) {pc+=4;pady=Int_t((y-2*SizePcY()-2*SizeDead()) / SizePadY());}//PC 4 or 5
- else return;
-
- switch(flag){
- case kUL:padx--;pady++;break; case kU:pady++;break; case kUR:padx++; pady++;break;
-
- case kL: padx--; break; case kC: break; case kR:padx++; break;
-
- case kDL:padx--;pady--;break; case kD:pady--;break; case kDR:padx++; pady--;break;
- }
- if(padx<0 || padx>=kPadPcX) return;
- if(pady<0 || pady>=kPadPcY) return;
- fPad=Abs(c,pc,padx,pady);
- fQ=q*Mathieson(x,y);
- fTracks[0]=t;
-}
+ inline void Raw(UInt_t &w32,Int_t &ddl,Int_t &r,Int_t &d,Int_t &a)const;
+ inline Bool_t Set (Int_t c,Int_t p,Int_t x,Int_t y,Int_t tid=0); //manual creation
+ void SetQ (Float_t q ) {fQ=q;if(fQ>4095)fQ=4095;} //setter for charge
+ void SetPad (Int_t pad ) {fPad=pad;} //setter for pad
+
+protected: //AliDigit has fTracks[3]
+
+
+ Int_t fPad; //absolute pad number
+ Float_t fQ; //QDC value, fractions are permitted for summable procedure
+ ClassDef(AliHMPIDDigit,4) //HMPID digit class
+};//class AliHMPIDDigit
+