]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSsegmentationSSD.h
Added new inline function SetITSgeom needed for alignment. New function
[u/mrichter/AliRoot.git] / ITS / AliITSsegmentationSSD.h
index f86e7b7e1eb7d97d16e2dd3940eeb50f25f99199..912682b7723e13980aeb9bea8cdb47702aa0b5f9 100644 (file)
@@ -17,8 +17,8 @@ public AliITSsegmentation {
 
 
     // Detector size: x,z,y 
-    virtual  void   SetDetSize
-          (Float_t p1=72960., Float_t p2=40000., Float_t p3= 300.) 
+    virtual void    SetDetSize(Float_t p1=72960.,Float_t p2=40000.,
+                              Float_t p3= 300.) 
                         {fDx=p1; fDz=p2; fDy=p3;}
 
     // Strip size  
@@ -28,23 +28,44 @@ public AliITSsegmentation {
     // Maximum number of strips along the two coordinates  
     virtual void    SetNPads(Int_t p1=768, Int_t dummy=1) 
                          {fNstrips=p1;}
+    // Returns the maximum number of cells (digits) posible
+    virtual Int_t   GetNPads(){return 2*fNstrips;}
 
 
     // Set stereo angles Pside-Nside 
     virtual void    SetAngles(Float_t pa=0.0175, Float_t na=0.0175) 
-                         {fStereoP=pa; fStereoN=na;}
+                         {fStereoPl5=pa; fStereoNl5=na;
+                        fStereoPl6=na; fStereoNl6=pa;}
 
+    virtual void    SetAnglesLay5(Float_t pa=0.0075, Float_t na=0.0275) 
+                         {fStereoPl5=pa; fStereoNl5=na;}
+
+    virtual void    SetAnglesLay6(Float_t pa=0.0275, Float_t na=0.0075) 
+                         {fStereoPl6=pa; fStereoNl6=na;}
+
+    // Set stereo angles Pside-Nside 
     // Transform from real coordinates to strips
-    virtual void    GetPadIxz
-    (Float_t x ,Float_t z ,Int_t   &iP,Int_t  &iN);
+    virtual void    GetPadIxz(Float_t x ,Float_t z ,Int_t   &iP,Int_t  &iN);
     // Transform from strips to real coordinates
-    virtual void    GetPadCxz
-    (Int_t iP, Int_t iN, Float_t &x , Float_t &z);
+    virtual void    GetPadCxz(Int_t iP, Int_t iN, Float_t &x , Float_t &z);
+    virtual void    GetPadTxz(Float_t &x , Float_t &z);
 
     // Transform from real global to local coordinates
     virtual void    GetLocal(Int_t module,Float_t *g ,Float_t *l) {}
     // Transform from real local to global coordinates
     virtual void    GetGlobal(Int_t module,Float_t *l ,Float_t *g) {}
+    // Transformation from Geant cm detector center local coordinates
+    // to detector P and N side strip numbers..
+    virtual void    LocalToDet(Float_t x,Float_t z,Int_t &iP,Int_t &iN);
+    // Transformation from detector segmentation/cell coordiantes starting
+    // from 0. iPN=0 for P side and 1 for N side strip. Returned is z=0.0
+    // and the corresponding x value..
+    virtual void    DetToLocal(Int_t ix,Int_t iPN,Float_t &x,Float_t &z);
+    // Given one P side strip and one N side strip, Returns kTRUE if they
+    // cross each other and the location of the two crossing strips and
+    // their correxlation matrix c[2][2].
+    virtual Bool_t  GetCrossing(Int_t iP,Int_t iN,Float_t &x,Float_t &z,
+                               Float_t c[2][2]);
 
     virtual void Init();
 
@@ -66,19 +87,26 @@ public AliITSsegmentation {
     virtual Int_t    Npz(){return 1;}
 
     // Angles : Pside stereo angle-Nside stereo angle
-    virtual void Angles(Float_t &aP,Float_t &aN) 
-                     {aP=fStereoP;aN=fStereoN;}
+     virtual void Angles(Float_t &aP,Float_t &aN);
+     virtual void SetLayer(Int_t l);
+     virtual Int_t GetLayer() const {return fLayer;}
 
   protected:
 
   Int_t      fNstrips;       // Number of strips in x 
-  Float_t    fStereoP;       // Stereo angle for Pside
-  Float_t    fStereoN;       // Stereo angle for Nside
+  Float_t    fStereoP;       // Stereo angle for Pside (rad)
+  Float_t    fStereoN;       // Stereo angle for Nside (rad)
   Float_t    fPitch;         // Pitch of the strips
   Float_t    fDz;            // Full width of the detector (z axis)- microns
   Float_t    fDx;            // Full length of the detector (x axis)- microns
   Float_t    fDy;            // Full thickness of the detector (y axis) -um 
   
+  Float_t    fStereoPl5;       // Stereo angle for Pside
+  Float_t    fStereoNl5;       // Stereo angle for Nside
+  Float_t    fStereoPl6;       // Stereo angle for Pside
+  Float_t    fStereoNl6;       // Stereo angle for Nside
+  Int_t      fLayer;
+
   AliITSgeom *fGeom;         //! pointer to the geometry class
   TF1*       fCorr;          // correction function