ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2006, 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 used to extract and store info of MC particle
//
// Author: X-M. Zhang, zhang@clermont.in2p3.fr
//                     zhangxm@iopp.ccnu.edu.cn
/////////////////////////////////////////////////////////////

#include <TParticle.h>

#include "AliMCEvent.h"
#include "AliAODMCParticle.h"
#include "AliESDMuonTrack.h"
#include "AliAODTrack.h"
#include "AliMuonInfoStoreRD.h"
#include "AliMuonInfoStoreMC.h"
#include "AliMCEvent.h"

ClassImp(AliMuonInfoStoreMC)

const TString AliMuonInfoStoreMC::fgkStdBranchName("MuonMC");
const Int_t   AliMuonInfoStoreMC::fgkSourcesN = 6;

//-----------------------------------------------------------------------------
AliMuonInfoStoreMC::AliMuonInfoStoreMC() :
AliMuonInfoStoreRD(),
fIsFull(kFALSE),
fLorentzP(),
fTrackIndex(-1),
fTrackPDGCode(0),
fSource(-1),
fNParents(0),
fOscillation(kFALSE),
fWeight(0.)
{
  //
  // default constructor
  //
  for (Int_t i=5; i--;) { fParentIndex[i] = -1; fParentPDGCode[i] = 0; }
  for (Int_t i=4; i--;) { fQuarkIndex[i]  = -1; fQuarkPDGCode[i]  = 0; }
}

//-----------------------------------------------------------------------------
AliMuonInfoStoreMC::AliMuonInfoStoreMC(AliAODTrack *trkAOD, AliMCEvent *mcEvent, UInt_t selMask, Bool_t full) :
AliMuonInfoStoreRD(trkAOD,selMask),
fIsFull(full),
fLorentzP(),
fTrackIndex(-1),
fTrackPDGCode(0),
fSource(-1),
fNParents(0),
fOscillation(kFALSE),
fWeight(0.)
{
  //
  // default constructor
  //
  for (Int_t i=5; i--;) { fParentIndex[i] = -1; fParentPDGCode[i] = 0; }
  for (Int_t i=4; i--;) { fQuarkIndex[i]  = -1; fQuarkPDGCode[i]  = 0; }

  this->SetMCInfoAOD(mcEvent, trkAOD->GetLabel());
}

//-----------------------------------------------------------------------------
AliMuonInfoStoreMC::AliMuonInfoStoreMC(AliESDMuonTrack *trkESD, AliMCEvent *mcEvent, UInt_t selMask, Bool_t full) :
AliMuonInfoStoreRD(trkESD,selMask),
fIsFull(full),
fLorentzP(),
fTrackIndex(-1),
fTrackPDGCode(0),
fSource(-1),
fNParents(0),
fOscillation(kFALSE),
fWeight(0.)
{
  //
  // default constructor
  //
  for (Int_t i=5; i--;) { fParentIndex[i] = -1; fParentPDGCode[i] = 0; }
  for (Int_t i=4; i--;) { fQuarkIndex[i]  = -1; fQuarkPDGCode[i]  = 0; }

  this->SetMCInfoESD(mcEvent, trkESD->GetLabel());
}

//-----------------------------------------------------------------------------
AliMuonInfoStoreMC::AliMuonInfoStoreMC(const AliMuonInfoStoreMC &src) :
AliMuonInfoStoreRD(src),
fIsFull(src.fIsFull),
fLorentzP(src.fLorentzP),
fTrackIndex(src.fTrackIndex),
fTrackPDGCode(src.fTrackPDGCode),
fSource(src.fSource),
fNParents(src.fNParents),
fOscillation(src.fOscillation),
fWeight(src.fWeight)
{
  //
  // copy constructor
  //
  for (Int_t i=5; i--;) {
    fParentIndex[i]   = src.fParentIndex[i];
    fParentPDGCode[i] = src.fParentPDGCode[i];
  }
  for (Int_t i=4; i--;) {
    fQuarkIndex[i]    = src.fQuarkIndex[i];
    fQuarkPDGCode[i]  = src.fQuarkPDGCode[i];
  }
}

//-----------------------------------------------------------------------------
AliMuonInfoStoreMC& AliMuonInfoStoreMC::operator=(const AliMuonInfoStoreMC &src)
{
  //
  // assignment constructor
  //
  if(&src==this) return *this;
  AliMuonInfoStoreRD::operator=(src);

  fIsFull       = src.fIsFull;
  fLorentzP     = src.fLorentzP;
  fTrackIndex   = src.fTrackIndex;
  fTrackPDGCode = src.fTrackPDGCode;
  fSource       = src.fSource;
  fNParents     = src.fNParents;
  fOscillation  = src.fOscillation;
  fWeight       = src.fWeight;
  for (Int_t i=5; i--;) {
    fParentIndex[i]   = src.fParentIndex[i];
    fParentPDGCode[i] = src.fParentPDGCode[i];
  }
  for (Int_t i=4; i--;) {
    fQuarkIndex[i]    = src.fQuarkIndex[i];
    fQuarkPDGCode[i]  = src.fQuarkPDGCode[i];
  }

  return *this;
}

