ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

///////////////////////////////////////////////////////////////////////////
//    AliITSgeomTGeo 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                                                         //
///////////////////////////////////////////////////////////////////////////

#include <TClass.h>
#include <TString.h>
#include <TGeoManager.h>
#include <TGeoPhysicalNode.h>

#include "AliITSgeomTGeo.h"
#include "AliLog.h"
#include "AliAlignObj.h"

ClassImp(AliITSgeomTGeo)

const Int_t AliITSgeomTGeo::fgkNModules = 2198;
const Int_t AliITSgeomTGeo::fgkNLadders[kNLayers] = {20,40,14,22,34,38};
const Int_t AliITSgeomTGeo::fgkNDetectors[kNLayers] = {4,4,6,8,22,25};

//______________________________________________________________________
Int_t AliITSgeomTGeo::GetModuleIndex(Int_t lay,Int_t lad,Int_t det)
{
  // The method is taken from the old AliITSgeom class by Bjorn Nilsen
  //
  // This routine computes the module index number from the layer,
  // ladder, and detector numbers. The number of ladders and detectors
  // per layer is set statically
  // see above for details.
  // 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.
  // Return:
  //    the module index number, starting from zero.
  //    -1 in case of error

  if (lay < 1 || lay > kNLayers) {
    AliErrorClass(Form("Invalid layer: %d (1 -> %d",lay,kNLayers));
    return -1;
  }

  if (lad < 1 || lad > fgkNLadders[lay-1] ||
      det < 1 || det > fgkNDetectors[lay-1]) {
    AliErrorClass(Form("Invalid layer,ladder,detector combination: %d, %d, %d",lay,lad,det));
    return -1;
  }

  Int_t index = fgkNDetectors[lay-1] * (lad-1) + (det-1);
  for(Int_t iLayer=0;iLayer < (lay-1); iLayer++)
    index += fgkNDetectors[iLayer]*fgkNLadders[iLayer];

  return index;
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::GetLayer(Int_t index,Int_t &lay,Int_t &index2) 
{
  // The method is taken from the old AliITSgeom class by Bjorn Nilsen
  //
  // This routine computes the layer number for a
  // given the module index. The number of ladders and detectors
  // per layer is defined statically,
  // see above for details.
  // Inputs:
  //     Int_t index  The module index number, starting from zero.
  // Outputs:
  //     Int_t index2 The module index inside a layer, starting from zero.
  //     Int_t lay    The layer number. Starting from 1.
  // Return:
  //     kTRUE in case of valid index
  //     kFALSE in case of error

  if (index < 0 || index >= fgkNModules) {
    index2 = -1;
    AliErrorClass(Form("Invalid module index: %d (0 -> %d)",index,fgkNModules));
    return -1;
  }

  lay = 0;
  index2 = 0;
  do {
    index2 += fgkNLadders[lay]*fgkNDetectors[lay];
    lay++;
  } while(index2 <= index);
  index2 -= fgkNLadders[lay-1]*fgkNDetectors[lay-1];
  index2 = index - index2;

  return lay;
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::GetModuleId(Int_t index,Int_t &lay,Int_t &lad,Int_t &det) 
{
  // The method is taken from the old AliITSgeom class by Bjorn Nilsen
  //
  // This routine computes the layer, ladder and detector number 
  // given the module index number. The number of ladders and detectors
  // per layer is defined statically,
  // see above for details.
  // 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:
  //     kTRUE in case of valid index
  //     kFALSE in case of error

  if (index < 0 || index >= fgkNModules) {
    lay = lad = det = -1;
    AliErrorClass(Form("Invalid module index: %d (0 -> %d)",index,fgkNModules));
    return kFALSE;
  }

  lay  = lad = det = 0;
  Int_t index2 = 0;
  do {
    index2 += fgkNLadders[lay]*fgkNDetectors[lay];
    lay++;
  } while(index2 <= index);
  index2 -= fgkNLadders[lay-1]*fgkNDetectors[lay-1];

  do {
    index2 += fgkNDetectors[lay-1];
    lad++;
  } while(index2 <= index);
  index2 -= fgkNDetectors[lay-1];

  det = index-index2+1;

  return kTRUE;
}

//______________________________________________________________________
const char* AliITSgeomTGeo::GetSymName(Int_t index) 
{
  // Get the TGeoPNEntry symbolic name
  // for a given module identified by 'index'

  if (index < 0 || index >= fgkNModules) {
    AliErrorClass(Form("Invalid ITS module index: %d (0 -> %d) !",index,fgkNModules));
    return NULL;
  }

  Int_t lay, index2;
  if (!GetLayer(index,lay,index2)) return NULL;

  return AliGeomManager::SymName((AliGeomManager::ELayerID)((lay-1)+AliGeomManager::kSPD1),index2);
}

//______________________________________________________________________
TGeoHMatrix* AliITSgeomTGeo::GetMatrix(Int_t index) 
{
  // Get the transformation matrix for a given module 'index'
  // by quering the TGeoManager

  TGeoPNEntry *pne = GetPNEntry(index);
  if (!pne) return NULL;

  TGeoPhysicalNode *pnode = pne->GetPhysicalNode();
  if (pnode) return pnode->GetMatrix();

  const char* path = pne->GetTitle();
  if (!gGeoManager->cd(path)) {
    AliErrorClass(Form("Volume path %s not valid!",path));
    return NULL;
  }
  return gGeoManager->GetCurrentMatrix();
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::GetTranslation(Int_t index, Double_t t[3]) 
{
  // Get the translation vector for a given module 'index'
  // by quering the TGeoManager

  TGeoHMatrix *m = GetMatrix(index);
  if (!m) return kFALSE;

  Double_t *trans = m->GetTranslation();
  for (Int_t i = 0; i < 3; i++) t[i] = trans[i];

  return kTRUE;
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::GetRotation(Int_t index, Double_t r[9]) 
{
  // Get the rotation matrix for a given module 'index'
  // by quering the TGeoManager

  TGeoHMatrix *m = GetMatrix(index);
  if (!m) return kFALSE;

  Double_t *rot = m->GetRotationMatrix();
  for (Int_t i = 0; i < 9; i++) r[i] = rot[i];

  return kTRUE;
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::GetOrigMatrix(Int_t index, TGeoHMatrix &m)
{
  // Get the original (ideal geometry) TGeo matrix for
  // a given module identified by 'index'.
  // The method is slow, so it should be used
  // with great care.

  m.Clear();

  const char *symname = GetSymName(index);
  if (!symname) return kFALSE;

  return AliGeomManager::GetOrigGlobalMatrix(symname,m);
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::GetOrigTranslation(Int_t index, Double_t t[3]) 
{
  // Get the original translation vector (ideal geometry)
  // for a given module 'index' by quering the TGeoManager

  TGeoHMatrix m;
  if (!GetOrigMatrix(index,m)) return kFALSE;

  Double_t *trans = m.GetTranslation();
  for (Int_t i = 0; i < 3; i++) t[i] = trans[i];

  return kTRUE;
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::GetOrigRotation(Int_t index, Double_t r[9]) 
{
  // Get the original rotation matrix (ideal geometry)
  // for a given module 'index' by quering the TGeoManager

  TGeoHMatrix m;
  if (!GetOrigMatrix(index,m)) return kFALSE;

  Double_t *rot = m.GetRotationMatrix();
  for (Int_t i = 0; i < 9; i++) r[i] = rot[i];

  return kTRUE;
}

//______________________________________________________________________
const TGeoHMatrix* AliITSgeomTGeo::GetTracking2LocalMatrix(Int_t index)
{
  // Get the matrix which transforms from the tracking to local r.s.
  // The method queries directly the TGeoPNEntry

  TGeoPNEntry *pne = GetPNEntry(index);
  if (!pne) return NULL;

  const TGeoHMatrix *m = pne->GetMatrix();
  if (!m)
    AliErrorClass(Form("TGeoPNEntry (%s) contains no matrix !",pne->GetName()));

  return m;
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::GetTrackingMatrix(Int_t index, TGeoHMatrix &m)
{
  // Get the matrix which transforms from the tracking r.s. to
  // the global one.
  // Returns kFALSE in case of error.

  m.Clear();

  TGeoHMatrix *m1 = GetMatrix(index);
  if (!m1) return kFALSE;

  const TGeoHMatrix *m2 = GetTracking2LocalMatrix(index);
  if (!m2) return kFALSE;

  m = *m1;
  m.Multiply(m2);

  return kTRUE;
}

//______________________________________________________________________
TGeoPNEntry* AliITSgeomTGeo::GetPNEntry(Int_t index)
{
  // Get a pointer to the TGeoPNEntry of a module
  // identified by 'index'
  // Returns NULL in case of invalid index,
  // missing TGeoManager or invalid symbolic name

  if (index < 0 || index >= fgkNModules) {
    AliErrorClass(Form("Invalid ITS module index: %d (0 -> %d) !",index,fgkNModules));
    return NULL;
  }
  
  if (!gGeoManager || !gGeoManager->IsClosed()) {
    AliErrorClass("Can't get the matrix! gGeoManager doesn't exist or it is still opened!");
    return NULL;
  }

  TGeoPNEntry* pne = gGeoManager->GetAlignableEntry(GetSymName(index));
  if (!pne)
    AliErrorClass(Form("The symbolic volume name %s does not correspond to a physical entry!",
		       GetSymName(index)));

  return pne;
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::LocalToGlobal(Int_t index,
				     const Double_t *loc, Double_t *glob)
{
  // Make the conversion from the local sensitive reference system to the global
  // reference system, for an arbitrary local position. The input is the pointer
  // to the array of local coordinates, the result is sent to the glob pointer.
  //
  // Please don't use this method to get the global coordinates of clusters, use
  // the direct method of AliCluster instead.

  const TGeoHMatrix *m2 = GetTracking2LocalMatrix(index);
  if (!m2) return kFALSE;

  // The shift (in local y only) between alignable and sensitive volume
  // is extracted directly from the Tracking2Local matrix
  Double_t locSens[] = {loc[0], loc[1]+m2->GetTranslation()[1], loc[2]};

  TGeoHMatrix *ml = GetMatrix(index);
  if (!ml) return kFALSE;
  ml->LocalToMaster(locSens,glob);
  return kTRUE;
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::GlobalToLocal(Int_t index,
				     const Double_t *glob, Double_t *loc)
{
  // Make the conversion from the global reference system to the sensitive local
  // reference system, for an arbitrary global position. The input is the pointer
  // to the array of global coordinates, the result is sent to the loc pointer.

  TGeoHMatrix *ml = GetMatrix(index);
  if (!ml) return kFALSE;

  const TGeoHMatrix *m2 = GetTracking2LocalMatrix(index);
  if (!m2) return kFALSE;
  ml->MasterToLocal(glob,loc);
  // The shift (in local y only) between alignable and sensitive volume
  // is extracted directly from the Tracking2Local matrix
  loc[1] -= m2->GetTranslation()[1];

  return kTRUE;
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::LocalToGlobalVect(Int_t index,
					 const Double_t *loc, Double_t *glob)
{
  // Make the conversion from the local sensitive reference system to the global
  // reference system, for an arbitrary vector. The input is the pointer to the
  // array of local coordinates, the result is sent to the glob pointer.

  TGeoHMatrix *ml = GetMatrix(index);
  if (!ml) return kFALSE;
  ml->LocalToMasterVect(loc,glob);
  return kTRUE;
}

//______________________________________________________________________
Bool_t AliITSgeomTGeo::GlobalToLocalVect(Int_t index,
					 const Double_t *glob, Double_t *loc)
{
  // Make the conversion from the global reference system to the sensitive local
  // reference system, for an arbitrary vector. The input is the pointer to the
  // array of global coordinates, the result is sent to the loc pointer.

  TGeoHMatrix *ml = GetMatrix(index);
  if (!ml) return kFALSE;
  ml->MasterToLocalVect(glob,loc);

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