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

// $Id$

//-----------------------------------------------------------------------------
/// \class AliMUONMCDataInterface
///
/// Easy to use MC data accessor
///
/// \author Laurent Aphecetche, Subatech
///
// Moved parts of old AliMUONDataInterface interface to AliMUONMCDataInterface
//  Artur Szostak <artursz@iafrica.com> (University of Cape Town)
//-----------------------------------------------------------------------------

#include "AliMUONMCDataInterface.h"
#include "AliMUONVDigitStore.h"
#include "AliMUONVHitStore.h"
#include "AliMUONVTriggerStore.h"
#include "AliMUONHit.h"
#include "AliMUONVDigit.h"
#include "AliMUONLocalTrigger.h"
#include "AliMUONRegionalTrigger.h"
#include "AliMUONGlobalTrigger.h"

#include "AliMpEncodePair.h"
#include "AliMpDEManager.h"
#include "AliMpConstants.h"
#include "AliMpCDB.h"

#include "AliLog.h"
#include "AliLoader.h"
#include "AliRunLoader.h"
#include "AliHeader.h"
#include "AliStack.h"
#include "AliCDBManager.h"

#include <TTree.h>
#include <Riostream.h>
#include <TClonesArray.h>
#include <TList.h>
#include <TParticle.h>
#include <TIterator.h>
#include <cstdlib>
#include <cassert>

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

Int_t AliMUONMCDataInterface::fgInstanceCounter(0);

//_____________________________________________________________________________
AliMUONMCDataInterface::AliMUONMCDataInterface(const char* filename) :
TObject(),
fLoader(0x0),
fHitStore(0x0),
fSDigitStore(0x0),
fDigitStore(0x0),
fTriggerStore(0x0),
fTrackRefs(0x0),
fCurrentEvent(-1),
fIsValid(kFALSE),
fCurrentIteratorType(kNoIterator),
fCurrentIndex(-1),
fDataX(-1),
fDataY(-1),
fIterator(0x0)
{
  /// ctor
  
  ++fgInstanceCounter;
  
  if ( AliCDBManager::Instance() != NULL &&
       AliCDBManager::Instance()->GetDefaultStorage() == NULL ) {
      AliFatal("CDB default storage not defined.");
  }
  
  Open(filename);

  // Load mapping
  if ( ! AliMpCDB::LoadMpSegmentation() ) {
    AliFatal("Could not access mapping from OCDB !");
  }
}

//_____________________________________________________________________________
AliMUONMCDataInterface::~AliMUONMCDataInterface()
{
  /// dtor
  --fgInstanceCounter;
}

//_____________________________________________________________________________
AliMUONVHitStore* 
AliMUONMCDataInterface::HitStore(Int_t event, Int_t track)
{
  /// Return the hitStore for a given track of one event
  /// Return 0x0 if event and/or track not found
  /// Returned pointer should not be deleted
  ///
  /// \note If a previous store has been retrieved by one of the methods of
  /// this class, but for a different event number, then those stores will
  /// be deleted and no longer valid.
  /// If you require access to the data for the earlier retrieved store,
  /// but for different events, then you should deep copy / clone the object.
  
  if (not IsValid()) return 0x0;

  if (event == fCurrentEvent)
  {
    if (track == fDataX and fHitStore != 0x0)  // using fDataX as track number.
      return fHitStore;
  }
  else
  {
    ResetStores();
    if ( not LoadEvent(event) ) return 0x0;
  }
  
  fLoader->LoadHits();
  
  TTree* treeH = fLoader->TreeH();
  if (treeH == 0x0)
  {
    AliError("Could not get treeH");
    return 0x0;
  }
  
  fHitStore = AliMUONVHitStore::Create(*treeH);
  AliDebug(1,"Creating hitStore from treeH");
  if ( fHitStore != 0x0 )
  {
    fHitStore->Connect(*treeH);
    if ( treeH->GetEvent(track) == 0 ) 
    {
      AliError(Form("Could not read track %d",track));
      fHitStore->Clear();
      return 0x0;
    }
    fDataX = track; // using fDataX as track number.
  }
  
  fLoader->UnloadHits();

  return fHitStore;
}

