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.                  *
 **************************************************************************/

/* $Id: AliEMCALEMCGeometry.cxx 29514 2008-10-26 10:24:38Z hristov $*/

//_________________________________________________________________________
// Geometry class  for EMCAL : singleton  
// EMCAL consists of layers of scintillator and lead
// with scintillator fiber arranged as "shish-kebab" skewers 
// Places the the Barrel Geometry of The EMCAL at Midrapidity
// between 80 and 180(or 190) degrees of Phi and
// -0.7 to 0.7 in eta 
//
//     EMCAL geometry tree:
//     EMCAL -> superModule -> module -> tower(cell)
//     Indexes
//     absId -> nSupMod     -> nModule -> (nIphi,nIeta)
//
//   Name choices: 
//   EMCAL_PDC06 (geometry used for PDC06 simulations, kept for backward compatibility)
//      = equivalent to SHISH_77_TRD1_2X2_FINAL_110DEG in old notation
//   EMCAL_COMPLETE (geometry for expected complete detector)
//      = equivalent to SHISH_77_TRD1_2X2_FINAL_110DEG scTh=0.176 pbTh=0.144
//          in old notation
//
//   EMCAL_FIRSTYEAR - geometry for December 2009 to December 2010 run period
//                     with four Super Modules
//  
//   Adding V1 (EMCAL_FIRSTYEARV1, EMCAL_COMPLETEV1) - geometry from December 2009 ; 
//                1. Fixed bug for positions of modules inside SM
//                   (first module has tilt 0.75 degree);
//                2. Added Al front plate (width 1 cm) and 2 paper sheets per sampling
//                   layer (additional 0.2 mm) 
//                   The sizes have updated with last information from production
//                   drawing (end of October 2010). 
//                3. COMPLETEV1 contains now only 10 SM for runs for year 2011
//                4. COMPLETE12SMV1 contains 12 SM for runs from year 2012 and on
//                5. COMPLETE12SMV1_DCAL contains 12 SM and 6 DCal SM
//                6. COMPLETE12SMV1_DCAL_DEV contains 12 SM and 10 DCal SM
//		  7. COMPLETE12SMV1_DCAL_8SM contains 12 SM and 6 DCal SM and 2 extentions
//
//   EMCAL_WSUC (Wayne State test stand)
//      = no definite equivalent in old notation, was only used by
//          Aleksei, but kept for testing purposes
//
//   etc.
//
//
//
//*-- Author: Sahal Yacoob (LBL / UCT)
//     and  : Yves Schutz (SUBATECH)
//     and  : Jennifer Klay (LBL)
//     and  : Aleksei Pavlinov (WSU) 
//     and  : Magali Estienne (SUBATECH)
//     and  : Adapted for DCAL by M.L. Wang CCNU Wuhan & Subatech Oct-23-2009

// --- Root header files ---
#include <TObjArray.h>
#include <TObjString.h>
#include <TRegexp.h>

// -- ALICE Headers.
#include "AliLog.h"

// --- EMCAL headers
#include "AliEMCALEMCGeometry.h"
#include <cassert>

ClassImp(AliEMCALEMCGeometry)

// these initialisations are needed for a singleton
Bool_t    AliEMCALEMCGeometry::fgInit      = kFALSE;
const Char_t*   AliEMCALEMCGeometry::fgkDefaultGeometryName = "EMCAL_COMPLETE12SMV1";


AliEMCALEMCGeometry::AliEMCALEMCGeometry() 
  : TNamed(),
    fGeoName(0),fEMCSMSystem(0x0),fArrayOpts(0),fNAdditionalOpts(0),fECPbRadThickness(0.),fECScintThick(0.),
    fNECLayers(0),fArm1PhiMin(0.),fArm1PhiMax(0.),fArm1EtaMin(0.),fArm1EtaMax(0.),fIPDistance(0.),
    fShellThickness(0.),fZLength(0.),fDCALInnerEdge(0.),fDCALPhiMin(0),fDCALPhiMax(0),fEMCALPhiMax(0),
    fDCALStandardPhiMax(0),fDCALInnerExtandedEta(0),fNZ(0),fNPhi(0),fSampling(0.),fNumberOfSuperModules(0),
    fFrontSteelStrip(0.),fLateralSteelStrip(0.),fPassiveScintThick(0.),fPhiModuleSize(0.),
    fEtaModuleSize(0.),fPhiTileSize(0.),fEtaTileSize(0.),fLongModuleSize(0.),fPhiSuperModule(0),fNPhiSuperModule(0),
    fNPHIdiv(0),fNETAdiv(0), fNCells(0),fNCellsInSupMod(0),fNCellsInModule(0),
    // Trigger staff
    fNTRUEta(0), fNTRUPhi(0), fNModulesInTRUEta(0), fNModulesInTRUPhi(0), fNEtaSubOfTRU(0), fNTotalTRU(0),
    // 
    fTrd1Angle(0.),f2Trd1Dx2(0.),fPhiGapForSM(0.),fKey110DEG(0),fnSupModInDCAL(0),fPhiBoundariesOfSM(0),
    fPhiCentersOfSM(0),fPhiCentersOfSMSec(0),fEtaMaxOfTRD1(0),fTrd1AlFrontThick(0.0), fTrd1BondPaperThick(0.),
    fCentersOfCellsEtaDir(0), fCentersOfCellsXDir(0),fCentersOfCellsPhiDir(0),
    fEtaCentersOfCells(0),fPhiCentersOfCells(0),fShishKebabTrd1Modules(0),
    fParSM(), fILOSS(-1), fIHADR(-1),
    //obsolete member data
     fGap2Active(0.), fSteelFrontThick(0.), fTrd2AngleY(0.),
    f2Trd2Dy2(0.), fEmptySpace(0.), fTubsR(0.), fTubsTurnAngle(0.)
{ 
  // default ctor only for internal usage (singleton)
  // must be kept public for root persistency purposes, 
  // but should never be called by the outside world    
  fParSM[0]=0; fParSM[1]=0; fParSM[2]=0;
  fEnvelop[0] = 0; fEnvelop[1] = 0; fEnvelop[2] = 0;
  for(Int_t i = 0; i < 6; i++) fkAdditionalOpts[i] = "";
  
  AliDebug(2, "AliEMCALEMCGeometry : default ctor ");
}
//______________________________________________________________________
AliEMCALEMCGeometry::AliEMCALEMCGeometry(const Text_t* name, const Text_t* title,
                                         const Text_t* mcname, const Text_t* mctitle ) :
  TNamed(name,title),
    fGeoName(0),fEMCSMSystem(0x0),fArrayOpts(0),fNAdditionalOpts(0),fECPbRadThickness(0.),fECScintThick(0.),
    fNECLayers(0),fArm1PhiMin(0.),fArm1PhiMax(0.),fArm1EtaMin(0.),fArm1EtaMax(0.),fIPDistance(0.),
    fShellThickness(0.),fZLength(0.),fDCALInnerEdge(0.),fDCALPhiMin(0),fDCALPhiMax(0),fEMCALPhiMax(0),
    fDCALStandardPhiMax(0),fDCALInnerExtandedEta(0),fNZ(0),fNPhi(0),fSampling(0.),fNumberOfSuperModules(0),
    fFrontSteelStrip(0.),fLateralSteelStrip(0.),fPassiveScintThick(0.),fPhiModuleSize(0.),
    fEtaModuleSize(0.),fPhiTileSize(0.),fEtaTileSize(0.),fLongModuleSize(0.),fPhiSuperModule(0),fNPhiSuperModule(0),
    fNPHIdiv(0),fNETAdiv(0), fNCells(0),fNCellsInSupMod(0),fNCellsInModule(0),
    // Trigger staff
    fNTRUEta(0), fNTRUPhi(0), fNModulesInTRUEta(0), fNModulesInTRUPhi(0), fNEtaSubOfTRU(0), fNTotalTRU(0),
    // 
    fTrd1Angle(0.),f2Trd1Dx2(0.),fPhiGapForSM(0.),fKey110DEG(0),fnSupModInDCAL(0),fPhiBoundariesOfSM(0),
    fPhiCentersOfSM(0),fPhiCentersOfSMSec(0),fEtaMaxOfTRD1(0),fTrd1AlFrontThick(0.0), fTrd1BondPaperThick(0.),
    fCentersOfCellsEtaDir(0),fCentersOfCellsXDir(0),fCentersOfCellsPhiDir(0),
    fEtaCentersOfCells(0),fPhiCentersOfCells(0),fShishKebabTrd1Modules(0),
    fParSM(),fILOSS(-1), fIHADR(-1), 
    //obsolete member data
    fGap2Active(0.), fSteelFrontThick(0.), fTrd2AngleY(0.),
    f2Trd2Dy2(0.), fEmptySpace(0.), fTubsR(0.), fTubsTurnAngle(0.)
{
  // ctor only for internal usage (singleton)
  AliDebug(2, Form("AliEMCALEMCGeometry(%s,%s,%s,%s) ", name,title,mcname,mctitle));

  Init(mcname,mctitle);

  //  CreateListOfTrd1Modules();

  if (AliDebugLevel()>=2) {
    PrintGeometry();
  }

}
//______________________________________________________________________
AliEMCALEMCGeometry::AliEMCALEMCGeometry(const AliEMCALEMCGeometry& geom)
  : TNamed(geom),
    fGeoName(geom.fGeoName),
    fEMCSMSystem(geom.fEMCSMSystem),
    fArrayOpts(geom.fArrayOpts),
    fNAdditionalOpts(geom.fNAdditionalOpts),
    fECPbRadThickness(geom.fECPbRadThickness),
    fECScintThick(geom.fECScintThick),
    fNECLayers(geom.fNECLayers),
    fArm1PhiMin(geom.fArm1PhiMin),
    fArm1PhiMax(geom.fArm1PhiMax),
    fArm1EtaMin(geom.fArm1EtaMin),
    fArm1EtaMax(geom.fArm1EtaMax),
    fIPDistance(geom.fIPDistance),
    fShellThickness(geom.fShellThickness),
    fZLength(geom.fZLength),
    fDCALInnerEdge(geom.fDCALInnerEdge),
    fDCALPhiMin(geom.fDCALPhiMin),
    fDCALPhiMax(geom.fDCALPhiMax),
    fEMCALPhiMax(geom.fEMCALPhiMax),
    fDCALStandardPhiMax(geom.fDCALStandardPhiMax),
    fDCALInnerExtandedEta(geom.fDCALInnerExtandedEta),
    fNZ(geom.fNZ),
    fNPhi(geom.fNPhi),
    fSampling(geom.fSampling),
    fNumberOfSuperModules(geom.fNumberOfSuperModules),
    fFrontSteelStrip(geom.fFrontSteelStrip),
    fLateralSteelStrip(geom.fLateralSteelStrip),
    fPassiveScintThick(geom.fPassiveScintThick),
    fPhiModuleSize(geom.fPhiModuleSize),
    fEtaModuleSize(geom.fEtaModuleSize),
    fPhiTileSize(geom.fPhiTileSize),
    fEtaTileSize(geom.fEtaTileSize),
    fLongModuleSize(geom.fLongModuleSize),
    fPhiSuperModule(geom.fPhiSuperModule),
    fNPhiSuperModule(geom.fNPhiSuperModule),
    fNPHIdiv(geom.fNPHIdiv),
    fNETAdiv(geom.fNETAdiv),
    fNCells(geom.fNCells),
    fNCellsInSupMod(geom.fNCellsInSupMod),
    fNCellsInModule(geom.fNCellsInModule),
    // Trigger staff
    fNTRUEta(geom.fNTRUEta),
    fNTRUPhi(geom.fNTRUPhi),
    fNModulesInTRUEta(geom.fNModulesInTRUEta),
    fNModulesInTRUPhi(geom.fNModulesInTRUPhi),
    fNEtaSubOfTRU(geom.fNEtaSubOfTRU),
    fNTotalTRU(geom.fNTotalTRU),
    //
    fTrd1Angle(geom.fTrd1Angle),
    f2Trd1Dx2(geom.f2Trd1Dx2),
    fPhiGapForSM(geom.fPhiGapForSM),
    fKey110DEG(geom.fKey110DEG),
    fnSupModInDCAL(geom.fnSupModInDCAL),
    fPhiBoundariesOfSM(geom.fPhiBoundariesOfSM),
    fPhiCentersOfSM(geom.fPhiCentersOfSM),
    fPhiCentersOfSMSec(geom.fPhiCentersOfSMSec),
    fEtaMaxOfTRD1(geom.fEtaMaxOfTRD1),
    fTrd1AlFrontThick(geom.fTrd1AlFrontThick),
    fTrd1BondPaperThick(geom.fTrd1BondPaperThick),
    fCentersOfCellsEtaDir(geom.fCentersOfCellsEtaDir),
    fCentersOfCellsXDir(geom.fCentersOfCellsXDir),
    fCentersOfCellsPhiDir(geom.fCentersOfCellsPhiDir),
    fEtaCentersOfCells(geom.fEtaCentersOfCells),
    fPhiCentersOfCells(geom.fPhiCentersOfCells),
    fShishKebabTrd1Modules(geom.fShishKebabTrd1Modules),
    fILOSS(geom.fILOSS), fIHADR(geom.fIHADR),
    //obsolete member data
    fGap2Active(geom.fGap2Active),
    fSteelFrontThick(geom.fSteelFrontThick),
    fTrd2AngleY(geom.fTrd2AngleY),
    f2Trd2Dy2(geom.f2Trd2Dy2),
    fEmptySpace(geom.fEmptySpace),
    fTubsR(geom.fTubsR),
    fTubsTurnAngle(geom.fTubsTurnAngle)
{
  //copy ctor
  fParSM[0]=geom.fParSM[0]; 
  fParSM[1]=geom.fParSM[1]; 
  fParSM[2]=geom.fParSM[2];
  fEnvelop[0] = geom.fEnvelop[0]; 
  fEnvelop[1] = geom.fEnvelop[1]; 
  fEnvelop[2] = geom.fEnvelop[2];
  for(Int_t i = 0; i < 6; i++) fkAdditionalOpts[i] = geom.fkAdditionalOpts[i];

}

