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 AliMUONGeometryTransformer
// ----------------------------
// Top container class for geometry transformations
// Author: Ivana Hrivnacova, IPN Orsay
//-----------------------------------------------------------------------------

#include "AliMUONGeometryTransformer.h"
#include "AliMUONGeometryModuleTransformer.h"
#include "AliMUONGeometryDetElement.h"
#include "AliMUONGeometryBuilder.h"

#include "AliMpDEManager.h"
#include "AliMpConstants.h"
#include "AliMpExMap.h"
#include "AliMpCDB.h"
#include "AliMpArea.h"
#include <float.h>
#include "AliMpVPadIterator.h"
#include "AliMpPad.h"
#include "AliMpDEIterator.h"
#include <TVector2.h>
#include "AliMpVSegmentation.h"
#include "AliMpSegmentation.h"
#include "AliMpExMapIterator.h"
#include "AliLog.h"
#include "AliAlignObjMatrix.h"
#include "AliAlignObj.h"

#include <Riostream.h>
#include <TSystem.h>
#include <TClonesArray.h>
#include <TGeoManager.h>
#include <TGeoPhysicalNode.h>
#include <TFile.h>
#include <TString.h>

#include <sstream>

using std::endl;
using std::ios;
using std::cerr;
using std::setw;
using std::setprecision;
/// \cond CLASSIMP
ClassImp(AliMUONGeometryTransformer)
/// \endcond

//
// static private methods
//

//______________________________________________________________________________
const TString& AliMUONGeometryTransformer::GetDefaultDetectorName()
{ 
  /// Default detector name
  static const TString kDefaultDetectorName = "MUON";
  return kDefaultDetectorName;
}  
 
//
// ctor, dtor
//

//______________________________________________________________________________
AliMUONGeometryTransformer::AliMUONGeometryTransformer()

  : TObject(),
    fDetectorName(GetDefaultDetectorName()),
    fModuleTransformers(0),
    fMisAlignArray(0),
    fDEAreas(0x0)
{
/// Standard constructor

  // Create array for geometry modules
  fModuleTransformers = new TObjArray(100);
  fModuleTransformers->SetOwner(true);
}

//______________________________________________________________________________
AliMUONGeometryTransformer::AliMUONGeometryTransformer(TRootIOCtor* /*ioCtor*/) 
  : TObject(),
    fDetectorName(),
    fModuleTransformers(0),
    fMisAlignArray(0),
    fDEAreas(0x0)
{
/// Default constructor
} 

//______________________________________________________________________________
AliMUONGeometryTransformer::~AliMUONGeometryTransformer()
{
/// Destructor

  delete fModuleTransformers;
  delete fMisAlignArray;
  delete fDEAreas;
}

//
// private methods
//


//_____________________________________________________________________________
AliMpArea*
AliMUONGeometryTransformer::GetDEArea(Int_t detElemId) const
{
  /// Get area (in global coordinates) covered by a given detection element
  if (!fDEAreas)
  {
    CreateDEAreas();
  }
  return static_cast<AliMpArea*>(fDEAreas->GetValue(detElemId));
}

//_____________________________________________________________________________
void
AliMUONGeometryTransformer::CreateDEAreas() const
{
  /// Create DE areas
  
  fDEAreas = new AliMpExMap;
  
  AliMpDEIterator it;

  it.First();

  /// Generate the DE areas in global coordinates

  while ( !it.IsDone() )
  {
    Int_t detElemId = it.CurrentDEId();
    
    if ( !HasDE(detElemId) ) continue;
    
    const AliMpVSegmentation* seg = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,AliMp::kCath0);
    
    Double_t xg,yg,zg;
    
    AliMp::StationType stationType = AliMpDEManager::GetStationType(detElemId);
    
    Double_t xl(0.0), yl(0.0), zl(0.0);
    Double_t dx(seg->GetDimensionX());
    Double_t dy(seg->GetDimensionY());
    
    if ( stationType == AliMp::kStation12 ) 
    {
      Double_t xmin(FLT_MAX);
      Double_t xmax(-FLT_MAX);
      Double_t ymin(FLT_MAX);
      Double_t ymax(-FLT_MAX);
      
      for ( Int_t icathode = 0; icathode < 2; ++icathode ) 
      {
        const AliMpVSegmentation* cathode 
        = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,AliMp::GetCathodType(icathode));
        
        AliMpVPadIterator* itp = cathode->CreateIterator();
        
        itp->First();
        
        while ( !itp->IsDone() ) 
        {
          AliMpPad pad = itp->CurrentItem();
          AliMpArea a(pad.GetPositionX(),pad.GetPositionY(),
                      pad.GetDimensionX(), pad.GetDimensionY());
          xmin = TMath::Min(xmin,a.LeftBorder());
          xmax = TMath::Max(xmax,a.RightBorder());
          ymin = TMath::Min(ymin,a.DownBorder());
          ymax = TMath::Max(ymax,a.UpBorder());
          itp->Next();
        }
        
        delete itp;
      }
      
      xl = (xmin+xmax)/2.0;
      yl = (ymin+ymax)/2.0;
      dx = (xmax-xmin)/2.0;
      dy = (ymax-ymin)/2.0;
      
      Local2Global(detElemId,xl,yl,zl,xg,yg,zg);
    }
    else
    {
      Local2Global(detElemId,xl,yl,zl,xg,yg,zg);
    }
    
    fDEAreas->Add(detElemId,new AliMpArea(xg,yg,dx,dy));
    
    it.Next();
  }
}

//_____________________________________________________________________________
Bool_t AliMUONGeometryTransformer::LoadMapping() const
{
/// Load mapping from CDB

  if ( ! AliMpCDB::LoadMpSegmentation() ) 
  {
    AliFatal("Could not access mapping from OCDB !");
    return false;
  }
  
  return true;
}  

//_____________________________________________________________________________
AliMUONGeometryModuleTransformer* 
AliMUONGeometryTransformer::GetModuleTransformerNonConst(
                                          Int_t index, Bool_t warn) const
{
/// Return the geometry module specified by index

  if (index < 0 || index >= fModuleTransformers->GetEntriesFast()) {
    if (warn) {
      AliWarningStream() 
        << "Index: " << index << " outside limits" << std::endl;
    }			 
    return 0;  
  }  

  return (AliMUONGeometryModuleTransformer*) fModuleTransformers->At(index);
}    

//______________________________________________________________________________
TGeoHMatrix AliMUONGeometryTransformer::GetTransform(
                  Double_t x, Double_t y, Double_t z,
		  Double_t a1, Double_t a2, Double_t a3, 
 		  Double_t a4, Double_t a5, Double_t a6) const
{		  
/// Build the transformation from the given parameters

  // Compose transform
  return TGeoCombiTrans(TGeoTranslation(x, y, z), 
                        TGeoRotation("rot", a1, a2, a3, a4, a5, a6));
}


//______________________________________________________________________________
void AliMUONGeometryTransformer::FillModuleTransform(Int_t moduleId,
                  Double_t x, Double_t y, Double_t z,
		  Double_t a1, Double_t a2, Double_t a3,
 		  Double_t a4, Double_t a5, Double_t a6) 
{
/// Fill the transformation of the module.

  AliMUONGeometryModuleTransformer* moduleTransformer
    = GetModuleTransformerNonConst(moduleId, false);

  if ( !moduleTransformer) {
    AliErrorStream() 
      << "Module " << moduleId << " has not volume path defined." << endl;
    return;  
  }  
      
  // Build the transformation from the parameters
  TGeoHMatrix transform 
    = GetTransform(x, y, z, a1, a2, a3, a4, a5, a6);
      
  moduleTransformer->SetTransformation(transform);
}		   
  
//______________________________________________________________________________
void AliMUONGeometryTransformer::FillDetElemTransform(
                  Int_t detElemId, 
                  Double_t x, Double_t y, Double_t z,
		  Double_t a1, Double_t a2, Double_t a3,
 		  Double_t a4, Double_t a5, Double_t a6) 
{
/// Fill the transformation of the detection element.

  // Module Id
  Int_t moduleId = AliMpDEManager::GetGeomModuleId(detElemId);

  // Get module transformer
  const AliMUONGeometryModuleTransformer* kModuleTransformer
    = GetModuleTransformer(moduleId);

  if ( ! kModuleTransformer ) {
    AliFatal(Form("Module transformer not defined, detElemId: %d", detElemId));
    return;  
  }  

  // Get detection element
  AliMUONGeometryDetElement* detElement 
    = kModuleTransformer->GetDetElement(detElemId);     

  if ( ! detElement ) {
    AliFatal(Form("Det element %d has not volume path defined", detElemId));
    return;  
  }  
      
  // Build the transformation from the parameters
  TGeoHMatrix localTransform 
    = GetTransform(x, y, z, a1, a2, a3, a4, a5, a6);
  detElement->SetLocalTransformation(localTransform); 
   
  // Compute global transformation
  TGeoHMatrix globalTransform 
    = AliMUONGeometryBuilder::Multiply( 
                                  *kModuleTransformer->GetTransformation(),
				  localTransform );
  detElement->SetGlobalTransformation(globalTransform);
}		   

//______________________________________________________________________________
TString  AliMUONGeometryTransformer::ReadModuleTransforms(ifstream& in)
{
/// Read and fill modules transformations from the stream.
/// Return true, if reading finished correctly.

  TString key(AliMUONGeometryModuleTransformer::GetModuleNamePrefix());
  while ( key == AliMUONGeometryModuleTransformer::GetModuleNamePrefix() ) {
    Int_t id;
    Double_t  x, y, z;
    Double_t  a1, a2, a3, a4, a5, a6;
    TString dummy;
  
    in >> id;
    in >> dummy;
    in >> x;
    in >> y;
    in >> z;
    in >> dummy;
    in >> a1; 
    in >> a2; 
    in >> a3; 
    in >> a4; 
    in >> a5; 
    in >> a6; 

    //cout << "moduleId="     << id << "  "
    // 	 << "position= " << x << ", " << y << ", " << z << "  "
    //	 << "rotation= " << a1 << ", " << a2 << ", " << a3  << ", "
    //	                 << a4 << ", " << a5 << ", " << a6 
    //	 << endl;   
	 
    // Fill data
    FillModuleTransform(id, x, y, z, a1, a2, a3, a4, a5, a6);
    
    // Go to next line
    in >> key;
  }
  
  return key;   	 
}