//_____________________________________________________________________________
AliMUONVDigitStore*
AliMUONMCDataInterface::SDigitStore(Int_t event)
{
  /// Return the SDigit store for a given event.
  /// Return 0 if event not found
  /// Returned pointer should not be deleted
  ///
  /// \note If a previous store has been retrieved by one of the methods of
  /// this class, but for a different event number, then those stores will
  /// be deleted and no longer valid.
  /// If you require access to the data for the earlier retrieved store,
  /// but for different events, then you should deep copy / clone the object.
  
  if (not IsValid()) return 0x0;
  
  if (event == fCurrentEvent)
  {
    if (fSDigitStore != 0x0)
      return fSDigitStore;
  }
  else
  {
    ResetStores();
    if ( not LoadEvent(event) ) return 0x0;
  }
  
  fLoader->LoadSDigits();
  
  TTree* treeS = fLoader->TreeS();
  if (treeS == 0x0)
  {
    AliError("Could not get treeS");
    return 0x0;
  }
  
  fSDigitStore = AliMUONVDigitStore::Create(*treeS);
  if ( fSDigitStore != 0x0 )
  {
    fSDigitStore->Clear();
    fSDigitStore->Connect(*treeS);
    treeS->GetEvent(0);
  }
  
  fLoader->UnloadSDigits();
  
  return fSDigitStore;
}

//_____________________________________________________________________________
AliMUONVDigitStore*
AliMUONMCDataInterface::DigitStore(Int_t event)
{
  /// Return a pointer to the digitStore for a given event (or 0 if not found)
  /// Returned pointer should not be deleted
  ///
  /// \note If a previous store has been retrieved by one of the methods of
  /// this class, but for a different event number, then those stores will
  /// be deleted and no longer valid.
  /// If you require access to the data for the earlier retrieved store,
  /// but for different events, then you should deep copy / clone the object.
  
  if (not IsValid()) return 0x0;
  
  if (event == fCurrentEvent)
  {
    if (fDigitStore != 0x0)
      return fDigitStore;
  }
  else
  {
    ResetStores();
    if ( not LoadEvent(event) ) return 0x0;
  }
  
  fLoader->LoadDigits();
  
  TTree* treeD = fLoader->TreeD();
  if (treeD == 0x0)
  {
    AliError("Could not get treeD");
    return 0x0;
  }
  
  fDigitStore = AliMUONVDigitStore::Create(*treeD);
  if ( fDigitStore != 0x0 ) 
  {
    fDigitStore->Clear();
    fDigitStore->Connect(*treeD);
    treeD->GetEvent(0);
  }
  
  fLoader->UnloadDigits();
  
  return fDigitStore;
}

//_____________________________________________________________________________
AliStack*
AliMUONMCDataInterface::Stack(Int_t event)
{
  /// Get the Stack (list of generated particles) for one event
  /// Returned pointer should not be deleted
  ///
  /// \note If a previous store has been retrieved by one of the methods of
  /// this class, but for a different event number, then those stores will
  /// be deleted and no longer valid.
  /// If you require access to the data for the earlier retrieved store,
  /// but for different events, then you should deep copy / clone the object.
  
  if ( not IsValid() ) return 0x0;

  if (event != fCurrentEvent)
  {
    ResetStores();
    if ( not LoadEvent(event) ) return 0x0;
  }
  
  fLoader->GetRunLoader()->LoadKinematics();
  
  return fLoader->GetRunLoader()->Stack();
}

//_____________________________________________________________________________
TClonesArray*
AliMUONMCDataInterface::TrackRefs(Int_t event, Int_t track)
{
  /// Get the track references for a given (generated) track of one event
  /// Returned pointer should not be deleted
  ///
  /// \note If a previous store has been retrieved by one of the methods of
  /// this class, but for a different event number, then those stores will
  /// be deleted and no longer valid.
  /// If you require access to the data for the earlier retrieved store,
  /// but for different events, then you should deep copy / clone the object.
  
  if ( not IsValid() ) return 0x0;
  
  if (event == fCurrentEvent)
  {
    if (track == fDataX and fTrackRefs != 0x0)  // using fDataX as track number.
      return fTrackRefs;
  }
  else
  {
    ResetStores();
    if ( not LoadEvent(event) ) return 0x0;
  }
  
  fLoader->GetRunLoader()->LoadTrackRefs();
  
  TTree* treeTR = fLoader->GetRunLoader()->TreeTR();
  
  if ( fTrackRefs != 0x0 ) fTrackRefs->Clear("C");
  
  if (treeTR != 0x0)
  {
    if ( treeTR->GetEvent(track) > 0 ) 
    {
      TBranch* branch = treeTR->GetBranch("TrackReferences");
      branch->SetAddress(&fTrackRefs);
      branch->GetEvent(track);
      fDataX = track;  // using fDataX as track number.
    }
  }
  else
  {
    AliError("Could not get TreeTR");
  }
  
  fLoader->GetRunLoader()->UnloadTrackRefs();
  
  return fTrackRefs;
}