//______________________________________________________________________
AliEMCALEMCGeometry::~AliEMCALEMCGeometry(void){
    // dtor
 delete fEMCSMSystem;
}

//______________________________________________________________________
void AliEMCALEMCGeometry::Init(const Text_t* mcname, const Text_t* mctitle){
  //
  // Initializes the EMCAL parameters based on the name
  // Only Shashlyk geometry is available, but various combinations of
  // layers and number of supermodules can be selected with additional
  // options or geometry name
  //

  fkAdditionalOpts[0] = "nl=";       // number of sampling layers (fNECLayers)
  fkAdditionalOpts[1] = "pbTh=";     // cm, Thickness of the Pb   (fECPbRadThick)
  fkAdditionalOpts[2] = "scTh=";     // cm, Thickness of the Sc    (fECScintThick)
  fkAdditionalOpts[3] = "latSS=";    // cm, Thickness of lateral steel strip (fLateralSteelStrip)
  fkAdditionalOpts[4] = "allILOSS="; // = 0,1,2,3,4 (4 - energy loss without fluctuation)
  fkAdditionalOpts[5] = "allIHADR="; // = 0,1,2 (0 - no hadronic interaction)

  fNAdditionalOpts = sizeof(fkAdditionalOpts) / sizeof(char*);

  // geometry
  fgInit = kFALSE; // Assume failed until proven otherwise.
  fGeoName   = GetName();
  fGeoName.ToUpper();

  //Convert old geometry names to new ones
  if(fGeoName.Contains("SHISH_77_TRD1_2X2_FINAL_110DEG")) {
    if(fGeoName.Contains("PBTH=0.144") && fGeoName.Contains("SCTH=0.176")) {
      fGeoName = "EMCAL_COMPLETE";
    } else {
      fGeoName = "EMCAL_PDC06";
    }
  }
  
  if(fGeoName.Contains("WSUC")) fGeoName = "EMCAL_WSUC";

  //check that we have a valid geometry name
  if(!( fGeoName.Contains("EMCAL_PDC06")
     || fGeoName.Contains("EMCAL_WSUC")  
     || fGeoName.Contains("EMCAL_COMPLETE")
     || fGeoName.Contains("EMCAL_COMPLETEV1")
     || fGeoName.Contains("EMCAL_COMPLETE12SMV1") 
     || fGeoName.Contains("EMCAL_FIRSTYEAR")
     || fGeoName.Contains("EMCAL_FIRSTYEARV1") )) {
    Fatal("Init", "%s is an undefined geometry!", fGeoName.Data()) ; 
  }

  // Option to know whether we have the "half" supermodule(s) or not
  fKey110DEG = 0;
  if(  fGeoName.Contains("COMPLETE")
    || fGeoName.Contains("PDC06") 
    || fGeoName.Contains("12SM")) fKey110DEG = 1; // for GetAbsCellId
  if(fGeoName.Contains("COMPLETEV1"))  fKey110DEG = 0; 
  fShishKebabTrd1Modules = 0;

  fnSupModInDCAL = 0;
  if(fGeoName.Contains("DCAL_DEV")){
    fnSupModInDCAL = 10;  
  } else if(fGeoName.Contains("DCAL_8SM")){
    fnSupModInDCAL = 8;
  } else if(fGeoName.Contains("DCAL")){
    fnSupModInDCAL = 6;
  }

  // JLK 13-Apr-2008
  //default parameters are those of EMCAL_COMPLETE geometry
  //all others render variations from these at the end of
  //geometry-name specific options

  fNumberOfSuperModules = 12;       // 12 = 6 * 2 (6 in phi, 2 in Z)
  fNPhi                 = 12;       // module granularity in phi within smod (azimuth)
  fNZ                   = 24;       // module granularity along Z within smod (eta)
  fNPHIdiv = fNETAdiv   = 2;        // tower granularity within module
  fArm1PhiMin           = 80.0;	    // degrees, Starting EMCAL Phi position
  fArm1PhiMax           = 200.0;    // degrees, Ending EMCAL Phi position
  fArm1EtaMin           = -0.7;	    // pseudorapidity, Starting EMCAL Eta position
  fArm1EtaMax           = +0.7;	    // pseudorapidity, Ending EMCAL Eta position
  fIPDistance           = 428.0;    // cm, radial distance to front face from nominal vertex point
  fPhiGapForSM          = 2.;       // cm, only for final TRD1 geometry
  fFrontSteelStrip      = 0.025;    // 0.025cm = 0.25mm  (13-may-05 from V.Petrov)
  fPassiveScintThick    = 0.8;      // 0.8cm   = 8mm     (13-may-05 from V.Petrov)
  fLateralSteelStrip    = 0.01;     // 0.01cm  = 0.1mm   (13-may-05 from V.Petrov) - was 0.025
  fTrd1Angle            = 1.5;      // in degrees	

  fSampling             = 1.;       // should be calculated with call to DefineSamplingFraction()
  fNECLayers            = 77;       // (13-may-05 from V.Petrov) - can be changed with additional options
  fECScintThick         = 0.176;    // scintillator layer thickness
  fECPbRadThickness     = 0.144;    // lead layer thickness

  fPhiModuleSize = 12.26 - fPhiGapForSM / Float_t(fNPhi); // first assumption
  fEtaModuleSize = fPhiModuleSize;

  fZLength              = 700.;     // Z coverage (cm)
  fPhiSuperModule       = 20. ;     // phi in degree
  fDCALInnerEdge        = fIPDistance * TMath::Tan( fTrd1Angle * 8.* TMath::DegToRad());

  //needs to be called for each geometry and before setting geometry
  //parameters which can depend on the outcome
  CheckAdditionalOptions();

  //modifications to the above for PDC06 geometry
  if(fGeoName.Contains("PDC06")){ // 18-may-05 - about common structure
    fECScintThick  = fECPbRadThickness = 0.16;// (13-may-05 from V.Petrov)    
    CheckAdditionalOptions();
  }

  //modifications to the above for WSUC geometry
  if(fGeoName.Contains("WSUC")){ // 18-may-05 - about common structure
    fNumberOfSuperModules = 2;  // 27-may-05; Nov 24,2010 for TB
    fNPhi = fNZ = 4; 
    fTrd1AlFrontThick   = 1.0;  // one cm
    // Bond paper - two sheets around Sc tile
    fTrd1BondPaperThick = 0.01; // 0.01cm = 0.1 mm
    
    fPhiModuleSize = 12.0;
    fEtaModuleSize = fPhiModuleSize;
    fLateralSteelStrip = 0.015; // 0.015cm  = 0.15mm

    CheckAdditionalOptions();
  }

  //In 2009-2010 data taking runs only 4 SM, in the upper position.
  if(fGeoName.Contains("FIRSTYEAR")){	
    fNumberOfSuperModules = 4;	
    fArm1PhiMax           = 120.0;
    CheckAdditionalOptions();	
  }
  
  if(fGeoName.Contains("FIRSTYEARV1") || fGeoName.Contains("COMPLETEV1") || fGeoName.Contains("COMPLETE12SMV1") ){
    // Oct 26,2010 : First module has tilt = 0.75 degree : 
    // look to AliEMCALShishKebabTrd1Module::DefineFirstModule(key)
    // New sizes from production drawing, added Al front plate.
    // The thickness of sampling is change due to existing two sheets of paper.
    
    // Will replace fFrontSteelStrip
    fTrd1AlFrontThick   = 1.0;  // one cm
    // Bond paper - two sheets around Sc tile
    fTrd1BondPaperThick = 0.01; // 0.01cm = 0.1 mm
    
    fPhiModuleSize = 12.0;
    fEtaModuleSize = fPhiModuleSize;
    fLateralSteelStrip = 0.015; // 0.015cm  = 0.15mm
    
    if(fGeoName.Contains("COMPLETEV1"))
    {
      fNumberOfSuperModules = 10;	
      fArm1PhiMax           = 180.0;
    }
    else if (fGeoName.Contains("COMPLETE12SMV1"))
    {
      fNumberOfSuperModules = 12;	
      fArm1PhiMax           = 200.0; 
    }
    if (fGeoName.Contains("DCAL"))
    {
      fNumberOfSuperModules = 12 + fnSupModInDCAL;
      fArm1PhiMax           = 320.0; 
      if(fGeoName.Contains("DCAL_8SM"))      fArm1PhiMax      = 340.0;	    // degrees, End of DCAL Phi position
      else if(fGeoName.Contains("DCAL_DEV")) fArm1PhiMin      = 40.0;	    // degrees, Starting EMCAL(shifted) Phi position
      fDCALPhiMin           = fArm1PhiMax - 10.*fnSupModInDCAL; 
    }
    CheckAdditionalOptions();	
  }

   fEMCSMSystem = new Int_t[fNumberOfSuperModules];
   Int_t iSM = 0;

 // BASIC EMCAL SM
   if(fGeoName.Contains("WSUC") ){
     for(int i = 0; i<2; i++){
       fEMCSMSystem[iSM] = kEMCAL_Standard;
       iSM++;
     }
   } else if(fGeoName.Contains("FIRSTYEAR") ){
     for(int i = 0; i<4; i++){
       fEMCSMSystem[iSM] = kEMCAL_Standard;
       iSM++;
     }
   } else if( fGeoName.Contains("PDC06")
           || fGeoName.Contains("COMPLETE") ){
     for(int i = 0; i<10; i++){
       fEMCSMSystem[iSM] = kEMCAL_Standard;
       iSM++;
     }
   }
 // EMCAL 110SM
   if(fKey110DEG && fGeoName.Contains("12SM") ){
     for(int i = 0; i<2; i++){
       fEMCSMSystem[iSM] = kEMCAL_Half;
       if(fGeoName.Contains("12SMV1") ){
         fEMCSMSystem[iSM] = kEMCAL_3rd;
       }
       iSM++;
     }
   }
 // DCAL SM
   if(fnSupModInDCAL && fGeoName.Contains("DCAL")){
     if(fGeoName.Contains("8SM")) {
       for(int i = 0; i<fnSupModInDCAL-2; i++){
         fEMCSMSystem[iSM] = kDCAL_Standard;
         iSM++;
       }
       for(int i = 0; i<2; i++){
         fEMCSMSystem[iSM] = kDCAL_Ext;
         iSM++;
       }
     } else {
       for(int i = 0; i<fnSupModInDCAL; i++){
         fEMCSMSystem[iSM] = kDCAL_Standard;
         iSM++;
       }
     }
   }

  // constant for transition absid <--> indexes
  fNCellsInModule = fNPHIdiv*fNETAdiv;
  fNCellsInSupMod = fNCellsInModule*fNPhi*fNZ;
  fNCells = 0;
   for( int i=0; i<fNumberOfSuperModules; i++) {
     if(      GetSMType(i) == kEMCAL_Standard) fNCells +=   fNCellsInSupMod   ;
     else if( GetSMType(i) == kEMCAL_Half)     fNCells +=   fNCellsInSupMod/2 ;
     else if( GetSMType(i) == kEMCAL_3rd)      fNCells +=   fNCellsInSupMod/3 ;
     else if( GetSMType(i) == kDCAL_Standard)  fNCells += 2*fNCellsInSupMod/3 ;
     else if( GetSMType(i) == kDCAL_Ext)       fNCells +=   fNCellsInSupMod/3 ;
     else AliError(Form("Uknown SuperModule Type !!"));
   }

  fNPhiSuperModule = fNumberOfSuperModules/2;
  if(fNPhiSuperModule < 1) fNPhiSuperModule = 1;
    
  fPhiTileSize = fPhiModuleSize/double(fNPHIdiv) - fLateralSteelStrip; // 13-may-05 
  fEtaTileSize = fEtaModuleSize/double(fNETAdiv) - fLateralSteelStrip; // 13-may-05 

  fLongModuleSize = fNECLayers*(fECScintThick + fECPbRadThickness);  
  if(fGeoName.Contains("V1")){
    Double_t ws = fECScintThick + fECPbRadThickness + 2.*fTrd1BondPaperThick; // sampling width
    // Number of Pb tiles = Number of Sc tiles - 1
    fLongModuleSize = fTrd1AlFrontThick + (ws*fNECLayers - fECPbRadThickness);
  }
  f2Trd1Dx2 = fEtaModuleSize + 2.*fLongModuleSize*TMath::Tan(fTrd1Angle*TMath::DegToRad()/2.);

  if(!fGeoName.Contains("WSUC")) fShellThickness  = TMath::Sqrt(fLongModuleSize*fLongModuleSize + f2Trd1Dx2*f2Trd1Dx2);

  //These parameters are used to create the mother volume to hold the supermodules
  //2cm padding added to allow for misalignments - JLK 30-May-2008
  fEnvelop[0]     = fIPDistance - 1.; // mother volume inner radius
  fEnvelop[1]     = fIPDistance + fShellThickness + 1.; // mother volume outer r.
  fEnvelop[2]     = fZLength + 2.; //mother volume length 

  // Local coordinates
  fParSM[0] = GetShellThickness()/2.;        
  fParSM[1] = GetPhiModuleSize() * GetNPhi()/2.;
  fParSM[2] = fZLength/4.;  //divide by 4 to get half-length of SM

  // SM phi boundaries - (0,1),(2,3) ... - has the same boundaries;
  fPhiBoundariesOfSM.Set(fNumberOfSuperModules);
  fPhiCentersOfSM.Set(fNumberOfSuperModules/2);
  fPhiCentersOfSMSec.Set(fNumberOfSuperModules/2);
  Double_t kfSupermodulePhiWidth = fPhiSuperModule*TMath::DegToRad();
  fPhiCentersOfSM[0]    = (fArm1PhiMin + fPhiSuperModule/2.) * TMath::DegToRad(); // Define from First SM
  fPhiCentersOfSMSec[0] = fPhiCentersOfSM[0];  // the same in the First SM
  fPhiBoundariesOfSM[0] = fPhiCentersOfSM[0] - TMath::ATan2(fParSM[1] , fIPDistance); // 1th and 2th modules)
  fPhiBoundariesOfSM[1] = fPhiCentersOfSM[0] + TMath::ATan2(fParSM[1] , fIPDistance);
  if(fNumberOfSuperModules > 2) { // 2 to Max
    Int_t tmpSMType = GetSMType(2);
     for(int i = 1; i<fNPhiSuperModule; i++) {
       fPhiBoundariesOfSM[2*i]   += fPhiBoundariesOfSM[2*i-2] + kfSupermodulePhiWidth;
       if(tmpSMType == GetSMType(2*i)) {
         fPhiBoundariesOfSM[2*i+1]  += fPhiBoundariesOfSM[2*i-1] + kfSupermodulePhiWidth;
       } else { 
         //changed SM Type, redefine the [2*i+1] Boundaries
         tmpSMType = GetSMType(2*i);
         if(        GetSMType(2*i)  == kEMCAL_Standard) {
           fPhiBoundariesOfSM[2*i+1] = fPhiBoundariesOfSM[2*i] + kfSupermodulePhiWidth;
         } else if( GetSMType(2*i)  == kEMCAL_Half)     {
           fPhiBoundariesOfSM[2*i+1] = fPhiBoundariesOfSM[2*i] + 2.*TMath::ATan2((fParSM[1])/2, fIPDistance);
         } else if( GetSMType(2*i)  == kEMCAL_3rd )     {
           fPhiBoundariesOfSM[2*i+1] = fPhiBoundariesOfSM[2*i] + 2.*TMath::ATan2((fParSM[1])/3, fIPDistance);
         } else if( GetSMType(2*i)  == kDCAL_Standard ) {      // jump the gap
           fPhiBoundariesOfSM[2*i]   = (fDCALPhiMin - fArm1PhiMin)*TMath::DegToRad() + fPhiBoundariesOfSM[0];
           fPhiBoundariesOfSM[2*i+1] = (fDCALPhiMin - fArm1PhiMin)*TMath::DegToRad() + fPhiBoundariesOfSM[1];
         } else if( GetSMType(2*i)  == kDCAL_Ext)       {
           fPhiBoundariesOfSM[2*i+1] = fPhiBoundariesOfSM[2*i] + 2.*TMath::ATan2((fParSM[1])/3, fIPDistance); 
         }
      }
      fPhiCentersOfSM[i]    = (fPhiBoundariesOfSM[2*i]+fPhiBoundariesOfSM[2*i+1])/2.;
      fPhiCentersOfSMSec[i] = fPhiBoundariesOfSM[2*i] + TMath::ATan2(fParSM[1] , fIPDistance);
    }
  }

  //inner extend in eta (same as outer part) for DCal (0.189917), //calculated from the smallest gap (1# cell to the 80-degree-edge),
  Double_t fInnerExtandedPhi = 1.102840997; //calculated from the smallest gap (1# cell to the 80-degree-edge), too complicatd to explain...
  fDCALInnerExtandedEta = -TMath::Log(TMath::Tan( (TMath::Pi()/2. - 8*fTrd1Angle*TMath::DegToRad() + (TMath::Pi()/2 - fNZ*fTrd1Angle*TMath::DegToRad() - TMath::ATan(TMath::Exp(fArm1EtaMin))*2))/2.));

  fEMCALPhiMax  = fArm1PhiMin;    
  fDCALPhiMax   = fDCALPhiMin;// DCAl extention will not be included
  for( Int_t i = 0; i < fNumberOfSuperModules; i+=2) {
    if(      GetSMType(i) == kEMCAL_Standard ) fEMCALPhiMax += 20.;
    else if( GetSMType(i) == kEMCAL_Half     ) fEMCALPhiMax += fPhiSuperModule/2. + fInnerExtandedPhi;
    else if( GetSMType(i) == kEMCAL_3rd      ) fEMCALPhiMax += fPhiSuperModule/3. + 4.0*fInnerExtandedPhi/3.0;
    else if( GetSMType(i) == kDCAL_Standard  ) {fDCALPhiMax  += 20.; fDCALStandardPhiMax = fDCALPhiMax;}
    else if( GetSMType(i) == kDCAL_Ext       ) fDCALPhiMax  += fPhiSuperModule/3. + 4.0*fInnerExtandedPhi/3.0;
    else AliError("Unkown SM Type!!");
  }
// for compatible reason
// if(fNumberOfSuperModules == 4) {fEMCALPhiMax = fArm1PhiMax ;}
 if(fNumberOfSuperModules == 12) {fEMCALPhiMax = fArm1PhiMax ;}  
  
  //called after setting of scintillator and lead layer parameters
  DefineSamplingFraction(mcname,mctitle);

  
  // TRU parameters - Apr 29,08 by PAI. 
  // These parameters values was updated at Nov 05, 2007
  // As is on Olivier  BOURRION (LPSC) ppt preasentation 
  // at ALICE trigger meeting at 13th-14th March
  fNTRUEta = 1;           // was 3
  fNTRUPhi = 3;           // was 1
  fNModulesInTRUEta = 24; // was 8
  fNModulesInTRUPhi = 4;  // was 12
  // Jet trigger 
  // 3*6*10 + 2*6*2 = 204 -> matrix (nphi(17), neta(12))
  fNEtaSubOfTRU     = 6;  

  fNTotalTRU = 0;
  for(Int_t i = 0; i < GetNumberOfSuperModules(); i++){
    if(      GetSMType(i) == kEMCAL_Standard)  fNTotalTRU += 3;
    else if( GetSMType(i) == kEMCAL_Half)      fNTotalTRU += 1;
    else if( GetSMType(i) == kEMCAL_3rd)       fNTotalTRU += 1;
    else if( GetSMType(i) == kDCAL_Standard)   fNTotalTRU += 3;
    else if( GetSMType(i) == kDCAL_Ext)        fNTotalTRU += 1;
    else {
      AliError(Form("Uknown SuperModule Type !!"));
    }
  }

  fgInit = kTRUE; 
}

