]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSsegmentationSDD.h
update for the NUA
[u/mrichter/AliRoot.git] / ITS / AliITSsegmentationSDD.h
index 7af90799a00e8268c5ad5276c6bb6d31d68c5f02..dacd449e5bda047afc4f9ed70dc6e1631aa48294 100644 (file)
@@ -13,10 +13,9 @@ public AliITSsegmentation {
  public:
 
 
-    AliITSsegmentationSDD();
+    AliITSsegmentationSDD(Option_t *opt="");
     AliITSsegmentationSDD(const AliITSsegmentationSDD &source);
     AliITSsegmentationSDD& operator=(const AliITSsegmentationSDD &source);
-    AliITSsegmentationSDD(AliITSgeom *gm);
     virtual ~AliITSsegmentationSDD(){}
 
     // Set Detector Segmentation Parameters
@@ -41,11 +40,8 @@ public AliITSsegmentation {
     // Transform from real local to cell coordinates
     virtual void    GetPadIxz(Float_t x ,Float_t z ,Int_t   &ix,Int_t   &iz) const;
     // Transform from cell to real local coordinates
-    virtual void    GetPadCxz(Int_t   ix,Int_t   iz,Float_t &x ,Float_t &z ) const;
-    // Transform from real global to local coordinates
-    virtual void    GetLocal(Int_t module,Float_t *g ,Float_t *l) const;
-    // Transform from real local to global coordinates
-    virtual void    GetGlobal(Int_t module,Float_t *l ,Float_t *g) const;
+    virtual void    GetPadCxz(Int_t   ix,Int_t   iz,Float_t &x ,Float_t &z ) const;    
+
     // Get anode and time bucket as floats - numbering from 0
     virtual void    GetPadTxz(Float_t &x ,Float_t &z) const;
     // Transformation from Geant cm detector center local coordinates
@@ -55,8 +51,35 @@ public AliITSsegmentation {
     // from (0,0) to Geant cm detector center local coordinates.
     virtual void    DetToLocal(Int_t ix,Int_t iz,Float_t &x,Float_t &z) const;
     //
+    virtual Float_t GetAnodeFromLocal(Float_t x,Float_t z) const;
+    virtual Int_t   GetSideFromLocalX(Float_t xloc) const {
+      if(xloc>0) return 0;   // left side (channel 0) positive xloc
+      else return 1;         // right side (channel 1) negative xloc
+    }
+    virtual Float_t GetLocalZFromAnode(Int_t nAnode) const;
+    virtual Float_t GetLocalZFromAnode(Float_t zAnode) const;
+    virtual Float_t GetDriftTimeFromTb(Int_t tb) const {
+      Float_t xtb=(Float_t)tb+0.5;
+      return GetDriftTimeFromTb(xtb);
+    }
+    virtual Float_t GetDriftTimeFromTb(Float_t xtb) const {
+      return xtb*fTimeStep;
+    }
+    virtual Int_t    GetNumberOfChips() const {
+      return fgkNchipsPerHybrid;
+    }
+    virtual Int_t    GetMaximumChipIndex() const{
+      return fgkNchipsPerHybrid*2-1;
+    }
+    virtual Int_t    GetChipFromLocal(Float_t xloc, Float_t zloc) const;
+    virtual Int_t    GetChipsInLocalWindow(Int_t* array, Float_t zmin, Float_t zmax, Float_t xmin, Float_t xmax) const;
+      
+
+    virtual Int_t    GetChipFromChannel(Int_t ix, Int_t iz) const; 
+
     // Initialisation
     virtual void Init();
+
     //
     // Get member data
     //
@@ -84,6 +107,7 @@ public AliITSsegmentation {
 // Print default parameters (static const data members, if any)
     virtual void PrintDefaultParameters() const;           
 
+    static Int_t GetNAnodesPerHybrid()  { return fgkHalfNanodesDefault;}
   protected:
 
     virtual void Copy(TObject &obj) const;
@@ -101,8 +125,11 @@ public AliITSsegmentation {
     static const Float_t fgkClockDefault; //Default value for the clock freq.
     static const Int_t fgkHalfNanodesDefault; //Default value for fNanodes/2
     static const Int_t fgkNsamplesDefault; //Default value for fNsamples
-
-    ClassDef(AliITSsegmentationSDD,4) // SDD segmentation
+    static const Int_t fgkNchipsPerHybrid;    //number of chips per hybrid
+    static const Int_t fgkNanodesPerChip;    //number of chips per hybrid
+    static const Float_t fgkCm2Micron;  // conversion from cm to micron
+    static const Float_t fgkMicron2Cm;  // conversion from micron to cm
+    ClassDef(AliITSsegmentationSDD,6) // SDD segmentation
 };
 
 #endif