//_____________________________________________________________________________
AliMUONVTriggerStore*
AliMUONMCDataInterface::TriggerStore(Int_t event)
{
  /// Return the triggerStore for a given event.
  /// Return 0x0 if event not found.
  /// Returned pointer should not be deleted.
  ///
  /// \note If a previous store has been retrieved by one of the methods of
  /// this class, but for a different event number, then those stores will
  /// be deleted and no longer valid.
  /// If you require access to the data for the earlier retrieved store,
  /// but for different events, then you should deep copy / clone the object.
  
  if (not IsValid()) return 0x0;
  
  if (event == fCurrentEvent)
  {
    if (fTriggerStore != 0x0)
      return fTriggerStore;
  }
  else
  {
    ResetStores();
    if ( not LoadEvent(event) ) return 0x0;
  }
  
  fLoader->LoadDigits();
  
  TTree* treeD = fLoader->TreeD();
  if ( treeD == 0x0 ) 
  {
    AliError("Could not get treeD");
    return 0x0;
  }
  
  fTriggerStore = AliMUONVTriggerStore::Create(*treeD);
  if ( fTriggerStore != 0x0 )
  {
    fTriggerStore->Clear();
    fTriggerStore->Connect(*treeD);
    treeD->GetEvent(0);
  }
  
  fLoader->UnloadDigits();
  
  return fTriggerStore;
}

//_____________________________________________________________________________
void
AliMUONMCDataInterface::DumpDigits(Int_t event, Bool_t sorted)
{
  /// Dump the digits for a given event, sorted if requested.
  DigitStore(event);
  
  if ( fDigitStore != 0x0 ) 
  {
    if ( sorted ) 
    {
      DumpSorted(*fDigitStore);
    }
    else
    {
      fDigitStore->Print();
    }  
  }
}

//_____________________________________________________________________________
void
AliMUONMCDataInterface::DumpHits(Int_t event)
{
  /// Dump all the hits for one event
  
  Int_t ntracks = NumberOfTracks(event);
  
  for ( Int_t i = 0; i < ntracks; ++i ) 
  {
    cout << ">> Track " << i << endl;
    HitStore(event,i);
    if ( fHitStore )
    {
      fHitStore->Print("","full");
    }
  }
}

//_____________________________________________________________________________
void
AliMUONMCDataInterface::DumpKine(Int_t event)
{
  /// Dump all generated particles for one event
  AliStack* stack = Stack(event);
  
  if ( stack != 0x0 ) 
  {
    Int_t nparticles = (Int_t) stack->GetNtrack();
  
    for (Int_t iparticle=0; iparticle<nparticles; ++iparticle) 
    {
      stack->Particle(iparticle)->Print("");  
    }
  }
  else
  {
    AliError("Could not get stack");
  }
}

//_____________________________________________________________________________
void
AliMUONMCDataInterface::DumpSDigits(Int_t event, Bool_t sorted)
{
  /// Dump the SDigits for a given event, sorted if requested
  SDigitStore(event);
  
  if ( fSDigitStore != 0x0 ) 
  {
    if ( sorted ) 
    {
      DumpSorted(*fSDigitStore);
    }
    else
    {
      fSDigitStore->Print();
    }
  }
}

//_____________________________________________________________________________
void
AliMUONMCDataInterface::DumpSorted(const AliMUONVStore& store) const
{
  /// Dump the given store in sorted order
  
  TIter next(store.CreateIterator());
  TObject* object;
  TList list;
  list.SetOwner(kFALSE);
  
  while ( ( object = next() ) )
  {
    list.Add(object);
  }
  
  list.Sort();
  
  list.Print();
}

//_____________________________________________________________________________
void
AliMUONMCDataInterface::DumpTrackRefs(Int_t event)
{
  /// Dump track references for one event
  Int_t ntrackrefs = NumberOfTrackRefs(event);
  
  for ( Int_t i = 0; i < ntrackrefs; ++i ) 
  {
    TrackRefs(event,i);
    if ( fTrackRefs != 0x0 ) 
    {
      fTrackRefs->Print("","*");
    }
  }
}