//___________________________________________________________________
void AliEMCALEMCGeometry::PrintGeometry()
{
  // Separate routine is callable from broswer; Nov 7,2006
  printf("\nInit: geometry of EMCAL named %s :\n", fGeoName.Data());
  if(fArrayOpts) {
    for(Int_t i=0; i<fArrayOpts->GetEntries(); i++){
      TObjString *o = (TObjString*)fArrayOpts->At(i);
      printf(" %i : %s \n", i, o->String().Data());
    }
  }
  if(fGeoName.Contains("DCAL")) {
   printf("Phi min of DCAL SuperModule: %7.1f, DCAL has %d SuperModule\n", fDCALPhiMin, fnSupModInDCAL);
   printf("The DCAL inner edge is +- %7.1f\n", fDCALInnerEdge);
    if(fGeoName.Contains("DCAL_8SM")) printf("DCAL has its 2 EXTENTION SM\n");
  }
  printf("Granularity: %d in eta and %d in phi\n", GetNZ(), GetNPhi()) ;
  printf("Layout: phi = (%7.1f, %7.1f), eta = (%5.2f, %5.2f), IP = %7.2f -> for EMCAL envelope only\n",  
	   GetArm1PhiMin(), GetArm1PhiMax(),GetArm1EtaMin(), GetArm1EtaMax(), GetIPDistance() );

  printf( "               ECAL      : %d x (%f cm Pb, %f cm Sc) \n", 
  GetNECLayers(), GetECPbRadThick(), GetECScintThick() ) ; 
  printf("                fSampling %5.2f \n",  fSampling );
  printf(" fIPDistance       %6.3f cm \n", fIPDistance);
  printf(" fNPhi %i   |  fNZ %i \n", fNPhi, fNZ);
  printf(" fNCellsInModule %i : fNCellsInSupMod %i : fNCells %i\n",fNCellsInModule, fNCellsInSupMod, fNCells);
  printf(" X:Y module size     %6.3f , %6.3f cm \n", fPhiModuleSize, fEtaModuleSize);
  printf(" X:Y   tile size     %6.3f , %6.3f cm \n", fPhiTileSize, fEtaTileSize);
  printf(" #of sampling layers %i(fNECLayers) \n", fNECLayers);
  printf(" fLongModuleSize     %6.3f cm \n", fLongModuleSize);
  printf(" #supermodule in phi direction %i \n", fNPhiSuperModule );
  printf(" supermodule width in phi direction %f \n", fPhiSuperModule );
  printf(" fILOSS %i : fIHADR %i \n", fILOSS, fIHADR);
  printf(" fTrd1Angle %7.4f\n", fTrd1Angle);
  printf(" f2Trd1Dx2  %7.4f\n",  f2Trd1Dx2);
  printf(" fTrd1AlFrontThick   %7.4f \n", fTrd1AlFrontThick);
  printf(" fTrd1BondPaperThick %5.4f \n", fTrd1BondPaperThick);
  printf("SM dimensions(TRD1) : dx %7.2f dy %7.2f dz %7.2f (SMOD, BOX)\n", 
	 fParSM[0],fParSM[1],fParSM[2]);
  printf(" fPhiGapForSM  %7.4f cm (%7.4f <- phi size in degree)\n",  
	 fPhiGapForSM, TMath::ATan2(fPhiGapForSM,fIPDistance)*TMath::RadToDeg());
  if( fKey110DEG && !fGeoName.Contains("12SMV1") ) printf(" Last two modules have size 10 degree in  phi (180<phi<190)\n");
  if( fKey110DEG && fGeoName.Contains("12SMV1")) printf(" Last two modules have size 6.6 degree in  phi (180<phi<186.6)\n");
  printf(" phi SM boundaries \n"); 
  for(int i=0; i<fPhiBoundariesOfSM.GetSize()/2.; i++) {
    printf(" %i : %7.15f(%7.12f) -> %7.15f(%7.12f) : center %7.15f(%7.12f) \n", i, 
	   fPhiBoundariesOfSM[2*i], fPhiBoundariesOfSM[2*i]*TMath::RadToDeg(),
	   fPhiBoundariesOfSM[2*i+1], fPhiBoundariesOfSM[2*i+1]*TMath::RadToDeg(),
	   fPhiCentersOfSM[i], fPhiCentersOfSM[i]*TMath::RadToDeg());
  }

}