//______________________________________________________________________________
TString  AliMUONGeometryTransformer::ReadDetElemTransforms(ifstream& in)
{
/// Read detection elements transformations from the stream.
/// Return true, if reading finished correctly.

  TString key(AliMUONGeometryDetElement::GetDENamePrefix());
  while ( key == AliMUONGeometryDetElement::GetDENamePrefix() ) {

    // Input data
    Int_t detElemId;
    Double_t  x, y, z;
    Double_t  a1, a2, a3, a4, a5, a6;
    TString dummy;
  
    in >> detElemId;
    in >> dummy;
    in >> x;
    in >> y;
    in >> z;
    in >> dummy;
    in >> a1; 
    in >> a2; 
    in >> a3; 
    in >> a4; 
    in >> a5; 
    in >> a6; 

    //cout << "detElemId=" << detElemId << "  "
    //     << "position= " << x << ", " << y << ", " << z << "  "
    //     << "rotation= " << a1 << ", " << a2 << ", " << a3  << ", "
    //	                   << a4 << ", " << a5 << ", " << a6 
    //     << endl;   
	 
    // Fill data
    FillDetElemTransform(detElemId, x, y, z, a1, a2, a3, a4, a5, a6); 	 
    
    // Go to next line
    in >> key;
  } 
  
  return key;
}

//______________________________________________________________________________
Bool_t  
AliMUONGeometryTransformer::ReadTransformations(const TString& fileName)
{
/// Read transformations from a file.
/// Return true, if reading finished correctly.

  // File path
  TString filePath = gSystem->Getenv("ALICE_ROOT");
  filePath += "/MUON/data/";
  filePath += fileName;
  
  // Open input file
  ifstream in(filePath, ios::in);
  if (!in) {
    cerr << filePath << endl;	
    AliFatal("File not found.");
    return false;
  }

  TString key;
  in >> key;
  while ( !in.eof() ) {
    if ( key == AliMUONGeometryModuleTransformer::GetModuleNamePrefix() ) 
      key = ReadModuleTransforms(in);
    else if ( key == AliMUONGeometryDetElement::GetDENamePrefix() )
      key = ReadDetElemTransforms(in);
    else {
      AliFatal(Form("%s key not recognized",  key.Data()));
      return false;
    }
  }     

  return true;
}

//______________________________________________________________________________
void AliMUONGeometryTransformer::WriteTransform(ofstream& out,
                                   const TGeoMatrix* transform) const
{
/// Write given transformation 

  out << "   pos: ";
  const Double_t* xyz = transform->GetTranslation();
  out << setw(10) << setprecision(4) << xyz[0] << "  " 
      << setw(10) << setprecision(4) << xyz[1] << "  " 
      << setw(10) << setprecision(4) << xyz[2];

  out << "   rot: ";
  const Double_t* rm = transform->GetRotationMatrix();
  TGeoRotation rotation;
  rotation.SetMatrix(const_cast<Double_t*>(rm));
  Double_t a1, a2, a3, a4, a5, a6;
  rotation.GetAngles(a1, a2, a3, a4, a5, a6);
      
  out << setw(8) << setprecision(4) << a1 << "  " 
      << setw(8) << setprecision(4) << a2 << "  " 
      << setw(8) << setprecision(4) << a3 << "  " 
      << setw(8) << setprecision(4) << a4 << "  " 
      << setw(8) << setprecision(4) << a5 << "  " 
      << setw(8) << setprecision(4) << a6 << "  " << endl; 
}

//______________________________________________________________________________
void AliMUONGeometryTransformer::WriteModuleTransforms(ofstream& out) const
{
/// Write module transformations for all module transformers

  for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
    AliMUONGeometryModuleTransformer* moduleTransformer 
      = (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);
    const TGeoMatrix* transform 
      = moduleTransformer->GetTransformation();    

    // Write data on out
    out << AliMUONGeometryModuleTransformer::GetModuleNamePrefix() << " " 
        << setw(4) << moduleTransformer->GetModuleId();
    
    WriteTransform(out, transform);
  }
  out << endl;
}

//______________________________________________________________________________
void AliMUONGeometryTransformer::WriteDetElemTransforms(ofstream& out) const
{
/// Write detection element transformations for all detection elements in all 
/// module transformers

  for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
    AliMUONGeometryModuleTransformer* moduleTransformer 
      = (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);
    AliMpExMap* detElements = moduleTransformer->GetDetElementStore();    
    TIter next(detElements->CreateIterator());
    AliMUONGeometryDetElement* detElement;
    while ( ( detElement = static_cast<AliMUONGeometryDetElement*>(next()) ) )
    {
      const TGeoMatrix* transform 
        = detElement->GetLocalTransformation(); 
	
      // Write data on out
      out << AliMUONGeometryDetElement::GetDENamePrefix() << " " 
          << setw(4) << detElement->GetId();
     
      WriteTransform(out, transform);
    }
    out << endl;	  	   	
  }     
}

//______________________________________________________________________________
TString AliMUONGeometryTransformer::GetModuleSymName(Int_t moduleId) const
{
/// Return the module symbolic name (use for alignment)

  return "/" + fDetectorName + "/" 
             + AliMUONGeometryModuleTransformer::GetModuleName(moduleId);
}  

//______________________________________________________________________________
TString AliMUONGeometryTransformer::GetDESymName(Int_t detElemId) const
{
/// Return the detection element symbolic name (used for alignment)

  // Module Id
  Int_t moduleId = AliMpDEManager::GetGeomModuleId(detElemId);

  return GetModuleSymName(moduleId) + "/" 
         + AliMUONGeometryDetElement::GetDEName(detElemId);
}  

//
// public functions
//

//______________________________________________________________________________
Bool_t  
AliMUONGeometryTransformer::LoadTransformations()
{
/// Load transformations for defined modules and detection elements
/// using AliGeomManager

  if ( ! AliGeomManager::GetGeometry() ) {
    AliFatal("Geometry has to be laoded in AliGeomManager first.");
    return false;
  }   

  for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
    AliMUONGeometryModuleTransformer* moduleTransformer 
      = (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);

    // Module symbolic name
    TString symname = GetModuleSymName(moduleTransformer->GetModuleId());
    
    // Set matrix from physical node
    TGeoHMatrix* matrix = AliGeomManager::GetMatrix(symname);
    if ( ! matrix ) {
      AliErrorStream() << "Geometry module matrix not found." << endl;
      return false;
    }  
    moduleTransformer->SetTransformation(*matrix);
    
    // Loop over detection elements
    AliMpExMap* detElements = moduleTransformer->GetDetElementStore();    
    TIter next(detElements->CreateIterator());    
    AliMUONGeometryDetElement* detElement;
    
    while ( ( detElement = static_cast<AliMUONGeometryDetElement*>(next()) ) )
    {
      // Det element  symbolic name
      TString symnameDE = GetDESymName(detElement->GetId());
    
      // Set global matrix from physical node
      TGeoHMatrix* globalMatrix = AliGeomManager::GetMatrix(symnameDE);
      if ( ! globalMatrix ) {
        AliErrorStream() << "Detection element matrix not found." << endl;
        return false;
      }  
      detElement->SetGlobalTransformation(*globalMatrix, false);

      // Set local matrix
      TGeoHMatrix localMatrix = 
        AliMUONGeometryBuilder::Multiply(
	   (*matrix).Inverse(), (*globalMatrix) );
      detElement->SetLocalTransformation(localMatrix, false);
    }  
  } 
  return true;    
}  

//______________________________________________________________________________
Bool_t  
AliMUONGeometryTransformer::LoadGeometryData(const TString& fileName)
{
/// Read geometry data either from ASCII file with transformations or
/// from root geometry file (if fileName has ".root" extension)

  CreateModules();

  // Get file extension
  std::string fileName2 = fileName.Data();
  std::string rootExt = fileName2.substr(fileName2.size()-5, fileName2.size());
  
  if ( rootExt != ".root" ) 
    return ReadTransformations(fileName);
  else  { 
    // Load root geometry
    AliGeomManager::LoadGeometry(fileName.Data());
    return LoadTransformations();
  }  
}  

//______________________________________________________________________________
Bool_t  
AliMUONGeometryTransformer::LoadGeometryData()
{
/// Load geometry data from already loaded Root geometry using AliGeomManager

  if ( ! AliGeomManager::GetGeometry() ) {
    AliErrorStream() << "Geometry has not been loaded in AliGeomManager" << endl;
    return false;
  }    

  CreateModules();

  return LoadTransformations();
}  

//______________________________________________________________________________
Bool_t  
AliMUONGeometryTransformer::WriteTransformations(const TString& fileName) const
{
/// Write transformations into a file.
/// Return true, if writing finished correctly.

  // No writing
  // if builder is not associated with any geometry module
  if (fModuleTransformers->GetEntriesFast() == 0) return false;

  // File path
  TString filePath = gSystem->Getenv("ALICE_ROOT");
  filePath += "/MUON/data/";
  filePath += fileName;
  
  // Open output file
  ofstream out(filePath, ios::out);
  if (!out) {
    cerr << filePath << endl;	
    AliError("File not found.");
    return false;
  }
#if !defined (__DECCXX)
  out.setf(std::ios::fixed);
#endif
  WriteModuleTransforms(out);
  WriteDetElemTransforms(out);
  
  return true;
}  

//______________________________________________________________________________
Bool_t  
AliMUONGeometryTransformer::WriteMisAlignmentData(const TString& fileName) const
{
/// Write misalignment data into a file
/// Return true, if writing finished correctly.

  // No writing
  // if builder is not associated with any geometry module
  if ( fModuleTransformers->GetEntriesFast() == 0 ) {
    AliWarningStream() << "No geometry modules defined." << endl;
    return false;
  }  
  
  // No writing
  // if builder has no mis-alignment data
  if ( ! fMisAlignArray ) {
    AliWarningStream() << "No mis-alignment data defined." << endl;
    return false;
  }  

  // File path
  TString filePath = gSystem->Getenv("ALICE_ROOT");
  filePath += "/MUON/data/";
  filePath += fileName;
  
  // Write mis-alignment data in the root file
  TFile file(fileName.Data(), "RECREATE");
  fMisAlignArray->Write();
  file.Close();
  
  return true;
}  

//_____________________________________________________________________________
void AliMUONGeometryTransformer::AddModuleTransformer(
                          AliMUONGeometryModuleTransformer* moduleTransformer)
{
/// Add the module transformer to the array

  // Expand the size if not sufficient
  Int_t moduleId = moduleTransformer->GetModuleId();
  if (  moduleId >= fModuleTransformers->GetSize() )
    fModuleTransformers->Expand(moduleId+1);

  fModuleTransformers->AddAt(moduleTransformer, moduleId);
}

//_____________________________________________________________________________
void  AliMUONGeometryTransformer::AddMisAlignModule(Int_t moduleId, 
						    const TGeoHMatrix& matrix, Bool_t bGlobal)
{
/// Build AliAlignObjMatrix with module ID, its volumePath
/// and the given delta transformation matrix					      

  if ( ! fMisAlignArray )
    fMisAlignArray = new TClonesArray("AliAlignObjMatrix", 200);
    
  const AliMUONGeometryModuleTransformer* kTransformer 
    = GetModuleTransformer(moduleId);
  if ( ! kTransformer ) {
    AliErrorStream() << "Module " << moduleId << " not found." << endl; 
    return;
  }   
  
  // Get unique align object ID
  Int_t volId = AliGeomManager::LayerToVolUID(AliGeomManager::kMUON, moduleId); 

  // Create mis align matrix
  TClonesArray& refArray =*fMisAlignArray;
  Int_t pos = fMisAlignArray->GetEntriesFast();
  new (refArray[pos]) AliAlignObjMatrix(GetModuleSymName(moduleId), volId, 
					const_cast<TGeoHMatrix&>(matrix),bGlobal);
}

