#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:
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
// 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
//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