//______________________________________________________________________
void AliEMCALEMCGeometry::CheckAdditionalOptions()
{
  // Feb 06,2006
  // Additional options that
  // can be used to select
  // the specific geometry of 
  // EMCAL to run
  // Dec 27,2006
  // adeed allILOSS= and allIHADR= for MIP investigation
  fArrayOpts = new TObjArray;
  Int_t nopt = ParseString(fGeoName, *fArrayOpts);
  if(nopt==1) { // no aditional option(s)
    fArrayOpts->Delete();
    delete fArrayOpts;
    fArrayOpts = 0; 
    return;
  }  		 
  for(Int_t i=1; i<nopt; i++){
    TObjString *o = (TObjString*)fArrayOpts->At(i); 

    TString addOpt = o->String();
    Int_t indj=-1;
    for(Int_t j=0; j<fNAdditionalOpts; j++) {
      TString opt = fkAdditionalOpts[j];
      if(addOpt.Contains(opt,TString::kIgnoreCase)) {
	  indj = j;
        break;
      }
    }
    if(indj<0) {
      AliDebug(2,Form("<E> option |%s| unavailable : ** look to the file AliEMCALGeometry.h **\n", 
		      addOpt.Data()));
      assert(0);
    } else {
      AliDebug(2,Form("<I> option |%s| is valid : number %i : |%s|\n", 
		      addOpt.Data(), indj, fkAdditionalOpts[indj]));
      if       (addOpt.Contains("NL=",TString::kIgnoreCase))   {// number of sampling layers
        sscanf(addOpt.Data(),"NL=%i", &fNECLayers);
        AliDebug(2,Form(" fNECLayers %i (new) \n", fNECLayers));
      } else if(addOpt.Contains("PBTH=",TString::kIgnoreCase)) {//Thickness of the Pb(fECPbRadThicknes)
        sscanf(addOpt.Data(),"PBTH=%f", &fECPbRadThickness);
      } else if(addOpt.Contains("SCTH=",TString::kIgnoreCase)) {//Thickness of the Sc(fECScintThick)
        sscanf(addOpt.Data(),"SCTH=%f", &fECScintThick);
      } else if(addOpt.Contains("LATSS=",TString::kIgnoreCase)) {// Thickness of lateral steel strip (fLateralSteelStrip)
        sscanf(addOpt.Data(),"LATSS=%f", &fLateralSteelStrip);
        AliDebug(2,Form(" fLateralSteelStrip %f (new) \n", fLateralSteelStrip));
      } else if(addOpt.Contains("ILOSS=",TString::kIgnoreCase)) {// As in Geant
        sscanf(addOpt.Data(),"ALLILOSS=%i", &fILOSS);
        AliDebug(2,Form(" fILOSS %i \n", fILOSS));
      } else if(addOpt.Contains("IHADR=",TString::kIgnoreCase)) {// As in Geant
        sscanf(addOpt.Data(),"ALLIHADR=%i", &fIHADR);
        AliDebug(2,Form(" fIHADR %i \n", fIHADR));
      }
    }
  }
}

//__________________________________________________________________
void AliEMCALEMCGeometry::DefineSamplingFraction(const Text_t* mcname, const Text_t* mctitle)
{
  // Jun 05,2006
  // Look http://rhic.physics.wayne.edu/~pavlinov/ALICE/SHISHKEBAB/RES/linearityAndResolutionForTRD1.html
  // Keep for compatibilty
  //
  
  // Sampling factor for G3
  fSampling = 10.87; // Default value - Nov 25,2010
  if(fNECLayers == 69) {        // 10% layer reduction
    fSampling = 12.55;
  } else if(fNECLayers == 61) { // 20% layer reduction
    fSampling = 12.80;
  } else if(fNECLayers == 77) {
    if(fGeoName.Contains("V1")){
      fSampling = 10.87; //Adding paper sheets and cover plate; Nov 25,2010
    } else if   (fECScintThick>0.159 && fECScintThick<0.161) { // original sampling fraction, equal layers
      fSampling = 12.327; // fECScintThick = fECPbRadThickness = 0.160;
    } else if (fECScintThick>0.175 && fECScintThick<0.177) { // 10% Pb thicknes reduction
      fSampling = 10.5; // fECScintThick = 0.176, fECPbRadThickness=0.144;
    } else if(fECScintThick>0.191 && fECScintThick<0.193) { // 20% Pb thicknes reduction
      fSampling = 8.93; // fECScintThick = 0.192, fECPbRadThickness=0.128;
    }
  }

  // Default sampling factor for G3, modify it for other transport model
  TString mcName  = mcname;
  TString mcTitle = mctitle;

  Float_t samplingFactorTranportModel = 1. ;
  if     (mcName.Contains("Geant3")) samplingFactorTranportModel = 1.;//0.988 // Do nothing
  else if(mcName.Contains("Fluka") ) samplingFactorTranportModel = 1.; // To be set
  else if(mcName.Contains("Geant4")){
    if(mcTitle.Contains("EMV"))      samplingFactorTranportModel = 1.096; // 0.906, 0.896 (OPT)
    else                             samplingFactorTranportModel = 0.86; // 1.15 (CHIPS), 1.149 (BERT), 1.147 (BERT_CHIPS) 
  }      
  
  AliDebug(2,Form("MC modeler <%s>, Title <%s>: Sampling %f, model fraction with respect to G3 %f, final sampling %f \n",
               mcName.Data(),mcTitle.Data(),fSampling,samplingFactorTranportModel,fSampling*samplingFactorTranportModel));

  
  fSampling*=samplingFactorTranportModel;
  
}

//________________________________________________________________________________________________
Double_t AliEMCALEMCGeometry::GetPhiCenterOfSMSec(Int_t nsupmod) const
{
  //returns center of supermodule in phi
  int i = nsupmod/2;
  return fPhiCentersOfSMSec[i];

}