//-----------------------------------------------------------------------------
AliMuonInfoStoreMC::~AliMuonInfoStoreMC()
{
  //
  // destructor
  //
}

//-----------------------------------------------------------------------------
void AliMuonInfoStoreMC::SetMCInfoAOD(AliMCEvent *mcEvent, Int_t label)
{
  // fill track MC info with AOD base
  fTrackIndex = label;
  if (fTrackIndex<0) { fSource=5; return; }

  AliAODMCParticle *pMC = (AliAODMCParticle*)mcEvent->GetTrack(fTrackIndex);
  fLorentzP.SetPxPyPzE(pMC->Px(), pMC->Py(), pMC->Pz(), pMC->E());

  fTrackPDGCode = pMC->PdgCode();
  if (TMath::Abs(fTrackPDGCode)!=13) { fSource=4; return; } 

  Int_t lineM = pMC->GetMother();
  if (lineM<0) { fSource=2; return; }

  Bool_t isPrimary = ((AliAODMCParticle*)mcEvent->GetTrack(lineM))->IsPrimary();
  if (!isPrimary) { fSource=3; return; }

  Int_t countP=-1, pdg=0;
  Int_t parents[10], parLine[10];
  AliAODMCParticle *mother = 0;
  while(lineM>=0){
    mother = (AliAODMCParticle*)mcEvent->GetTrack(lineM);
    pdg = mother->GetPdgCode();
    if(pdg==92 || pdg==21 || TMath::Abs(pdg)<10 || IsDiquark(pdg)) break;
    parents[++countP] = pdg;
    parLine[countP] = lineM;
    lineM = mother->GetMother();
  }
  for(Int_t i=0; i<=countP; i++){
    fParentIndex[i] = parLine[countP-i];
    fParentPDGCode[i] = parents[countP-i];
  }
  fNParents = countP + 1;

  if (fIsFull && lineM>=0) this->FillHistoryQuarksAOD(mcEvent, lineM);

  fSource = this->SelectHFMuon();
  return;
}

//-----------------------------------------------------------------------------
void AliMuonInfoStoreMC::SetMCInfoESD(AliMCEvent *mcEvent, Int_t label)
{
  // fill track MC info with ESD base
  fTrackIndex = label;
  if (fTrackIndex<0) { fSource=5; return; }

  TParticle *pMC = ((AliMCParticle*)mcEvent->GetTrack(fTrackIndex))->Particle();
  fLorentzP.SetPxPyPzE(pMC->Px(), pMC->Py(), pMC->Pz(), pMC->Energy());

  fTrackPDGCode = pMC->GetPdgCode();
  if (TMath::Abs(fTrackPDGCode)!=13) { fSource=4; return; }

  Int_t lineM = pMC->GetFirstMother();
  if (lineM<0) { fSource=2; return; }

  if (lineM>=mcEvent->Stack()->GetNprimary()) { fSource=3; return; }

  Int_t countP=-1, pdg=0;
  Int_t parents[10], parLine[10];
  TParticle *mother = 0;
  while(lineM>=0){
    mother = ((AliMCParticle*)mcEvent->GetTrack(lineM))->Particle();
    pdg = mother->GetPdgCode();
    if(pdg==92 || pdg==21 || TMath::Abs(pdg)<10 || IsDiquark(pdg)) break;
    parents[++countP] = pdg;
    parLine[countP] = lineM;
    lineM = mother->GetFirstMother();
  }
  for(Int_t i=0; i<=countP; i++){
    fParentIndex[i] = parLine[countP-i];
    fParentPDGCode[i] = parents[countP-i];
  }
  fNParents = countP + 1;

  if (fIsFull && lineM>=0) this->FillHistoryQuarksESD(mcEvent, lineM);

  fSource = this->SelectHFMuon();
  return;
}

