ROOT logo
AliRoot » ITS » AliITSgeom

class AliITSgeom: public TObject

ITS geometry manipulation routines.
Created April 15 1999.
version: 0.0.0
By: Bjorn S. Nilsen
version: 0.0.1
Updated May 27 1999.
Added Cylindrical random and global based changes.

Modified and added functions Feb. 7 2006

Function Members (Methods)

public:
AliITSgeom()
AliITSgeom(const AliITSgeom& source)
AliITSgeom(Int_t itype, Int_t nlayers, const Int_t* nlads, const Int_t* ndets, Int_t nmods)
virtual~AliITSgeom()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
voidCreateMatrix(Int_t mod, Int_t lay, Int_t lad, Int_t det, AliITSDetector idet, const Double_t* tran, const Double_t* rot)
virtual voidTObject::Delete(Option_t* option = "")MENU
voidDetLToTrackingV2(Int_t md, Float_t xin, Float_t zin, Float_t& yout, Float_t& zout) const
Double_tDistance(Int_t index, const Double_t* g) const
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
voidGetAngles(Int_t index, Double_t* ang) const
voidGetAngles(Int_t index, Float_t& rx, Float_t& ry, Float_t& rz) const
voidGetAngles(Int_t lay, Int_t lad, Int_t det, Float_t& rx, Float_t& ry, Float_t& rz) const
voidGetCenterThetaPhi(Int_t lay, Int_t lad, Int_t det, TVector& x) const
const char*GetDetectorTypeName(Int_t index) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
voidGetGeantAngles(Int_t index, Double_t* ang) const
AliITSgeomMatrix*GetGeomMatrix(Int_t index)
AliITSgeomMatrix*GetGeomMatrix(Int_t index) const
voidGetGlobalNormal(Int_t index, Double_t* n)
virtual const char*TObject::GetIconName() const
Int_tGetIndexMax() const
Int_tGetLastDet(Int_t dtype) const
Int_tGetLastSDD() const
Int_tGetLastSPD() const
Int_tGetLastSSD() const
voidGetModuleId(Int_t index, Int_t& lay, Int_t& lad, Int_t& det) const
Int_tGetModuleIndex(const Int_t* id) const
Int_tGetModuleIndex(Int_t lay, Int_t lad, Int_t det) const
AliITSDetectorGetModuleType(Int_t index) const
const char*GetModuleTypeName(Int_t index) const
virtual const char*TObject::GetName() const
Int_tGetNdetectors(Int_t lay) const
Int_tGetNDetTypes() const
Int_tGetNDetTypes(Int_t& max) const
Int_tGetNDetTypes(TArrayI& maxs, AliITSDetector* types) const
Int_tGetNearest(const Double_t* g, Int_t lay = 0) const
voidGetNearest27(const Double_t* g, Int_t* n, Int_t lay = 0) const
Int_tGetNladders(Int_t lay) const
Int_tGetNlayers() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
voidGetRotMatrix(Int_t index, Double_t** mat) const
voidGetRotMatrix(Int_t index, Double_t* mat) const
voidGetRotMatrix(Int_t index, Float_t* mat) const
voidGetRotMatrix(Int_t lay, Int_t lad, Int_t det, Float_t* mat) const
voidGetRotMatrix(Int_t lay, Int_t lad, Int_t det, Double_t* mat) const
Int_tGetStartDet(Int_t dtype) const
Int_tGetStartSDD() const
Int_tGetStartSPD() const
Int_tGetStartSSD() const
virtual const char*TObject::GetTitle() const
voidGetTrans(Int_t index, Double_t* t) const
voidGetTrans(Int_t index, Float_t& x, Float_t& y, Float_t& z) const
voidGetTrans(Int_t lay, Int_t lad, Int_t det, Float_t& x, Float_t& y, Float_t& z) const
voidGetTransCyln(Int_t index, Double_t* t) const
voidGetTransCyln(Int_t index, Float_t& x, Float_t& y, Float_t& z) const
voidGetTransCyln(Int_t lay, Int_t lad, Int_t det, Float_t& x, Float_t& y, Float_t& z) const
Int_tGetTransformationType() const
virtual UInt_tTObject::GetUniqueID() const
voidGtoL(const Int_t* id, const Float_t* g, Float_t* l) const
voidGtoL(Int_t index, const Float_t* g, Float_t* l) const
voidGtoL(const Int_t* id, const Double_t* g, Double_t* l) const
voidGtoL(Int_t index, const Double_t* g, Double_t* l) const
voidGtoL(Int_t lay, Int_t lad, Int_t det, const Float_t* g, Float_t* l) const
voidGtoL(Int_t lay, Int_t lad, Int_t det, const Double_t* g, Double_t* l) const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
voidInit(Int_t itype, Int_t nlayers, const Int_t* nlads, const Int_t* ndets, Int_t mods)
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tIsGeantToDisplaced() const
Bool_tIsGeantToGeant() const
Bool_tIsGeantToTracking() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AliITSgeom&operator=(const AliITSgeom& source)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
voidPrintData(FILE* fp, Int_t lay, Int_t lad, Int_t det) const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetByAngles(Int_t index, const Double_t* a)
voidSetByAngles(Int_t index, Float_t rx, Float_t ry, Float_t rz)
voidSetByAngles(Int_t lay, Int_t lad, Int_t det, Float_t rx, Float_t ry, Float_t rz)
voidSetByGeantAngles(Int_t index, const Double_t* ang)
voidSetByGeantAngles(const Int_t* id, const Double_t* ang)
voidSetByGeantAngles(Int_t lay, Int_t lad, Int_t det, const Double_t* ang)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetRotMatrix(Int_t index, const Double_t* mat)
voidSetTrans(Int_t index, Double_t* x)
voidSetTrans(Int_t lay, Int_t lad, Int_t det, Float_t x, Float_t y, Float_t z)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
voidTrackingV2ToDetL(Int_t md, Float_t yin, Float_t zin, Float_t& xout, Float_t& zout) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