//________________________________________________________________________________________________
Double_t AliEMCALEMCGeometry::GetPhiCenterOfSM(Int_t nsupmod) const
{
  //returns center of supermodule in phi
  int i = nsupmod/2;
  return fPhiCentersOfSM[i];

}

//________________________________________________________________________________________________
Bool_t AliEMCALEMCGeometry::GetPhiBoundariesOfSM(Int_t nSupMod, Double_t &phiMin, Double_t &phiMax) const
{
  // 0<= nSupMod <=17; phi in rad
  static int i;
  if(nSupMod<0 || nSupMod >12+fnSupModInDCAL-1) return kFALSE;
  i = nSupMod/2;
  phiMin = (Double_t)fPhiBoundariesOfSM[2*i];
  phiMax = (Double_t)fPhiBoundariesOfSM[2*i+1];
  return kTRUE;
}

//________________________________________________________________________________________________
Bool_t AliEMCALEMCGeometry::GetPhiBoundariesOfSMGap(Int_t nPhiSec, Double_t &phiMin, Double_t &phiMax) const
{
  // 0<= nPhiSec <=max; phi in rad
  // 0;  gap boundaries between  0th&2th  | 1th&3th SM
  // 1;  gap boundaries between  2th&4th  | 3th&5th SM
  // 2;  gap boundaries between  4th&6th  | 5th&7th SM
  // 3;  gap boundaries between  6th&8th  | 7th&9th SM
  // 4;  gap boundaries between  8th&10th | 9th&11th SM
  // 5;  gap boundaries between 10th&12th | 11h&13th SM
  //             ...
  if(nPhiSec<0 || nPhiSec >5+fnSupModInDCAL/2-1) return kFALSE;
  phiMin = fPhiBoundariesOfSM[2*nPhiSec+1];
  phiMax = fPhiBoundariesOfSM[2*nPhiSec+2];
  return kTRUE;
}

