ROOT logo
#ifndef ALIITSUGEOMTGEO_H
#define ALIITSUGEOMTGEO_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/////////////////////////////////////////////////////////////////////////
//  AliITSUGeomTGeo is a simple interface class to TGeoManager         //
//  It is used in the simulation and reconstruction in order to        //
//  query the TGeo ITS geometry                                        //
//                                                                     //
//  author - cvetan.cheshkov@cern.ch                                   //
//  15/02/2007                                                         //
//  adapted to ITSupg 18/07/2012 - ruben.shahoyan@cern.ch              //
//  RS: in order to preserve the static character of the class but     //
//  make it dynamically access geometry, we need to check in every     //
//  method if the structures are initialized. To be converted to       //
//  singleton at later stage.                                          //
//                                                                     //
//  Note on the upgrade chip types:                                    //
//  The coarse type defines chips served by different classes,         //
//  like Pix. Each such a chip type can have kMaxSegmPerChipType       //
//  segmentations (pitch etc.) whose parameteres are stored in the     //
//  AliITSsegmentation derived class (like AliITSUSegmentationPix)     //
//  This allows to have in the setup chips served by the same          //
//  classes but with different segmentations.                          //
//  The full chip type is composed as:                                 //
//  CoarseType*kMaxSegmPerChipType + segmentationType                  //
//  The only requirement on the segmentationType that should be        //
//  < kMaxSegmPerChipType.                                             //
//  The methods like GetLayerChipTypeID return the full chip type      //
//                                                                     //
//                                                                     //
/////////////////////////////////////////////////////////////////////////

#include <TObject.h>
#include <TGeoMatrix.h>
#include <TString.h>
#include <TObjArray.h>
#include "AliITSUAux.h"

class TGeoPNEntry;
class TDatime;
class AliITSsegmentation;

class AliITSUGeomTGeo : public TObject {

 public:
  enum {kITSVNA, kITSVUpg}; // ITS version
  enum {kChipTypePix=0, kNChipTypes, kMaxSegmPerChipType=10}; // defined detector chip types (each one can have different segmentations)
  //
  AliITSUGeomTGeo(Bool_t build = kFALSE, Bool_t loadSegmentations = kTRUE);
  virtual ~AliITSUGeomTGeo(); 
  AliITSUGeomTGeo(const AliITSUGeomTGeo &src);
  AliITSUGeomTGeo& operator=(const AliITSUGeomTGeo &geom);
  //
  Int_t  GetNChips()                                                    const {return fNChips;}
  Int_t  GetNChipRowsPerModule(Int_t lay)                               const {return fNChipRowsPerModule[lay];}
  Int_t  GetNChipColsPerModule(Int_t lay)                               const {return fNChipRowsPerModule[lay] ? fNChipsPerModule[lay]/fNChipRowsPerModule[lay] : -1;}
  Int_t  GetNChipsPerModule(Int_t lay)                                  const {return fNChipsPerModule[lay];}
  Int_t  GetNChipsPerHalfStave(Int_t lay)                               const {return fNChipsPerHalfStave[lay];}
  Int_t  GetNChipsPerStave(Int_t lay)                                   const {return fNChipsPerStave[lay];}
  Int_t  GetNChipsPerLayer(Int_t lay)                                   const {return fNChipsPerLayer[lay];}
  Int_t  GetNModules(Int_t lay)                                         const {return fNModules[lay];}
  Int_t  GetNHalfStaves(Int_t lay)                                      const {return fNHalfStaves[lay];}
  Int_t  GetNStaves(Int_t lay)                                          const {return fNStaves[lay];}
  Int_t  GetNLayers()                                                   const {return fNLayers;}
  