//_____________________________________________________________________________
void  AliMUONGeometryTransformer::AddMisAlignDetElement(Int_t detElemId, 
							const TGeoHMatrix& matrix, Bool_t bGlobal)
{
/// Build AliAlignObjMatrix with detection element ID, its volumePath
/// and the given delta transformation matrix					      

  if ( ! fMisAlignArray )
    fMisAlignArray = new TClonesArray("AliAlignObjMatrix", 200);

  const AliMUONGeometryDetElement* kDetElement 
    = GetDetElement(detElemId);

  if ( ! kDetElement ) {
    AliErrorStream() << "Det element " << detElemId << " not found." << endl; 
    return;
  }   
  
  // Get unique align object ID
  Int_t volId = AliGeomManager::LayerToVolUID(AliGeomManager::kMUON, detElemId); 

  // Create mis align matrix
  TClonesArray& refArray =*fMisAlignArray;
  Int_t pos = fMisAlignArray->GetEntriesFast();
  new(refArray[pos]) AliAlignObjMatrix(GetDESymName(detElemId), volId, 
				       const_cast<TGeoHMatrix&>(matrix),bGlobal);
}

//______________________________________________________________________________
void AliMUONGeometryTransformer::CreateModules()
{
/// Create modules and their detection elements using info from mapping;
/// but do not fill matrices

  // Load mapping as its info is used to define modules & DEs
  LoadMapping();

  if ( fModuleTransformers->GetEntriesFast() == 0 ) {
    // Create modules only if they do not yet exist

    // Loop over geometry module
    for (Int_t moduleId = 0; moduleId < AliMpConstants::NofGeomModules(); ++moduleId ) {
    
      // Create geometry module transformer
      AliMUONGeometryModuleTransformer* moduleTransformer
        = new AliMUONGeometryModuleTransformer(moduleId);
      AddModuleTransformer(moduleTransformer);
    }
  }     
    
  // Loop over detection elements
  AliMpDEIterator it;
  for ( it.First(); ! it.IsDone(); it.Next() ) {
    
    Int_t detElemId = it.CurrentDEId();
    Int_t moduleId = AliMpDEManager::GetGeomModuleId(detElemId);

    // Get detection element store
    AliMpExMap* detElements = 
      GetModuleTransformer(moduleId)->GetDetElementStore();     

    // Add detection element
    AliMUONGeometryDetElement* detElement 
      = new AliMUONGeometryDetElement(detElemId);
    detElements->Add(detElemId, detElement);
  }   
}

//_____________________________________________________________________________
void AliMUONGeometryTransformer::AddAlignableVolumes() const
{
/// Set symbolic names and matrices to alignable objects to TGeo

  if ( ! gGeoManager ) {
    AliWarning("TGeoManager not defined.");
    return;
  }  

  // Modules 
  for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
    AliMUONGeometryModuleTransformer* module 
      = (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);

    // Set module symbolic name
    TGeoPNEntry* pnEntry
      = gGeoManager->SetAlignableEntry(GetModuleSymName(module->GetModuleId()),
                                       module->GetVolumePath());
    if ( ! pnEntry ) {
      AliErrorStream() 
        << "Volume path " << module->GetVolumePath().Data()
        << " for geometry module " << module->GetModuleId() << " " << module
        << " not found in geometry." << endl;
    }
    else {
      // Set module matrix
      pnEntry->SetMatrix(new TGeoHMatrix(*module->GetTransformation()));  
       // the matrix will be deleted via TGeoManager  
    }                                     

    // Detection elements
    AliMpExMap* detElements = module->GetDetElementStore();    
    TIter next(detElements->CreateIterator());    
    AliMUONGeometryDetElement* detElement;
    
    while ( ( detElement = static_cast<AliMUONGeometryDetElement*>(next()) ) )
    {
      // Set detection element symbolic name
      TGeoPNEntry* pnEntryDE
        = gGeoManager->SetAlignableEntry(GetDESymName(detElement->GetId()), 
                                         detElement->GetVolumePath());
      if ( ! pnEntryDE ) {
        AliErrorStream() 
          << "Volume path " 
          << detElement->GetVolumePath().Data() 
          << " for detection element " << detElement->GetId()
          << " not found in geometry." << endl;
      }
      else {
        // Set detection element matrix
        pnEntryDE->SetMatrix(new TGeoHMatrix(*detElement->GetGlobalTransformation()));                                      
         // the matrix will be deleted via TGeoManager 
      }                                      
    }  
  }     
}  	     
    
//_____________________________________________________________________________
TClonesArray* AliMUONGeometryTransformer::CreateZeroAlignmentData() const
{
/// Create array with zero alignment data
			       
  // Create array for zero-alignment objects
  TClonesArray* array = new TClonesArray("AliAlignObjMatrix", 200);
  TClonesArray& refArray =*array;
  array->SetOwner(true);

  // Identity matrix
  TGeoHMatrix matrix;

  // Modules 
  for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
    AliMUONGeometryModuleTransformer* module 
      = (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);

    Int_t moduleId = module->GetModuleId();
  
    // Align object ID
    Int_t volId = AliGeomManager::LayerToVolUID(AliGeomManager::kMUON, moduleId); 

    // Create mis align matrix
    Int_t pos = array->GetEntriesFast();
    new (refArray[pos]) AliAlignObjMatrix(GetModuleSymName(moduleId), volId, matrix, kTRUE);
  }     

  // Detection elements
  for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
    AliMUONGeometryModuleTransformer* moduleTransformer 
      = (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);

    AliMpExMap* detElements = moduleTransformer->GetDetElementStore();    
    TIter next(detElements->CreateIterator());    
    AliMUONGeometryDetElement* detElement;
    
    while ( ( detElement = static_cast<AliMUONGeometryDetElement*>(next()) ) )
    {
      Int_t detElemId = detElement->GetId();
  
      // Align object ID
      Int_t volId = AliGeomManager::LayerToVolUID(AliGeomManager::kMUON, detElemId); 

      // Create mis align matrix
      Int_t pos = array->GetEntriesFast();
      new (refArray[pos]) AliAlignObjMatrix(GetDESymName(detElemId), volId, matrix, kTRUE);
    }
  }
  
  return array;
}       

//_____________________________________________________________________________
void AliMUONGeometryTransformer::ClearMisAlignmentData()
{
/// Clear the array of misalignment data

  if ( ! fMisAlignArray ) return;
  
  fMisAlignArray->Delete();
}  
  			       
//_____________________________________________________________________________
void AliMUONGeometryTransformer::Global2Local(Int_t detElemId,
                 Float_t xg, Float_t yg, Float_t zg, 
                 Float_t& xl, Float_t& yl, Float_t& zl) const
{
/// Transform point from the global reference frame (ALIC)
/// to the local reference frame of the detection element specified
/// by detElemId.

  const AliMUONGeometryModuleTransformer* kTransformer 
    = GetModuleTransformerByDEId(detElemId);
  
  if (kTransformer) 
    kTransformer->Global2Local(detElemId, xg, yg, zg, xl, yl, zl);
}   
		 
//_____________________________________________________________________________
void AliMUONGeometryTransformer::Global2Local(Int_t detElemId,
                 Double_t xg, Double_t yg, Double_t zg, 
                 Double_t& xl, Double_t& yl, Double_t& zl) const
{
/// Transform point from the global reference frame (ALIC)
/// to the local reference frame of the detection element specified
/// by detElemId.

  const AliMUONGeometryModuleTransformer* kTransformer 
    = GetModuleTransformerByDEId(detElemId);
  
  if (kTransformer) 
    kTransformer->Global2Local(detElemId, xg, yg, zg, xl, yl, zl);
}   

//_____________________________________________________________________________
void AliMUONGeometryTransformer::Local2Global(Int_t detElemId,
                 Float_t xl, Float_t yl, Float_t zl, 
                 Float_t& xg, Float_t& yg, Float_t& zg) const
{		 
/// Transform point from the local reference frame of the detection element 
/// specified by detElemId to the global reference frame (ALIC).

  const AliMUONGeometryModuleTransformer* kTransformer 
    = GetModuleTransformerByDEId(detElemId);
    
  if (kTransformer) 
    kTransformer->Local2Global(detElemId, xl, yl, zl, xg, yg, zg);
}   

//_____________________________________________________________________________
void AliMUONGeometryTransformer::Local2Global(Int_t detElemId,
                 Double_t xl, Double_t yl, Double_t zl, 
                 Double_t& xg, Double_t& yg, Double_t& zg) const
{		 
/// Transform point from the local reference frame of the detection element 
/// specified by detElemId to the global reference frame (ALIC).

  const AliMUONGeometryModuleTransformer* kTransformer 
    = GetModuleTransformerByDEId(detElemId);
    
  if (kTransformer) 
    kTransformer->Local2Global(detElemId, xl, yl, zl, xg, yg, zg);
}   

//_____________________________________________________________________________
const AliMUONGeometryModuleTransformer* 
AliMUONGeometryTransformer::GetModuleTransformer(Int_t index, Bool_t warn) const
{
/// Return the geometry module transformer specified by index

  return GetModuleTransformerNonConst(index, warn);
}    

//_____________________________________________________________________________
const AliMUONGeometryModuleTransformer* 
AliMUONGeometryTransformer::GetModuleTransformerByDEId(Int_t detElemId, 
                                                       Bool_t warn) const
{
/// Return the geometry module transformer specified by detection element ID

  // Get module index
  Int_t index = AliMpDEManager::GetGeomModuleId(detElemId);

  return GetModuleTransformer(index, warn);
}    

//_____________________________________________________________________________
const AliMUONGeometryDetElement* 
AliMUONGeometryTransformer::GetDetElement(Int_t detElemId, Bool_t warn) const
{
/// Return detection element with given detElemId			       

  const AliMUONGeometryModuleTransformer* kTransformer 
    = GetModuleTransformerByDEId(detElemId, warn);
    
  if (!kTransformer) return 0;
    
  return kTransformer->GetDetElement(detElemId, warn); 
}

