]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RICH/AliRICHSegmentationV1.cxx
ImpartOnEmc: negative phi now accepted
[u/mrichter/AliRoot.git] / RICH / AliRICHSegmentationV1.cxx
index 59d1b964f848a0589d0a5c4dd1e56b59901fd6ce..a15f8ba659c3253fcc94543a751a5a3864706e37 100644 (file)
 
 /*
   $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
 
@@ -56,10 +78,12 @@ Int_t AliRICHSegmentationV1::Sector(Float_t x, Float_t y)
 {
 
 // Calculate in which sector is the hit
-
+  
   fSector=-1;
   
-  if (x<-1.3)
+  //old numerical definition
+
+  /*if (x<-fDeadZone/2)
     {
       if (y>22.75)
        {
@@ -77,7 +101,7 @@ Int_t AliRICHSegmentationV1::Sector(Float_t x, Float_t y)
            fSector=4;
        }
     }
-  else if (x>1.3)
+  else if (x>fDeadZone/2)
     {
       if (y>22.75)
        {
@@ -94,7 +118,47 @@ Int_t AliRICHSegmentationV1::Sector(Float_t x, Float_t y)
          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);
@@ -113,39 +177,39 @@ void AliRICHSegmentationV1::GetPadI(Float_t x, Float_t y, Int_t &ix, Int_t &iy)
 
   //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);
@@ -175,7 +239,9 @@ GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
 
   Int_t sector=-1;
 
-  if (ix<=0)
+ // old numerical definition
+
+ /*if (ix<=0)
     {
       if (iy<=72)
        {
@@ -210,41 +276,82 @@ GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
          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);