  Int_t  GetChipIndex(Int_t lay,int detInLay)                           const {return GetFirstChipIndex(lay)+detInLay;}
  Int_t  GetChipIndex(Int_t lay,Int_t sta,Int_t detInSta)               const;
  Int_t  GetChipIndex(Int_t lay,Int_t sta, Int_t subSta, Int_t detInSubSta) const;
  Int_t  GetChipIndex(Int_t lay,Int_t sta, Int_t subSta, Int_t md, Int_t detInMod) const;
  Bool_t GetChipId(Int_t index,Int_t &lay,Int_t &sta,Int_t &ssta,Int_t &mod,Int_t &chip)        const;
  Int_t  GetLayer(Int_t index)                                          const;
  Int_t  GetStave(Int_t index)                                          const;
  Int_t  GetHalfStave(Int_t index)                                      const;
  Int_t  GetModule(Int_t index)                                         const;
  Int_t  GetChipIdInLayer(Int_t index)                                  const;
  Int_t  GetChipIdInStave(Int_t index)                                  const;
  Int_t  GetChipIdInHalfStave(Int_t index)                              const;
  Int_t  GetChipIdInModule(Int_t index)                                 const;
  //
  Int_t  GetLastChipIndex(Int_t lay)                                       const {return fLastChipIndex[lay];}
  Int_t  GetFirstChipIndex(Int_t lay)                                      const {return (lay==0) ? 0:fLastChipIndex[lay-1]+1;}
  //  
  const char *GetSymName(Int_t index)                                     const;
  const char *GetSymName(Int_t lay,Int_t sta,Int_t det)                   const;
  //
  // Attention: these are the matrices for the alignable volumes of the chips, i.e. not necessarily the sensors
  TGeoHMatrix* GetMatrix(Int_t index)                                     const;
  TGeoHMatrix* GetMatrix(Int_t lay,Int_t sta,Int_t det)                   const;
  Bool_t GetTranslation(Int_t index, Double_t t[3])                       const;
  Bool_t GetTranslation(Int_t lay,Int_t sta,Int_t det, Double_t t[3])     const;
  Bool_t GetRotation(Int_t index, Double_t r[9])                          const;
  Bool_t GetRotation(Int_t lay,Int_t sta,Int_t det, Double_t r[9])        const;
  Bool_t GetOrigMatrix(Int_t index, TGeoHMatrix &m)                       const;
  Bool_t GetOrigMatrix(Int_t lay,Int_t sta,Int_t det, TGeoHMatrix &m)     const;
  Bool_t GetOrigTranslation(Int_t index, Double_t t[3])                   const;
  Bool_t GetOrigTranslation(Int_t lay,Int_t sta,Int_t det, Double_t t[3]) const;
  Bool_t GetOrigRotation(Int_t index, Double_t r[9])                      const;
  Bool_t GetOrigRotation(Int_t lay,Int_t sta,Int_t det, Double_t r[9])    const;
  //
  const TGeoHMatrix* GetMatrixT2L(Int_t index);
  const TGeoHMatrix* GetMatrixT2L(Int_t lay,Int_t sta,Int_t det)  {return GetMatrixT2L( GetChipIndex(lay,sta,det) );}
  const TGeoHMatrix* GetMatrixSens(Int_t index);
  const TGeoHMatrix* GetMatrixSens(Int_t lay,Int_t sta,Int_t det) {return GetMatrixSens( GetChipIndex(lay,sta,det) );}
  //
  Bool_t GetTrackingMatrix(Int_t index, TGeoHMatrix &m);
  Bool_t GetTrackingMatrix(Int_t lay,Int_t sta,Int_t det, TGeoHMatrix &m);
  //
  // Attention: these are transformations wrt sensitive volume!
  void   LocalToGlobal(Int_t index, const Double_t *loc, Double_t *glob);
  void   LocalToGlobal(Int_t lay, Int_t sta, Int_t det,const Double_t *loc, Double_t *glob);
  //
  void   GlobalToLocal(Int_t index, const Double_t *glob, Double_t *loc);
  void   GlobalToLocal(Int_t lay, Int_t sta, Int_t det,const Double_t *glob, Double_t *loc);
  //
  void   LocalToGlobalVect(Int_t index, const Double_t *loc, Double_t *glob);
  void   GlobalToLocalVect(Int_t index, const Double_t *glob, Double_t *loc);
  Int_t  GetLayerChipTypeID(Int_t lr)                                         const;
  Int_t  GetChipChipTypeID(Int_t id)                                        const;
  //
  const AliITSsegmentation* GetSegmentationByID(Int_t id)                    const;
  const AliITSsegmentation* GetSegmentation(Int_t lr)                        const;
  TObjArray*          GetSegmentations()                                     const {return (TObjArray*)fSegm;}
  virtual void Print(Option_t *opt="")  const;
  //
  static      UInt_t GetUIDShift()                                      {return fgUIDShift;}
  static      void   SetUIDShift(UInt_t s=16)                           {fgUIDShift = s<16 ? s:16;}
  //
  static const char* GetITSVolPattern()                                 {return fgITSVolName.Data();}
  static const char* GetITSLayerPattern()                               {return fgITSLrName.Data();}
  static const char* GetITSWrapVolPattern()                             {return fgITSWrapVolName.Data();}
  static const char* GetITSStavePattern()                               {return fgITSStaveName.Data();}
  static const char* GetITSHalfStavePattern()                           {return fgITSHalfStaveName.Data();}
  static const char* GetITSModulePattern()                              {return fgITSModuleName.Data();}
  static const char* GetITSChipPattern()                                {return fgITSChipName.Data();}
  static const char* GetITSSensorPattern()                              {return fgITSSensName.Data();}
  static const char* GetITSsegmentationFileName()                       {return fgITSsegmFileName.Data();}
  static const char* GetChipTypeName(Int_t i);