//_____________________________________________________________________________
Bool_t  AliMUONGeometryTransformer::HasDE(Int_t detElemId) const
{
/// Return true if detection element with given detElemId is defined

  const AliMUONGeometryModuleTransformer* kTransformer 
    = GetModuleTransformerByDEId(detElemId, false);
    
  if (!kTransformer) return false;
    
  return ( kTransformer->GetDetElement(detElemId, false) != 0 );
}  
    

 AliMUONGeometryTransformer.cxx:1
 AliMUONGeometryTransformer.cxx:2
 AliMUONGeometryTransformer.cxx:3
 AliMUONGeometryTransformer.cxx:4
 AliMUONGeometryTransformer.cxx:5
 AliMUONGeometryTransformer.cxx:6
 AliMUONGeometryTransformer.cxx:7
 AliMUONGeometryTransformer.cxx:8
 AliMUONGeometryTransformer.cxx:9
 AliMUONGeometryTransformer.cxx:10
 AliMUONGeometryTransformer.cxx:11
 AliMUONGeometryTransformer.cxx:12
 AliMUONGeometryTransformer.cxx:13
 AliMUONGeometryTransformer.cxx:14
 AliMUONGeometryTransformer.cxx:15
 AliMUONGeometryTransformer.cxx:16
 AliMUONGeometryTransformer.cxx:17
 AliMUONGeometryTransformer.cxx:18
 AliMUONGeometryTransformer.cxx:19
 AliMUONGeometryTransformer.cxx:20
 AliMUONGeometryTransformer.cxx:21
 AliMUONGeometryTransformer.cxx:22
 AliMUONGeometryTransformer.cxx:23
 AliMUONGeometryTransformer.cxx:24
 AliMUONGeometryTransformer.cxx:25
 AliMUONGeometryTransformer.cxx:26
 AliMUONGeometryTransformer.cxx:27
 AliMUONGeometryTransformer.cxx:28
 AliMUONGeometryTransformer.cxx:29
 AliMUONGeometryTransformer.cxx:30
 AliMUONGeometryTransformer.cxx:31
 AliMUONGeometryTransformer.cxx:32
 AliMUONGeometryTransformer.cxx:33
 AliMUONGeometryTransformer.cxx:34
 AliMUONGeometryTransformer.cxx:35
 AliMUONGeometryTransformer.cxx:36
 AliMUONGeometryTransformer.cxx:37
 AliMUONGeometryTransformer.cxx:38
 AliMUONGeometryTransformer.cxx:39
 AliMUONGeometryTransformer.cxx:40
 AliMUONGeometryTransformer.cxx:41
 AliMUONGeometryTransformer.cxx:42
 AliMUONGeometryTransformer.cxx:43
 AliMUONGeometryTransformer.cxx:44
 AliMUONGeometryTransformer.cxx:45
 AliMUONGeometryTransformer.cxx:46
 AliMUONGeometryTransformer.cxx:47
 AliMUONGeometryTransformer.cxx:48
 AliMUONGeometryTransformer.cxx:49
 AliMUONGeometryTransformer.cxx:50
 AliMUONGeometryTransformer.cxx:51
 AliMUONGeometryTransformer.cxx:52
 AliMUONGeometryTransformer.cxx:53
 AliMUONGeometryTransformer.cxx:54
 AliMUONGeometryTransformer.cxx:55
 AliMUONGeometryTransformer.cxx:56
 AliMUONGeometryTransformer.cxx:57
 AliMUONGeometryTransformer.cxx:58
 AliMUONGeometryTransformer.cxx:59
 AliMUONGeometryTransformer.cxx:60
 AliMUONGeometryTransformer.cxx:61
 AliMUONGeometryTransformer.cxx:62
 AliMUONGeometryTransformer.cxx:63
 AliMUONGeometryTransformer.cxx:64
 AliMUONGeometryTransformer.cxx:65
 AliMUONGeometryTransformer.cxx:66
 AliMUONGeometryTransformer.cxx:67
 AliMUONGeometryTransformer.cxx:68
 AliMUONGeometryTransformer.cxx:69
 AliMUONGeometryTransformer.cxx:70
 AliMUONGeometryTransformer.cxx:71
 AliMUONGeometryTransformer.cxx:72
 AliMUONGeometryTransformer.cxx:73
 AliMUONGeometryTransformer.cxx:74
 AliMUONGeometryTransformer.cxx:75
 AliMUONGeometryTransformer.cxx:76
 AliMUONGeometryTransformer.cxx:77
 AliMUONGeometryTransformer.cxx:78
 AliMUONGeometryTransformer.cxx:79
 AliMUONGeometryTransformer.cxx:80
 AliMUONGeometryTransformer.cxx:81
 AliMUONGeometryTransformer.cxx:82
 AliMUONGeometryTransformer.cxx:83
 AliMUONGeometryTransformer.cxx:84
 AliMUONGeometryTransformer.cxx:85
 AliMUONGeometryTransformer.cxx:86
 AliMUONGeometryTransformer.cxx:87
 AliMUONGeometryTransformer.cxx:88
 AliMUONGeometryTransformer.cxx:89
 AliMUONGeometryTransformer.cxx:90
 AliMUONGeometryTransformer.cxx:91
 AliMUONGeometryTransformer.cxx:92
 AliMUONGeometryTransformer.cxx:93
 AliMUONGeometryTransformer.cxx:94
 AliMUONGeometryTransformer.cxx:95
 AliMUONGeometryTransformer.cxx:96
 AliMUONGeometryTransformer.cxx:97
 AliMUONGeometryTransformer.cxx:98
 AliMUONGeometryTransformer.cxx:99
 AliMUONGeometryTransformer.cxx:100
 AliMUONGeometryTransformer.cxx:101
 AliMUONGeometryTransformer.cxx:102
 AliMUONGeometryTransformer.cxx:103
 AliMUONGeometryTransformer.cxx:104
 AliMUONGeometryTransformer.cxx:105
 AliMUONGeometryTransformer.cxx:106
 AliMUONGeometryTransformer.cxx:107
 AliMUONGeometryTransformer.cxx:108
 AliMUONGeometryTransformer.cxx:109
 AliMUONGeometryTransformer.cxx:110
 AliMUONGeometryTransformer.cxx:111
 AliMUONGeometryTransformer.cxx:112
 AliMUONGeometryTransformer.cxx:113
 AliMUONGeometryTransformer.cxx:114
 AliMUONGeometryTransformer.cxx:115
 AliMUONGeometryTransformer.cxx:116
 AliMUONGeometryTransformer.cxx:117
 AliMUONGeometryTransformer.cxx:118
 AliMUONGeometryTransformer.cxx:119
 AliMUONGeometryTransformer.cxx:120
 AliMUONGeometryTransformer.cxx:121
 AliMUONGeometryTransformer.cxx:122
 AliMUONGeometryTransformer.cxx:123
 AliMUONGeometryTransformer.cxx:124
 AliMUONGeometryTransformer.cxx:125
 AliMUONGeometryTransformer.cxx:126
 AliMUONGeometryTransformer.cxx:127
 AliMUONGeometryTransformer.cxx:128
 AliMUONGeometryTransformer.cxx:129
 AliMUONGeometryTransformer.cxx:130
 AliMUONGeometryTransformer.cxx:131
 AliMUONGeometryTransformer.cxx:132
 AliMUONGeometryTransformer.cxx:133
 AliMUONGeometryTransformer.cxx:134
 AliMUONGeometryTransformer.cxx:135
 AliMUONGeometryTransformer.cxx:136
 AliMUONGeometryTransformer.cxx:137
 AliMUONGeometryTransformer.cxx:138
 AliMUONGeometryTransformer.cxx:139
 AliMUONGeometryTransformer.cxx:140
 AliMUONGeometryTransformer.cxx:141
 AliMUONGeometryTransformer.cxx:142
 AliMUONGeometryTransformer.cxx:143
 AliMUONGeometryTransformer.cxx:144
 AliMUONGeometryTransformer.cxx:145
 AliMUONGeometryTransformer.cxx:146
 AliMUONGeometryTransformer.cxx:147
 AliMUONGeometryTransformer.cxx:148
 AliMUONGeometryTransformer.cxx:149
 AliMUONGeometryTransformer.cxx:150
 AliMUONGeometryTransformer.cxx:151
 AliMUONGeometryTransformer.cxx:152
 AliMUONGeometryTransformer.cxx:153
 AliMUONGeometryTransformer.cxx:154
 AliMUONGeometryTransformer.cxx:155
 AliMUONGeometryTransformer.cxx:156
 AliMUONGeometryTransformer.cxx:157
 AliMUONGeometryTransformer.cxx:158
 AliMUONGeometryTransformer.cxx:159
 AliMUONGeometryTransformer.cxx:160
 AliMUONGeometryTransformer.cxx:161
 AliMUONGeometryTransformer.cxx:162
 AliMUONGeometryTransformer.cxx:163
 AliMUONGeometryTransformer.cxx:164
 AliMUONGeometryTransformer.cxx:165
 AliMUONGeometryTransformer.cxx:166
 AliMUONGeometryTransformer.cxx:167
 AliMUONGeometryTransformer.cxx:168
 AliMUONGeometryTransformer.cxx:169
 AliMUONGeometryTransformer.cxx:170
 AliMUONGeometryTransformer.cxx:171
 AliMUONGeometryTransformer.cxx:172
 AliMUONGeometryTransformer.cxx:173
 AliMUONGeometryTransformer.cxx:174
 AliMUONGeometryTransformer.cxx:175
 AliMUONGeometryTransformer.cxx:176
 AliMUONGeometryTransformer.cxx:177
 AliMUONGeometryTransformer.cxx:178
 AliMUONGeometryTransformer.cxx:179
 AliMUONGeometryTransformer.cxx:180
 AliMUONGeometryTransformer.cxx:181
 AliMUONGeometryTransformer.cxx:182
 AliMUONGeometryTransformer.cxx:183
 AliMUONGeometryTransformer.cxx:184
 AliMUONGeometryTransformer.cxx:185
 AliMUONGeometryTransformer.cxx:186
 AliMUONGeometryTransformer.cxx:187
 AliMUONGeometryTransformer.cxx:188
 AliMUONGeometryTransformer.cxx:189
 AliMUONGeometryTransformer.cxx:190
 AliMUONGeometryTransformer.cxx:191
 AliMUONGeometryTransformer.cxx:192
 AliMUONGeometryTransformer.cxx:193
 AliMUONGeometryTransformer.cxx:194
 AliMUONGeometryTransformer.cxx:195
 AliMUONGeometryTransformer.cxx:196
 AliMUONGeometryTransformer.cxx:197
 AliMUONGeometryTransformer.cxx:198
 AliMUONGeometryTransformer.cxx:199
 AliMUONGeometryTransformer.cxx:200
 AliMUONGeometryTransformer.cxx:201
 AliMUONGeometryTransformer.cxx:202
 AliMUONGeometryTransformer.cxx:203
 AliMUONGeometryTransformer.cxx:204
 AliMUONGeometryTransformer.cxx:205
 AliMUONGeometryTransformer.cxx:206
 AliMUONGeometryTransformer.cxx:207
 AliMUONGeometryTransformer.cxx:208
 AliMUONGeometryTransformer.cxx:209
 AliMUONGeometryTransformer.cxx:210
 AliMUONGeometryTransformer.cxx:211
 AliMUONGeometryTransformer.cxx:212
 AliMUONGeometryTransformer.cxx:213
 AliMUONGeometryTransformer.cxx:214
 AliMUONGeometryTransformer.cxx:215
 AliMUONGeometryTransformer.cxx:216
 AliMUONGeometryTransformer.cxx:217
 AliMUONGeometryTransformer.cxx:218
 AliMUONGeometryTransformer.cxx:219
 AliMUONGeometryTransformer.cxx:220
 AliMUONGeometryTransformer.cxx:221
 AliMUONGeometryTransformer.cxx:222
 AliMUONGeometryTransformer.cxx:223
 AliMUONGeometryTransformer.cxx:224
 AliMUONGeometryTransformer.cxx:225
 AliMUONGeometryTransformer.cxx:226
 AliMUONGeometryTransformer.cxx:227
 AliMUONGeometryTransformer.cxx:228
 AliMUONGeometryTransformer.cxx:229
 AliMUONGeometryTransformer.cxx:230
 AliMUONGeometryTransformer.cxx:231
 AliMUONGeometryTransformer.cxx:232
 AliMUONGeometryTransformer.cxx:233
 AliMUONGeometryTransformer.cxx:234
 AliMUONGeometryTransformer.cxx:235
 AliMUONGeometryTransformer.cxx:236
 AliMUONGeometryTransformer.cxx:237
 AliMUONGeometryTransformer.cxx:238
 AliMUONGeometryTransformer.cxx:239
 AliMUONGeometryTransformer.cxx:240
 AliMUONGeometryTransformer.cxx:241
 AliMUONGeometryTransformer.cxx:242
 AliMUONGeometryTransformer.cxx:243
 AliMUONGeometryTransformer.cxx:244
 AliMUONGeometryTransformer.cxx:245
 AliMUONGeometryTransformer.cxx:246
 AliMUONGeometryTransformer.cxx:247
 AliMUONGeometryTransformer.cxx:248
 AliMUONGeometryTransformer.cxx:249
 AliMUONGeometryTransformer.cxx:250
 AliMUONGeometryTransformer.cxx:251
 AliMUONGeometryTransformer.cxx:252
 AliMUONGeometryTransformer.cxx:253
 AliMUONGeometryTransformer.cxx:254
 AliMUONGeometryTransformer.cxx:255
 AliMUONGeometryTransformer.cxx:256
 AliMUONGeometryTransformer.cxx:257
 AliMUONGeometryTransformer.cxx:258
 AliMUONGeometryTransformer.cxx:259
 AliMUONGeometryTransformer.cxx:260
 AliMUONGeometryTransformer.cxx:261
 AliMUONGeometryTransformer.cxx:262
 AliMUONGeometryTransformer.cxx:263
 AliMUONGeometryTransformer.cxx:264
 AliMUONGeometryTransformer.cxx:265
 AliMUONGeometryTransformer.cxx:266
 AliMUONGeometryTransformer.cxx:267
 AliMUONGeometryTransformer.cxx:268
 AliMUONGeometryTransformer.cxx:269
 AliMUONGeometryTransformer.cxx:270
 AliMUONGeometryTransformer.cxx:271
 AliMUONGeometryTransformer.cxx:272
 AliMUONGeometryTransformer.cxx:273
 AliMUONGeometryTransformer.cxx:274
 AliMUONGeometryTransformer.cxx:275
 AliMUONGeometryTransformer.cxx:276
 AliMUONGeometryTransformer.cxx:277
 AliMUONGeometryTransformer.cxx:278
 AliMUONGeometryTransformer.cxx:279
 AliMUONGeometryTransformer.cxx:280
 AliMUONGeometryTransformer.cxx:281
 AliMUONGeometryTransformer.cxx:282
 AliMUONGeometryTransformer.cxx:283
 AliMUONGeometryTransformer.cxx:284
 AliMUONGeometryTransformer.cxx:285
 AliMUONGeometryTransformer.cxx:286
 AliMUONGeometryTransformer.cxx:287
 AliMUONGeometryTransformer.cxx:288
 AliMUONGeometryTransformer.cxx:289
 AliMUONGeometryTransformer.cxx:290
 AliMUONGeometryTransformer.cxx:291
 AliMUONGeometryTransformer.cxx:292
 AliMUONGeometryTransformer.cxx:293
 AliMUONGeometryTransformer.cxx:294
 AliMUONGeometryTransformer.cxx:295
 AliMUONGeometryTransformer.cxx:296
 AliMUONGeometryTransformer.cxx:297
 AliMUONGeometryTransformer.cxx:298
 AliMUONGeometryTransformer.cxx:299
 AliMUONGeometryTransformer.cxx:300
 AliMUONGeometryTransformer.cxx:301
 AliMUONGeometryTransformer.cxx:302
 AliMUONGeometryTransformer.cxx:303
 AliMUONGeometryTransformer.cxx:304
 AliMUONGeometryTransformer.cxx:305
 AliMUONGeometryTransformer.cxx:306
 AliMUONGeometryTransformer.cxx:307
 AliMUONGeometryTransformer.cxx:308
 AliMUONGeometryTransformer.cxx:309
 AliMUONGeometryTransformer.cxx:310
 AliMUONGeometryTransformer.cxx:311
 AliMUONGeometryTransformer.cxx:312
 AliMUONGeometryTransformer.cxx:313
 AliMUONGeometryTransformer.cxx:314
 AliMUONGeometryTransformer.cxx:315
 AliMUONGeometryTransformer.cxx:316
 AliMUONGeometryTransformer.cxx:317
 AliMUONGeometryTransformer.cxx:318
 AliMUONGeometryTransformer.cxx:319
 AliMUONGeometryTransformer.cxx:320
 AliMUONGeometryTransformer.cxx:321
 AliMUONGeometryTransformer.cxx:322
 AliMUONGeometryTransformer.cxx:323
 AliMUONGeometryTransformer.cxx:324
 AliMUONGeometryTransformer.cxx:325
 AliMUONGeometryTransformer.cxx:326
 AliMUONGeometryTransformer.cxx:327
 AliMUONGeometryTransformer.cxx:328
 AliMUONGeometryTransformer.cxx:329
 AliMUONGeometryTransformer.cxx:330
 AliMUONGeometryTransformer.cxx:331
 AliMUONGeometryTransformer.cxx:332
 AliMUONGeometryTransformer.cxx:333
 AliMUONGeometryTransformer.cxx:334
 AliMUONGeometryTransformer.cxx:335
 AliMUONGeometryTransformer.cxx:336
 AliMUONGeometryTransformer.cxx:337
 AliMUONGeometryTransformer.cxx:338
 AliMUONGeometryTransformer.cxx:339
 AliMUONGeometryTransformer.cxx:340
 AliMUONGeometryTransformer.cxx:341
 AliMUONGeometryTransformer.cxx:342
 AliMUONGeometryTransformer.cxx:343
 AliMUONGeometryTransformer.cxx:344
 AliMUONGeometryTransformer.cxx:345
 AliMUONGeometryTransformer.cxx:346
 AliMUONGeometryTransformer.cxx:347
 AliMUONGeometryTransformer.cxx:348
 AliMUONGeometryTransformer.cxx:349
 AliMUONGeometryTransformer.cxx:350
 AliMUONGeometryTransformer.cxx:351
 AliMUONGeometryTransformer.cxx:352
 AliMUONGeometryTransformer.cxx:353
 AliMUONGeometryTransformer.cxx:354
 AliMUONGeometryTransformer.cxx:355
 AliMUONGeometryTransformer.cxx:356
 AliMUONGeometryTransformer.cxx:357
 AliMUONGeometryTransformer.cxx:358
 AliMUONGeometryTransformer.cxx:359
 AliMUONGeometryTransformer.cxx:360
 AliMUONGeometryTransformer.cxx:361
 AliMUONGeometryTransformer.cxx:362
 AliMUONGeometryTransformer.cxx:363
 AliMUONGeometryTransformer.cxx:364
 AliMUONGeometryTransformer.cxx:365
 AliMUONGeometryTransformer.cxx:366
 AliMUONGeometryTransformer.cxx:367
 AliMUONGeometryTransformer.cxx:368
 AliMUONGeometryTransformer.cxx:369
 AliMUONGeometryTransformer.cxx:370
 AliMUONGeometryTransformer.cxx:371
 AliMUONGeometryTransformer.cxx:372
 AliMUONGeometryTransformer.cxx:373
 AliMUONGeometryTransformer.cxx:374
 AliMUONGeometryTransformer.cxx:375
 AliMUONGeometryTransformer.cxx:376
 AliMUONGeometryTransformer.cxx:377
 AliMUONGeometryTransformer.cxx:378
 AliMUONGeometryTransformer.cxx:379
 AliMUONGeometryTransformer.cxx:380
 AliMUONGeometryTransformer.cxx:381
 AliMUONGeometryTransformer.cxx:382
 AliMUONGeometryTransformer.cxx:383
 AliMUONGeometryTransformer.cxx:384
 AliMUONGeometryTransformer.cxx:385
 AliMUONGeometryTransformer.cxx:386
 AliMUONGeometryTransformer.cxx:387
 AliMUONGeometryTransformer.cxx:388
 AliMUONGeometryTransformer.cxx:389
 AliMUONGeometryTransformer.cxx:390
 AliMUONGeometryTransformer.cxx:391
 AliMUONGeometryTransformer.cxx:392
 AliMUONGeometryTransformer.cxx:393
 AliMUONGeometryTransformer.cxx:394
 AliMUONGeometryTransformer.cxx:395
 AliMUONGeometryTransformer.cxx:396
 AliMUONGeometryTransformer.cxx:397
 AliMUONGeometryTransformer.cxx:398
 AliMUONGeometryTransformer.cxx:399
 AliMUONGeometryTransformer.cxx:400
 AliMUONGeometryTransformer.cxx:401
 AliMUONGeometryTransformer.cxx:402
 AliMUONGeometryTransformer.cxx:403
 AliMUONGeometryTransformer.cxx:404
 AliMUONGeometryTransformer.cxx:405
 AliMUONGeometryTransformer.cxx:406
 AliMUONGeometryTransformer.cxx:407
 AliMUONGeometryTransformer.cxx:408
 AliMUONGeometryTransformer.cxx:409
 AliMUONGeometryTransformer.cxx:410
 AliMUONGeometryTransformer.cxx:411
 AliMUONGeometryTransformer.cxx:412
 AliMUONGeometryTransformer.cxx:413
 AliMUONGeometryTransformer.cxx:414
 AliMUONGeometryTransformer.cxx:415
 AliMUONGeometryTransformer.cxx:416
 AliMUONGeometryTransformer.cxx:417
 AliMUONGeometryTransformer.cxx:418
 AliMUONGeometryTransformer.cxx:419
 AliMUONGeometryTransformer.cxx:420
 AliMUONGeometryTransformer.cxx:421
 AliMUONGeometryTransformer.cxx:422
 AliMUONGeometryTransformer.cxx:423
 AliMUONGeometryTransformer.cxx:424
 AliMUONGeometryTransformer.cxx:425
 AliMUONGeometryTransformer.cxx:426
 AliMUONGeometryTransformer.cxx:427
 AliMUONGeometryTransformer.cxx:428
 AliMUONGeometryTransformer.cxx:429
 AliMUONGeometryTransformer.cxx:430
 AliMUONGeometryTransformer.cxx:431
 AliMUONGeometryTransformer.cxx:432
 AliMUONGeometryTransformer.cxx:433
 AliMUONGeometryTransformer.cxx:434
 AliMUONGeometryTransformer.cxx:435
 AliMUONGeometryTransformer.cxx:436
 AliMUONGeometryTransformer.cxx:437
 AliMUONGeometryTransformer.cxx:438
 AliMUONGeometryTransformer.cxx:439
 AliMUONGeometryTransformer.cxx:440
 AliMUONGeometryTransformer.cxx:441
 AliMUONGeometryTransformer.cxx:442
 AliMUONGeometryTransformer.cxx:443
 AliMUONGeometryTransformer.cxx:444
 AliMUONGeometryTransformer.cxx:445
 AliMUONGeometryTransformer.cxx:446
 AliMUONGeometryTransformer.cxx:447
 AliMUONGeometryTransformer.cxx:448
 AliMUONGeometryTransformer.cxx:449
 AliMUONGeometryTransformer.cxx:450
 AliMUONGeometryTransformer.cxx:451
 AliMUONGeometryTransformer.cxx:452
 AliMUONGeometryTransformer.cxx:453
 AliMUONGeometryTransformer.cxx:454
 AliMUONGeometryTransformer.cxx:455
 AliMUONGeometryTransformer.cxx:456
 AliMUONGeometryTransformer.cxx:457
 AliMUONGeometryTransformer.cxx:458
 AliMUONGeometryTransformer.cxx:459
 AliMUONGeometryTransformer.cxx:460
 AliMUONGeometryTransformer.cxx:461
 AliMUONGeometryTransformer.cxx:462
 AliMUONGeometryTransformer.cxx:463
 AliMUONGeometryTransformer.cxx:464
 AliMUONGeometryTransformer.cxx:465
 AliMUONGeometryTransformer.cxx:466
 AliMUONGeometryTransformer.cxx:467
 AliMUONGeometryTransformer.cxx:468
 AliMUONGeometryTransformer.cxx:469
 AliMUONGeometryTransformer.cxx:470
 AliMUONGeometryTransformer.cxx:471
 AliMUONGeometryTransformer.cxx:472
 AliMUONGeometryTransformer.cxx:473
 AliMUONGeometryTransformer.cxx:474
 AliMUONGeometryTransformer.cxx:475
 AliMUONGeometryTransformer.cxx:476
 AliMUONGeometryTransformer.cxx:477
 AliMUONGeometryTransformer.cxx:478
 AliMUONGeometryTransformer.cxx:479
 AliMUONGeometryTransformer.cxx:480
 AliMUONGeometryTransformer.cxx:481
 AliMUONGeometryTransformer.cxx:482
 AliMUONGeometryTransformer.cxx:483
 AliMUONGeometryTransformer.cxx:484
 AliMUONGeometryTransformer.cxx:485
 AliMUONGeometryTransformer.cxx:486
 AliMUONGeometryTransformer.cxx:487
 AliMUONGeometryTransformer.cxx:488
 AliMUONGeometryTransformer.cxx:489
 AliMUONGeometryTransformer.cxx:490
 AliMUONGeometryTransformer.cxx:491
 AliMUONGeometryTransformer.cxx:492
 AliMUONGeometryTransformer.cxx:493
 AliMUONGeometryTransformer.cxx:494
 AliMUONGeometryTransformer.cxx:495
 AliMUONGeometryTransformer.cxx:496
 AliMUONGeometryTransformer.cxx:497
 AliMUONGeometryTransformer.cxx:498
 AliMUONGeometryTransformer.cxx:499
 AliMUONGeometryTransformer.cxx:500
 AliMUONGeometryTransformer.cxx:501
 AliMUONGeometryTransformer.cxx:502
 AliMUONGeometryTransformer.cxx:503
 AliMUONGeometryTransformer.cxx:504
 AliMUONGeometryTransformer.cxx:505
 AliMUONGeometryTransformer.cxx:506
 AliMUONGeometryTransformer.cxx:507
 AliMUONGeometryTransformer.cxx:508
 AliMUONGeometryTransformer.cxx:509
 AliMUONGeometryTransformer.cxx:510
 AliMUONGeometryTransformer.cxx:511
 AliMUONGeometryTransformer.cxx:512
 AliMUONGeometryTransformer.cxx:513
 AliMUONGeometryTransformer.cxx:514
 AliMUONGeometryTransformer.cxx:515
 AliMUONGeometryTransformer.cxx:516
 AliMUONGeometryTransformer.cxx:517
 AliMUONGeometryTransformer.cxx:518
 AliMUONGeometryTransformer.cxx:519
 AliMUONGeometryTransformer.cxx:520
 AliMUONGeometryTransformer.cxx:521
 AliMUONGeometryTransformer.cxx:522
 AliMUONGeometryTransformer.cxx:523
 AliMUONGeometryTransformer.cxx:524
 AliMUONGeometryTransformer.cxx:525
 AliMUONGeometryTransformer.cxx:526
 AliMUONGeometryTransformer.cxx:527
 AliMUONGeometryTransformer.cxx:528
 AliMUONGeometryTransformer.cxx:529
 AliMUONGeometryTransformer.cxx:530
 AliMUONGeometryTransformer.cxx:531
 AliMUONGeometryTransformer.cxx:532
 AliMUONGeometryTransformer.cxx:533
 AliMUONGeometryTransformer.cxx:534
 AliMUONGeometryTransformer.cxx:535
 AliMUONGeometryTransformer.cxx:536
 AliMUONGeometryTransformer.cxx:537
 AliMUONGeometryTransformer.cxx:538
 AliMUONGeometryTransformer.cxx:539
 AliMUONGeometryTransformer.cxx:540
 AliMUONGeometryTransformer.cxx:541
 AliMUONGeometryTransformer.cxx:542
 AliMUONGeometryTransformer.cxx:543
 AliMUONGeometryTransformer.cxx:544
 AliMUONGeometryTransformer.cxx:545
 AliMUONGeometryTransformer.cxx:546
 AliMUONGeometryTransformer.cxx:547
 AliMUONGeometryTransformer.cxx:548
 AliMUONGeometryTransformer.cxx:549
 AliMUONGeometryTransformer.cxx:550
 AliMUONGeometryTransformer.cxx:551
 AliMUONGeometryTransformer.cxx:552
 AliMUONGeometryTransformer.cxx:553
 AliMUONGeometryTransformer.cxx:554
 AliMUONGeometryTransformer.cxx:555
 AliMUONGeometryTransformer.cxx:556
 AliMUONGeometryTransformer.cxx:557
 AliMUONGeometryTransformer.cxx:558
 AliMUONGeometryTransformer.cxx:559
 AliMUONGeometryTransformer.cxx:560
 AliMUONGeometryTransformer.cxx:561
 AliMUONGeometryTransformer.cxx:562
 AliMUONGeometryTransformer.cxx:563
 AliMUONGeometryTransformer.cxx:564
 AliMUONGeometryTransformer.cxx:565
 AliMUONGeometryTransformer.cxx:566
 AliMUONGeometryTransformer.cxx:567
 AliMUONGeometryTransformer.cxx:568
 AliMUONGeometryTransformer.cxx:569
 AliMUONGeometryTransformer.cxx:570
 AliMUONGeometryTransformer.cxx:571
 AliMUONGeometryTransformer.cxx:572
 AliMUONGeometryTransformer.cxx:573
 AliMUONGeometryTransformer.cxx:574
 AliMUONGeometryTransformer.cxx:575
 AliMUONGeometryTransformer.cxx:576
 AliMUONGeometryTransformer.cxx:577
 AliMUONGeometryTransformer.cxx:578
 AliMUONGeometryTransformer.cxx:579
 AliMUONGeometryTransformer.cxx:580
 AliMUONGeometryTransformer.cxx:581
 AliMUONGeometryTransformer.cxx:582
 AliMUONGeometryTransformer.cxx:583
 AliMUONGeometryTransformer.cxx:584
 AliMUONGeometryTransformer.cxx:585
 AliMUONGeometryTransformer.cxx:586
 AliMUONGeometryTransformer.cxx:587
 AliMUONGeometryTransformer.cxx:588
 AliMUONGeometryTransformer.cxx:589
 AliMUONGeometryTransformer.cxx:590
 AliMUONGeometryTransformer.cxx:591
 AliMUONGeometryTransformer.cxx:592
 AliMUONGeometryTransformer.cxx:593
 AliMUONGeometryTransformer.cxx:594
 AliMUONGeometryTransformer.cxx:595
 AliMUONGeometryTransformer.cxx:596
 AliMUONGeometryTransformer.cxx:597
 AliMUONGeometryTransformer.cxx:598
 AliMUONGeometryTransformer.cxx:599
 AliMUONGeometryTransformer.cxx:600
 AliMUONGeometryTransformer.cxx:601
 AliMUONGeometryTransformer.cxx:602
 AliMUONGeometryTransformer.cxx:603
 AliMUONGeometryTransformer.cxx:604
 AliMUONGeometryTransformer.cxx:605
 AliMUONGeometryTransformer.cxx:606
 AliMUONGeometryTransformer.cxx:607
 AliMUONGeometryTransformer.cxx:608
 AliMUONGeometryTransformer.cxx:609
 AliMUONGeometryTransformer.cxx:610
 AliMUONGeometryTransformer.cxx:611
 AliMUONGeometryTransformer.cxx:612
 AliMUONGeometryTransformer.cxx:613
 AliMUONGeometryTransformer.cxx:614
 AliMUONGeometryTransformer.cxx:615
 AliMUONGeometryTransformer.cxx:616
 AliMUONGeometryTransformer.cxx:617
 AliMUONGeometryTransformer.cxx:618
 AliMUONGeometryTransformer.cxx:619
 AliMUONGeometryTransformer.cxx:620
 AliMUONGeometryTransformer.cxx:621
 AliMUONGeometryTransformer.cxx:622
 AliMUONGeometryTransformer.cxx:623
 AliMUONGeometryTransformer.cxx:624
 AliMUONGeometryTransformer.cxx:625
 AliMUONGeometryTransformer.cxx:626
 AliMUONGeometryTransformer.cxx:627
 AliMUONGeometryTransformer.cxx:628
 AliMUONGeometryTransformer.cxx:629
 AliMUONGeometryTransformer.cxx:630
 AliMUONGeometryTransformer.cxx:631
 AliMUONGeometryTransformer.cxx:632
 AliMUONGeometryTransformer.cxx:633
 AliMUONGeometryTransformer.cxx:634
 AliMUONGeometryTransformer.cxx:635
 AliMUONGeometryTransformer.cxx:636
 AliMUONGeometryTransformer.cxx:637
 AliMUONGeometryTransformer.cxx:638
 AliMUONGeometryTransformer.cxx:639
 AliMUONGeometryTransformer.cxx:640
 AliMUONGeometryTransformer.cxx:641
 AliMUONGeometryTransformer.cxx:642
 AliMUONGeometryTransformer.cxx:643
 AliMUONGeometryTransformer.cxx:644
 AliMUONGeometryTransformer.cxx:645
 AliMUONGeometryTransformer.cxx:646
 AliMUONGeometryTransformer.cxx:647
 AliMUONGeometryTransformer.cxx:648
 AliMUONGeometryTransformer.cxx:649
 AliMUONGeometryTransformer.cxx:650
 AliMUONGeometryTransformer.cxx:651
 AliMUONGeometryTransformer.cxx:652
 AliMUONGeometryTransformer.cxx:653
 AliMUONGeometryTransformer.cxx:654
 AliMUONGeometryTransformer.cxx:655
 AliMUONGeometryTransformer.cxx:656
 AliMUONGeometryTransformer.cxx:657
 AliMUONGeometryTransformer.cxx:658
 AliMUONGeometryTransformer.cxx:659
 AliMUONGeometryTransformer.cxx:660
 AliMUONGeometryTransformer.cxx:661
 AliMUONGeometryTransformer.cxx:662
 AliMUONGeometryTransformer.cxx:663
 AliMUONGeometryTransformer.cxx:664
 AliMUONGeometryTransformer.cxx:665
 AliMUONGeometryTransformer.cxx:666
 AliMUONGeometryTransformer.cxx:667
 AliMUONGeometryTransformer.cxx:668
 AliMUONGeometryTransformer.cxx:669
 AliMUONGeometryTransformer.cxx:670
 AliMUONGeometryTransformer.cxx:671
 AliMUONGeometryTransformer.cxx:672
 AliMUONGeometryTransformer.cxx:673
 AliMUONGeometryTransformer.cxx:674
 AliMUONGeometryTransformer.cxx:675
 AliMUONGeometryTransformer.cxx:676
 AliMUONGeometryTransformer.cxx:677
 AliMUONGeometryTransformer.cxx:678
 AliMUONGeometryTransformer.cxx:679
 AliMUONGeometryTransformer.cxx:680
 AliMUONGeometryTransformer.cxx:681
 AliMUONGeometryTransformer.cxx:682
 AliMUONGeometryTransformer.cxx:683
 AliMUONGeometryTransformer.cxx:684
 AliMUONGeometryTransformer.cxx:685
 AliMUONGeometryTransformer.cxx:686
 AliMUONGeometryTransformer.cxx:687
 AliMUONGeometryTransformer.cxx:688
 AliMUONGeometryTransformer.cxx:689
 AliMUONGeometryTransformer.cxx:690
 AliMUONGeometryTransformer.cxx:691
 AliMUONGeometryTransformer.cxx:692
 AliMUONGeometryTransformer.cxx:693
 AliMUONGeometryTransformer.cxx:694
 AliMUONGeometryTransformer.cxx:695
 AliMUONGeometryTransformer.cxx:696
 AliMUONGeometryTransformer.cxx:697
 AliMUONGeometryTransformer.cxx:698
 AliMUONGeometryTransformer.cxx:699
 AliMUONGeometryTransformer.cxx:700
 AliMUONGeometryTransformer.cxx:701
 AliMUONGeometryTransformer.cxx:702
 AliMUONGeometryTransformer.cxx:703
 AliMUONGeometryTransformer.cxx:704
 AliMUONGeometryTransformer.cxx:705
 AliMUONGeometryTransformer.cxx:706
 AliMUONGeometryTransformer.cxx:707
 AliMUONGeometryTransformer.cxx:708
 AliMUONGeometryTransformer.cxx:709
 AliMUONGeometryTransformer.cxx:710
 AliMUONGeometryTransformer.cxx:711
 AliMUONGeometryTransformer.cxx:712
 AliMUONGeometryTransformer.cxx:713
 AliMUONGeometryTransformer.cxx:714
 AliMUONGeometryTransformer.cxx:715
 AliMUONGeometryTransformer.cxx:716
 AliMUONGeometryTransformer.cxx:717
 AliMUONGeometryTransformer.cxx:718
 AliMUONGeometryTransformer.cxx:719
 AliMUONGeometryTransformer.cxx:720
 AliMUONGeometryTransformer.cxx:721
 AliMUONGeometryTransformer.cxx:722
 AliMUONGeometryTransformer.cxx:723
 AliMUONGeometryTransformer.cxx:724
 AliMUONGeometryTransformer.cxx:725
 AliMUONGeometryTransformer.cxx:726
 AliMUONGeometryTransformer.cxx:727
 AliMUONGeometryTransformer.cxx:728
 AliMUONGeometryTransformer.cxx:729
 AliMUONGeometryTransformer.cxx:730
 AliMUONGeometryTransformer.cxx:731
 AliMUONGeometryTransformer.cxx:732
 AliMUONGeometryTransformer.cxx:733
 AliMUONGeometryTransformer.cxx:734
 AliMUONGeometryTransformer.cxx:735
 AliMUONGeometryTransformer.cxx:736
 AliMUONGeometryTransformer.cxx:737
 AliMUONGeometryTransformer.cxx:738
 AliMUONGeometryTransformer.cxx:739
 AliMUONGeometryTransformer.cxx:740
 AliMUONGeometryTransformer.cxx:741
 AliMUONGeometryTransformer.cxx:742
 AliMUONGeometryTransformer.cxx:743
 AliMUONGeometryTransformer.cxx:744
 AliMUONGeometryTransformer.cxx:745
 AliMUONGeometryTransformer.cxx:746
 AliMUONGeometryTransformer.cxx:747
 AliMUONGeometryTransformer.cxx:748
 AliMUONGeometryTransformer.cxx:749
 AliMUONGeometryTransformer.cxx:750
 AliMUONGeometryTransformer.cxx:751
 AliMUONGeometryTransformer.cxx:752
 AliMUONGeometryTransformer.cxx:753
 AliMUONGeometryTransformer.cxx:754
 AliMUONGeometryTransformer.cxx:755
 AliMUONGeometryTransformer.cxx:756
 AliMUONGeometryTransformer.cxx:757
 AliMUONGeometryTransformer.cxx:758
 AliMUONGeometryTransformer.cxx:759
 AliMUONGeometryTransformer.cxx:760
 AliMUONGeometryTransformer.cxx:761
 AliMUONGeometryTransformer.cxx:762
 AliMUONGeometryTransformer.cxx:763
 AliMUONGeometryTransformer.cxx:764
 AliMUONGeometryTransformer.cxx:765
 AliMUONGeometryTransformer.cxx:766
 AliMUONGeometryTransformer.cxx:767
 AliMUONGeometryTransformer.cxx:768
 AliMUONGeometryTransformer.cxx:769
 AliMUONGeometryTransformer.cxx:770
 AliMUONGeometryTransformer.cxx:771
 AliMUONGeometryTransformer.cxx:772
 AliMUONGeometryTransformer.cxx:773
 AliMUONGeometryTransformer.cxx:774
 AliMUONGeometryTransformer.cxx:775
 AliMUONGeometryTransformer.cxx:776
 AliMUONGeometryTransformer.cxx:777
 AliMUONGeometryTransformer.cxx:778
 AliMUONGeometryTransformer.cxx:779
 AliMUONGeometryTransformer.cxx:780
 AliMUONGeometryTransformer.cxx:781
 AliMUONGeometryTransformer.cxx:782
 AliMUONGeometryTransformer.cxx:783
 AliMUONGeometryTransformer.cxx:784
 AliMUONGeometryTransformer.cxx:785
 AliMUONGeometryTransformer.cxx:786
 AliMUONGeometryTransformer.cxx:787
 AliMUONGeometryTransformer.cxx:788
 AliMUONGeometryTransformer.cxx:789
 AliMUONGeometryTransformer.cxx:790
 AliMUONGeometryTransformer.cxx:791
 AliMUONGeometryTransformer.cxx:792
 AliMUONGeometryTransformer.cxx:793
 AliMUONGeometryTransformer.cxx:794
 AliMUONGeometryTransformer.cxx:795
 AliMUONGeometryTransformer.cxx:796
 AliMUONGeometryTransformer.cxx:797
 AliMUONGeometryTransformer.cxx:798
 AliMUONGeometryTransformer.cxx:799
 AliMUONGeometryTransformer.cxx:800
 AliMUONGeometryTransformer.cxx:801
 AliMUONGeometryTransformer.cxx:802
 AliMUONGeometryTransformer.cxx:803
 AliMUONGeometryTransformer.cxx:804
 AliMUONGeometryTransformer.cxx:805
 AliMUONGeometryTransformer.cxx:806
 AliMUONGeometryTransformer.cxx:807
 AliMUONGeometryTransformer.cxx:808
 AliMUONGeometryTransformer.cxx:809
 AliMUONGeometryTransformer.cxx:810
 AliMUONGeometryTransformer.cxx:811
 AliMUONGeometryTransformer.cxx:812
 AliMUONGeometryTransformer.cxx:813
 AliMUONGeometryTransformer.cxx:814
 AliMUONGeometryTransformer.cxx:815
 AliMUONGeometryTransformer.cxx:816
 AliMUONGeometryTransformer.cxx:817
 AliMUONGeometryTransformer.cxx:818
 AliMUONGeometryTransformer.cxx:819
 AliMUONGeometryTransformer.cxx:820
 AliMUONGeometryTransformer.cxx:821
 AliMUONGeometryTransformer.cxx:822
 AliMUONGeometryTransformer.cxx:823
 AliMUONGeometryTransformer.cxx:824
 AliMUONGeometryTransformer.cxx:825
 AliMUONGeometryTransformer.cxx:826
 AliMUONGeometryTransformer.cxx:827
 AliMUONGeometryTransformer.cxx:828
 AliMUONGeometryTransformer.cxx:829
 AliMUONGeometryTransformer.cxx:830
 AliMUONGeometryTransformer.cxx:831
 AliMUONGeometryTransformer.cxx:832
 AliMUONGeometryTransformer.cxx:833
 AliMUONGeometryTransformer.cxx:834
 AliMUONGeometryTransformer.cxx:835
 AliMUONGeometryTransformer.cxx:836
 AliMUONGeometryTransformer.cxx:837
 AliMUONGeometryTransformer.cxx:838
 AliMUONGeometryTransformer.cxx:839
 AliMUONGeometryTransformer.cxx:840
 AliMUONGeometryTransformer.cxx:841
 AliMUONGeometryTransformer.cxx:842
 AliMUONGeometryTransformer.cxx:843
 AliMUONGeometryTransformer.cxx:844
 AliMUONGeometryTransformer.cxx:845
 AliMUONGeometryTransformer.cxx:846
 AliMUONGeometryTransformer.cxx:847
 AliMUONGeometryTransformer.cxx:848
 AliMUONGeometryTransformer.cxx:849
 AliMUONGeometryTransformer.cxx:850
 AliMUONGeometryTransformer.cxx:851
 AliMUONGeometryTransformer.cxx:852
 AliMUONGeometryTransformer.cxx:853
 AliMUONGeometryTransformer.cxx:854
 AliMUONGeometryTransformer.cxx:855
 AliMUONGeometryTransformer.cxx:856
 AliMUONGeometryTransformer.cxx:857
 AliMUONGeometryTransformer.cxx:858
 AliMUONGeometryTransformer.cxx:859
 AliMUONGeometryTransformer.cxx:860
 AliMUONGeometryTransformer.cxx:861
 AliMUONGeometryTransformer.cxx:862
 AliMUONGeometryTransformer.cxx:863
 AliMUONGeometryTransformer.cxx:864
 AliMUONGeometryTransformer.cxx:865
 AliMUONGeometryTransformer.cxx:866
 AliMUONGeometryTransformer.cxx:867
 AliMUONGeometryTransformer.cxx:868
 AliMUONGeometryTransformer.cxx:869
 AliMUONGeometryTransformer.cxx:870
 AliMUONGeometryTransformer.cxx:871
 AliMUONGeometryTransformer.cxx:872
 AliMUONGeometryTransformer.cxx:873
 AliMUONGeometryTransformer.cxx:874
 AliMUONGeometryTransformer.cxx:875
 AliMUONGeometryTransformer.cxx:876
 AliMUONGeometryTransformer.cxx:877
 AliMUONGeometryTransformer.cxx:878
 AliMUONGeometryTransformer.cxx:879
 AliMUONGeometryTransformer.cxx:880
 AliMUONGeometryTransformer.cxx:881
 AliMUONGeometryTransformer.cxx:882
 AliMUONGeometryTransformer.cxx:883
 AliMUONGeometryTransformer.cxx:884
 AliMUONGeometryTransformer.cxx:885
 AliMUONGeometryTransformer.cxx:886
 AliMUONGeometryTransformer.cxx:887
 AliMUONGeometryTransformer.cxx:888
 AliMUONGeometryTransformer.cxx:889
 AliMUONGeometryTransformer.cxx:890
 AliMUONGeometryTransformer.cxx:891
 AliMUONGeometryTransformer.cxx:892
 AliMUONGeometryTransformer.cxx:893
 AliMUONGeometryTransformer.cxx:894
 AliMUONGeometryTransformer.cxx:895
 AliMUONGeometryTransformer.cxx:896
 AliMUONGeometryTransformer.cxx:897
 AliMUONGeometryTransformer.cxx:898
 AliMUONGeometryTransformer.cxx:899
 AliMUONGeometryTransformer.cxx:900
 AliMUONGeometryTransformer.cxx:901
 AliMUONGeometryTransformer.cxx:902
 AliMUONGeometryTransformer.cxx:903
 AliMUONGeometryTransformer.cxx:904
 AliMUONGeometryTransformer.cxx:905
 AliMUONGeometryTransformer.cxx:906
 AliMUONGeometryTransformer.cxx:907
 AliMUONGeometryTransformer.cxx:908
 AliMUONGeometryTransformer.cxx:909
 AliMUONGeometryTransformer.cxx:910
 AliMUONGeometryTransformer.cxx:911
 AliMUONGeometryTransformer.cxx:912
 AliMUONGeometryTransformer.cxx:913
 AliMUONGeometryTransformer.cxx:914
 AliMUONGeometryTransformer.cxx:915
 AliMUONGeometryTransformer.cxx:916
 AliMUONGeometryTransformer.cxx:917
 AliMUONGeometryTransformer.cxx:918
 AliMUONGeometryTransformer.cxx:919
 AliMUONGeometryTransformer.cxx:920
 AliMUONGeometryTransformer.cxx:921
 AliMUONGeometryTransformer.cxx:922
 AliMUONGeometryTransformer.cxx:923
 AliMUONGeometryTransformer.cxx:924
 AliMUONGeometryTransformer.cxx:925
 AliMUONGeometryTransformer.cxx:926
 AliMUONGeometryTransformer.cxx:927
 AliMUONGeometryTransformer.cxx:928
 AliMUONGeometryTransformer.cxx:929
 AliMUONGeometryTransformer.cxx:930
 AliMUONGeometryTransformer.cxx:931
 AliMUONGeometryTransformer.cxx:932
 AliMUONGeometryTransformer.cxx:933
 AliMUONGeometryTransformer.cxx:934
 AliMUONGeometryTransformer.cxx:935
 AliMUONGeometryTransformer.cxx:936
 AliMUONGeometryTransformer.cxx:937
 AliMUONGeometryTransformer.cxx:938
 AliMUONGeometryTransformer.cxx:939
 AliMUONGeometryTransformer.cxx:940
 AliMUONGeometryTransformer.cxx:941
 AliMUONGeometryTransformer.cxx:942
 AliMUONGeometryTransformer.cxx:943
 AliMUONGeometryTransformer.cxx:944
 AliMUONGeometryTransformer.cxx:945
 AliMUONGeometryTransformer.cxx:946
 AliMUONGeometryTransformer.cxx:947
 AliMUONGeometryTransformer.cxx:948
 AliMUONGeometryTransformer.cxx:949
 AliMUONGeometryTransformer.cxx:950
 AliMUONGeometryTransformer.cxx:951
 AliMUONGeometryTransformer.cxx:952
 AliMUONGeometryTransformer.cxx:953
 AliMUONGeometryTransformer.cxx:954
 AliMUONGeometryTransformer.cxx:955
 AliMUONGeometryTransformer.cxx:956
 AliMUONGeometryTransformer.cxx:957
 AliMUONGeometryTransformer.cxx:958
 AliMUONGeometryTransformer.cxx:959
 AliMUONGeometryTransformer.cxx:960
 AliMUONGeometryTransformer.cxx:961
 AliMUONGeometryTransformer.cxx:962
 AliMUONGeometryTransformer.cxx:963
 AliMUONGeometryTransformer.cxx:964
 AliMUONGeometryTransformer.cxx:965
 AliMUONGeometryTransformer.cxx:966
 AliMUONGeometryTransformer.cxx:967
 AliMUONGeometryTransformer.cxx:968
 AliMUONGeometryTransformer.cxx:969
 AliMUONGeometryTransformer.cxx:970
 AliMUONGeometryTransformer.cxx:971
 AliMUONGeometryTransformer.cxx:972
 AliMUONGeometryTransformer.cxx:973
 AliMUONGeometryTransformer.cxx:974
 AliMUONGeometryTransformer.cxx:975
 AliMUONGeometryTransformer.cxx:976
 AliMUONGeometryTransformer.cxx:977
 AliMUONGeometryTransformer.cxx:978
 AliMUONGeometryTransformer.cxx:979
 AliMUONGeometryTransformer.cxx:980
 AliMUONGeometryTransformer.cxx:981
 AliMUONGeometryTransformer.cxx:982
 AliMUONGeometryTransformer.cxx:983
 AliMUONGeometryTransformer.cxx:984
 AliMUONGeometryTransformer.cxx:985
 AliMUONGeometryTransformer.cxx:986
 AliMUONGeometryTransformer.cxx:987
 AliMUONGeometryTransformer.cxx:988
 AliMUONGeometryTransformer.cxx:989
 AliMUONGeometryTransformer.cxx:990
 AliMUONGeometryTransformer.cxx:991
 AliMUONGeometryTransformer.cxx:992
 AliMUONGeometryTransformer.cxx:993
 AliMUONGeometryTransformer.cxx:994
 AliMUONGeometryTransformer.cxx:995
 AliMUONGeometryTransformer.cxx:996
 AliMUONGeometryTransformer.cxx:997
 AliMUONGeometryTransformer.cxx:998
 AliMUONGeometryTransformer.cxx:999
 AliMUONGeometryTransformer.cxx:1000
 AliMUONGeometryTransformer.cxx:1001
 AliMUONGeometryTransformer.cxx:1002
 AliMUONGeometryTransformer.cxx:1003
 AliMUONGeometryTransformer.cxx:1004
 AliMUONGeometryTransformer.cxx:1005
 AliMUONGeometryTransformer.cxx:1006
 AliMUONGeometryTransformer.cxx:1007
 AliMUONGeometryTransformer.cxx:1008
 AliMUONGeometryTransformer.cxx:1009
 AliMUONGeometryTransformer.cxx:1010
 AliMUONGeometryTransformer.cxx:1011
 AliMUONGeometryTransformer.cxx:1012
 AliMUONGeometryTransformer.cxx:1013
 AliMUONGeometryTransformer.cxx:1014
 AliMUONGeometryTransformer.cxx:1015
 AliMUONGeometryTransformer.cxx:1016
 AliMUONGeometryTransformer.cxx:1017
 AliMUONGeometryTransformer.cxx:1018
 AliMUONGeometryTransformer.cxx:1019
 AliMUONGeometryTransformer.cxx:1020
 AliMUONGeometryTransformer.cxx:1021
 AliMUONGeometryTransformer.cxx:1022
 AliMUONGeometryTransformer.cxx:1023
 AliMUONGeometryTransformer.cxx:1024
 AliMUONGeometryTransformer.cxx:1025
 AliMUONGeometryTransformer.cxx:1026
 AliMUONGeometryTransformer.cxx:1027
 AliMUONGeometryTransformer.cxx:1028
 AliMUONGeometryTransformer.cxx:1029
 AliMUONGeometryTransformer.cxx:1030
 AliMUONGeometryTransformer.cxx:1031
 AliMUONGeometryTransformer.cxx:1032
 AliMUONGeometryTransformer.cxx:1033
 AliMUONGeometryTransformer.cxx:1034
 AliMUONGeometryTransformer.cxx:1035
 AliMUONGeometryTransformer.cxx:1036
 AliMUONGeometryTransformer.cxx:1037
 AliMUONGeometryTransformer.cxx:1038
 AliMUONGeometryTransformer.cxx:1039
 AliMUONGeometryTransformer.cxx:1040
 AliMUONGeometryTransformer.cxx:1041
 AliMUONGeometryTransformer.cxx:1042
 AliMUONGeometryTransformer.cxx:1043
 AliMUONGeometryTransformer.cxx:1044
 AliMUONGeometryTransformer.cxx:1045
 AliMUONGeometryTransformer.cxx:1046
 AliMUONGeometryTransformer.cxx:1047
 AliMUONGeometryTransformer.cxx:1048
 AliMUONGeometryTransformer.cxx:1049