New methods GetNumberOfChips, GetChipFromLocal, GetChipFromChannel (G. Bruno)
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 13 Mar 2008 12:49:53 +0000 (12:49 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 13 Mar 2008 12:49:53 +0000 (12:49 +0000)
ITS/AliITSsegmentationSPD.cxx
ITS/AliITSsegmentationSPD.h

index 626551e..c232fe5 100644 (file)
@@ -13,7 +13,7 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/* $Id:$ */
+/* $Id$ */
 #include <TGeoManager.h>
 #include <TGeoVolume.h>
 #include <TGeoBBox.h>
@@ -24,6 +24,8 @@
 // pixels                                           //
 //                                                  //
 //////////////////////////////////////////////////////
+const Int_t AliITSsegmentationSPD::fgkNchipsPerModule = 5;
+const Int_t AliITSsegmentationSPD::fgkNcolumnsPerChip = 32;
 ClassImp(AliITSsegmentationSPD)
 
 //_____________________________________________________________________________
@@ -279,10 +281,13 @@ void AliITSsegmentationSPD::Init300(){
 
 //------------------------------
 void AliITSsegmentationSPD::Init(){
-  // Initialize infromation for 6 read out chip 425X50 micron pixel SPD 
-  // detectors. This chip is 150 microns thick by 1.28 cm in x by 8.375 cm
-  // long. It has 256  50 micron pixels in x and 197 mostly 425 micron size
-  // pixels in z. The two pixels between each readout chip are 625 microns long.
+// Initialize information for 5 read out chip 425X50 micron pixel SPD 
+// detectors (ladder).
+// Each readout chip is 150 micron thick.
+// The ladder sensor is 200 micron thick by 1.28 cm in x by 6.96 cm in z.
+// It has 256 50 micron pixels in x and 160 mostly 425 micron pixels in z.
+// The two pixels at boundary between two adjacent readout chips are 
+// 625 micron long.
 
   Float_t bx[256],bz[280];
   Int_t i;
@@ -511,3 +516,24 @@ void AliITSsegmentationSPD::CellBoundries(Int_t ix,Int_t iz,
     zu = z;
     return; // Found x and z, return.
 }
+//----------------------------------------------------------------------
+Int_t AliITSsegmentationSPD::GetChipFromChannel(Int_t, Int_t iz) const {
+  // returns chip number (in range 0-4) starting from channel number
+  if(iz>=fNpz  || iz<0 ){
+    AliWarning("Bad cell number");
+    return -1;
+  }
+  Int_t theChip=iz/fgkNcolumnsPerChip;
+  return theChip;
+}
+//----------------------------------------------------------------------
+Int_t AliITSsegmentationSPD::GetChipFromLocal(Float_t, Float_t zloc) const {
+  // returns chip number (in range 0-4) starting from local coordinates
+  Int_t ix0,iz;
+  if (!LocalToDet(0,zloc,ix0,iz)) {
+    AliWarning("Bad local coordinate");
+    return -1;
+  } 
+  return GetChipFromChannel(ix0,iz);
+}
+//----------------------------------------------------------------------
index 8decc2a..de9f1e9 100644 (file)
@@ -45,6 +45,10 @@ public AliITSsegmentation {
     virtual void CellBoundries(Int_t ix,Int_t iz,Double_t &xl,Double_t &xu,
                               Double_t &zl,Double_t &zu) const;
     //
+    virtual Int_t    GetNumberOfChips() const {return fgkNchipsPerModule;}
+    virtual Int_t    GetChipFromLocal(Float_t, Float_t zloc) const;
+    virtual Int_t    GetChipFromChannel(Int_t, Int_t iz) const;
+    //
     // Initialisation
     virtual void Init();
     virtual void Init300();
@@ -75,6 +79,8 @@ public AliITSsegmentation {
     Int_t   fNpz;           // Number of pixels in z
     Float_t fCellSizeX[256];// Size for each pixel in x -microns
     Float_t fCellSizeZ[280];// Size for each pixel in z -microns
+    static const Int_t fgkNchipsPerModule;    //number of chips per ladder (5)
+    static const Int_t fgkNcolumnsPerChip;    //number of columns per chip (32)
 
  private:
 
@@ -85,7 +91,7 @@ public AliITSsegmentation {
     Float_t ZFromCol(Int_t col) const;
     Float_t ZpitchFromCol(Int_t col) const;
 
-  ClassDef(AliITSsegmentationSPD,2) //Segmentation class for SPD 
+  ClassDef(AliITSsegmentationSPD,3) //Segmentation class for SPD 
 
 };