private:
TObjArrayfGmStructure of translation. and rotation.
TArrayIfNdetArray of the number of detector/ladder(layer)
TArrayIfNladArray of the number of ladders/layer(layer)
Int_tfNlayersThe number of layers.
Int_tfNmodulesThe total number of modules
Int_tfTransFlag to keep track of which transformation
TStringfVersionTransformation version.

Class Charts

Inheritance Chart:
TObject
AliITSgeom

Function documentation

AliITSgeom()
     The default constructor for the AliITSgeom class. It, by default,
 sets fNlayers to zero and zeros all pointers.
 Do not allocate anything zero everything.
 Inputs:
    none.
 Outputs:
    none.
 Return:
    a zeroed AliITSgeom object.
AliITSgeom(Int_t itype, Int_t nlayers, const Int_t* nlads, const Int_t* ndets, Int_t nmods)
     A simple constructor to set basic geometry class variables
 Inputs:
      Int_t itype   the type of transformation kept.
                    bit 0 => Standard GEANT
                    bit 1 => ITS tracking
                    bit 2 => A change in the coordinate system
                    has been made. others are still to be defined
                    as needed.
      Int_t nlayers The number of ITS layers also set the size of
                    the arrays
      Int_t *nlads  an array of the number of ladders for each
                    layer. This array must be nlayers long.
      Int_t *ndets  an array of the number of detectors per ladder
                    for each layer. This array must be nlayers long.
      Int_t mods    The number of modules. Typically the sum of all the
                    detectors on every layer and ladder.
 Outputs:
     none
 Return:
     A properly inilized AliITSgeom object.
