ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *      SigmaEffect_thetadegrees                                                                  *
 * 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 purpeateose. It is      *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

// $Id$

//-----------------------------------------------------------------------------
// Class AliMUONGeometryBuilder
// ----------------------------
// Manager class for geometry construction via geometry builders.
// Author: Ivana Hrivnacova, IPN Orsay
//-----------------------------------------------------------------------------

#include "AliMUONGeometryBuilder.h"
#include "AliMUONVGeometryBuilder.h"	
#include "AliMUONGeometry.h"
#include "AliMUONGeometryTransformer.h"
#include "AliMUONGeometryModule.h"	
#include "AliMUONGeometryModuleTransformer.h"	
#include "AliMUONGeometryEnvelope.h"	
#include "AliMUONGeometryEnvelopeStore.h"
#include "AliMUONGeometryDetElement.h"
#include "AliMUONGeometryConstituent.h"

#include "AliMpDEManager.h"

#include "AliModule.h"
#include "AliSimulation.h"
#include "AliLog.h"
#include "AliRun.h"

#include <TObjArray.h>
#include <TVirtualMC.h>
#include <TGeoManager.h>

using std::endl;
/// \cond CLASSIMP
ClassImp(AliMUONGeometryBuilder)
/// \endcond

//
// static functions
//

//______________________________________________________________________________
const TString& AliMUONGeometryBuilder::GetDefaultTransformFileName()
{
  ///< default transformations file name                                     
  static const TString kDefaultTransformFileName = "transform.dat";   
  return kDefaultTransformFileName;
}    

//______________________________________________________________________________
const TString& AliMUONGeometryBuilder::GetDefaultSVMapFileName() 
{
  ///< default svmaps file name                                      
  static const TString kDefaultSVMapFileName = "svmap.dat";    
  return kDefaultSVMapFileName;
}    

//______________________________________________________________________________
const TString& AliMUONGeometryBuilder::GetOutFileNameExtension()
{
  ///< default output file name extension                                    
  static const TString kOutFileNameExtension = ".out";    
  return kOutFileNameExtension;
}    


//______________________________________________________________________________
TGeoHMatrix AliMUONGeometryBuilder::Multiply(const TGeoMatrix& m1, 
                                             const TGeoMatrix& m2)
{
/// Temporary fix for problem with matrix multiplication in Root 5.02/00

  if (m1.IsIdentity() && m2.IsIdentity()) return TGeoHMatrix();
  
  if (m1.IsIdentity()) return m2;
  
  if (m2.IsIdentity()) return m1;
  
  return m1 * m2;
}

//______________________________________________________________________________
TGeoHMatrix AliMUONGeometryBuilder::Multiply(const TGeoMatrix& m1, 
                                             const TGeoMatrix& m2,
                                             const TGeoMatrix& m3)
{					     
/// Temporary fix for problem with matrix multiplication in Root 5.02/00

  if (m1.IsIdentity() && m2.IsIdentity() & m3.IsIdentity())  
    return TGeoHMatrix();
  
  if (m1.IsIdentity()) return Multiply(m2, m3);
  
  if (m2.IsIdentity()) return Multiply(m1, m3);
  
  if (m3.IsIdentity()) return Multiply(m1, m2);
  
  return m1 * m2 * m3;
}

//______________________________________________________________________________
TGeoHMatrix AliMUONGeometryBuilder::Multiply(const TGeoMatrix& m1, 
                                             const TGeoMatrix& m2,
                                             const TGeoMatrix& m3,
                                             const TGeoMatrix& m4)
{					     
/// Temporary fix for problem with matrix multiplication in Root 5.02/00

  if (m1.IsIdentity() && m2.IsIdentity() & m3.IsIdentity() & m4.IsIdentity())  
    return TGeoHMatrix();
  
  if (m1.IsIdentity()) return Multiply(m2, m3, m4);
  
  if (m2.IsIdentity()) return Multiply(m1, m3, m4);
  
  if (m3.IsIdentity()) return Multiply(m1, m2, m4);
  
  if (m4.IsIdentity()) return Multiply(m1, m2, m3);
  
  return m1 * m2 * m3 * m4;
}