//_____________________________________________________________________________
void
AliMUONMCDataInterface::DumpTrigger(Int_t event)
{
  /// Dump trigger for a given event (trigger is read from TreeD)
  
  TriggerStore(event);

  if ( fTriggerStore != 0x0 ) 
  {
    fTriggerStore->Print();
  }
}

//_____________________________________________________________________________
Bool_t
AliMUONMCDataInterface::LoadEvent(Int_t event)
{
  /// Load event if different from the current one.
  /// Returns kFALSE on error and kTRUE if the event was loaded.
  
  assert( IsValid() );
  
  AliDebug(1,Form("Loading event %d using runLoader %p",event,fLoader->GetRunLoader()));
  if (fLoader->GetRunLoader()->GetEvent(event) == 0)
  {
    fCurrentEvent = event;
    return kTRUE;
  }
  else
    return kFALSE;
}


//_____________________________________________________________________________
Int_t 
AliMUONMCDataInterface::NumberOfEvents() const
{
  /// Number of events in the file we're connected to
  if (not IsValid()) return -1;
  return fLoader->GetRunLoader()->GetNumberOfEvents();
}

//_____________________________________________________________________________
Int_t 
AliMUONMCDataInterface::NumberOfTracks(Int_t event)
{
  /// Number of tracks in the event
  if ( not IsValid()) return -1;
  
  if (event != fCurrentEvent)
  {
    ResetStores();
    if ( not LoadEvent(event) ) return -1;
  }
  
  fLoader->LoadHits();
  
  Int_t rv(-1);
  
  TTree* treeH = fLoader->TreeH();
  if (treeH != 0x0)
  {
    rv = static_cast<Int_t>(treeH->GetEntries());
  }
  else
  {
    AliError("Could not get TreeH");
  }

  fLoader->UnloadHits();
  
  return rv;
}

//_____________________________________________________________________________
Int_t 
AliMUONMCDataInterface::NumberOfTrackRefs(Int_t event)
{
  /// Number of track references in the event
  if ( not IsValid()) return -1;
  
  if (event != fCurrentEvent)
  {
    ResetStores();
    if ( not LoadEvent(event) ) return -1;
  }

  fLoader->GetRunLoader()->LoadTrackRefs();
  
  Int_t rv(-1);
  
  TTree* treeTR = fLoader->GetRunLoader()->TreeTR();
  if (treeTR != 0x0)
  {
    rv = static_cast<Int_t>(treeTR->GetEntries());
  }
  else
  {
    AliError("Could not get TreeTR");
  }
  
  fLoader->GetRunLoader()->UnloadTrackRefs();
  
  return rv;
}

//_____________________________________________________________________________
void
AliMUONMCDataInterface::Open(const char* filename)
{
  /// Connect to a given galice.root file
  
  ResetStores();
  
  fCurrentEvent=-1;

  if ( fLoader != 0x0 )
  {
    delete fLoader->GetRunLoader();
  }
  
  fLoader = 0x0;
  
  fIsValid = kTRUE;
  
  TString foldername(Form("%s-%d",ClassName(),fgInstanceCounter));
  
  while (AliRunLoader::GetRunLoader(foldername)) 
  {
    delete AliRunLoader::GetRunLoader(foldername);
  }
  
  AliRunLoader* runLoader = AliRunLoader::Open(filename,foldername);
  if (runLoader == 0x0)
  {
    AliError(Form("Cannot open file %s",filename));    
    fIsValid = kFALSE;
    return;
  }
  
  // Get run number and set it to CDB manager
  runLoader->LoadHeader();
  if ( ! runLoader->GetHeader() ) {
    AliError("Cannot load header.");    
    fIsValid = kFALSE;
  }
  else {
    Int_t runNumber = runLoader->GetHeader()->GetRun();
    AliCDBManager::Instance()->SetRun(runNumber);
  }  
  runLoader->UnloadHeader(); 

  fLoader = runLoader->GetDetectorLoader("MUON");
  if (fLoader == 0x0)
  {
    AliError("Cannot get AliMUONLoader");
    fIsValid = kFALSE;
  }
  
  if (not IsValid())
  {
    AliError(Form("Could not access %s filename. Object is unuseable",filename));
  }
}

