/*
$Log$
+ Revision 1.8 2001/11/08 19:30:43 dibari
+ initialising of pad size added to ctor
+
+ Revision 1.7 2001/02/13 20:13:20 jbarbosa
+ Moved setting of variables to constructor. Init is now responsible for calculating padplane dimensions.
+ Corrected all calculations for padplane definition.
+
+ Revision 1.6 2001/01/24 21:00:29 jbarbosa
+ Redefinition of sectors and pad coordinates/real coordinates transformations.
+
+ Revision 1.5 2001/01/22 21:37:39 jbarbosa
+ Added parametrised definiton sectors
+
+ Revision 1.4 2001/01/22 21:35:39 jbarbosa
+ Added deadzone size to data members
+
+ Revision 1.3 2000/10/03 21:44:09 morsch
+ Use AliSegmentation and AliHit abstract base classes.
+
Revision 1.2 2000/10/02 15:48:55 jbarbosa
Fixed coding conventions.
#include "AliRICHSegmentationV1.h"
-
-//--------------------------------------------------------
ClassImp(AliRICHSegmentationV1)
-//________________________________________________________________________________
AliRICHSegmentationV1::AliRICHSegmentationV1()
{
// Default constructor for AliRICHSegmantionV1 (with dead zones)
- fNpx=160;
- fNpy=144;
- //fNpx=80;
- //fNpy=48;
- fSector=-1;
+ fNpx=144; // number of pads along X direction
+ fNpy=160; // number of pads along Y direction
+ fDeadZone=3.0; // space between CsI photocathods in cm
+ fDpx=0.84; // pad width in cm
+ fDpy=0.80; // pad heights in cm
+ fWireD=0.84/2;
+ fSector=-1;
+ Init(0); // ??? remove 0
}
-//________________________________________________________________________________
-AliRICHSegmentationV1::~AliRICHSegmentationV1()
-{
-// Destructor
+void AliRICHSegmentationV1::Init(Int_t id)
+{
+// Recalculates all the values after some of them have been changed
-}
+ Float_t csi_length = fNpy*fDpy + fDeadZone;
+ Float_t csi_width = fNpx*fDpx + 2*fDeadZone;
+ fPadPlane_Width = (csi_width - 2*fDeadZone)/3;
+ fPadPlane_Length = (csi_length - fDeadZone)/2;
+}
// calculate sector from x-y coordinates
{
// Calculate in which sector is the hit
-
+
fSector=-1;
- if (x<-1.3)
+ //old numerical definition
+
+ /*if (x<-fDeadZone/2)
{
if (y>22.75)
{
fSector=4;
}
}
- else if (x>1.3)
+ else if (x>fDeadZone/2)
{
if (y>22.75)
{
if (y>(-63.1))
fSector=5;
}
+ }*/
+
+ //Parametrized definition
+
+ if (y<-fDeadZone/2)
+ {
+ if (x> fPadPlane_Width/2 +fDeadZone)
+ {
+ if ( x<fPadPlane_Width/2 +fDeadZone + fPadPlane_Width)
+ fSector=0;
+ }
+ if (x< fPadPlane_Width/2)
+ {
+ if (x> -( fPadPlane_Width/2))
+ fSector=2;
+ }
+ if (x< -( fPadPlane_Width/2 +fDeadZone))
+ {
+ if (x> -( fPadPlane_Width/2 +fDeadZone + fPadPlane_Width))
+ fSector=4;
+ }
}
+ else if (y>fDeadZone/2)
+ {
+ if (x> fPadPlane_Width/2 +fDeadZone)
+ {
+ if (x< fPadPlane_Width/2 +fDeadZone + fPadPlane_Width)
+ fSector=1;
+ }
+ if (x< fPadPlane_Width/2)
+ {
+ if (x> -( fPadPlane_Width/2))
+ fSector=3;
+ }
+ if (x< -( fPadPlane_Width/2 +fDeadZone))
+ {
+ if (x> -( fPadPlane_Width/2 +fDeadZone + fPadPlane_Width))
+ fSector=5;
+ }
+ }
+
//if (fSector==2)
//printf("x:%f, y:%f, sector:%d\n",x,y,fSector);
//printf("Sector: %d\n",sector);
-
if (sector==0)
{
//ix = (x>0)? Int_t(x/fDpx)+1 : Int_t(x/fDpx);
//iy = (y>0)? Int_t(y/fDpy)+1 : Int_t(y/fDpy);
- ix = Int_t (x/fDpx+1.3);
- iy = Int_t (y/fDpy-2.6);
+ ix = Int_t ((x-fDeadZone)/fDpx);
+ iy = Int_t ((y+fDeadZone/2)/fDpy)-1;
}
if (sector==1)
{
- ix = Int_t (x/fDpx-1.3);
- iy = Int_t (y/fDpy-2.6);
+ ix = Int_t ((x-fDeadZone)/fDpx);
+ iy = Int_t ((y-fDeadZone/2)/fDpy);
}
if (sector==2)
{
- ix = Int_t (x/fDpx+1.3);
- iy = Int_t (y/fDpy);
+ ix = (x>=0)? ix = Int_t (x/fDpx) : ix = Int_t (x/fDpx)-1;
+ iy = Int_t ((y+fDeadZone/2)/fDpy)-1;
}
if (sector==3)
{
- ix = Int_t (x/fDpx-1.3);
- iy = Int_t (y/fDpy);
+ ix = (x>=0)? ix = Int_t (x/fDpx) : ix = Int_t (x/fDpx)-1;
+ iy = Int_t ((y-fDeadZone/2)/fDpy);
}
if (sector==4)
{
- ix = Int_t (x/fDpx+1.3);
- iy = Int_t (y/fDpy+2.6);
+ ix = Int_t ((x+fDeadZone)/fDpx)-1;
+ iy = Int_t ((y+fDeadZone/2)/fDpy)-1;
}
if (sector==5)
{
- ix = Int_t (x/fDpx-1.3);
- iy = Int_t (y/fDpy+2.6);
+ ix = Int_t ((x+fDeadZone)/fDpx)-1;
+ iy = Int_t ((y-fDeadZone/2)/fDpy);
}
+
//ix = Int_t (x/fDpx);
//iy = Int_t (y/fDpy);
Int_t sector=-1;
- if (ix<=0)
+ // old numerical definition
+
+ /*if (ix<=0)
{
if (iy<=72)
{
if (iy>-72)
sector=5;
}
- }
+ }*/
+ // parametrised definition
+
+ Float_t padplane_width = fNpx/3;
+
+ if (iy<0)
+ {
+ if (ix < fNpx/2)
+ {
+ if (ix >= padplane_width/2)
+ sector=0;
+ }
+ if (ix< padplane_width/2)
+ {
+ if (ix >= -(padplane_width/2))
+ sector=2;
+ }
+ if (ix >= -(fNpx/2))
+ {
+ if (ix < -(padplane_width/2))
+ sector=4;
+ }
+ }
+ if (iy>=0)
+ {
+ if (ix < fNpx/2)
+ {
+ if (ix >= padplane_width/2)
+ sector=1;
+ }
+ if (ix< padplane_width/2)
+ {
+ if (ix >= -(padplane_width/2))
+ sector=3;
+ }
+ if (ix >= -(fNpx/2))
+ {
+ if (ix < -(padplane_width/2))
+ sector=5;
+ }
+ }
if (sector==0)
{
//x = (ix>0) ? Float_t(ix*fDpx)-fDpx/2. : Float_t(ix*fDpx)-fDpx/2.;
//y = (iy>0) ? Float_t(iy*fDpy)-fDpy/2. : Float_t(iy*fDpy)-fDpy/2.;
- x = Float_t(ix*fDpx)-fDpx/2.-1.3;
- y = Float_t(iy*fDpy)-fDpy/2.+2.6;
+ x = Float_t(ix)*fDpx+fDpx/2+fDeadZone;
+ y = Float_t(iy)*fDpy+fDpy/2-fDeadZone/2;
}
if (sector==1)
{
- x = Float_t(ix*fDpx)-fDpx/2.+1.3;
- y = Float_t(iy*fDpy)-fDpy/2.+2.6;
+ x = Float_t(ix)*fDpx+fDpx/2+fDeadZone;
+ y = Float_t(iy)*fDpy+fDpy/2+fDeadZone/2;
}
if (sector==2)
{
- x = Float_t(ix*fDpx)-fDpx/2.-1.3;
- y = Float_t(iy*fDpy)-fDpy/2.;
+ x = (ix>=0) ? x = Float_t(ix)*fDpx+fDpx/2 : x = Float_t(ix)*fDpx+fDpx/2;
+ y = Float_t(iy)*fDpy+fDpy/2-fDeadZone/2;
}
if (sector==3)
{
- x = Float_t(ix*fDpx)-fDpx/2.+1.3;
- y = Float_t(iy*fDpy)-fDpy/2.;
+ x = (ix>=0) ? x = Float_t(ix)*fDpx+fDpx/2 : x = Float_t(ix)*fDpx+fDpx/2;
+ y = Float_t(iy)*fDpy+fDpy/2+fDeadZone/2;
}
if (sector==4)
{
- x = Float_t(ix*fDpx)-fDpx/2.-1.3;
- y = Float_t(iy*fDpy)-fDpy/2.-2.6;
+ x = Float_t(ix)*fDpx+fDpx/2-fDeadZone;
+ y = Float_t(iy)*fDpy+fDpy/2-fDeadZone/2;
}
if (sector==5)
{
- x = Float_t(ix*fDpx)-fDpx/2.+1.3;
- y = Float_t(iy*fDpy)-fDpy/2.-2.6;
+ x = Float_t(ix)*fDpx+fDpx/2-fDeadZone;
+ y = Float_t(iy)*fDpy+fDpy/2+fDeadZone/2;
}
+
//if (sector==2)
//printf("fSector:%d x:%f y:%f\n",fSector,x,y);