//
// ctors, dtor
//

//______________________________________________________________________________
AliMUONGeometryBuilder::AliMUONGeometryBuilder(AliModule* module)
  : TObject(),
    fModule(module),
    fAlign(false),
    fTransformFileName(GetDefaultTransformFileName()),
    fSVMapFileName(GetDefaultSVMapFileName()),
    fGlobalTransformation(), 
    fGeometryBuilders(0),
    fGeometry(0)
{
/// Standard constructor

  fGeometryBuilders = new TObjArray();
  fGeometryBuilders->SetOwner(true);
  
  fGeometry = new AliMUONGeometry(true);

  // Define the global transformation:
  // Transformation from the old ALICE coordinate system to a new one:
  // x->-x, z->-z 
  TGeoRotation* rotGlobal 
    = new TGeoRotation("rotGlobal", 90., 180., 90., 90., 180., 0.);
  fGlobalTransformation = TGeoCombiTrans(0., 0., 0., rotGlobal);
}

//______________________________________________________________________________
AliMUONGeometryBuilder::AliMUONGeometryBuilder() 
  : TObject(),
    fModule(0),
    fAlign(false),
    fTransformFileName(),
    fSVMapFileName(),
    fGlobalTransformation(),
    fGeometryBuilders(0),
    fGeometry(0)
{
/// Default constructor
} 

//______________________________________________________________________________
AliMUONGeometryBuilder::~AliMUONGeometryBuilder()
{
/// Destructor
  
  delete fGeometryBuilders;
  delete fGeometry;
}

//
// private functions
//

//______________________________________________________________________________
void AliMUONGeometryBuilder::PlaceVolume(const TString& name, const TString& mName, 
                            Int_t copyNo, const TGeoHMatrix& matrix, 
			    Int_t npar, Double_t* param, const char* only,
			    Bool_t makeAssembly) const
{
/// Place the volume specified by name with the given transformation matrix

  if (makeAssembly)
    gGeoManager->MakeVolumeAssembly(name.Data());

  TGeoHMatrix transform(matrix);
  // Do not apply global transformation 
  // if mother volume was already placed in 
  // the new system of coordinates (that is MUON in negative Z)
  // (as it is applied on the mother volume)
  if (mName == TString("DDIP"))
    transform = fGlobalTransformation.Inverse() * transform;
     
  // Decompose transformation
  const Double_t* xyz = transform.GetTranslation();
  const Double_t* rm = transform.GetRotationMatrix();
	
  //cout << "Got translation: "
  //     << xyz[0] << " " << xyz[1] << " " << xyz[2] << endl;
	
  //cout << "Got rotation: "
  //     << rm[0] << " " << rm[1] << " " << rm[2] << endl
  //     << rm[3] << " " << rm[4] << " " << rm[5] << endl
  //     << rm[6] << " " << rm[7] << " " << rm[8] << endl;

  // Check for presence of rotation
  // (will be nice to be available in TGeo)
  const Double_t kTolerance = 1e-04;
  Bool_t isRotation = true; 
  if (TMath::Abs(rm[0] - 1.) < kTolerance &&
      TMath::Abs(rm[1] - 0.) < kTolerance &&
      TMath::Abs(rm[2] - 0.) < kTolerance &&
      TMath::Abs(rm[3] - 0.) < kTolerance &&
      TMath::Abs(rm[4] - 1.) < kTolerance &&
      TMath::Abs(rm[5] - 0.) < kTolerance &&
      TMath::Abs(rm[6] - 0.) < kTolerance &&
      TMath::Abs(rm[7] - 0.) < kTolerance &&
      TMath::Abs(rm[8] - 1.) < kTolerance) isRotation = false; 

  Int_t krot = 0;
  if (isRotation) {
    TGeoRotation rot;
    rot.SetMatrix(const_cast<Double_t*>(transform.GetRotationMatrix()));
    Double_t theta1, phi1, theta2, phi2, theta3, phi3;
    rot.GetAngles(theta1, phi1, theta2, phi2, theta3, phi3);
	
    //cout << "angles: " 
    //     << theta1 << " " << phi1 << " "
    //     << theta2 << " " << phi2 << " "
    //     << theta3 << " " << phi3 << endl;
	
    fModule->AliMatrix(krot, theta1, phi1, theta2, phi2, theta3, phi3);
  }	
	
  // Place the volume
  if (npar == 0)
    TVirtualMC::GetMC()->Gspos(name, copyNo, mName, xyz[0], xyz[1], xyz[2] , krot, only);
  else 
    TVirtualMC::GetMC()->Gsposp(name, copyNo, mName, xyz[0], xyz[1], xyz[2] , krot, only,
                param, npar);
} 