  static void        SetITSVolPattern(const char* nm)                   {fgITSVolName = nm;}
  static void        SetITSLayerPattern(const char* nm)                 {fgITSLrName = nm;}
  static void        SetITSWrapVolPattern(const char* nm)               {fgITSWrapVolName = nm;}
  static void        SetITSStavePattern(const char* nm)                 {fgITSStaveName = nm;}
  static void        SetITSHalfStavePattern(const char* nm)             {fgITSHalfStaveName = nm;}
  static void        SetITSModulePattern(const char* nm)                {fgITSModuleName = nm;}
  static void        SetITSChipPattern(const char* nm)                  {fgITSChipName = nm;}
  static void        SetITSSensorPattern(const char* nm)                {fgITSSensName = nm;}
  static void        SetChipTypeName(Int_t i,const char* nm);
  static void        SetITSsegmentationFileName(const char* nm)         {fgITSsegmFileName = nm;}
  static UInt_t      ComposeChipTypeID(UInt_t segmId);
  //
  static const char *ComposeSymNameITS();
  static const char *ComposeSymNameLayer(Int_t lr);
  static const char *ComposeSymNameStave(Int_t lr, Int_t sta);
  static const char *ComposeSymNameHalfStave(Int_t lr, Int_t sta, Int_t ssta);
  static const char *ComposeSymNameModule(Int_t lr, Int_t sta, Int_t ssta, Int_t mod);
  static const char *ComposeSymNameChip(Int_t lr, Int_t sta, Int_t ssta, Int_t mod, Int_t chip);
  //
  // hack to avoid using AliGeomManager
  Int_t              LayerToVolUID(Int_t lay,int detInLay)        const {return ChipVolUID(GetChipIndex(lay,detInLay));}
  static Int_t       ChipVolUID(Int_t mod)                            {return (mod&0xffff)<<fgUIDShift;}
  //
 protected:
  void         FetchMatrices();
  void         CreateT2LMatrices();
  TGeoHMatrix* ExtractMatrixT2L(Int_t index)                      const;
  TGeoHMatrix* ExtractMatrixSens(Int_t index)                     const;
  Bool_t       GetLayer(Int_t index,Int_t &lay,Int_t &index2)     const;
  TGeoPNEntry* GetPNEntry(Int_t index)                            const;
  Int_t        ExtractNChipsPerModule(Int_t lay, Int_t &nrow)     const;
  Int_t        ExtractNumberOfStaves(Int_t lay)                   const;
  Int_t        ExtractNumberOfHalfStaves(Int_t lay)               const;
  Int_t        ExtractNumberOfModules(Int_t lay)                  const;
  Int_t        ExtractLayerChipType(Int_t lay)                    const;
  Int_t        ExtractNumberOfLayers();
  void         BuildITS(Bool_t loadSegm);
  //
  Int_t        ExtractVolumeCopy(const char* name, const char* prefix) const;
 protected:
  //
  //
  Int_t  fVersion;             // ITS Version 
  Int_t  fNLayers;             // number of layers
  Int_t  fNChips;              // The total number of chips
  Int_t *fNStaves;             //[fNLayers] Array of the number of staves/layer(layer)
  Int_t *fNHalfStaves;         //[fNLayers] Array of the number of substaves/stave(layer)
  Int_t *fNModules;            //[fNLayers] Array of the number of modules/substave(layer)
  Int_t *fNChipsPerModule;     //[fNLayers] Array of the number of chips per module (group of chips on the substaves)
  Int_t *fNChipRowsPerModule;  //[fNLayers] Array of the number of chips rows per module (relevant for OB modules)
  Int_t *fNChipsPerHalfStave;  //[fNLayers] Array of the number of chips per substave
  Int_t *fNChipsPerStave;      //[fNLayers] Array of the number of chips per stave
  Int_t *fNChipsPerLayer;      //[fNLayers] Array of the number of chips per stave

  //
  Int_t *fLrChipType;          //[fNLayers] Array of layer chip types
  Int_t *fLastChipIndex;       //[fNLayers] max ID of the detctor in the layer
  Char_t fLr2Wrapper[AliITSUAux::kMaxLayers]; // layer -> wrapper correspondence
  //
  TObjArray* fMatSens;         // Sensor's matrices pointers in the geometry
  TObjArray* fMatT2L;          // Tracking to Local matrices pointers in the geometry
  TObjArray* fSegm;            // segmentations
  //
  static UInt_t   fgUIDShift;               // bit shift to go from mod.id to modUUID for TGeo
  static TString  fgITSVolName;             // ITS mother volume name
  static TString  fgITSLrName;              // ITS Layer name
  static TString  fgITSStaveName;           // ITS Stave name 
  static TString  fgITSHalfStaveName;       // ITS HalfStave name 
  static TString  fgITSModuleName;          // ITS Module name 
  static TString  fgITSChipName;            // ITS Chip name 
  static TString  fgITSSensName;            // ITS Sensor name 
  static TString  fgITSWrapVolName;         // ITS Wrapper volume name 
  static TString  fgITSChipTypeName[kNChipTypes]; // ITS upg detType Names
  //
  static TString  fgITSsegmFileName;         // file name for segmentations
  //
  ClassDef(AliITSUGeomTGeo, 2) // ITS geometry based on TGeo
};