//_____________________________________________________________________________
Bool_t AliMUONMCDataInterface::GetEvent(Int_t event)
{
/// Loads all simulated data for the given event.

  if (HitStore(event, 0) == 0x0) return kFALSE;
  if (SDigitStore(event) == 0x0) return kFALSE;
  if (DigitStore(event) == 0x0) return kFALSE;
  if (TriggerStore(event) == 0x0) return kFALSE;
  if (TrackRefs(event, 0) == 0x0) return kFALSE;
  return kTRUE;
}

//_____________________________________________________________________________
Int_t AliMUONMCDataInterface::NumberOfParticles()
{
/// Returns the total number of particles in the kinematics tree.

  AliStack* stack = Stack(fCurrentEvent);
  if ( stack == 0x0 ) return -1;
  return (Int_t) stack->GetNtrack();
}

//_____________________________________________________________________________
TParticle* AliMUONMCDataInterface::Particle(Int_t index)
{
/// Returns the index'th particle in the kinematics tree.
/// @param index  The index number of the particle in the range [0 ... N-1]
///               where N = NumberOfParticles()

  AliStack* stack = Stack(fCurrentEvent);
  if ( stack == 0x0 ) return 0x0;
  return static_cast<TParticle*>( stack->Particle(index) );
}

//_____________________________________________________________________________
Int_t AliMUONMCDataInterface::NumberOfTracks()
{
/// Returns the number of primary tracks (from primary particles) in the current event.

  return NumberOfTracks(fCurrentEvent);
}

//_____________________________________________________________________________
Int_t AliMUONMCDataInterface::NumberOfHits(Int_t track)
{
/// Returns the number of hits for a given primary track/particle.
/// @param track  The track number in the range [0 .. N-1]
///               where N = NumberOfTracks()

  TIterator* iter = GetIterator(kHitIterator, track);
  return CountObjects(iter);
}

//_____________________________________________________________________________
AliMUONHit* 
AliMUONMCDataInterface::Hit(Int_t track, Int_t index)
{
/// Returns a pointer to the index'th hit object.
/// @param track  The track number in the range [0 .. N-1]
///               where N = NumberOfTracks()
/// @param index  The index number of the hit in the range [0 ... M-1]
///               where M = NumberOfHits(track)

  TIterator* iter = GetIterator(kHitIterator, track);
  return static_cast<AliMUONHit*>( FetchObject(iter, index) );
}

//_____________________________________________________________________________
Int_t AliMUONMCDataInterface::NumberOfSDigits(Int_t detElemId)
{
/// Returns the number of summable digits to be found on a given detector element.
/// @param detElemId  The detector element ID number to search on.

  TIterator* iter = GetIterator(kSDigitIteratorByDetectorElement, detElemId);
  return CountObjects(iter);
}

//_____________________________________________________________________________
AliMUONVDigit* AliMUONMCDataInterface::SDigit(Int_t detElemId, Int_t index)
{
/// Returns the a pointer to the index'th summable digit on the specified detector element.
/// @param detElemId  The detector element ID number to search on.
/// @param index  The index number of the digit to fetch in the range [0 .. N-1],
///   where N = NumberOfDigits(detElemId)

  TIterator* iter = GetIterator(kSDigitIteratorByDetectorElement, detElemId);
  return static_cast<AliMUONVDigit*>( FetchObject(iter, index) );
}

//_____________________________________________________________________________
Int_t AliMUONMCDataInterface::NumberOfSDigits(Int_t chamber, Int_t cathode)
{
/// Returns the number of summable digits to be found on a specific chamber and cathode.
/// @param chamber  The chamber number in the range [0 .. 13].
/// @param cathode  The cathode in the range [0 .. 1], where 0 is the bending and
///   1 is the non-bending plane.

  TIterator* iter = GetIterator(kSDigitIteratorByChamberAndCathode, chamber, cathode);
  return CountObjects(iter);
}

//_____________________________________________________________________________
AliMUONVDigit* AliMUONMCDataInterface::SDigit(Int_t chamber, Int_t cathode, Int_t index)
{
/// Returns the a pointer to the index'th summable digit on the specified chamber and cathode.
/// @param chamber  The chamber number in the range [0 .. 13].
/// @param cathode  The cathode in the range [0 .. 1], where 0 is the bending and
///   1 is the non-bending plane.
/// @param index  The index number of the digit to fetch in the range [0 .. N-1],
///   where N = NumberOfDigits(chamber, cathode)

  TIterator* iter = GetIterator(kSDigitIteratorByChamberAndCathode, chamber, cathode);
  return static_cast<AliMUONVDigit*>( FetchObject(iter, index) );
}