//______________________________________________________________________________
void AliMUONGeometryBuilder::CreateGeometryWithTGeo()
{
/// Construct geometry using geometry builders.
/// Virtual modules/envelopes are placed as TGeoVolume assembly

  if (fAlign) {
    // Read transformations from ASCII data file  
    fGeometry->GetTransformer()
      ->LoadGeometryData(fTransformFileName);
  }    
 
  for (Int_t i=0; i<fGeometryBuilders->GetEntriesFast(); i++) {

    // Get the builder
    AliMUONVGeometryBuilder* builder
      = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);

    // Create geometry + envelopes
    //
    builder->CreateGeometry();
    builder->SetVolumes();
    if (!fAlign) builder->SetTransformations();
    
    // Place module volumes and envelopes
    //
    for (Int_t j=0; j<builder->NofGeometries(); j++) {

      AliMUONGeometryModule* geometry = builder->Geometry(j);
      AliMUONGeometryModuleTransformer* transformer= geometry->GetTransformer();
      const TGeoHMatrix* kModuleTransform = transformer->GetTransformation();
      TString volName       = transformer->GetVolumeName(); 
      TString motherVolName = transformer->GetMotherVolumeName(); 
      
      // Place the module volume
      PlaceVolume(volName, motherVolName, 
                  1, *kModuleTransform, 0, 0, "ONLY", geometry->IsVirtual());
  
      TGeoCombiTrans appliedGlobalTransform;
      if (builder->ApplyGlobalTransformation())
        appliedGlobalTransform = fGlobalTransformation;

      // Loop over envelopes
      const TObjArray* kEnvelopes 
        = geometry->GetEnvelopeStore()->GetEnvelopes();
      for (Int_t k=0; k<kEnvelopes->GetEntriesFast(); k++) {

        // Get envelope
        AliMUONGeometryEnvelope* env 
	  = (AliMUONGeometryEnvelope*)kEnvelopes->At(k);
	  
	// Check consistency of detElemId and module Id
	if ( env->GetUniqueID() > 0 && 
	     AliMpDEManager::GetGeomModuleId(env->GetUniqueID()) 
	     != geometry->GetModuleId() ) {
	     
	  AliErrorStream() 
	    << "Detection element " << env->GetUniqueID() 
	    << " is being placed in geometry module " << geometry->GetModuleId()
	    << " but should go in " 
	    << AliMpDEManager::GetGeomModuleId(env->GetUniqueID())
	    <<  endl;
	  AliFatal("Inconsistent IDs");
	}          
	  
        const TGeoCombiTrans* kEnvTrans = env->GetTransformation();
        const char* only = "ONLY";
        if (env->IsMANY()) only = "MANY";

        if (env->IsVirtual() && env->GetConstituents()->GetEntriesFast() == 0 ) {
          // virtual envelope + nof constituents = 0 
          //         => not allowed;
          //            empty virtual envelope has no sense 
          AliFatal("Virtual envelope must have constituents.");
          return;
        }

        if (!env->IsVirtual() && env->GetConstituents()->GetEntriesFast() > 0 ) {
          // non virtual envelope + nof constituents > 0 
          //        => not allowed;
          //           use VMC to place constituents
          AliFatal("Non virtual envelope cannot have constituents.");
          return;
        }

        // Place envelope in geometry module by composed transformation:
        // [Tglobal] * Tenv
        TGeoHMatrix total 
	  = Multiply( appliedGlobalTransform, 
                     (*kEnvTrans) );
        PlaceVolume(env->GetName(), volName,
	            env->GetCopyNo(), total, 0, 0, only, env->IsVirtual());
	
        if ( env->IsVirtual() )  {
          //  Place constituents in the envelope
          for  (Int_t l=0; l<env->GetConstituents()->GetEntriesFast(); l++) {
            AliMUONGeometryConstituent* constituent
              = (AliMUONGeometryConstituent*)env->GetConstituents()->At(l);
 
            PlaceVolume(constituent->GetName(), env->GetName(),
	                constituent->GetCopyNo(),
		        *constituent->GetTransformation() ,
                        constituent->GetNpar(), constituent->GetParam(), only);
          }
        }
      } // end of loop over envelopes
    } // end of loop over builder geometries
  } // end of loop over builders
}

