Consistent declarations needed on Alpha
[u/mrichter/AliRoot.git] / TRD / AliTRDgeometry.cxx
index 2e7b38063658cdf2c3deb95eaeb95a6aef16391f..0c3da12abe822b73d83f68e46da13c62c8285727 100644 (file)
 
 /*
 $Log$
+Revision 1.10  2001/05/07 08:08:05  cblume
+Update of TRD code
+
+Revision 1.9  2001/03/27 12:48:33  cblume
+Correct for volume overlaps
+
+Revision 1.8  2001/03/13 09:30:35  cblume
+Update of digitization. Moved digit branch definition to AliTRD
+
+Revision 1.7  2001/02/14 18:22:26  cblume
+Change in the geometry of the padplane
+
+Revision 1.6  2000/11/01 14:53:20  cblume
+Merge with TRD-develop
+
 Revision 1.1.4.7  2000/10/16 01:16:53  cblume
 Changed timebin 0 to be the one closest to the readout
 
@@ -117,7 +132,7 @@ ClassImp(AliTRDgeometry)
   // Thickness of the the material layers
   //
   const Float_t AliTRDgeometry::fgkSeThick = 0.02;  
-  const Float_t AliTRDgeometry::fgkRaThick = 4.8;  
+  const Float_t AliTRDgeometry::fgkRaThick = 4.78;  
   const Float_t AliTRDgeometry::fgkPeThick = 0.20;    
   const Float_t AliTRDgeometry::fgkMyThick = 0.005;
   const Float_t AliTRDgeometry::fgkXeThick = 3.5;
@@ -133,12 +148,12 @@ ClassImp(AliTRDgeometry)
   //
   // Position of the material layers
   //
-  const Float_t AliTRDgeometry::fgkSeZpos  = -4.1525
-  const Float_t AliTRDgeometry::fgkRaZpos  = -1.7425;
+  const Float_t AliTRDgeometry::fgkSeZpos  = -4.14
+  const Float_t AliTRDgeometry::fgkRaZpos  = -1.74;
   const Float_t AliTRDgeometry::fgkPeZpos  =  0.0000;
-  const Float_t AliTRDgeometry::fgkMyZpos  =  0.6600;
-  const Float_t AliTRDgeometry::fgkDrZpos  =  2.1625;
-  const Float_t AliTRDgeometry::fgkAmZpos  =  4.1125;
+  const Float_t AliTRDgeometry::fgkMyZpos  =  0.6550;
+  const Float_t AliTRDgeometry::fgkDrZpos  =  2.1600;
+  const Float_t AliTRDgeometry::fgkAmZpos  =  3.9100;
   const Float_t AliTRDgeometry::fgkCuZpos  = -1.3370; 
   const Float_t AliTRDgeometry::fgkSuZpos  =  0.0000;
   const Float_t AliTRDgeometry::fgkFeZpos  =  1.3053;
@@ -201,14 +216,19 @@ void AliTRDgeometry::Init()
   //     +----------------------------+      +------>
   //                                             z
   //                                             
-  // IMPORTANT: time bin 0 is now the one closest to the readout !!!
+  // IMPORTANT: time bin 0 is now the first one in the drift region 
+  // closest to the readout !!!
   //
 
   // The pad column (rphi-direction)  
-  SetColPadSize(1.0);
+  SetNColPad(96);
+
+  // The number of time bins. Default is 100 ns timbin size
+  SetNTimeBin(15);
 
-  // The time bucket
-  SetTimeBinSize(0.1);
+  // Additional time bins before and after the drift region.
+  // Default is to only sample the drift region
+  SetExpandTimeBin(0,0);
 
   // The rotation matrix elements
   Float_t phi = 0;
@@ -228,30 +248,31 @@ void AliTRDgeometry::Init()
 }
 
 //_____________________________________________________________________________
-void AliTRDgeometry::SetColPadSize(Float_t size)
+void AliTRDgeometry::SetNColPad(const Int_t npad)
 {
   //
-  // Redefines the pad size in column direction
+  // Redefines the number of pads in column direction
   //
 
-  fColPadSize = size;
   for (Int_t iplan = 0; iplan < fgkNplan; iplan++) {
-    fColMax[iplan] = 1 + TMath::Nint((fCwidth[iplan] - 2. * fgkCcthick) 
-                                                     / fColPadSize - 0.5);
-    fCol0[iplan]   = -fCwidth[iplan]/2. + fgkCcthick;
+    fColMax[iplan]     = npad;
+    fColPadSize[iplan] = (fCwidth[iplan] - 2. * fgkCcthick) / fColMax[iplan];
+    fCol0[iplan]       = -fCwidth[iplan]/2. + fgkCcthick;
   }
 
 }
 
 //_____________________________________________________________________________
-void AliTRDgeometry::SetTimeBinSize(Float_t size)
+void AliTRDgeometry::SetNTimeBin(const Int_t nbin)
 {
   //
-  // Redefines the time bin size
+  // Redefines the number of time bins in the drift region.
+  // The time bin width is defined by the length of the
+  // drift region divided by <nbin>.
   //
 
-  fTimeBinSize = size;
-  fTimeMax     = 1 + TMath::Nint(fgkDrThick / fTimeBinSize - 0.5);
+  fTimeMax     = nbin;
+  fTimeBinSize = fgkDrThick / ((Float_t) fTimeMax);
   for (Int_t iplan = 0; iplan < fgkNplan; iplan++) {
     fTime0[iplan]  = fgkRmin + fgkCcframe/2. + fgkDrZpos + 0.5 * fgkDrThick
                              + iplan * (fgkCheight + fgkCspace);
@@ -468,9 +489,9 @@ Bool_t AliTRDgeometry::Local2Global(Int_t iplan, Int_t icham, Int_t isect
   Float_t  rot[3];
 
   // calculate (x,y,z) position in rotated chamber
-  rot[0] = time0 + timeSlice * fTimeBinSize;
-  rot[1] = col0  + padCol    * fColPadSize;
-  rot[2] = row0  + padRow    * fRowPadSize;
+  rot[0] = time0 - (timeSlice - fTimeBefore) * fTimeBinSize;
+  rot[1] = col0  + padCol                    * fColPadSize[iplan];
+  rot[2] = row0  + padRow                    * fRowPadSize[iplan][icham][isect];
 
   // Rotate back to original position
   return RotateBack(idet,rot,global);
@@ -516,7 +537,7 @@ Bool_t AliTRDgeometry::RotateBack(Int_t d, Float_t *rot, Float_t *pos) const
 }
 
 //_____________________________________________________________________________
-Int_t AliTRDgeometry::GetDetector(Int_t p, Int_t c, Int_t s) const
+Int_t AliTRDgeometry::GetDetector(const Int_t p, const Int_t c, const Int_t s) const
 {
   //
   // Convert plane / chamber / sector into detector number
@@ -527,7 +548,7 @@ Int_t AliTRDgeometry::GetDetector(Int_t p, Int_t c, Int_t s) const
 }
 
 //_____________________________________________________________________________
-Int_t AliTRDgeometry::GetPlane(Int_t d) const
+Int_t AliTRDgeometry::GetPlane(const Int_t d) const
 {
   //
   // Reconstruct the plane number from the detector number
@@ -538,7 +559,7 @@ Int_t AliTRDgeometry::GetPlane(Int_t d) const
 }
 
 //_____________________________________________________________________________
-Int_t AliTRDgeometry::GetChamber(Int_t d) const
+Int_t AliTRDgeometry::GetChamber(const Int_t d) const
 {
   //
   // Reconstruct the chamber number from the detector number
@@ -549,7 +570,7 @@ Int_t AliTRDgeometry::GetChamber(Int_t d) const
 }
 
 //_____________________________________________________________________________
-Int_t AliTRDgeometry::GetSector(Int_t d) const
+Int_t AliTRDgeometry::GetSector(const Int_t d) const
 {
   //
   // Reconstruct the sector number from the detector number