//_____________________________________________________________________________
Int_t AliMUONMCDataInterface::NumberOfDigits(Int_t detElemId)
{
/// Returns the number of simulated digits to be found on a given detector element.
/// @param detElemId  The detector element ID number to search on.

  TIterator* iter = GetIterator(kDigitIteratorByDetectorElement, detElemId);
  return CountObjects(iter);
}

//_____________________________________________________________________________
AliMUONVDigit* AliMUONMCDataInterface::Digit(Int_t detElemId, Int_t index)
{
/// Returns the a pointer to the index'th simulated digit on the specified detector element.
/// @param detElemId  The detector element ID number to search on.
/// @param index  The index number of the digit to fetch in the range [0 .. N-1],
///   where N = NumberOfDigits(detElemId)

  TIterator* iter = GetIterator(kDigitIteratorByDetectorElement, detElemId);
  return static_cast<AliMUONVDigit*>( FetchObject(iter, index) );
}

//_____________________________________________________________________________
Int_t AliMUONMCDataInterface::NumberOfDigits(Int_t chamber, Int_t cathode)
{
/// Returns the number of simulated digits to be found on a specific chamber and cathode.
/// @param chamber  The chamber number in the range [0 .. 13].
/// @param cathode  The cathode in the range [0 .. 1], where 0 is the bending and
///   1 is the non-bending plane.

  TIterator* iter = GetIterator(kDigitIteratorByChamberAndCathode, chamber, cathode);
  return CountObjects(iter);
}

//_____________________________________________________________________________
AliMUONVDigit* AliMUONMCDataInterface::Digit(Int_t chamber, Int_t cathode, Int_t index)
{
/// Returns the a pointer to the index'th simulated digit on the specified chamber and cathode.
/// @param chamber  The chamber number in the range [0 .. 13].
/// @param cathode  The cathode in the range [0 .. 1], where 0 is the bending and
///   1 is the non-bending plane.
/// @param index  The index number of the digit to fetch in the range [0 .. N-1],
///   where N = NumberOfDigits(chamber, cathode)

  TIterator* iter = GetIterator(kDigitIteratorByChamberAndCathode, chamber, cathode);
  return static_cast<AliMUONVDigit*>( FetchObject(iter, index) );
}

//_____________________________________________________________________________
Int_t AliMUONMCDataInterface::NumberOfLocalTriggers()
{
/// Returns the number of simulated local trigger objects.

  TIterator* iter = GetIterator(kLocalTriggerIterator);
  return CountObjects(iter);
}

//_____________________________________________________________________________
AliMUONLocalTrigger* AliMUONMCDataInterface::LocalTrigger(Int_t index)
{
/// Returns a pointer to the index'th simulated local trigger object.
/// @param index  The index number of the local trigger object to fetch in the range [0 .. N-1],
///   where N = NumberOfLocalTriggers()

  TIterator* iter = GetIterator(kLocalTriggerIterator);
  return static_cast<AliMUONLocalTrigger*>( FetchObject(iter, index) );
}

//_____________________________________________________________________________
Int_t AliMUONMCDataInterface::NumberOfRegionalTriggers()
{
/// Returns the number of simulated regional trigger objects.

  TIterator* iter = GetIterator(kRegionalTriggerIterator);
  return CountObjects(iter);
}

//_____________________________________________________________________________
AliMUONRegionalTrigger* AliMUONMCDataInterface::RegionalTrigger(Int_t index)
{
/// Returns a pointer to the index'th simulated regional trigger object.
/// @param index  The index number of the regional trigger object to fetch in the range [0 .. N-1],
///   where N = NumberOfRegionalTriggers()

  TIterator* iter = GetIterator(kRegionalTriggerIterator);
  return static_cast<AliMUONRegionalTrigger*>( FetchObject(iter, index) );
}

//_____________________________________________________________________________
AliMUONGlobalTrigger* AliMUONMCDataInterface::GlobalTrigger()
{
/// Returns a pointer to the simulated global trigger object for the event.

  AliMUONVTriggerStore* store = TriggerStore(fCurrentEvent);
  if (store == 0x0) return 0x0;
  return store->Global();
}