//______________________________________________________________________________
void AliMUONGeometryBuilder::CreateGeometryWithoutTGeo()
{
/// Construct geometry using geometry builders.
/// Virtual modules/envelopes are not placed

  if (fAlign) {
    // Read transformations from ASCII data file  
    fGeometry->GetTransformer()->LoadGeometryData(fTransformFileName);
  }     

  for (Int_t i=0; i<fGeometryBuilders->GetEntriesFast(); i++) {

    // Get the builder
    AliMUONVGeometryBuilder* builder
      = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);

    // Create geometry + envelopes
    //
    builder->CreateGeometry();
    if (!fAlign) builder->SetTransformations();
    
    // Place module volumes and envelopes
    //
    for (Int_t j=0; j<builder->NofGeometries(); j++) {

      AliMUONGeometryModule* geometry = builder->Geometry(j);
      AliMUONGeometryModuleTransformer* transformer= geometry->GetTransformer();
      const TGeoHMatrix* kModuleTransform = transformer->GetTransformation();
      TString volName       = transformer->GetVolumeName(); 
      TString motherVolName = transformer->GetMotherVolumeName(); 
      
      // Place the module volume
      if ( !geometry->IsVirtual() ) {
          PlaceVolume(volName, motherVolName, 
	              1, *kModuleTransform, 0, 0, "ONLY");
      }		      
  
      TGeoCombiTrans appliedGlobalTransform;
      if (builder->ApplyGlobalTransformation())
        appliedGlobalTransform = fGlobalTransformation;

      // Loop over envelopes
      const TObjArray* kEnvelopes 
        = geometry->GetEnvelopeStore()->GetEnvelopes();
      for (Int_t k=0; k<kEnvelopes->GetEntriesFast(); k++) {

        // Get envelope
        AliMUONGeometryEnvelope* env 
	  = (AliMUONGeometryEnvelope*)kEnvelopes->At(k);
	  
	// Check consistency of detElemId and module Id
	if ( env->GetUniqueID() > 0 && 
	     AliMpDEManager::GetGeomModuleId(env->GetUniqueID()) 
	     != geometry->GetModuleId() ) {
	     
	  AliErrorStream() 
	    << "Detection element " << env->GetUniqueID() 
	    << " is being placed in geometry module " << geometry->GetModuleId()
	    << " but should go in " 
	    << AliMpDEManager::GetGeomModuleId(env->GetUniqueID())
	    <<  endl;
	  AliFatal("Inconsistent IDs");
	}          
	  
        const TGeoCombiTrans* kEnvTrans = env->GetTransformation();
        const char* only = "ONLY";
        if (env->IsMANY()) only = "MANY";

        if (env->IsVirtual() && env->GetConstituents()->GetEntriesFast() == 0 ) {
          // virtual envelope + nof constituents = 0 
          //         => not allowed;
          //            empty virtual envelope has no sense 
          AliFatal("Virtual envelope must have constituents.");
          return;
        }

        if (!env->IsVirtual() && env->GetConstituents()->GetEntriesFast() > 0 ) {
          // non virtual envelope + nof constituents > 0 
          //        => not allowed;
          //           use VMC to place constituents
          AliFatal("Non virtual envelope cannot have constituents.");
          return;
        }

        if (!env->IsVirtual() && env->GetConstituents()->GetEntriesFast() == 0 ) {
          // non virtual envelope + nof constituents = 0 
          //        => place envelope by composed transformation:
          //           Tch * [Tglobal] * Tenv

          // Compound chamber transformation with the envelope one
          if (geometry->IsVirtual()) {
             TGeoHMatrix total 
	       = Multiply( (*kModuleTransform), 
	                    appliedGlobalTransform, 
	                   (*kEnvTrans) );
             PlaceVolume(env->GetName(), motherVolName,
	                 env->GetCopyNo(), total, 0, 0, only);
          }
	  else {
             TGeoHMatrix total 
	       = Multiply( appliedGlobalTransform, 
	                   (*kEnvTrans) );
             PlaceVolume(env->GetName(), volName,
	                 env->GetCopyNo(), total, 0, 0, only);
          }			 
        }

        if (env->IsVirtual() && env->GetConstituents()->GetEntriesFast() > 0 ) {
          // virtual envelope + nof constituents > 0 
          //         => do not place envelope and place constituents
          //            by composed transformation:
          //            Tch * [Tglobal] * Tenv * Tconst   

          for  (Int_t l=0; l<env->GetConstituents()->GetEntriesFast(); l++) {
            AliMUONGeometryConstituent* constituent
              = (AliMUONGeometryConstituent*)env->GetConstituents()->At(l);
 
            // Compound chamber transformation with the envelope one + the constituent one
            if (geometry->IsVirtual()) {
              TGeoHMatrix total 
	        = Multiply ( (*kModuleTransform),
 	                     appliedGlobalTransform, 
	                     (*kEnvTrans), 
	                     (*constituent->GetTransformation()) );

              PlaceVolume(constituent->GetName(), motherVolName,
	                  constituent->GetCopyNo(), total,
                          constituent->GetNpar(), constituent->GetParam(), only);
            }
	    else { 			  
              TGeoHMatrix total 
	        = Multiply ( appliedGlobalTransform, 
	                     (*kEnvTrans),
	                     (*constituent->GetTransformation()) );

              PlaceVolume(constituent->GetName(), volName,
	                  constituent->GetCopyNo(), total,
                          constituent->GetNpar(), constituent->GetParam(), only);
            }			  
          }
        }
      } // end of loop over envelopes
    } // end of loop over builder geometries
  } // end of loop over builders
}