//_____________________________________________________________________________________________
inline const char *AliITSUGeomTGeo::GetSymName(Int_t lay,Int_t sta,Int_t det) const    
{
  // sym name
  return GetSymName(GetChipIndex(lay,sta,det));
}

//_____________________________________________________________________________________________
inline TGeoHMatrix* AliITSUGeomTGeo::GetMatrix(Int_t lay,Int_t sta,Int_t det) const    
{
  // chip current matrix
  return GetMatrix(GetChipIndex(lay,sta,det));
}

//_____________________________________________________________________________________________
inline Bool_t AliITSUGeomTGeo::GetTranslation(Int_t lay,Int_t sta,Int_t det, Double_t t[3]) const    
{
  // translation
  return GetTranslation(GetChipIndex(lay,sta,det),t); 
}

//_____________________________________________________________________________________________
inline Bool_t AliITSUGeomTGeo::GetRotation(Int_t lay,Int_t sta,Int_t det, Double_t r[9]) const    
{
  // rot
  return GetRotation(GetChipIndex(lay,sta,det),r); 
}

//_____________________________________________________________________________________________
inline Bool_t AliITSUGeomTGeo::GetOrigMatrix(Int_t lay,Int_t sta,Int_t det, TGeoHMatrix &m) const    
{
  // orig matrix
  return GetOrigMatrix(GetChipIndex(lay,sta,det),m); 
}

//_____________________________________________________________________________________________
inline Bool_t AliITSUGeomTGeo::GetOrigTranslation(Int_t lay,Int_t sta,Int_t det, Double_t t[3]) const    
{
  // orig trans
  return GetOrigTranslation(GetChipIndex(lay,sta,det),t); 
}

//_____________________________________________________________________________________________
inline Bool_t AliITSUGeomTGeo::GetOrigRotation(Int_t lay,Int_t sta,Int_t det, Double_t r[9]) const    
{
  // orig rot
  return GetOrigRotation(GetChipIndex(lay,sta,det),r); 
}

//_____________________________________________________________________________________________
inline Bool_t AliITSUGeomTGeo::GetTrackingMatrix(Int_t lay,Int_t sta,Int_t det, TGeoHMatrix &m)
{
  // tracking mat
  return GetTrackingMatrix(GetChipIndex(lay,sta,det),m); 
}

//_____________________________________________________________________________________________
inline Int_t  AliITSUGeomTGeo::GetLayerChipTypeID(Int_t lr) const  
{
  // detector type ID of layer
  return fLrChipType[lr];
}

//_____________________________________________________________________________________________
inline Int_t  AliITSUGeomTGeo::GetChipChipTypeID(Int_t id) const  
{
  // detector type ID of chip
  return GetLayerChipTypeID(GetLayer(id));
} 

//_____________________________________________________________________________________________
inline const TGeoHMatrix* AliITSUGeomTGeo::GetMatrixSens(Int_t index)
{
  // access global to sensor matrix
  if (!fMatSens) FetchMatrices();
  return (TGeoHMatrix*)fMatSens->At(index);
}

//_____________________________________________________________________________________________
inline const TGeoHMatrix* AliITSUGeomTGeo::GetMatrixT2L(Int_t index)
{
  // access tracking to local matrix
  if (!fMatT2L) FetchMatrices();
  return (TGeoHMatrix*)fMatT2L->At(index);
}

//______________________________________________________________________
inline void AliITSUGeomTGeo::LocalToGlobal(Int_t index,const Double_t *loc, Double_t *glob)
{
  // sensor local to global 
  GetMatrixSens(index)->LocalToMaster(loc,glob);
}

//______________________________________________________________________
inline void AliITSUGeomTGeo::GlobalToLocal(Int_t index, const Double_t *glob, Double_t *loc)
{
  // global to sensor local 
  GetMatrixSens(index)->MasterToLocal(glob,loc);
}

//______________________________________________________________________
inline void AliITSUGeomTGeo::LocalToGlobalVect(Int_t index, const Double_t *loc, Double_t *glob)
{
  // sensor local to global 
  GetMatrixSens(index)->LocalToMasterVect(loc,glob);
}