//_____________________________________________________________________________
Int_t AliMUONMCDataInterface::NumberOfTrackRefs()
{
/// Number of track references in the currently selected event.

  return NumberOfTrackRefs(fCurrentEvent);
}

//_____________________________________________________________________________
TClonesArray* AliMUONMCDataInterface::TrackRefs(Int_t track)
{
/// Returns the track references for a given track in the current event.
/// @param track  The track to returns track references for. In the range [0 .. N-1]
///               where N = NumberOfTrackRefs()

  return TrackRefs(fCurrentEvent, track);
}

//_____________________________________________________________________________
void AliMUONMCDataInterface::ResetStores()
{
/// Deletes all the store objects that have been created and resets the pointers to 0x0.
/// The temporary iterator object is automatically reset. See ResetIterator for more details.

  ResetIterator();
  if (fHitStore != 0x0)
  {
    delete fHitStore;
    fHitStore = 0x0;
  }
  if (fSDigitStore != 0x0)
  {
    delete fSDigitStore;
    fSDigitStore = 0x0;
  }
  if (fDigitStore != 0x0)
  {
    delete fDigitStore;
    fDigitStore = 0x0;
  }
  if (fTrackRefs != 0x0)
  {
    delete fTrackRefs;
    fTrackRefs = 0x0;
  }
  if (fTriggerStore != 0x0)
  {
    delete fTriggerStore;
    fTriggerStore = 0x0;
  }
}

//_____________________________________________________________________________
TIterator* AliMUONMCDataInterface::GetIterator(IteratorType type, Int_t x, Int_t y)
{
/// Creates an appropriate iterator object and returns it.
/// If the iterator has already been created then that one is returned otherwise
/// a new object is created.
/// Depending on the value of 'type' the semantics of parameters x and y can change.
/// @param type  The type of iterator to create.
/// @param x  This is the detector element ID if type equals kDigitIteratorByDetectorElement
///           or kSDigitIteratorByDetectorElement.
///           If type equals kDigitIteratorByChamberAndCathode or
///           kSDigitIteratorByChamberAndCathode then this is the chamber number.
///           For type == kHitIterator the parameter x is the track number.
///           In all other cases this parameter is ignored.
/// @param y  If type equals kDigitIteratorByChamberAndCathode or
///           kSDigitIteratorByChamberAndCathode then this parameter is the cathode
///           number. In all other cases this parameter is ignored.

  if (type == fCurrentIteratorType and fDataX == x and fDataY == y)
  	return fIterator;
  
  if (fCurrentEvent == -1)
  {
    AliError("No event was selected. Try first using GetEvent().");
    return 0x0;
  }
  
  ResetIterator();
  
  switch (type)
  {
  case kHitIterator:
    {
      Int_t track = x;
      AliMUONVHitStore* store = HitStore(fCurrentEvent, track);
      if (store == 0x0) return 0x0;
      fIterator = store->CreateIterator();
      if (fIterator == 0x0) return 0x0;
      fCurrentIteratorType = kHitIterator;
      return fIterator;
    }
    
  case kSDigitIteratorByDetectorElement:
    {
      Int_t detElem = x;
      AliMUONVDigitStore* store = SDigitStore(fCurrentEvent);
      if (store == 0x0) return 0x0;
      fIterator = store->CreateIterator(detElem, detElem, 2);
      if (fIterator == 0x0) return 0x0;
      fCurrentIteratorType = kSDigitIteratorByDetectorElement;
      fDataX = detElem;
      return fIterator;
    }
    
  case kSDigitIteratorByChamberAndCathode:
    {
      Int_t chamber = x;
      Int_t cathode = y;
      if (chamber < 0 or AliMpConstants::NofChambers() <= chamber)
      {
        AliError(Form(
          "Must have give a chamber value in the range [0..%d], but got a value of: %d",
          AliMpConstants::NofChambers() - 1,
          chamber
        ));
        return 0x0;
      }
      if (cathode < 0 or 1 < cathode)
      {
        AliError(Form("Must have give a cathode value in the range [0..1], but got a value of: %d", cathode));
        return 0x0;
      }
      
      AliMUONVDigitStore* store = SDigitStore(fCurrentEvent);
      if (store == 0x0) return 0x0;
      MpPair_t pair = AliMpDEManager::GetDetElemIdRange(chamber);
      fIterator = store->CreateIterator(AliMp::PairFirst(pair), AliMp::PairSecond(pair), cathode);
      if (fIterator == 0x0) return 0x0;
      fCurrentIteratorType = kSDigitIteratorByChamberAndCathode;
      fDataX = chamber;
      fDataY = cathode;
      return fIterator;
    }
    
  case kDigitIteratorByDetectorElement:
    {
      Int_t detElem = x;
      AliMUONVDigitStore* store = DigitStore(fCurrentEvent);
      if (store == 0x0) return 0x0;
      fIterator = store->CreateIterator(detElem, detElem, 2);
      if (fIterator == 0x0) return 0x0;
      fCurrentIteratorType = kDigitIteratorByDetectorElement;
      fDataX = detElem;
      return fIterator;
    }
    
  case kDigitIteratorByChamberAndCathode:
    {
      Int_t chamber = x;
      Int_t cathode = y;
      if (chamber < 0 or AliMpConstants::NofChambers() <= chamber)
      {
        AliError(Form(
          "Must have give a chamber value in the range [0..%d], but got a value of: %d",
          AliMpConstants::NofChambers() - 1,
          chamber
        ));
        return 0x0;
      }
      if (cathode < 0 or 1 < cathode)
      {
        AliError(Form("Must have give a cathode value in the range [0..1], but got a value of: %d", cathode));
        return 0x0;
      }
      
      AliMUONVDigitStore* store = DigitStore(fCurrentEvent);
      if (store == 0x0) return 0x0;
      MpPair_t pair = AliMpDEManager::GetDetElemIdRange(chamber);
      fIterator = store->CreateIterator(AliMp::PairFirst(pair), AliMp::PairSecond(pair), cathode);
      if (fIterator == 0x0) return 0x0;
      fCurrentIteratorType = kDigitIteratorByChamberAndCathode;
      fDataX = chamber;
      fDataY = cathode;
      return fIterator;
    }
    
  case kLocalTriggerIterator:
    {
      AliMUONVTriggerStore* store = TriggerStore(fCurrentEvent);
      if (store == 0x0) return 0x0;
      fIterator = store->CreateLocalIterator();
      if (fIterator == 0x0) return 0x0;
      fCurrentIteratorType = kLocalTriggerIterator;
      return fIterator;
    }
    
  case kRegionalTriggerIterator:
    {
      AliMUONVTriggerStore* store = TriggerStore(fCurrentEvent);
      if (store == 0x0) return 0x0;
      fIterator = store->CreateRegionalIterator();
      if (fIterator == 0x0) return 0x0;
      fCurrentIteratorType = kRegionalTriggerIterator;
      return fIterator;
    }
    
  default:
    return 0x0;
  }
}