//-----------------------------------------------------------------------------
void AliMuonInfoStoreMC::FillHistoryQuarksAOD(AliMCEvent* const mcEvent, Int_t lineM)
{
  // method in $ALICE_ROOT/MUON/AliMUONTrackLight.cxx 

  if (lineM<0) return;
  Int_t countP=-1, pdg=0;
  AliAODMCParticle *mother = 0;
  while(lineM>=0){
    mother = (AliAODMCParticle*)mcEvent->GetTrack(lineM);
    pdg = mother->GetPdgCode();
    fQuarkIndex[++countP] = lineM;
    fQuarkPDGCode[countP] = pdg;
    lineM = mother->GetMother();
  }

  // for PYTHIA checking
  countP = 1;
  for(Int_t par=0; par<4; par++) {
    if(TMath::Abs(this->QuarkPDGCode(par))<6) { countP=par; break; }
  }
  if(this->QuarkIndex(countP)>-1 && (this->ParentFlavour(0)==4 || this->ParentFlavour(0)==5)) {
    if(this->ParentFlavour(0)!=TMath::Abs(this->QuarkPDGCode(countP))) {
      AliWarning(Form("quark flavour of parent and that of quark do not correspond: %d %d --> correcting\n",
                 this->ParentFlavour(0), TMath::Abs(this->QuarkPDGCode(countP))));

      pdg = this->QuarkPDGCode(countP);
      Int_t line = this->QuarkIndex(countP);
      this->ResetQuarkInfo();
      while(TMath::Abs(pdg)!=this->ParentFlavour(0)) {
        pdg = ((AliAODMCParticle*)mcEvent->GetTrack(++line))->GetPdgCode();
      }
      while(line>=0){
        mother = (AliAODMCParticle*)mcEvent->GetTrack(line);
        pdg = mother->GetPdgCode();
        fQuarkIndex[countP] = line;
        fQuarkPDGCode[countP++] = pdg;
        line = mother->GetMother();
      }
    }
  }
  return;
}

//-----------------------------------------------------------------------------
void AliMuonInfoStoreMC::FillHistoryQuarksESD(AliMCEvent* const mcEvent, Int_t lineM)
{
  // method in $ALICE_ROOT/MUON/AliMUONTrackLight.cxx 

  if (lineM<0) return;
  Int_t countP=-1, pdg=0;
  TParticle *mother = 0;
  while(lineM>=0){
    mother = ((AliMCParticle*)mcEvent->GetTrack(lineM))->Particle();
    pdg = mother->GetPdgCode();
    fQuarkIndex[++countP] = lineM;
    fQuarkPDGCode[countP] = pdg;
    lineM = mother->GetFirstMother();
  }

  // for PYTHIA checking
  countP = 1;
  for(Int_t par=0; par<4; par++) {
    if(TMath::Abs(this->QuarkPDGCode(par))<6) { countP=par; break; }
  }
  if(this->QuarkIndex(countP)>-1 && (this->ParentFlavour(0)==4 || this->ParentFlavour(0)==5)) {
    if(this->ParentFlavour(0)!=TMath::Abs(this->QuarkPDGCode(countP))) {
      AliWarning(Form("quark flavour of parent and that of quark do not correspond: %d %d --> correcting\n",
                 this->ParentFlavour(0), TMath::Abs(this->QuarkPDGCode(countP))));

      pdg = this->QuarkPDGCode(countP);
      Int_t line = this->QuarkIndex(countP);
      this->ResetQuarkInfo();
      while(TMath::Abs(pdg)!=this->ParentFlavour(0)) {
        pdg = ((AliMCParticle*)mcEvent->GetTrack(++lineM))->Particle()->GetPdgCode();
      }
      while(line>=0){
        mother = ((AliMCParticle*)mcEvent->GetTrack(++lineM))->Particle();
        pdg = mother->GetPdgCode();
        fQuarkIndex[countP] = line;
        fQuarkPDGCode[countP++] = pdg;
        line = mother->GetFirstMother();
      }
    }
  }
  return;
}

//-----------------------------------------------------------------------------
Int_t AliMuonInfoStoreMC::SelectHFMuon()
{
  // set info of muon from HF

  Int_t flv = ParentFlavour(0);
  if (flv!=4 && flv!=5) return 2;

  Bool_t isRes = kFALSE;
  Int_t i=0, nparents=this->ParentsN();
  while (i<nparents && !isRes) {
    isRes = IsMotherAResonance(i++);
  }

  if (isRes) return 2;
  if (flv==5) return 0;
  else return 1;
}

//-----------------------------------------------------------------------------
Bool_t AliMuonInfoStoreMC::IsDiquark(Int_t pdg)
{
  // copy from $ALICE_ROOT/MUON/AliMUONTrackLight.cxx
  pdg = TMath::Abs(pdg);
  if(pdg>1000 && (pdg%100)<10) return kTRUE;
  else return kFALSE;
}

//-----------------------------------------------------------------------------
void AliMuonInfoStoreMC::ResetQuarkInfo()
{
  // copy from $ALICE_ROOT/MUON/AliMUONTrackLight.cxx
  for(Int_t pos=1; pos<4; pos++) {
    fQuarkIndex[pos] = -1;
    fQuarkPDGCode[pos] = 0;
  }
  return;
}

//-----------------------------------------------------------------------------
Int_t AliMuonInfoStoreMC::ParentFlavour(Int_t i) const
{
  // copy from $ALICE_ROOT/MUON/AliMUONTrackLight.cxx
  Int_t pdg = ParentPDGCode(i);
  pdg = TMath::Abs(pdg/100);
  if(pdg>9) pdg /= 10;
  return pdg;
}

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