//_____________________________________________________________________________
void AliMUONGeometryBuilder::SetAlignToBuilder(AliMUONVGeometryBuilder* builder) const
{
/// Set align option to all geometry modules associated with the builder

  for (Int_t j=0; j<builder->NofGeometries(); j++) {

    AliMUONGeometryModule* geometry = builder->Geometry(j);
  
    geometry->SetAlign(fAlign);
  }  	  
}  	     

//
// public functions
//

//_____________________________________________________________________________
void AliMUONGeometryBuilder::AddBuilder(AliMUONVGeometryBuilder* geomBuilder)
{
/// Add the geometry builder to the list

  fGeometryBuilders->Add(geomBuilder);
  
  // Pass geometry modules created in the to the geometry parametrisation
  for (Int_t i=0; i<geomBuilder->NofGeometries(); i++) {
    fGeometry->AddModule(geomBuilder->Geometry(i));
  }  
  
  if (geomBuilder->ApplyGlobalTransformation())
    geomBuilder->SetReferenceFrame(fGlobalTransformation);
  
  SetAlignToBuilder(geomBuilder);
}

//______________________________________________________________________________
void AliMUONGeometryBuilder::CreateGeometry()
{
/// Construct geometry using geometry builders.

  if ( TVirtualMC::GetMC()->IsRootGeometrySupported() ) {
       
   CreateGeometryWithTGeo();
  } 
  else
   CreateGeometryWithoutTGeo();

  for (Int_t i=0; i<fGeometryBuilders->GetEntriesFast(); i++) {

    // Get the builder
    AliMUONVGeometryBuilder* builder
      = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);
 
    // Update detection elements from built geometry
    Bool_t create = ! fAlign;
    builder->UpdateDetElements(create);
  }
}