//______________________________________________________________________
inline void AliITSUGeomTGeo::GlobalToLocalVect(Int_t index, const Double_t *glob, Double_t *loc)
{
  // global to sensor local
  GetMatrixSens(index)->MasterToLocalVect(glob,loc);
}

//_____________________________________________________________________________________________
inline void AliITSUGeomTGeo::LocalToGlobal(Int_t lay, Int_t sta, Int_t det,const Double_t *loc, Double_t *glob)
{
  // Local2Master (sensor)
  LocalToGlobal(GetChipIndex(lay,sta,det), loc, glob);
}

//_____________________________________________________________________________________________
inline void AliITSUGeomTGeo::GlobalToLocal(Int_t lay, Int_t sta, Int_t det,const Double_t *glob, Double_t *loc)
{
  // master2local (sensor)
  GlobalToLocal(GetChipIndex(lay,sta,det), glob, loc);
}

//_____________________________________________________________________________________________
inline const char* AliITSUGeomTGeo::GetChipTypeName(Int_t i)
{
  if (i>=kNChipTypes) i/=kMaxSegmPerChipType; // full type is provided
  return fgITSChipTypeName[i].Data();
}

//_____________________________________________________________________________________________
inline void AliITSUGeomTGeo::SetChipTypeName(Int_t i, const char* nm)
{
  if (i>=kNChipTypes) i/=kMaxSegmPerChipType; // full type is provided
  fgITSChipTypeName[i] = nm;
}

//_____________________________________________________________________________________________
inline const AliITSsegmentation* AliITSUGeomTGeo::GetSegmentationByID(Int_t id) const 
{
  // get segmentation by ID
  return fSegm ? (AliITSsegmentation*)fSegm->At(id) : 0;
}

//_____________________________________________________________________________________________
inline const AliITSsegmentation* AliITSUGeomTGeo::GetSegmentation(Int_t lr) const 
{
  // get segmentation of layer
  return fSegm ? (AliITSsegmentation*)fSegm->At( GetLayerChipTypeID(lr) ) : 0;
}

