Changing once more (hopefully we get it correct this time...) the logic to trig the...
[u/mrichter/AliRoot.git] / ITS / AliITSsegmentation.h
index d1472fd..2f11127 100644 (file)
@@ -2,13 +2,17 @@
 #define ALIITSSEGMENTATION_H
 
 #include <TObject.h>
+#include "AliLog.h"
+#include "AliITSgeom.h"
 
-class TF1;
-class AliITSgeom;
+/* $Id$ */
+
+//----------------------------------------------
+//                                             -
+// ITS  segmentation virtual base class        -
+//                                             -
 //----------------------------------------------
-//
-// ITS  segmentation virtual base class
-//
+class TF1;
 class AliITSsegmentation :
 public TObject {
  public:
@@ -29,16 +33,19 @@ public TObject {
     virtual Int_t   GetNPads() const = 0;
     // Set layer
     virtual void SetLayer(Int_t) {MayNotUse("SetLayer");}
+    // Number of Chips
+    virtual Int_t    GetNumberOfChips() const {MayNotUse("GetNumberOfChips"); return 0;}
+    virtual Int_t    GetMaximumChipIndex() const {MayNotUse("GetNumberOfChips"); return 0;}
+    // Chip number from local coordinates
+    virtual Int_t    GetChipFromLocal(Float_t, Float_t) const {MayNotUse("GetChipFromLocal"); return 0;}
+    virtual Int_t    GetChipsInLocalWindow(Int_t* /*array*/, Float_t /*zmin*/, Float_t /*zmax*/, Float_t /*xmin*/, Float_t /*xmax*/) const {MayNotUse("GetChipsInLocalWindow"); return 0;}
+    // Chip number from channel number
+    virtual Int_t    GetChipFromChannel(Int_t, Int_t) const {MayNotUse("GetChipFromChannel"); return 0;}
+
     // Transform from real to cell coordinates
     virtual void    GetPadIxz(Float_t,Float_t,Int_t &,Int_t &) const = 0;
     // Transform from cell to real coordinates
     virtual void    GetPadCxz(Int_t,Int_t,Float_t &,Float_t &) const = 0;
-    // Transform from real global to local coordinates
-    virtual void    GetLocal(Int_t,Float_t *,Float_t *) const 
-                                                  {MayNotUse("GetLocal");}
-    // Transform from real local to global coordinates
-    virtual void    GetGlobal(Int_t,Float_t *,Float_t *) const 
-                                                  {MayNotUse("GetGlobal");}
     // Local transformation of real local coordinates -
     virtual void    GetPadTxz(Float_t &,Float_t &) const = 0;
     // Transformation from Geant cm detector center local coordinates
@@ -47,19 +54,29 @@ public TObject {
     // Transformation from detector segmentation/cell coordiantes starting
     // from (0,0) to Geant cm detector center local coordinates.
     virtual void    DetToLocal(Int_t,Int_t,Float_t &,Float_t &) const = 0;
+
+    // Transform from real global to local coordinates
+    void GetLocal(Int_t module,Float_t *g ,Float_t *l, AliITSgeom *geom) const {
+      if(geom) geom->GtoL(module,g,l);
+      else AliFatal("Pointer to ITS geometry class (AliITSgeom) is null\n");
+    }
+    // Transform from real local to global coordinates
+    void GetGlobal(Int_t module,Float_t *l ,Float_t *g, AliITSgeom *geom) const {
+      if(geom) geom->LtoG(module,l,g);
+      else AliFatal("Pointer to ITS geometry class (AliITSgeom) is null\n");
+    }
+
     // Initialisation
     virtual void Init() = 0;
     //
     // Get member data
     //
-    // Detector type geometry
-    virtual AliITSgeom* Geometry() const {return fGeom;}
     // Detector length
     virtual Float_t Dx() const {return fDx;}
     // Detector width
     virtual Float_t Dz() const {return fDz;}
     // Detector thickness
-    virtual Float_t Dy() const {return fDz;}
+    virtual Float_t Dy() const {return fDy;}
     // Cell size in x
     virtual Float_t Dpx(Int_t) const = 0;
     // Cell size in z 
@@ -97,12 +114,11 @@ public TObject {
                     //SDD: Drift distance of the 1/2detector (x axis)-microns
                     //SSD: Full length of the detector (x axis)- microns
     Float_t fDz;    //SPD: Full length of the detector (z axis)- microns
-                    //SDD: Length of half-detector (z axis) - microns
+                    //SDD: Full Length of the detector (z axis) - microns
                     //SSD: Full width of the detector (z axis)- microns
     Float_t fDy;    //SPD:  Full thickness of the detector (y axis) -um 
                     //SDD: Full thickness of the detector (y axis) - microns
                     //SSD: Full thickness of the detector (y axis) -um 
-    AliITSgeom *fGeom;  //! pointer to the geometry class
     TF1*       fCorr;   // correction function
 
     ClassDef(AliITSsegmentation,2) //Segmentation virtual base class