//_____________________________________________________________________________
void AliMUONMCDataInterface::ResetIterator()
{
/// The temporary iterator object is deleted if it exists and the pointer reset to 0x0.
/// The iterator type and temporary data indicating the state of the iterator are
/// also reset.

  if (fIterator != 0x0) delete fIterator;
  fCurrentIteratorType = kNoIterator;
  fCurrentIndex = fDataX = fDataY = -1;
  fIterator = 0x0;
}

//_____________________________________________________________________________
Int_t AliMUONMCDataInterface::CountObjects(TIterator* iter)
{
/// Counts the number of objects in the iterator and resets it.
/// @return The number of objects in 'iter'.

  if (iter == 0x0) return -1;
  Int_t count = 0;
  iter->Reset();
  while ( iter->Next() != 0x0 ) count++;
  iter->Reset();
  fCurrentIndex = -1;
  return count;
}

//_____________________________________________________________________________
TObject* AliMUONMCDataInterface::FetchObject(TIterator* iter, Int_t index)
{
/// Fetches the index'th object from the iterator counting the first object
/// returned by iterator after it is reset as index == 0. The next object
/// has index == 1 and so on where the last object returned by the iterator
/// has index == N-1 where N = CountObjects(iter)
/// This method will only reset the iterator if index is smaller than
/// fCurrentIndex, which is used to track the iteration progress and is
/// updated when a new object if returned by this method.
/// @param iter  The iterator to fetch an object from.
/// @param index The index number of the object to fetch in the range [0 .. N-1]
///        where N = CountObjects(iter)

  if (index < 0)
  {
    AliError(Form("Index is out of bounds. Got a value of %d.", index));
    return 0x0;
  }

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