void Init(Int_t itype, Int_t nlayers, const Int_t* nlads, const Int_t* ndets, Int_t mods)
     A simple Inilizer to set basic geometry class variables
 Inputs:
      Int_t itype   the type of transformation kept.
                    bit 0 => Standard GEANT
                    bit 1 => ITS tracking
                    bit 2 => A change in the coordinate system
                    has been made. others are still to be defined
                    as needed.
      Int_t nlayers The number of ITS layers also set the size of
                    the arrays
      Int_t *nlads  an array of the number of ladders for each
                    layer. This array must be nlayers long.
      Int_t *ndets  an array of the number of detectors per ladder
                    for each layer. This array must be nlayers long.
      Int_t mods    The number of modules. Typically the sum of all the
                    detectors on every layer and ladder.
 Outputs:
     none
 Return:
     A properly inilized AliITSgeom object.
void CreateMatrix(Int_t mod, Int_t lay, Int_t lad, Int_t det, AliITSDetector idet, const Double_t* tran, const Double_t* rot)
 Given the translation vector tran[3] and the rotation matrix rot[1],
 this function creates and adds to the TObject Array fGm the
 AliITSgeomMatrix object.
 The rot[10] matrix is set up like:
   / rot[0]  rot[1]  rot[2] \
    //  |  rot[3]  rot[4]  rot[5]  |
    //   \ rot[6]  rot[7]  rot[8] /  if(rot[9]!=0) then the Identity matrix
    // is used regardless of the values in rot[0]-rot[8].

 Inputs:
    Int_t           mod     The module number. The location in TObjArray
    Int_t           lay     The layer where this module is
    Int_t           lad     On which ladder this module is
    Int_t           det     Which detector on this ladder this module is
    AliITSDetector idet     The type of detector see AliITSgeom.h
    Double_t       tran[3]  The translation vector
    Double_t       rot[10]  The rotation matrix.
 Outputs:
    none
 Return:
    none.
~AliITSgeom()
     The destructor for the AliITSgeom class. If the arrays fNlad,
 fNdet, or fGm have had memory allocated to them, there pointer values
 are non zero, then this memory space is freed and they are set
 to zero. In addition, fNlayers is set to zero. The destruction of
 Inputs:
    none.
 Outputs:
    none.
 Return:
    none.
AliITSgeom(const AliITSgeom& source)
 translation and rotation.
     The copy constructor for the AliITSgeom class. It calls the
 = operator function. See the = operator function for more details.
 Inputs:
     AliITSgeom &source  The AliITSgeom class with which to make this
                         a copy of.
 Outputs:
     none.
 Return:
     none.
AliITSgeom& operator=(const AliITSgeom& source)
     The = operator function for the AliITSgeom class. It makes an
 independent copy of the class in such a way that any changes made
 to the copied class will not affect the source class in any way.
 This is required for many ITS alignment studies where the copied
 class is then modified by introducing some misalignment.
 Inputs:
     AliITSgeom &source  The AliITSgeom class with which to make this
                         a copy of.
 Outputs:
     none.
 Return:
     *this The a new copy of source.
Int_t GetModuleIndex(Int_t lay, Int_t lad, Int_t det) const
      This routine computes the module index number from the layer,
 ladder, and detector numbers. The number of ladders and detectors
 per layer is determined when this geometry package is constructed,
 see AliITSgeom(const char *filename) for specifics.
 Inputs:
    Int_t lay  The layer number. Starting from 1.
    Int_t lad  The ladder number. Starting from 1.
    Int_t det  The detector number. Starting from 1.
 Outputs:
    none.
 Return:
    the module index number, starting from zero.
void GetModuleId(Int_t index,Int_t &lay,Int_t &lad,Int_t &det)
      This routine computes the layer, ladder and detector number
 given the module index number. The number of ladders and detectors
 per layer is determined when this geometry package is constructed,
 see AliITSgeom(const char *filename) for specifics.
 Inputs:
     Int_t index  The module index number, starting from zero.
 Outputs:
     Int_t lay    The layer number. Starting from 1.
     Int_t lad    The ladder number. Starting from 1.
     Int_t det    The detector number. Starting from 1.
 Return:
     none.