//________________________________________________________________________________________________
int AliEMCALEMCGeometry::ParseString(const TString &topt, TObjArray &Opt)
{ 
	//Parse string, does what? GCB 08/09
	Ssiz_t begin, index, end, end2;
	begin = index = end = end2 = 0;
	TRegexp separator("[^ ;,\\t\\s/]+");
	while ( (begin < topt.Length()) && (index != kNPOS) ) {
		// loop over given options
		index = topt.Index(separator,&end,begin);
		if (index >= 0 && end >= 1) {
			TString substring(topt(index,end));
			Opt.Add(new TObjString(substring.Data()));
		}
		begin += end+1;
	}
	return Opt.GetEntries();
}

 AliEMCALEMCGeometry.cxx:1
 AliEMCALEMCGeometry.cxx:2
 AliEMCALEMCGeometry.cxx:3
 AliEMCALEMCGeometry.cxx:4
 AliEMCALEMCGeometry.cxx:5
 AliEMCALEMCGeometry.cxx:6
 AliEMCALEMCGeometry.cxx:7
 AliEMCALEMCGeometry.cxx:8
 AliEMCALEMCGeometry.cxx:9
 AliEMCALEMCGeometry.cxx:10
 AliEMCALEMCGeometry.cxx:11
 AliEMCALEMCGeometry.cxx:12
 AliEMCALEMCGeometry.cxx:13
 AliEMCALEMCGeometry.cxx:14
 AliEMCALEMCGeometry.cxx:15
 AliEMCALEMCGeometry.cxx:16
 AliEMCALEMCGeometry.cxx:17
 AliEMCALEMCGeometry.cxx:18
 AliEMCALEMCGeometry.cxx:19
 AliEMCALEMCGeometry.cxx:20
 AliEMCALEMCGeometry.cxx:21
 AliEMCALEMCGeometry.cxx:22
 AliEMCALEMCGeometry.cxx:23
 AliEMCALEMCGeometry.cxx:24
 AliEMCALEMCGeometry.cxx:25
 AliEMCALEMCGeometry.cxx:26
 AliEMCALEMCGeometry.cxx:27
 AliEMCALEMCGeometry.cxx:28
 AliEMCALEMCGeometry.cxx:29
 AliEMCALEMCGeometry.cxx:30
 AliEMCALEMCGeometry.cxx:31
 AliEMCALEMCGeometry.cxx:32
 AliEMCALEMCGeometry.cxx:33
 AliEMCALEMCGeometry.cxx:34
 AliEMCALEMCGeometry.cxx:35
 AliEMCALEMCGeometry.cxx:36
 AliEMCALEMCGeometry.cxx:37
 AliEMCALEMCGeometry.cxx:38
 AliEMCALEMCGeometry.cxx:39
 AliEMCALEMCGeometry.cxx:40
 AliEMCALEMCGeometry.cxx:41
 AliEMCALEMCGeometry.cxx:42
 AliEMCALEMCGeometry.cxx:43
 AliEMCALEMCGeometry.cxx:44
 AliEMCALEMCGeometry.cxx:45
 AliEMCALEMCGeometry.cxx:46
 AliEMCALEMCGeometry.cxx:47
 AliEMCALEMCGeometry.cxx:48
 AliEMCALEMCGeometry.cxx:49
 AliEMCALEMCGeometry.cxx:50
 AliEMCALEMCGeometry.cxx:51
 AliEMCALEMCGeometry.cxx:52
 AliEMCALEMCGeometry.cxx:53
 AliEMCALEMCGeometry.cxx:54
 AliEMCALEMCGeometry.cxx:55
 AliEMCALEMCGeometry.cxx:56
 AliEMCALEMCGeometry.cxx:57
 AliEMCALEMCGeometry.cxx:58
 AliEMCALEMCGeometry.cxx:59
 AliEMCALEMCGeometry.cxx:60
 AliEMCALEMCGeometry.cxx:61
 AliEMCALEMCGeometry.cxx:62
 AliEMCALEMCGeometry.cxx:63
 AliEMCALEMCGeometry.cxx:64
 AliEMCALEMCGeometry.cxx:65
 AliEMCALEMCGeometry.cxx:66
 AliEMCALEMCGeometry.cxx:67
 AliEMCALEMCGeometry.cxx:68
 AliEMCALEMCGeometry.cxx:69
 AliEMCALEMCGeometry.cxx:70
 AliEMCALEMCGeometry.cxx:71
 AliEMCALEMCGeometry.cxx:72
 AliEMCALEMCGeometry.cxx:73
 AliEMCALEMCGeometry.cxx:74
 AliEMCALEMCGeometry.cxx:75
 AliEMCALEMCGeometry.cxx:76
 AliEMCALEMCGeometry.cxx:77
 AliEMCALEMCGeometry.cxx:78
 AliEMCALEMCGeometry.cxx:79
 AliEMCALEMCGeometry.cxx:80
 AliEMCALEMCGeometry.cxx:81
 AliEMCALEMCGeometry.cxx:82
 AliEMCALEMCGeometry.cxx:83
 AliEMCALEMCGeometry.cxx:84
 AliEMCALEMCGeometry.cxx:85
 AliEMCALEMCGeometry.cxx:86
 AliEMCALEMCGeometry.cxx:87
 AliEMCALEMCGeometry.cxx:88
 AliEMCALEMCGeometry.cxx:89
 AliEMCALEMCGeometry.cxx:90
 AliEMCALEMCGeometry.cxx:91
 AliEMCALEMCGeometry.cxx:92
 AliEMCALEMCGeometry.cxx:93
 AliEMCALEMCGeometry.cxx:94
 AliEMCALEMCGeometry.cxx:95
 AliEMCALEMCGeometry.cxx:96
 AliEMCALEMCGeometry.cxx:97
 AliEMCALEMCGeometry.cxx:98
 AliEMCALEMCGeometry.cxx:99
 AliEMCALEMCGeometry.cxx:100
 AliEMCALEMCGeometry.cxx:101
 AliEMCALEMCGeometry.cxx:102
 AliEMCALEMCGeometry.cxx:103
 AliEMCALEMCGeometry.cxx:104
 AliEMCALEMCGeometry.cxx:105
 AliEMCALEMCGeometry.cxx:106
 AliEMCALEMCGeometry.cxx:107
 AliEMCALEMCGeometry.cxx:108
 AliEMCALEMCGeometry.cxx:109
 AliEMCALEMCGeometry.cxx:110
 AliEMCALEMCGeometry.cxx:111
 AliEMCALEMCGeometry.cxx:112
 AliEMCALEMCGeometry.cxx:113
 AliEMCALEMCGeometry.cxx:114
 AliEMCALEMCGeometry.cxx:115
 AliEMCALEMCGeometry.cxx:116
 AliEMCALEMCGeometry.cxx:117
 AliEMCALEMCGeometry.cxx:118
 AliEMCALEMCGeometry.cxx:119
 AliEMCALEMCGeometry.cxx:120
 AliEMCALEMCGeometry.cxx:121
 AliEMCALEMCGeometry.cxx:122
 AliEMCALEMCGeometry.cxx:123
 AliEMCALEMCGeometry.cxx:124
 AliEMCALEMCGeometry.cxx:125
 AliEMCALEMCGeometry.cxx:126
 AliEMCALEMCGeometry.cxx:127
 AliEMCALEMCGeometry.cxx:128
 AliEMCALEMCGeometry.cxx:129
 AliEMCALEMCGeometry.cxx:130
 AliEMCALEMCGeometry.cxx:131
 AliEMCALEMCGeometry.cxx:132
 AliEMCALEMCGeometry.cxx:133
 AliEMCALEMCGeometry.cxx:134
 AliEMCALEMCGeometry.cxx:135
 AliEMCALEMCGeometry.cxx:136
 AliEMCALEMCGeometry.cxx:137
 AliEMCALEMCGeometry.cxx:138
 AliEMCALEMCGeometry.cxx:139
 AliEMCALEMCGeometry.cxx:140
 AliEMCALEMCGeometry.cxx:141
 AliEMCALEMCGeometry.cxx:142
 AliEMCALEMCGeometry.cxx:143
 AliEMCALEMCGeometry.cxx:144
 AliEMCALEMCGeometry.cxx:145
 AliEMCALEMCGeometry.cxx:146
 AliEMCALEMCGeometry.cxx:147
 AliEMCALEMCGeometry.cxx:148
 AliEMCALEMCGeometry.cxx:149
 AliEMCALEMCGeometry.cxx:150
 AliEMCALEMCGeometry.cxx:151
 AliEMCALEMCGeometry.cxx:152
 AliEMCALEMCGeometry.cxx:153
 AliEMCALEMCGeometry.cxx:154
 AliEMCALEMCGeometry.cxx:155
 AliEMCALEMCGeometry.cxx:156
 AliEMCALEMCGeometry.cxx:157
 AliEMCALEMCGeometry.cxx:158
 AliEMCALEMCGeometry.cxx:159
 AliEMCALEMCGeometry.cxx:160
 AliEMCALEMCGeometry.cxx:161
 AliEMCALEMCGeometry.cxx:162
 AliEMCALEMCGeometry.cxx:163
 AliEMCALEMCGeometry.cxx:164
 AliEMCALEMCGeometry.cxx:165
 AliEMCALEMCGeometry.cxx:166
 AliEMCALEMCGeometry.cxx:167
 AliEMCALEMCGeometry.cxx:168
 AliEMCALEMCGeometry.cxx:169
 AliEMCALEMCGeometry.cxx:170
 AliEMCALEMCGeometry.cxx:171
 AliEMCALEMCGeometry.cxx:172
 AliEMCALEMCGeometry.cxx:173
 AliEMCALEMCGeometry.cxx:174
 AliEMCALEMCGeometry.cxx:175
 AliEMCALEMCGeometry.cxx:176
 AliEMCALEMCGeometry.cxx:177
 AliEMCALEMCGeometry.cxx:178
 AliEMCALEMCGeometry.cxx:179
 AliEMCALEMCGeometry.cxx:180
 AliEMCALEMCGeometry.cxx:181
 AliEMCALEMCGeometry.cxx:182
 AliEMCALEMCGeometry.cxx:183
 AliEMCALEMCGeometry.cxx:184
 AliEMCALEMCGeometry.cxx:185
 AliEMCALEMCGeometry.cxx:186
 AliEMCALEMCGeometry.cxx:187
 AliEMCALEMCGeometry.cxx:188
 AliEMCALEMCGeometry.cxx:189
 AliEMCALEMCGeometry.cxx:190
 AliEMCALEMCGeometry.cxx:191
 AliEMCALEMCGeometry.cxx:192
 AliEMCALEMCGeometry.cxx:193
 AliEMCALEMCGeometry.cxx:194
 AliEMCALEMCGeometry.cxx:195
 AliEMCALEMCGeometry.cxx:196
 AliEMCALEMCGeometry.cxx:197
 AliEMCALEMCGeometry.cxx:198
 AliEMCALEMCGeometry.cxx:199
 AliEMCALEMCGeometry.cxx:200
 AliEMCALEMCGeometry.cxx:201
 AliEMCALEMCGeometry.cxx:202
 AliEMCALEMCGeometry.cxx:203
 AliEMCALEMCGeometry.cxx:204
 AliEMCALEMCGeometry.cxx:205
 AliEMCALEMCGeometry.cxx:206
 AliEMCALEMCGeometry.cxx:207
 AliEMCALEMCGeometry.cxx:208
 AliEMCALEMCGeometry.cxx:209
 AliEMCALEMCGeometry.cxx:210
 AliEMCALEMCGeometry.cxx:211
 AliEMCALEMCGeometry.cxx:212
 AliEMCALEMCGeometry.cxx:213
 AliEMCALEMCGeometry.cxx:214
 AliEMCALEMCGeometry.cxx:215
 AliEMCALEMCGeometry.cxx:216
 AliEMCALEMCGeometry.cxx:217
 AliEMCALEMCGeometry.cxx:218
 AliEMCALEMCGeometry.cxx:219
 AliEMCALEMCGeometry.cxx:220
 AliEMCALEMCGeometry.cxx:221
 AliEMCALEMCGeometry.cxx:222
 AliEMCALEMCGeometry.cxx:223
 AliEMCALEMCGeometry.cxx:224
 AliEMCALEMCGeometry.cxx:225
 AliEMCALEMCGeometry.cxx:226
 AliEMCALEMCGeometry.cxx:227
 AliEMCALEMCGeometry.cxx:228
 AliEMCALEMCGeometry.cxx:229
 AliEMCALEMCGeometry.cxx:230
 AliEMCALEMCGeometry.cxx:231
 AliEMCALEMCGeometry.cxx:232
 AliEMCALEMCGeometry.cxx:233
 AliEMCALEMCGeometry.cxx:234
 AliEMCALEMCGeometry.cxx:235
 AliEMCALEMCGeometry.cxx:236
 AliEMCALEMCGeometry.cxx:237
 AliEMCALEMCGeometry.cxx:238
 AliEMCALEMCGeometry.cxx:239
 AliEMCALEMCGeometry.cxx:240
 AliEMCALEMCGeometry.cxx:241
 AliEMCALEMCGeometry.cxx:242
 AliEMCALEMCGeometry.cxx:243
 AliEMCALEMCGeometry.cxx:244
 AliEMCALEMCGeometry.cxx:245
 AliEMCALEMCGeometry.cxx:246
 AliEMCALEMCGeometry.cxx:247
 AliEMCALEMCGeometry.cxx:248
 AliEMCALEMCGeometry.cxx:249
 AliEMCALEMCGeometry.cxx:250
 AliEMCALEMCGeometry.cxx:251
 AliEMCALEMCGeometry.cxx:252
 AliEMCALEMCGeometry.cxx:253
 AliEMCALEMCGeometry.cxx:254
 AliEMCALEMCGeometry.cxx:255
 AliEMCALEMCGeometry.cxx:256
 AliEMCALEMCGeometry.cxx:257
 AliEMCALEMCGeometry.cxx:258
 AliEMCALEMCGeometry.cxx:259
 AliEMCALEMCGeometry.cxx:260
 AliEMCALEMCGeometry.cxx:261
 AliEMCALEMCGeometry.cxx:262
 AliEMCALEMCGeometry.cxx:263
 AliEMCALEMCGeometry.cxx:264
 AliEMCALEMCGeometry.cxx:265
 AliEMCALEMCGeometry.cxx:266
 AliEMCALEMCGeometry.cxx:267
 AliEMCALEMCGeometry.cxx:268
 AliEMCALEMCGeometry.cxx:269
 AliEMCALEMCGeometry.cxx:270
 AliEMCALEMCGeometry.cxx:271
 AliEMCALEMCGeometry.cxx:272
 AliEMCALEMCGeometry.cxx:273
 AliEMCALEMCGeometry.cxx:274
 AliEMCALEMCGeometry.cxx:275
 AliEMCALEMCGeometry.cxx:276
 AliEMCALEMCGeometry.cxx:277
 AliEMCALEMCGeometry.cxx:278
 AliEMCALEMCGeometry.cxx:279
 AliEMCALEMCGeometry.cxx:280
 AliEMCALEMCGeometry.cxx:281
 AliEMCALEMCGeometry.cxx:282
 AliEMCALEMCGeometry.cxx:283
 AliEMCALEMCGeometry.cxx:284
 AliEMCALEMCGeometry.cxx:285
 AliEMCALEMCGeometry.cxx:286
 AliEMCALEMCGeometry.cxx:287
 AliEMCALEMCGeometry.cxx:288
 AliEMCALEMCGeometry.cxx:289
 AliEMCALEMCGeometry.cxx:290
 AliEMCALEMCGeometry.cxx:291
 AliEMCALEMCGeometry.cxx:292
 AliEMCALEMCGeometry.cxx:293
 AliEMCALEMCGeometry.cxx:294
 AliEMCALEMCGeometry.cxx:295
 AliEMCALEMCGeometry.cxx:296
 AliEMCALEMCGeometry.cxx:297
 AliEMCALEMCGeometry.cxx:298
 AliEMCALEMCGeometry.cxx:299
 AliEMCALEMCGeometry.cxx:300
 AliEMCALEMCGeometry.cxx:301
 AliEMCALEMCGeometry.cxx:302
 AliEMCALEMCGeometry.cxx:303
 AliEMCALEMCGeometry.cxx:304
 AliEMCALEMCGeometry.cxx:305
 AliEMCALEMCGeometry.cxx:306
 AliEMCALEMCGeometry.cxx:307
 AliEMCALEMCGeometry.cxx:308
 AliEMCALEMCGeometry.cxx:309
 AliEMCALEMCGeometry.cxx:310
 AliEMCALEMCGeometry.cxx:311
 AliEMCALEMCGeometry.cxx:312
 AliEMCALEMCGeometry.cxx:313
 AliEMCALEMCGeometry.cxx:314
 AliEMCALEMCGeometry.cxx:315
 AliEMCALEMCGeometry.cxx:316
 AliEMCALEMCGeometry.cxx:317
 AliEMCALEMCGeometry.cxx:318
 AliEMCALEMCGeometry.cxx:319
 AliEMCALEMCGeometry.cxx:320
 AliEMCALEMCGeometry.cxx:321
 AliEMCALEMCGeometry.cxx:322
 AliEMCALEMCGeometry.cxx:323
 AliEMCALEMCGeometry.cxx:324
 AliEMCALEMCGeometry.cxx:325
 AliEMCALEMCGeometry.cxx:326
 AliEMCALEMCGeometry.cxx:327
 AliEMCALEMCGeometry.cxx:328
 AliEMCALEMCGeometry.cxx:329
 AliEMCALEMCGeometry.cxx:330
 AliEMCALEMCGeometry.cxx:331
 AliEMCALEMCGeometry.cxx:332
 AliEMCALEMCGeometry.cxx:333
 AliEMCALEMCGeometry.cxx:334
 AliEMCALEMCGeometry.cxx:335
 AliEMCALEMCGeometry.cxx:336
 AliEMCALEMCGeometry.cxx:337
 AliEMCALEMCGeometry.cxx:338
 AliEMCALEMCGeometry.cxx:339
 AliEMCALEMCGeometry.cxx:340
 AliEMCALEMCGeometry.cxx:341
 AliEMCALEMCGeometry.cxx:342
 AliEMCALEMCGeometry.cxx:343
 AliEMCALEMCGeometry.cxx:344
 AliEMCALEMCGeometry.cxx:345
 AliEMCALEMCGeometry.cxx:346
 AliEMCALEMCGeometry.cxx:347
 AliEMCALEMCGeometry.cxx:348
 AliEMCALEMCGeometry.cxx:349
 AliEMCALEMCGeometry.cxx:350
 AliEMCALEMCGeometry.cxx:351
 AliEMCALEMCGeometry.cxx:352
 AliEMCALEMCGeometry.cxx:353
 AliEMCALEMCGeometry.cxx:354
 AliEMCALEMCGeometry.cxx:355
 AliEMCALEMCGeometry.cxx:356
 AliEMCALEMCGeometry.cxx:357
 AliEMCALEMCGeometry.cxx:358
 AliEMCALEMCGeometry.cxx:359
 AliEMCALEMCGeometry.cxx:360
 AliEMCALEMCGeometry.cxx:361
 AliEMCALEMCGeometry.cxx:362
 AliEMCALEMCGeometry.cxx:363
 AliEMCALEMCGeometry.cxx:364
 AliEMCALEMCGeometry.cxx:365
 AliEMCALEMCGeometry.cxx:366
 AliEMCALEMCGeometry.cxx:367
 AliEMCALEMCGeometry.cxx:368
 AliEMCALEMCGeometry.cxx:369
 AliEMCALEMCGeometry.cxx:370
 AliEMCALEMCGeometry.cxx:371
 AliEMCALEMCGeometry.cxx:372
 AliEMCALEMCGeometry.cxx:373
 AliEMCALEMCGeometry.cxx:374
 AliEMCALEMCGeometry.cxx:375
 AliEMCALEMCGeometry.cxx:376
 AliEMCALEMCGeometry.cxx:377
 AliEMCALEMCGeometry.cxx:378
 AliEMCALEMCGeometry.cxx:379
 AliEMCALEMCGeometry.cxx:380
 AliEMCALEMCGeometry.cxx:381
 AliEMCALEMCGeometry.cxx:382
 AliEMCALEMCGeometry.cxx:383
 AliEMCALEMCGeometry.cxx:384
 AliEMCALEMCGeometry.cxx:385
 AliEMCALEMCGeometry.cxx:386
 AliEMCALEMCGeometry.cxx:387
 AliEMCALEMCGeometry.cxx:388
 AliEMCALEMCGeometry.cxx:389
 AliEMCALEMCGeometry.cxx:390
 AliEMCALEMCGeometry.cxx:391
 AliEMCALEMCGeometry.cxx:392
 AliEMCALEMCGeometry.cxx:393
 AliEMCALEMCGeometry.cxx:394
 AliEMCALEMCGeometry.cxx:395
 AliEMCALEMCGeometry.cxx:396
 AliEMCALEMCGeometry.cxx:397
 AliEMCALEMCGeometry.cxx:398
 AliEMCALEMCGeometry.cxx:399
 AliEMCALEMCGeometry.cxx:400
 AliEMCALEMCGeometry.cxx:401
 AliEMCALEMCGeometry.cxx:402
 AliEMCALEMCGeometry.cxx:403
 AliEMCALEMCGeometry.cxx:404
 AliEMCALEMCGeometry.cxx:405
 AliEMCALEMCGeometry.cxx:406
 AliEMCALEMCGeometry.cxx:407
 AliEMCALEMCGeometry.cxx:408
 AliEMCALEMCGeometry.cxx:409
 AliEMCALEMCGeometry.cxx:410
 AliEMCALEMCGeometry.cxx:411
 AliEMCALEMCGeometry.cxx:412
 AliEMCALEMCGeometry.cxx:413
 AliEMCALEMCGeometry.cxx:414
 AliEMCALEMCGeometry.cxx:415
 AliEMCALEMCGeometry.cxx:416
 AliEMCALEMCGeometry.cxx:417
 AliEMCALEMCGeometry.cxx:418
 AliEMCALEMCGeometry.cxx:419
 AliEMCALEMCGeometry.cxx:420
 AliEMCALEMCGeometry.cxx:421
 AliEMCALEMCGeometry.cxx:422
 AliEMCALEMCGeometry.cxx:423
 AliEMCALEMCGeometry.cxx:424
 AliEMCALEMCGeometry.cxx:425
 AliEMCALEMCGeometry.cxx:426
 AliEMCALEMCGeometry.cxx:427
 AliEMCALEMCGeometry.cxx:428
 AliEMCALEMCGeometry.cxx:429
 AliEMCALEMCGeometry.cxx:430
 AliEMCALEMCGeometry.cxx:431
 AliEMCALEMCGeometry.cxx:432
 AliEMCALEMCGeometry.cxx:433
 AliEMCALEMCGeometry.cxx:434
 AliEMCALEMCGeometry.cxx:435
 AliEMCALEMCGeometry.cxx:436
 AliEMCALEMCGeometry.cxx:437
 AliEMCALEMCGeometry.cxx:438
 AliEMCALEMCGeometry.cxx:439
 AliEMCALEMCGeometry.cxx:440
 AliEMCALEMCGeometry.cxx:441
 AliEMCALEMCGeometry.cxx:442
 AliEMCALEMCGeometry.cxx:443
 AliEMCALEMCGeometry.cxx:444
 AliEMCALEMCGeometry.cxx:445
 AliEMCALEMCGeometry.cxx:446
 AliEMCALEMCGeometry.cxx:447
 AliEMCALEMCGeometry.cxx:448
 AliEMCALEMCGeometry.cxx:449
 AliEMCALEMCGeometry.cxx:450
 AliEMCALEMCGeometry.cxx:451
 AliEMCALEMCGeometry.cxx:452
 AliEMCALEMCGeometry.cxx:453
 AliEMCALEMCGeometry.cxx:454
 AliEMCALEMCGeometry.cxx:455
 AliEMCALEMCGeometry.cxx:456
 AliEMCALEMCGeometry.cxx:457
 AliEMCALEMCGeometry.cxx:458
 AliEMCALEMCGeometry.cxx:459
 AliEMCALEMCGeometry.cxx:460
 AliEMCALEMCGeometry.cxx:461
 AliEMCALEMCGeometry.cxx:462
 AliEMCALEMCGeometry.cxx:463
 AliEMCALEMCGeometry.cxx:464
 AliEMCALEMCGeometry.cxx:465
 AliEMCALEMCGeometry.cxx:466
 AliEMCALEMCGeometry.cxx:467
 AliEMCALEMCGeometry.cxx:468
 AliEMCALEMCGeometry.cxx:469
 AliEMCALEMCGeometry.cxx:470
 AliEMCALEMCGeometry.cxx:471
 AliEMCALEMCGeometry.cxx:472
 AliEMCALEMCGeometry.cxx:473
 AliEMCALEMCGeometry.cxx:474
 AliEMCALEMCGeometry.cxx:475
 AliEMCALEMCGeometry.cxx:476
 AliEMCALEMCGeometry.cxx:477
 AliEMCALEMCGeometry.cxx:478
 AliEMCALEMCGeometry.cxx:479
 AliEMCALEMCGeometry.cxx:480
 AliEMCALEMCGeometry.cxx:481
 AliEMCALEMCGeometry.cxx:482
 AliEMCALEMCGeometry.cxx:483
 AliEMCALEMCGeometry.cxx:484
 AliEMCALEMCGeometry.cxx:485
 AliEMCALEMCGeometry.cxx:486
 AliEMCALEMCGeometry.cxx:487
 AliEMCALEMCGeometry.cxx:488
 AliEMCALEMCGeometry.cxx:489
 AliEMCALEMCGeometry.cxx:490
 AliEMCALEMCGeometry.cxx:491
 AliEMCALEMCGeometry.cxx:492
 AliEMCALEMCGeometry.cxx:493
 AliEMCALEMCGeometry.cxx:494
 AliEMCALEMCGeometry.cxx:495
 AliEMCALEMCGeometry.cxx:496
 AliEMCALEMCGeometry.cxx:497
 AliEMCALEMCGeometry.cxx:498
 AliEMCALEMCGeometry.cxx:499
 AliEMCALEMCGeometry.cxx:500
 AliEMCALEMCGeometry.cxx:501
 AliEMCALEMCGeometry.cxx:502
 AliEMCALEMCGeometry.cxx:503
 AliEMCALEMCGeometry.cxx:504
 AliEMCALEMCGeometry.cxx:505
 AliEMCALEMCGeometry.cxx:506
 AliEMCALEMCGeometry.cxx:507
 AliEMCALEMCGeometry.cxx:508
 AliEMCALEMCGeometry.cxx:509
 AliEMCALEMCGeometry.cxx:510
 AliEMCALEMCGeometry.cxx:511
 AliEMCALEMCGeometry.cxx:512
 AliEMCALEMCGeometry.cxx:513
 AliEMCALEMCGeometry.cxx:514
 AliEMCALEMCGeometry.cxx:515
 AliEMCALEMCGeometry.cxx:516
 AliEMCALEMCGeometry.cxx:517
 AliEMCALEMCGeometry.cxx:518
 AliEMCALEMCGeometry.cxx:519
 AliEMCALEMCGeometry.cxx:520
 AliEMCALEMCGeometry.cxx:521
 AliEMCALEMCGeometry.cxx:522
 AliEMCALEMCGeometry.cxx:523
 AliEMCALEMCGeometry.cxx:524
 AliEMCALEMCGeometry.cxx:525
 AliEMCALEMCGeometry.cxx:526
 AliEMCALEMCGeometry.cxx:527
 AliEMCALEMCGeometry.cxx:528
 AliEMCALEMCGeometry.cxx:529
 AliEMCALEMCGeometry.cxx:530
 AliEMCALEMCGeometry.cxx:531
 AliEMCALEMCGeometry.cxx:532
 AliEMCALEMCGeometry.cxx:533
 AliEMCALEMCGeometry.cxx:534
 AliEMCALEMCGeometry.cxx:535
 AliEMCALEMCGeometry.cxx:536
 AliEMCALEMCGeometry.cxx:537
 AliEMCALEMCGeometry.cxx:538
 AliEMCALEMCGeometry.cxx:539
 AliEMCALEMCGeometry.cxx:540
 AliEMCALEMCGeometry.cxx:541
 AliEMCALEMCGeometry.cxx:542
 AliEMCALEMCGeometry.cxx:543
 AliEMCALEMCGeometry.cxx:544
 AliEMCALEMCGeometry.cxx:545
 AliEMCALEMCGeometry.cxx:546
 AliEMCALEMCGeometry.cxx:547
 AliEMCALEMCGeometry.cxx:548
 AliEMCALEMCGeometry.cxx:549
 AliEMCALEMCGeometry.cxx:550
 AliEMCALEMCGeometry.cxx:551
 AliEMCALEMCGeometry.cxx:552
 AliEMCALEMCGeometry.cxx:553
 AliEMCALEMCGeometry.cxx:554
 AliEMCALEMCGeometry.cxx:555
 AliEMCALEMCGeometry.cxx:556
 AliEMCALEMCGeometry.cxx:557
 AliEMCALEMCGeometry.cxx:558
 AliEMCALEMCGeometry.cxx:559
 AliEMCALEMCGeometry.cxx:560
 AliEMCALEMCGeometry.cxx:561
 AliEMCALEMCGeometry.cxx:562
 AliEMCALEMCGeometry.cxx:563
 AliEMCALEMCGeometry.cxx:564
 AliEMCALEMCGeometry.cxx:565
 AliEMCALEMCGeometry.cxx:566
 AliEMCALEMCGeometry.cxx:567
 AliEMCALEMCGeometry.cxx:568
 AliEMCALEMCGeometry.cxx:569
 AliEMCALEMCGeometry.cxx:570
 AliEMCALEMCGeometry.cxx:571
 AliEMCALEMCGeometry.cxx:572
 AliEMCALEMCGeometry.cxx:573
 AliEMCALEMCGeometry.cxx:574
 AliEMCALEMCGeometry.cxx:575
 AliEMCALEMCGeometry.cxx:576
 AliEMCALEMCGeometry.cxx:577
 AliEMCALEMCGeometry.cxx:578
 AliEMCALEMCGeometry.cxx:579
 AliEMCALEMCGeometry.cxx:580
 AliEMCALEMCGeometry.cxx:581
 AliEMCALEMCGeometry.cxx:582
 AliEMCALEMCGeometry.cxx:583
 AliEMCALEMCGeometry.cxx:584
 AliEMCALEMCGeometry.cxx:585
 AliEMCALEMCGeometry.cxx:586
 AliEMCALEMCGeometry.cxx:587
 AliEMCALEMCGeometry.cxx:588
 AliEMCALEMCGeometry.cxx:589
 AliEMCALEMCGeometry.cxx:590
 AliEMCALEMCGeometry.cxx:591
 AliEMCALEMCGeometry.cxx:592
 AliEMCALEMCGeometry.cxx:593
 AliEMCALEMCGeometry.cxx:594
 AliEMCALEMCGeometry.cxx:595
 AliEMCALEMCGeometry.cxx:596
 AliEMCALEMCGeometry.cxx:597
 AliEMCALEMCGeometry.cxx:598
 AliEMCALEMCGeometry.cxx:599
 AliEMCALEMCGeometry.cxx:600
 AliEMCALEMCGeometry.cxx:601
 AliEMCALEMCGeometry.cxx:602
 AliEMCALEMCGeometry.cxx:603
 AliEMCALEMCGeometry.cxx:604
 AliEMCALEMCGeometry.cxx:605
 AliEMCALEMCGeometry.cxx:606
 AliEMCALEMCGeometry.cxx:607
 AliEMCALEMCGeometry.cxx:608
 AliEMCALEMCGeometry.cxx:609
 AliEMCALEMCGeometry.cxx:610
 AliEMCALEMCGeometry.cxx:611
 AliEMCALEMCGeometry.cxx:612
 AliEMCALEMCGeometry.cxx:613
 AliEMCALEMCGeometry.cxx:614
 AliEMCALEMCGeometry.cxx:615
 AliEMCALEMCGeometry.cxx:616
 AliEMCALEMCGeometry.cxx:617
 AliEMCALEMCGeometry.cxx:618
 AliEMCALEMCGeometry.cxx:619
 AliEMCALEMCGeometry.cxx:620
 AliEMCALEMCGeometry.cxx:621
 AliEMCALEMCGeometry.cxx:622
 AliEMCALEMCGeometry.cxx:623
 AliEMCALEMCGeometry.cxx:624
 AliEMCALEMCGeometry.cxx:625
 AliEMCALEMCGeometry.cxx:626
 AliEMCALEMCGeometry.cxx:627
 AliEMCALEMCGeometry.cxx:628
 AliEMCALEMCGeometry.cxx:629
 AliEMCALEMCGeometry.cxx:630
 AliEMCALEMCGeometry.cxx:631
 AliEMCALEMCGeometry.cxx:632
 AliEMCALEMCGeometry.cxx:633
 AliEMCALEMCGeometry.cxx:634
 AliEMCALEMCGeometry.cxx:635
 AliEMCALEMCGeometry.cxx:636
 AliEMCALEMCGeometry.cxx:637
 AliEMCALEMCGeometry.cxx:638
 AliEMCALEMCGeometry.cxx:639
 AliEMCALEMCGeometry.cxx:640
 AliEMCALEMCGeometry.cxx:641
 AliEMCALEMCGeometry.cxx:642
 AliEMCALEMCGeometry.cxx:643
 AliEMCALEMCGeometry.cxx:644
 AliEMCALEMCGeometry.cxx:645
 AliEMCALEMCGeometry.cxx:646
 AliEMCALEMCGeometry.cxx:647
 AliEMCALEMCGeometry.cxx:648
 AliEMCALEMCGeometry.cxx:649
 AliEMCALEMCGeometry.cxx:650
 AliEMCALEMCGeometry.cxx:651
 AliEMCALEMCGeometry.cxx:652
 AliEMCALEMCGeometry.cxx:653
 AliEMCALEMCGeometry.cxx:654
 AliEMCALEMCGeometry.cxx:655
 AliEMCALEMCGeometry.cxx:656
 AliEMCALEMCGeometry.cxx:657
 AliEMCALEMCGeometry.cxx:658
 AliEMCALEMCGeometry.cxx:659
 AliEMCALEMCGeometry.cxx:660
 AliEMCALEMCGeometry.cxx:661
 AliEMCALEMCGeometry.cxx:662
 AliEMCALEMCGeometry.cxx:663
 AliEMCALEMCGeometry.cxx:664
 AliEMCALEMCGeometry.cxx:665
 AliEMCALEMCGeometry.cxx:666
 AliEMCALEMCGeometry.cxx:667
 AliEMCALEMCGeometry.cxx:668
 AliEMCALEMCGeometry.cxx:669
 AliEMCALEMCGeometry.cxx:670
 AliEMCALEMCGeometry.cxx:671
 AliEMCALEMCGeometry.cxx:672
 AliEMCALEMCGeometry.cxx:673
 AliEMCALEMCGeometry.cxx:674
 AliEMCALEMCGeometry.cxx:675
 AliEMCALEMCGeometry.cxx:676
 AliEMCALEMCGeometry.cxx:677
 AliEMCALEMCGeometry.cxx:678
 AliEMCALEMCGeometry.cxx:679
 AliEMCALEMCGeometry.cxx:680
 AliEMCALEMCGeometry.cxx:681
 AliEMCALEMCGeometry.cxx:682
 AliEMCALEMCGeometry.cxx:683
 AliEMCALEMCGeometry.cxx:684
 AliEMCALEMCGeometry.cxx:685
 AliEMCALEMCGeometry.cxx:686
 AliEMCALEMCGeometry.cxx:687
 AliEMCALEMCGeometry.cxx:688
 AliEMCALEMCGeometry.cxx:689
 AliEMCALEMCGeometry.cxx:690
 AliEMCALEMCGeometry.cxx:691
 AliEMCALEMCGeometry.cxx:692
 AliEMCALEMCGeometry.cxx:693
 AliEMCALEMCGeometry.cxx:694
 AliEMCALEMCGeometry.cxx:695
 AliEMCALEMCGeometry.cxx:696
 AliEMCALEMCGeometry.cxx:697
 AliEMCALEMCGeometry.cxx:698
 AliEMCALEMCGeometry.cxx:699
 AliEMCALEMCGeometry.cxx:700
 AliEMCALEMCGeometry.cxx:701
 AliEMCALEMCGeometry.cxx:702
 AliEMCALEMCGeometry.cxx:703
 AliEMCALEMCGeometry.cxx:704
 AliEMCALEMCGeometry.cxx:705
 AliEMCALEMCGeometry.cxx:706
 AliEMCALEMCGeometry.cxx:707
 AliEMCALEMCGeometry.cxx:708
 AliEMCALEMCGeometry.cxx:709
 AliEMCALEMCGeometry.cxx:710
 AliEMCALEMCGeometry.cxx:711
 AliEMCALEMCGeometry.cxx:712
 AliEMCALEMCGeometry.cxx:713
 AliEMCALEMCGeometry.cxx:714
 AliEMCALEMCGeometry.cxx:715
 AliEMCALEMCGeometry.cxx:716
 AliEMCALEMCGeometry.cxx:717
 AliEMCALEMCGeometry.cxx:718
 AliEMCALEMCGeometry.cxx:719
 AliEMCALEMCGeometry.cxx:720
 AliEMCALEMCGeometry.cxx:721
 AliEMCALEMCGeometry.cxx:722
 AliEMCALEMCGeometry.cxx:723
 AliEMCALEMCGeometry.cxx:724
 AliEMCALEMCGeometry.cxx:725
 AliEMCALEMCGeometry.cxx:726
 AliEMCALEMCGeometry.cxx:727
 AliEMCALEMCGeometry.cxx:728
 AliEMCALEMCGeometry.cxx:729
 AliEMCALEMCGeometry.cxx:730
 AliEMCALEMCGeometry.cxx:731
 AliEMCALEMCGeometry.cxx:732
 AliEMCALEMCGeometry.cxx:733
 AliEMCALEMCGeometry.cxx:734
 AliEMCALEMCGeometry.cxx:735
 AliEMCALEMCGeometry.cxx:736
 AliEMCALEMCGeometry.cxx:737
 AliEMCALEMCGeometry.cxx:738
 AliEMCALEMCGeometry.cxx:739
 AliEMCALEMCGeometry.cxx:740
 AliEMCALEMCGeometry.cxx:741
 AliEMCALEMCGeometry.cxx:742
 AliEMCALEMCGeometry.cxx:743
 AliEMCALEMCGeometry.cxx:744
 AliEMCALEMCGeometry.cxx:745
 AliEMCALEMCGeometry.cxx:746
 AliEMCALEMCGeometry.cxx:747
 AliEMCALEMCGeometry.cxx:748
 AliEMCALEMCGeometry.cxx:749
 AliEMCALEMCGeometry.cxx:750
 AliEMCALEMCGeometry.cxx:751
 AliEMCALEMCGeometry.cxx:752
 AliEMCALEMCGeometry.cxx:753
 AliEMCALEMCGeometry.cxx:754
 AliEMCALEMCGeometry.cxx:755
 AliEMCALEMCGeometry.cxx:756
 AliEMCALEMCGeometry.cxx:757
 AliEMCALEMCGeometry.cxx:758
 AliEMCALEMCGeometry.cxx:759
 AliEMCALEMCGeometry.cxx:760
 AliEMCALEMCGeometry.cxx:761
 AliEMCALEMCGeometry.cxx:762
 AliEMCALEMCGeometry.cxx:763
 AliEMCALEMCGeometry.cxx:764
 AliEMCALEMCGeometry.cxx:765
 AliEMCALEMCGeometry.cxx:766
 AliEMCALEMCGeometry.cxx:767
 AliEMCALEMCGeometry.cxx:768
 AliEMCALEMCGeometry.cxx:769
 AliEMCALEMCGeometry.cxx:770
 AliEMCALEMCGeometry.cxx:771
 AliEMCALEMCGeometry.cxx:772
 AliEMCALEMCGeometry.cxx:773
 AliEMCALEMCGeometry.cxx:774
 AliEMCALEMCGeometry.cxx:775
 AliEMCALEMCGeometry.cxx:776
 AliEMCALEMCGeometry.cxx:777
 AliEMCALEMCGeometry.cxx:778
 AliEMCALEMCGeometry.cxx:779
 AliEMCALEMCGeometry.cxx:780
 AliEMCALEMCGeometry.cxx:781
 AliEMCALEMCGeometry.cxx:782
 AliEMCALEMCGeometry.cxx:783
 AliEMCALEMCGeometry.cxx:784
 AliEMCALEMCGeometry.cxx:785
 AliEMCALEMCGeometry.cxx:786
 AliEMCALEMCGeometry.cxx:787
 AliEMCALEMCGeometry.cxx:788
 AliEMCALEMCGeometry.cxx:789
 AliEMCALEMCGeometry.cxx:790
 AliEMCALEMCGeometry.cxx:791
 AliEMCALEMCGeometry.cxx:792
 AliEMCALEMCGeometry.cxx:793
 AliEMCALEMCGeometry.cxx:794
 AliEMCALEMCGeometry.cxx:795
 AliEMCALEMCGeometry.cxx:796
 AliEMCALEMCGeometry.cxx:797
 AliEMCALEMCGeometry.cxx:798
 AliEMCALEMCGeometry.cxx:799
 AliEMCALEMCGeometry.cxx:800
 AliEMCALEMCGeometry.cxx:801
 AliEMCALEMCGeometry.cxx:802
 AliEMCALEMCGeometry.cxx:803
 AliEMCALEMCGeometry.cxx:804
 AliEMCALEMCGeometry.cxx:805
 AliEMCALEMCGeometry.cxx:806