//_____________________________________________________________________________
void AliMUONGeometryBuilder::CreateMaterials()
{
/// Construct materials specific to modules via builders
  
  for (Int_t i=0; i<fGeometryBuilders->GetEntriesFast(); i++) {

    // Get the builder
    AliMUONVGeometryBuilder* builder
      = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);

    // Create materials with each builder
    if (builder) builder->CreateMaterials();
  }
}

//______________________________________________________________________________
void AliMUONGeometryBuilder::InitGeometry(const TString& svmapFileName)
{
/// Initialize geometry

  // Load alignement data from geometry if geometry is read from Root file
  if ( AliSimulation::Instance()->IsGeometryFromFile() ) {
    fAlign = true;
    fGeometry->GetTransformer()->LoadGeometryData();
 }    

  // Read sensitive volume map from a file
  fGeometry->ReadSVMap(svmapFileName);

  // Set the chamber (sensitive region) GEANT identifier
  //
  for (Int_t i=0; i<fGeometryBuilders->GetEntriesFast(); i++) {

    // Get the builder
    AliMUONVGeometryBuilder* builder
      = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);

    // Set sensitive volumes with each builder
    builder->SetSensitiveVolumes();
  }  
}

//________________________________________________________________
void AliMUONGeometryBuilder::UpdateInternalGeometry()
{
/// Update geometry after applying mis-alignment:
/// reload transformations in geometry builder.

  fGeometry->GetTransformer()->LoadTransformations();
}

//______________________________________________________________________________
void AliMUONGeometryBuilder::WriteSVMaps(const TString& fileName, 
                                         Bool_t rebuild, Bool_t writeEnvelopes)
{
/// Write sensitive volume maps into files per builder

  // Rebuild sv maps
  //
  if (rebuild) 
    for (Int_t i=0; i<fGeometryBuilders->GetEntriesFast(); i++) {

      AliMUONVGeometryBuilder* builder
        = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);

      builder->RebuildSVMaps(writeEnvelopes);
    }  
    
  // Write maps in file
  fGeometry->WriteSVMap(fileName);
}

//_____________________________________________________________________________
void AliMUONGeometryBuilder::SetAlign(Bool_t align)
{ 
/// Set the option for alignement

  fAlign = align; 

  for (Int_t i=0; i<fGeometryBuilders->GetEntriesFast(); i++) {

    AliMUONVGeometryBuilder* builder
      = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);
    
    SetAlignToBuilder(builder); 
  }   
}

//_____________________________________________________________________________
void AliMUONGeometryBuilder::SetAlign(const TString& fileName, Bool_t align)
{ 
/// Set the option for alignement and the transformations file name

  fTransformFileName = fileName;
  fAlign = align; 

  for (Int_t i=0; i<fGeometryBuilders->GetEntriesFast(); i++) {

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