Int_t GetNDetTypes(Int_t& max) const
 Finds and returns the number of detector types used and the
 maximum detector type value. Only counts id >=0 (no undefined
 values. See AliITSgeom.h for list of AliITSDetecor enumerated types.
 Inputs:
    none.
 Outputs:
    The maximum detector type used
 Return:
    The number of detector types used
Int_t GetNDetTypes(TArrayI& maxs, AliITSDetector* types) const
 Finds and returns the number of detector types used and the
 number of each detector type. Only counts id >=0 (no undefined
 values. See AliITSgeom.h for list of AliITSDetecor enumerated types.
 Inputs:
    none.
 Outputs:
    The maximum detector type used
 Return:
    The number of detector types used
Int_t GetStartDet(Int_t dtype) const
 returns the starting module index value for a give type of detector id.
 This assumes that the detector types are different on different layers
 and that they are not mixed up.
 Inputs:
    Int_t dtype A detector type number. 0 for SPD, 1 for SDD,
                and 2 for SSD.
 Outputs:
    none.
 Return:
    the module index for the first occurrence of that detector type.
Int_t GetLastDet(Int_t dtype) const
 returns the last module index value for a give type of detector id.
 This assumes that the detector types are different on different layers
 and that they are not mixed up.
 Inputs:
     Int_t dtype A detector type number. 0 for SPD, 1 for SDD,
                 and 2 for SSD.
 Outputs:
 Return:
     the module index for the last occurrence of that detector type.
void PrintData(FILE* fp, Int_t lay, Int_t lad, Int_t det) const
     This function prints out the coordinate transformations for
 the particular detector defined by layer, ladder, and detector
 to the file pointed to by the File pointer fp. fprintf statements
 are used to print out the numbers. The format is
 layer ladder detector Trans= fx0 fy0 fz0 rot= frx fry frz
 Shape=fShapeIndex
                         dfr= fr[0] fr[1] fr[2]
                         dfr= fr[3] fr[4] fr[5]
                         dfr= fr[6] fr[7] fr[8]
 By indicating which detector, some control over the information
 is given to the user. The output it written to the file pointed
 to by the file pointer fp. This can be set to stdout if you want.
 Inputs:
     FILE *fp           A file pointer to an opened file for
                        writing in which the results of the
                        comparison will be written.
     Int_t lay          The layer number. Starting from 1.
     Int_t lad          The ladder number. Starting from 1.
     Int_t det          The detector number. Starting from 1.
 Outputs:
     none
 Return:
     none.
Int_t GetNearest(const Double_t* g, Int_t lay = 0) const
      Finds the Detector (Module) that is nearest the point g [cm] in
 ALICE Global coordinates. If layer !=0 then the search is restricted
 to Detectors (Modules) in that particular layer.
 Inputs:
     Double_t g[3]  The ALICE Cartesian global coordinate from which the
                    distance is to be calculated with.
     Int_t lay      The layer to restrict the search to. If layer=0 then
                    all layers are searched. Default is lay=0.
 Output:
     none.
 Return:
     The module number representing the nearest module.
void GetNearest27(const Double_t* g, Int_t* n, Int_t lay = 0) const
      Finds 27 Detectors (Modules) that are nearest the point g [cm] in
 ALICE Global coordinates. If layer !=0 then the search is restricted
 to Detectors (Modules) in that particular layer. The number 27 comes
 from including the nearest detector and all those around it (up, down,
 left, right, forwards, backwards, and the corners).
 Input:
     Double_t g[3]  The ALICE Cartesian global coordinate from which the
                    distance is to be calculated with.
     Int_t lay      The layer to restrict the search to. If layer=0 then
                    all layers are searched. Default is lay=0.
 Output:
     Int_t n[27]    The module number representing the nearest 27 modules
                    in order.
 Return:
     none.
void DetLToTrackingV2(Int_t md, Float_t xin, Float_t zin, Float_t& yout, Float_t& zout) const
Conversion from local coordinates on detectors to local
coordinates used for tracking ("v2")
 Inputs:
   Int_t   md      Module number
   Float_t xin     Standard local coordinate x
   Float_t zin     Standard local coordinate z
 Output:
   Float_t yout    Tracking local coordinate y
   Float_t zout    Tracking local coordinate z
 Return:
   none.
void TrackingV2ToDetL(Int_t md, Float_t yin, Float_t zin, Float_t& xout, Float_t& zout) const
Conversion from local coordinates used for tracking ("v2") to
local detector coordinates
 Inputs:
   Int_t   md      Module number
   Float_t yin     Tracking local coordinate y
   Float_t zin     Tracking local coordinate z
 Output:
   Float_t xout    Standard local coordinate x
   Float_t zout    Standard local coordinate z
 Return:
   none.
Int_t GetTransformationType() const
 Getters
{return fTrans;}
Bool_t IsGeantToGeant() const
 returns kTRUE if the transformation defined by this class is
 for Global GEANT coordinate system to the local GEANT coordinate system
 of the detector. These are the transformation used by GEANT.
{return (fTrans == 0);}
Bool_t IsGeantToTracking() const
 returns kTRUE if the transformation defined by this class is
 for Global GEANT coordinate system to the local "Tracking" coordinate
 system of the detector. These are the transformation used by the
 Tracking code.
{return ((fTrans&0xfffe)!= 0);}
Bool_t IsGeantToDisplaced() const
 returns kTRUE if the transformation defined by this class is
 for Global GEANT coordinate system to the local GEANT coordinate system
 of the detector but may have been displaced by some typically small
 amount. These are modified transformation similar to that used by GEANT.
{return ((fTrans&0xfffd)!= 0);}
AliITSgeomMatrix * GetGeomMatrix(Int_t index)
     This function returns a pointer to the particular AliITSgeomMatrix
 class for a specific module index.
AliITSgeomMatrix * GetGeomMatrix(Int_t index) const
Int_t GetNDetTypes() const
 This function find and return the number of detector types only.
{Int_t max;return GetNDetTypes(max);}
Int_t GetNdetectors(Int_t lay) const
     This function returns the number of detectors/ladder for a give
 layer. In particular it returns fNdet[layer-1].
{return fNdet[lay-1];}
Int_t GetNladders(Int_t lay) const
     This function returns the number of ladders for a give layer. In
 particular it returns fNlad[layer-1].
{return fNlad[lay-1];}
Int_t GetNlayers() const
     This function returns the number of layers defined in the ITS
 geometry. In particular it returns fNlayers.
{return fNlayers;}
Int_t GetModuleIndex(Int_t lay, Int_t lad, Int_t det) const
     This function returns the module index number given the layer,
 ladder and detector numbers put into the array id[3].
AliITSDetector GetModuleType(Int_t index) const
 Returns the detector type
Int_t GetModuleType(Int_t index)const{
    return GetGeomMatrix(index)->GetDetectorIndex();}
const char * GetModuleTypeName(Int_t index) const
 Returns the detector type as a string
return GetDetectorTypeName(GetModuleType(index))
 Returns the detector type as a string
Int_t GetStartSPD() const
     Returns the starting module index number for SPD detector,
 assuming the modules are placed in the "standard" cylindrical
 ITS structure.
{return GetStartDet(kSPD);}
Int_t GetLastSPD() const
     Returns the ending module index number for SPD detector,
 assuming the modules are placed in the "standard" cylindrical
 ITS structure.
{return GetLastDet(kSPD);}
Int_t GetStartSDD() const
     Returns the starting module index number for SDD detector,
 assuming the modules are placed in the "standard" cylindrical
 ITS structure.
{return GetStartDet(kSDD);}
Int_t GetLastSDD() const
     Returns the ending module index number for SDD detector,
 assuming the modules are placed in the "standard" cylindrical
 ITS structure.
{return GetLastDet(kSDD);}
Int_t GetStartSSD() const
     Returns the starting module index number for SSD detector,
 assuming the modules are placed in the "standard" cylindrical
 ITS structure.
{return GetStartDet(kSSD);}
Int_t GetLastSSD() const
     Returns the ending module index number for SSD detector,
 assuming the modules are placed in the "standard" cylindrical
 ITS structure.
{return GetLastDet(kSSD);}
Int_t GetIndexMax() const
     Returns the last module index number.
{return fNmodules;}
void GetAngles(Int_t index, Double_t* ang) const
     This function returns the rotation angles for a give module
 in the Double point array ang[3]. The angles are in radians
void GetAngles(Int_t index, Float_t& rx, Float_t& ry, Float_t& rz) const
     This function returns the rotation angles for a give module
 in the three floating point variables provided. rx = frx,
 fy = fry, rz = frz. The angles are in radians
Double_t a[3]; GetAngles(index,a)
     This function returns the rotation angles for a give detector on
 a give ladder in a give layer in the three floating point variables
 provided. rx = frx, fy = fry, rz = frz. The angles are in radians
void GetGeantAngles(Int_t index, Double_t* ang) const
     This function returns the 6 GEANT rotation angles for a give
 module in the double point array ang[3]. The angles are in degrees
void GetTrans(Int_t index, Double_t* t) const
     This function returns the Cartesian translation for a give
 module in the Double array t[3]. The units are
 those of the Monte Carlo, generally cm.
void GetTrans(Int_t index, Float_t& x, Float_t& y, Float_t& z) const
     This function returns the Cartesian translation for a give
 module index in the three floating point variables provided.
 x = fx0, y = fy0, z = fz0. The units are those of the Mont
 Carlo, generally cm.
Double_t t[3]; GetTrans(index,t)
     This function returns the Cartesian translation for a give
 detector on a give ladder in a give layer in the three floating
 point variables provided. x = fx0, y = fy0, z = fz0. The units are
 those of the Monte Carlo, generally cm.
void GetTransCyln(Int_t index, Double_t* t) const
     This function returns the Cartesian translation for a give
 module in the Double array t[3]. The units are
 those of the Monte Carlo, generally cm.
void GetTransCyln(Int_t index, Float_t& x, Float_t& y, Float_t& z) const
     This function returns the Cartesian translation for a give
 module index in the three floating point variables provided.
 x = fx0, y = fy0, z = fz0. The units are those of the Mont
 Carlo, generally cm.
Double_t t[3]; GetTransCyln(index,t)
     This function returns the Cartesian translation for a give
 detector on a give ladder in a give layer in the three floating
 point variables provided. x = fx0, y = fy0, z = fz0. The units are
 those of the Monte Carlo, generally cm.
void GetCenterThetaPhi(Int_t lay, Int_t lad, Int_t det, TVector& x) const
      This function returns the Cartesian translation [cm] and the
 6 GEANT rotation angles [degrees]for a given layer ladder and
 detector number, in the TVector x (at least 9 elements large).
 This function is required to be in-lined for speed.
void GetRotMatrix(Int_t index,Double_t mat[3][3])
     This function returns the rotation matrix in Double
 precision for a given module.
void GetRotMatrix(Int_t index, Double_t* mat) const
     This function returns the rotation matrix in a Double
 precision pointer for a given module. mat[i][j] => mat[3*i+j].
Double_t rot[3][3]; GetRotMatrix(index,rot)
void GetRotMatrix(Int_t lay, Int_t lad, Int_t det, Float_t* mat) const
     This function returns the rotation matrix in a floating
 precision pointer for a given layer ladder and detector module.
 mat[i][j] => mat[3*i+j].
GetRotMatrix(GetModuleIndex(lay,lad,det),mat)
     This function returns the rotation matrix in a Double
 precision pointer for a given layer ladder and detector module.
 mat[i][j] => mat[3*i+j].
void SetRotMatrix(Int_t index, const Double_t* mat)
     This function sets the rotation matrix in a Double
 precision pointer for a given module. mat[i][j] => mat[3*i+j].
void GetGlobalNormal(Int_t index, Double_t* n)
 Return the normal for a specific module
void SetByAngles(Int_t index, const Double_t* a)

  Setters
     Sets the rotation angles and matrix for a give module index
 via the double precision array a[3] [radians].
void SetByAngles(Int_t index, Float_t rx, Float_t ry, Float_t rz)
     Sets the rotation angles and matrix for a give module index
 via the 3 floating precision variables rx, ry, and rz [radians].
void SetByAngles(Int_t lay, Int_t lad, Int_t det, Float_t rx, Float_t ry, Float_t rz)
     Sets the rotation angles and matrix for a give layer, ladder,
 and detector numbers via the 3 floating precision variables rx,
 ry, and rz [radians].
void SetByGeantAngles(Int_t index, const Double_t* ang)
     Sets the rotation angles and matrix for a give module index
 via the Double precision array a[6] [degree]. The angles are those
 defined by GEANT 3.12.
void SetByGeantAngles(const Int_t* id, const Double_t* ang)
     Sets the rotation angles and matrix for a give layer, ladder
 and detector, in the array id[3] via the Double precision array
 a[6] [degree]. The angles are those defined by GEANT 3.12.
SetByGeantAngles(GetModuleIndex(id),ang)
     Sets the rotation angles and matrix for a give layer, ladder
 and detector, via the Double precision array a[6] [degree]. The
 angles are those defined by GEANT 3.12.
void SetTrans(Int_t index, Double_t* x)
     This function sets a new translation vector, given by the
 array x[3], for the Cartesian coordinate transformation
 for a give module index.
void SetTrans(Int_t lay, Int_t lad, Int_t det, Float_t x, Float_t y, Float_t z)
     This function sets a new translation vector, given by the three
 variables x, y, and z, for the Cartesian coordinate transformation
 for the detector defined by layer, ladder and detector.
void GtoL(Int_t lay, Int_t lad, Int_t det, const Float_t* g, Float_t* l) const
  transformations
     Transforms from the ALICE Global coordinate system
 to the detector local coordinate system for the detector
 defined by the layer, ladder, and detector numbers. The
 global and local coordinate are given in two floating point
 arrays g[3], and l[3].
void GtoL(const Int_t* id, const Float_t* g, Float_t* l) const
     Transforms from the ALICE Global coordinate system
 to the detector local coordinate system for the detector
 defined by the id[0], id[1], and id[2] numbers. The
 global and local coordinate are given in two floating point
 arrays g[3], and l[3].
GtoL(GetModuleIndex(id),g,l)
     Transforms from the ALICE Global coordinate system
 to the detector local coordinate system for the detector
 module index number. The global and local coordinate are
 given in two floating point arrays g[3], and l[3].
void GtoL(Int_t index, const Float_t* g, Float_t* l) const
void GtoL(Int_t lay, Int_t lad, Int_t det, const Double_t* g, Double_t* l) const
     Transforms from the ALICE Global coordinate system
 to the detector local coordinate system for the detector
 defined by the layer, ladder, and detector numbers. The
 global and local coordinate are given in two Double point
 arrays g[3], and l[3].
void GtoL(const Int_t* id, const Double_t* g, Double_t* l) const
     Transforms from the ALICE Global coordinate system
 to the detector local coordinate system for the detector
 defined by the id[0], id[1], and id[2] numbers. The
 global and local coordinate are given in two Double point
 arrays g[3], and l[3].
Double_t Distance(Int_t index, const Double_t* g) const
 Returns the distance [cm] between the point g[3] and the center of
 the detector/module specified by the the module index number.