#endif
 AliITSUGeomTGeo.h:1
 AliITSUGeomTGeo.h:2
 AliITSUGeomTGeo.h:3
 AliITSUGeomTGeo.h:4
 AliITSUGeomTGeo.h:5
 AliITSUGeomTGeo.h:6
 AliITSUGeomTGeo.h:7
 AliITSUGeomTGeo.h:8
 AliITSUGeomTGeo.h:9
 AliITSUGeomTGeo.h:10
 AliITSUGeomTGeo.h:11
 AliITSUGeomTGeo.h:12
 AliITSUGeomTGeo.h:13
 AliITSUGeomTGeo.h:14
 AliITSUGeomTGeo.h:15
 AliITSUGeomTGeo.h:16
 AliITSUGeomTGeo.h:17
 AliITSUGeomTGeo.h:18
 AliITSUGeomTGeo.h:19
 AliITSUGeomTGeo.h:20
 AliITSUGeomTGeo.h:21
 AliITSUGeomTGeo.h:22
 AliITSUGeomTGeo.h:23
 AliITSUGeomTGeo.h:24
 AliITSUGeomTGeo.h:25
 AliITSUGeomTGeo.h:26
 AliITSUGeomTGeo.h:27
 AliITSUGeomTGeo.h:28
 AliITSUGeomTGeo.h:29
 AliITSUGeomTGeo.h:30
 AliITSUGeomTGeo.h:31
 AliITSUGeomTGeo.h:32
 AliITSUGeomTGeo.h:33
 AliITSUGeomTGeo.h:34
 AliITSUGeomTGeo.h:35
 AliITSUGeomTGeo.h:36
 AliITSUGeomTGeo.h:37
 AliITSUGeomTGeo.h:38
 AliITSUGeomTGeo.h:39
 AliITSUGeomTGeo.h:40
 AliITSUGeomTGeo.h:41
 AliITSUGeomTGeo.h:42
 AliITSUGeomTGeo.h:43
 AliITSUGeomTGeo.h:44
 AliITSUGeomTGeo.h:45
 AliITSUGeomTGeo.h:46
 AliITSUGeomTGeo.h:47
 AliITSUGeomTGeo.h:48
 AliITSUGeomTGeo.h:49
 AliITSUGeomTGeo.h:50
 AliITSUGeomTGeo.h:51
 AliITSUGeomTGeo.h:52
 AliITSUGeomTGeo.h:53
 AliITSUGeomTGeo.h:54
 AliITSUGeomTGeo.h:55
 AliITSUGeomTGeo.h:56
 AliITSUGeomTGeo.h:57
 AliITSUGeomTGeo.h:58
 AliITSUGeomTGeo.h:59
 AliITSUGeomTGeo.h:60
 AliITSUGeomTGeo.h:61
 AliITSUGeomTGeo.h:62
 AliITSUGeomTGeo.h:63
 AliITSUGeomTGeo.h:64
 AliITSUGeomTGeo.h:65
 AliITSUGeomTGeo.h:66
 AliITSUGeomTGeo.h:67
 AliITSUGeomTGeo.h:68
 AliITSUGeomTGeo.h:69
 AliITSUGeomTGeo.h:70
 AliITSUGeomTGeo.h:71
 AliITSUGeomTGeo.h:72
 AliITSUGeomTGeo.h:73
 AliITSUGeomTGeo.h:74
 AliITSUGeomTGeo.h:75
 AliITSUGeomTGeo.h:76
 AliITSUGeomTGeo.h:77
 AliITSUGeomTGeo.h:78
 AliITSUGeomTGeo.h:79
 AliITSUGeomTGeo.h:80
 AliITSUGeomTGeo.h:81
 AliITSUGeomTGeo.h:82
 AliITSUGeomTGeo.h:83
 AliITSUGeomTGeo.h:84
 AliITSUGeomTGeo.h:85
 AliITSUGeomTGeo.h:86
 AliITSUGeomTGeo.h:87
 AliITSUGeomTGeo.h:88
 AliITSUGeomTGeo.h:89
 AliITSUGeomTGeo.h:90
 AliITSUGeomTGeo.h:91
 AliITSUGeomTGeo.h:92
 AliITSUGeomTGeo.h:93
 AliITSUGeomTGeo.h:94
 AliITSUGeomTGeo.h:95
 AliITSUGeomTGeo.h:96
 AliITSUGeomTGeo.h:97
 AliITSUGeomTGeo.h:98
 AliITSUGeomTGeo.h:99
 AliITSUGeomTGeo.h:100
 AliITSUGeomTGeo.h:101
 AliITSUGeomTGeo.h:102
 AliITSUGeomTGeo.h:103
 AliITSUGeomTGeo.h:104
 AliITSUGeomTGeo.h:105
 AliITSUGeomTGeo.h:106
 AliITSUGeomTGeo.h:107
 AliITSUGeomTGeo.h:108
 AliITSUGeomTGeo.h:109
 AliITSUGeomTGeo.h:110
 AliITSUGeomTGeo.h:111
 AliITSUGeomTGeo.h:112
 AliITSUGeomTGeo.h:113
 AliITSUGeomTGeo.h:114
 AliITSUGeomTGeo.h:115
 AliITSUGeomTGeo.h:116
 AliITSUGeomTGeo.h:117
 AliITSUGeomTGeo.h:118
 AliITSUGeomTGeo.h:119
 AliITSUGeomTGeo.h:120
 AliITSUGeomTGeo.h:121
 AliITSUGeomTGeo.h:122
 AliITSUGeomTGeo.h:123
 AliITSUGeomTGeo.h:124
 AliITSUGeomTGeo.h:125
 AliITSUGeomTGeo.h:126
 AliITSUGeomTGeo.h:127
 AliITSUGeomTGeo.h:128
 AliITSUGeomTGeo.h:129
 AliITSUGeomTGeo.h:130
 AliITSUGeomTGeo.h:131
 AliITSUGeomTGeo.h:132
 AliITSUGeomTGeo.h:133
 AliITSUGeomTGeo.h:134
 AliITSUGeomTGeo.h:135
 AliITSUGeomTGeo.h:136
 AliITSUGeomTGeo.h:137
 AliITSUGeomTGeo.h:138
 AliITSUGeomTGeo.h:139
 AliITSUGeomTGeo.h:140
 AliITSUGeomTGeo.h:141
 AliITSUGeomTGeo.h:142
 AliITSUGeomTGeo.h:143
 AliITSUGeomTGeo.h:144
 AliITSUGeomTGeo.h:145
 AliITSUGeomTGeo.h:146
 AliITSUGeomTGeo.h:147
 AliITSUGeomTGeo.h:148
 AliITSUGeomTGeo.h:149
 AliITSUGeomTGeo.h:150
 AliITSUGeomTGeo.h:151
 AliITSUGeomTGeo.h:152
 AliITSUGeomTGeo.h:153
 AliITSUGeomTGeo.h:154
 AliITSUGeomTGeo.h:155
 AliITSUGeomTGeo.h:156
 AliITSUGeomTGeo.h:157
 AliITSUGeomTGeo.h:158
 AliITSUGeomTGeo.h:159
 AliITSUGeomTGeo.h:160
 AliITSUGeomTGeo.h:161
 AliITSUGeomTGeo.h:162
 AliITSUGeomTGeo.h:163
 AliITSUGeomTGeo.h:164
 AliITSUGeomTGeo.h:165
 AliITSUGeomTGeo.h:166
 AliITSUGeomTGeo.h:167
 AliITSUGeomTGeo.h:168
 AliITSUGeomTGeo.h:169
 AliITSUGeomTGeo.h:170
 AliITSUGeomTGeo.h:171
 AliITSUGeomTGeo.h:172
 AliITSUGeomTGeo.h:173
 AliITSUGeomTGeo.h:174
 AliITSUGeomTGeo.h:175
 AliITSUGeomTGeo.h:176
 AliITSUGeomTGeo.h:177
 AliITSUGeomTGeo.h:178
 AliITSUGeomTGeo.h:179
 AliITSUGeomTGeo.h:180
 AliITSUGeomTGeo.h:181
 AliITSUGeomTGeo.h:182
 AliITSUGeomTGeo.h:183
 AliITSUGeomTGeo.h:184
 AliITSUGeomTGeo.h:185
 AliITSUGeomTGeo.h:186
 AliITSUGeomTGeo.h:187
 AliITSUGeomTGeo.h:188
 AliITSUGeomTGeo.h:189
 AliITSUGeomTGeo.h:190
 AliITSUGeomTGeo.h:191
 AliITSUGeomTGeo.h:192
 AliITSUGeomTGeo.h:193
 AliITSUGeomTGeo.h:194
 AliITSUGeomTGeo.h:195
 AliITSUGeomTGeo.h:196
 AliITSUGeomTGeo.h:197
 AliITSUGeomTGeo.h:198
 AliITSUGeomTGeo.h:199
 AliITSUGeomTGeo.h:200
 AliITSUGeomTGeo.h:201
 AliITSUGeomTGeo.h:202
 AliITSUGeomTGeo.h:203
 AliITSUGeomTGeo.h:204
 AliITSUGeomTGeo.h:205
 AliITSUGeomTGeo.h:206
 AliITSUGeomTGeo.h:207
 AliITSUGeomTGeo.h:208
 AliITSUGeomTGeo.h:209
 AliITSUGeomTGeo.h:210
 AliITSUGeomTGeo.h:211
 AliITSUGeomTGeo.h:212
 AliITSUGeomTGeo.h:213
 AliITSUGeomTGeo.h:214
 AliITSUGeomTGeo.h:215
 AliITSUGeomTGeo.h:216
 AliITSUGeomTGeo.h:217
 AliITSUGeomTGeo.h:218
 AliITSUGeomTGeo.h:219
 AliITSUGeomTGeo.h:220
 AliITSUGeomTGeo.h:221
 AliITSUGeomTGeo.h:222
 AliITSUGeomTGeo.h:223
 AliITSUGeomTGeo.h:224
 AliITSUGeomTGeo.h:225
 AliITSUGeomTGeo.h:226
 AliITSUGeomTGeo.h:227
 AliITSUGeomTGeo.h:228
 AliITSUGeomTGeo.h:229
 AliITSUGeomTGeo.h:230
 AliITSUGeomTGeo.h:231
 AliITSUGeomTGeo.h:232
 AliITSUGeomTGeo.h:233
 AliITSUGeomTGeo.h:234
 AliITSUGeomTGeo.h:235
 AliITSUGeomTGeo.h:236
 AliITSUGeomTGeo.h:237
 AliITSUGeomTGeo.h:238
 AliITSUGeomTGeo.h:239
 AliITSUGeomTGeo.h:240
 AliITSUGeomTGeo.h:241
 AliITSUGeomTGeo.h:242
 AliITSUGeomTGeo.h:243
 AliITSUGeomTGeo.h:244
 AliITSUGeomTGeo.h:245
 AliITSUGeomTGeo.h:246
 AliITSUGeomTGeo.h:247
 AliITSUGeomTGeo.h:248
 AliITSUGeomTGeo.h:249
 AliITSUGeomTGeo.h:250
 AliITSUGeomTGeo.h:251
 AliITSUGeomTGeo.h:252
 AliITSUGeomTGeo.h:253
 AliITSUGeomTGeo.h:254
 AliITSUGeomTGeo.h:255
 AliITSUGeomTGeo.h:256
 AliITSUGeomTGeo.h:257
 AliITSUGeomTGeo.h:258
 AliITSUGeomTGeo.h:259
 AliITSUGeomTGeo.h:260
 AliITSUGeomTGeo.h:261
 AliITSUGeomTGeo.h:262
 AliITSUGeomTGeo.h:263
 AliITSUGeomTGeo.h:264
 AliITSUGeomTGeo.h:265
 AliITSUGeomTGeo.h:266
 AliITSUGeomTGeo.h:267
 AliITSUGeomTGeo.h:268
 AliITSUGeomTGeo.h:269
 AliITSUGeomTGeo.h:270
 AliITSUGeomTGeo.h:271
 AliITSUGeomTGeo.h:272
 AliITSUGeomTGeo.h:273
 AliITSUGeomTGeo.h:274
 AliITSUGeomTGeo.h:275
 AliITSUGeomTGeo.h:276
 AliITSUGeomTGeo.h:277
 AliITSUGeomTGeo.h:278
 AliITSUGeomTGeo.h:279
 AliITSUGeomTGeo.h:280
 AliITSUGeomTGeo.h:281
 AliITSUGeomTGeo.h:282
 AliITSUGeomTGeo.h:283
 AliITSUGeomTGeo.h:284
 AliITSUGeomTGeo.h:285
 AliITSUGeomTGeo.h:286
 AliITSUGeomTGeo.h:287
 AliITSUGeomTGeo.h:288
 AliITSUGeomTGeo.h:289
 AliITSUGeomTGeo.h:290
 AliITSUGeomTGeo.h:291
 AliITSUGeomTGeo.h:292
 AliITSUGeomTGeo.h:293
 AliITSUGeomTGeo.h:294
 AliITSUGeomTGeo.h:295
 AliITSUGeomTGeo.h:296
 AliITSUGeomTGeo.h:297
 AliITSUGeomTGeo.h:298
 AliITSUGeomTGeo.h:299
 AliITSUGeomTGeo.h:300
 AliITSUGeomTGeo.h:301
 AliITSUGeomTGeo.h:302
 AliITSUGeomTGeo.h:303
 AliITSUGeomTGeo.h:304
 AliITSUGeomTGeo.h:305
 AliITSUGeomTGeo.h:306
 AliITSUGeomTGeo.h:307
 AliITSUGeomTGeo.h:308
 AliITSUGeomTGeo.h:309
 AliITSUGeomTGeo.h:310
 AliITSUGeomTGeo.h:311
 AliITSUGeomTGeo.h:312
 AliITSUGeomTGeo.h:313
 AliITSUGeomTGeo.h:314
 AliITSUGeomTGeo.h:315
 AliITSUGeomTGeo.h:316
 AliITSUGeomTGeo.h:317
 AliITSUGeomTGeo.h:318
 AliITSUGeomTGeo.h:319
 AliITSUGeomTGeo.h:320
 AliITSUGeomTGeo.h:321
 AliITSUGeomTGeo.h:322
 AliITSUGeomTGeo.h:323
 AliITSUGeomTGeo.h:324
 AliITSUGeomTGeo.h:325
 AliITSUGeomTGeo.h:326
 AliITSUGeomTGeo.h:327
 AliITSUGeomTGeo.h:328
 AliITSUGeomTGeo.h:329
 AliITSUGeomTGeo.h:330
 AliITSUGeomTGeo.h:331
 AliITSUGeomTGeo.h:332
 AliITSUGeomTGeo.h:333
 AliITSUGeomTGeo.h:334
 AliITSUGeomTGeo.h:335
 AliITSUGeomTGeo.h:336
 AliITSUGeomTGeo.h:337
 AliITSUGeomTGeo.h:338
 AliITSUGeomTGeo.h:339
 AliITSUGeomTGeo.h:340
 AliITSUGeomTGeo.h:341
 AliITSUGeomTGeo.h:342
 AliITSUGeomTGeo.h:343
 AliITSUGeomTGeo.h:344
 AliITSUGeomTGeo.h:345
 AliITSUGeomTGeo.h:346
 AliITSUGeomTGeo.h:347
 AliITSUGeomTGeo.h:348
 AliITSUGeomTGeo.h:349
 AliITSUGeomTGeo.h:350
 AliITSUGeomTGeo.h:351
 AliITSUGeomTGeo.h:352
 AliITSUGeomTGeo.h:353
 AliITSUGeomTGeo.h:354
 AliITSUGeomTGeo.h:355
 AliITSUGeomTGeo.h:356
 AliITSUGeomTGeo.h:357
 AliITSUGeomTGeo.h:358
 AliITSUGeomTGeo.h:359
 AliITSUGeomTGeo.h:360
 AliITSUGeomTGeo.h:361
 AliITSUGeomTGeo.h:362
 AliITSUGeomTGeo.h:363
 AliITSUGeomTGeo.h:364
 AliITSUGeomTGeo.h:365
 AliITSUGeomTGeo.h:366
 AliITSUGeomTGeo.h:367
 AliITSUGeomTGeo.h:368
 AliITSUGeomTGeo.h:369
 AliITSUGeomTGeo.h:370
 AliITSUGeomTGeo.h:371
 AliITSUGeomTGeo.h:372
 AliITSUGeomTGeo.h:373
 AliITSUGeomTGeo.h:374
 AliITSUGeomTGeo.h:375
 AliITSUGeomTGeo.h:376
 AliITSUGeomTGeo.h:377