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


///////////////////////////////////////////////////////////////////////////
/*

Origin: marian.ivanov@cern.ch
Container classes with MC infomation

The AliMCInfo contains the information about the particles properties 
during transportation throuch ALICE Detector

The base Information :
TParticle - fParticle             -  properties of the particle at creation point
AliTrackReference - fXXXRefernces -  TClonesArray of refernces in differnt detectors
fNXXXRef                          -  number of the track refernces in differnt detectors
AliTPCdigitRow    - fTPCRow       -  the map of the hitted rows - (will be repalced by TBits)
fRowsWith*                        - number of rows hitted by particle
fMCtracks         -               - number of turn over of the track inside of the TPC

++++
some additional information usable for tree draw - TO SPEED UP tree queries
IMPORTANT FOR PROOF FAST PROTOTYPING ANALYSIS 
                                      



*/

#if !defined(__CINT__) || defined(__MAKECINT__)
#include <stdio.h>
//ROOT includes
#include "Rtypes.h"
#include "TClonesArray.h"
#include "TDatabasePDG.h"
//ALIROOT includes
#include "AliTrackReference.h"
#include "AliMCInfo.h" 
#include "AliMathBase.h" 
#endif

//
// 

ClassImp(AliTPCdigitRow)
ClassImp(AliMCInfo)



////////////////////////////////////////////////////////////////////////
AliMCInfo::AliMCInfo():
  fTrackRef(),
  fTrackRefOut(),
  fTRdecay(),
  fPrimPart(0),
  fParticle(),
  fMass(0),
  fCharge(0),
  fLabel(0),
  fEventNr(),
  fMCtracks(),
  fPdg(0),
  fTPCdecay(0),
  fRowsWithDigitsInn(0),
  fRowsWithDigits(0),
  fRowsTrackLength(0),
  fTPCtrackLength(-1),
  fPrim(0),
  fTPCRow(), 
  fNTPCRef(0),                    // tpc references counter
  fNITSRef(0),                    // ITS references counter
  fNTRDRef(0),                    // TRD references counter
  fNTOFRef(0),                    // TOF references counter
  fNTPCRefOut(0),                    // tpc references counter
  fNITSRefOut(0),                    // ITS references counter
  fNTRDRefOut(0),                    // TRD references counter
  fNTOFRefOut(0),                    // TOF references counter
  fTPCReferences(0),
  fITSReferences(0),
  fTRDReferences(0),
  fTOFReferences(0)
{
  //
  // Default constructor
  //
  fTPCReferences  = new TClonesArray("AliTrackReference",10);
  fITSReferences  = new TClonesArray("AliTrackReference",10);
  fTRDReferences  = new TClonesArray("AliTrackReference",10);
  fTOFReferences  = new TClonesArray("AliTrackReference",10);
  fTRdecay.SetTrack(-1);
  for (Int_t i=0;i<4;i++) fVDist[i]=0;
  for (Int_t i=0;i<3;i++) fDecayCoord[i]=0;
  fCharge = 0;
}

AliMCInfo::AliMCInfo(const AliMCInfo& info):
  TObject(),
  fTrackRef(info.fTrackRef),
  fTrackRefOut(info.fTrackRefOut),
  fTRdecay(info.GetTRdecay()),
  fPrimPart(info.fPrimPart),
  fParticle(info.fParticle),
  fMass(info.GetMass()),
  fCharge(info.fCharge),
  fLabel(info.fLabel),
  fEventNr(info.fEventNr),
  fMCtracks(info.fMCtracks),
  fPdg(info.fPdg),
  fTPCdecay(info.fTPCdecay),
  fRowsWithDigitsInn(info.fRowsWithDigitsInn),
  fRowsWithDigits(info.fRowsWithDigits),
  fRowsTrackLength(info.fRowsTrackLength),
  fTPCtrackLength(info.fTPCtrackLength),
  fPrim(info.fPrim),
  fTPCRow(info.fTPCRow), 
  fNTPCRef(info.fNTPCRef),                    // tpc references counter
  fNITSRef(info.fNITSRef),                    // ITS references counter
  fNTRDRef(info.fNTRDRef),                    // TRD references counter
  fNTOFRef(info.fNTOFRef),                    // TOF references counter
  fNTPCRefOut(info.fNTPCRefOut),                    // tpc references counter
  fNITSRefOut(info.fNITSRefOut),                    // ITS references counter
  fNTRDRefOut(info.fNTRDRefOut),                    // TRD references counter
  fNTOFRefOut(info.fNTOFRefOut),                    // TOF references counter
  fTPCReferences(0),
  fITSReferences(0),
  fTRDReferences(0),
  fTOFReferences(0)
{
  //
  // copy constructor
  //
  fTPCReferences = (TClonesArray*)info.fTPCReferences->Clone();
  fITSReferences = (TClonesArray*)info.fITSReferences->Clone();
  fTRDReferences = (TClonesArray*)info.fTRDReferences->Clone();
  fTOFReferences = (TClonesArray*)info.fTOFReferences->Clone();
  for (Int_t i=0;i<4;i++) fVDist[i]=info.fVDist[i];
  for (Int_t i=0;i<3;i++) fDecayCoord[i]=info.fDecayCoord[i];

}


AliMCInfo& AliMCInfo::operator=(const AliMCInfo& info) { 
  //
  // Assignment operator
  //
  this->~AliMCInfo();
  new (this) AliMCInfo(info);
  return *this;
}


AliMCInfo::~AliMCInfo()
{
  //
  // Destructor of the class
  //
  if (fTPCReferences) {
    delete fTPCReferences;
  }
  if (fITSReferences){
    delete fITSReferences;
  }
  if (fTRDReferences){    
    delete fTRDReferences;  
  }
  if (fTOFReferences){    
    delete fTOFReferences;  
  }

}




void AliMCInfo::Update()
{
  //
  // Update MC info
  // Calculates some derived variables
  //
  //
  fMCtracks =1;
  //
  // decay info
  fTPCdecay=kFALSE;
  if (fTRdecay.GetTrack()>0){
    fDecayCoord[0] = fTRdecay.X();
    fDecayCoord[1] = fTRdecay.Y();
    fDecayCoord[2] = fTRdecay.Z();
    if ( (fTRdecay.R()<250)&&(fTRdecay.R()>85) && (TMath::Abs(fTRdecay.Z())<250) ){
      fTPCdecay=kTRUE;     
    }
    else{
      fDecayCoord[0] = 0;
      fDecayCoord[1] = 0;
      fDecayCoord[2] = 0;
    }
  }
  //
  //
  //digits information update
  fRowsWithDigits    = fTPCRow.RowsOn();    
  fRowsWithDigitsInn = fTPCRow.RowsOn(63); // 63 = number of inner rows
  fRowsTrackLength   = fTPCRow.Last() - fTPCRow.First();
  //
  //
  // calculate primary ionization per cm  
  if (fParticle.GetPDG()){
    fMass = fParticle.GetMass();  
    fCharge = fParticle.GetPDG()->Charge();
    if (fTPCReferences->GetEntriesFast()>0){
      fTrackRef = *((AliTrackReference*)fTPCReferences->At(0));
    }
    if (fMass>0){
      Float_t p = TMath::Sqrt(fTrackRef.Px()*fTrackRef.Px()+
			      fTrackRef.Py()*fTrackRef.Py()+
			      fTrackRef.Pz()*fTrackRef.Pz());    
      if (p>0.001){
	Float_t betagama = p /fMass;
	fPrim = AliMathBase::BetheBlochAleph(betagama);
      }else fPrim=0;
    }
  }else{
    fMass =0;
    fPrim =0;
  }  
  


}




////////////////////////////////////////////////////////////////////////
AliTPCdigitRow::AliTPCdigitRow()
{
  for (Int_t i = 0; i<32; i++) { fDig[i] = 0; }
  Reset();
}
////////////////////////////////////////////////////////////////////////
AliTPCdigitRow & AliTPCdigitRow::operator=(const AliTPCdigitRow &digOld)
{
  for (Int_t i = 0; i<32; i++) fDig[i] = digOld.fDig[i];
  return (*this);
}
////////////////////////////////////////////////////////////////////////
void AliTPCdigitRow::SetRow(Int_t row) 
{
  //
  // set bit mask for given row
  //
  if (row >= 8*32) {
    //    cerr<<"AliTPCdigitRow::SetRow: index "<<row<<" out of bounds."<<endl;
    return;
  }
  Int_t iC = row/8;
  Int_t iB = row%8;
  SETBIT(fDig[iC],iB);
}

////////////////////////////////////////////////////////////////////////
Bool_t AliTPCdigitRow::TestRow(Int_t row) const
{
//
// return kTRUE if row is on
//
  Int_t iC = row/8;
  Int_t iB = row%8;
  return TESTBIT(fDig[iC],iB);
}
////////////////////////////////////////////////////////////////////////
Int_t AliTPCdigitRow::RowsOn(Int_t upto) const
{
//
// returns number of rows with a digit  
// count only rows less equal row number upto
//
  Int_t total = 0;
  for (Int_t i = 0; i<32; i++) {
    for (Int_t j = 0; j < 8; j++) {
      if (i*8+j > upto) return total;
      if (TESTBIT(fDig[i],j))  total++;
    }
  }
  return total;
}
////////////////////////////////////////////////////////////////////////
void AliTPCdigitRow::Reset()
{
//
// resets all rows to zero
//
  for (Int_t i = 0; i<32; i++) {
    //fDig[i] <<= 8;
    fDig[i] = 0;
  }
}
////////////////////////////////////////////////////////////////////////
Int_t AliTPCdigitRow::Last() const
{
//
// returns the last row number with a digit
// returns -1 if now digits 
//
  for (Int_t i = 32-1; i>=0; i--) {
    for (Int_t j = 7; j >= 0; j--) {
      if TESTBIT(fDig[i],j) return i*8+j;
    }
  }
  return -1;
}
////////////////////////////////////////////////////////////////////////
Int_t AliTPCdigitRow::First() const
{
//
// returns the first row number with a digit
// returns -1 if now digits 
//
  for (Int_t i = 0; i<32; i++) {
    for (Int_t j = 0; j < 8; j++) {
      if (TESTBIT(fDig[i],j)) return i*8+j;
    }
  }
  return -1;
}


void AliMCInfo::Clear(Option_t* ){
  //
  // clear the content
  //
  if (fTPCReferences) fTPCReferences->Clear();
  if (fITSReferences) fITSReferences->Clear();
  if (fTRDReferences) fTRDReferences->Clear();
  if (fTOFReferences) fTOFReferences->Clear();
  for (Int_t i=0;i<4;i++) fVDist[i]=0;
  for (Int_t i=0;i<3;i++) fDecayCoord[i]=0;
  fTRdecay.SetTrack(-1);
  fCharge = 0;
  fEventNr=-1;
  fPrimPart=-1;               // index of primary particle in TreeH
  fMass=0;                   // mass of the particle
  fCharge=0;                 // charge of the particle
  fLabel=0;                  // track label
  fEventNr=0;                // event number
  fMCtracks=0;               // indication of how many times the track is retuturned back
  fPdg=0;                        //pdg code
  fTPCdecay=0;                  //indicates decay in TPC
  fRowsWithDigitsInn=0;          // number of rows with digits in the inner sectors
  fRowsWithDigits=0;             // number of rows with digits in the outer sectors
  fRowsTrackLength=0;            // last - first row with digit
  fTPCtrackLength=0;           // distance between first and last track reference
  fPrim=0;                     // theoretical dedx in tpc according particle momenta and mass
  fNTPCRef=0;                    // tpc references counter
  fNITSRef=0;                    // ITS references counter
  fNTRDRef=0;                    // TRD references counter
  fNTOFRef=0;                    // TOF references counter
  //
  fNTPCRefOut=0;                    // tpc references counter - out
  fNITSRefOut=0;                    // ITS references counter - out
  fNTRDRefOut=0;                    // TRD references counter - out
  fNTOFRefOut=0;                    // TOF references counter - out
}



void AliMCInfo::CalcTPCrows(TClonesArray * runArrayTR){
  //
  // Calculates the numebr of the track references for detectors
  // In case of changing direction - curling tracks - the counter is not increasing
  //
  // Rough calculation 
  // of the first and last point in the TPC  
  //
  fNTPCRef = 0;
  fNITSRef = 0;
  fNTRDRef = 0;
  fNTOFRef = 0;  
  fNTPCRefOut = 0;
  fNITSRefOut = 0;
  fNTRDRefOut = 0;
  fNTOFRefOut = 0;  
  //
  //
  Float_t tpcminRadius=TMath::Max(90., fParticle.R());
  Float_t tpcmaxRadius=TMath::Min(250.,fParticle.R());  
  Int_t nover=-1;

  if (runArrayTR->GetEntriesFast()>0){  
    nover=0;
    AliTrackReference *ref0 = (AliTrackReference*)runArrayTR->At(0);    
    Float_t dir = ((ref0->X()*ref0->Px()+ref0->Y()*ref0->Py())>0)? 1.:-1.; //inside or outside
    //
    //    
    for (Int_t iTrackRef = 0; iTrackRef < runArrayTR->GetEntriesFast(); iTrackRef++) {
      //
      AliTrackReference *ref = (AliTrackReference*)runArrayTR->At(iTrackRef);  
      Float_t newdirection = ((ref->X()*ref->Px()+ref->Y()*ref->Py())>0)? 1.:-1.; //inside or outside
      //
      //
      if (dir*newdirection<0.0) {
	nover++;
	dir = newdirection;
      }
      //
      if (ref->DetectorId()== AliTrackReference::kTRD){
	if (nover==0) {
	  tpcmaxRadius =250;
	  fNTRDRefOut++;
	}
	fNTRDRef++;
      }
      if (ref->DetectorId()== AliTrackReference::kITS){ 
	if (nover==0) {
	  fNITSRefOut++;
	  tpcminRadius =90;
	}
	fNITSRef++;
      }
      if (ref->DetectorId()== AliTrackReference::kTOF){
	fNTOFRef++;
	if (nover==0) {
	  fNTOFRefOut++;
	  tpcmaxRadius =250;
	}
      }
      //
      if (ref->DetectorId()== AliTrackReference::kTPC){
	fNTPCRef++;
	if (nover==0) {
	  fNTPCRefOut++;
	  fTrackRefOut = (*ref);
	  if (ref->R()>tpcmaxRadius) tpcmaxRadius = ref->R();
	  if (ref->R()<tpcminRadius) tpcminRadius = ref->R();
	}
      }
      if (ref->DetectorId()== AliTrackReference::kDisappeared){
	if (nover==0 &&TMath::Abs(ref->Z())<250){
	  tpcmaxRadius = TMath::Min(Float_t(250.),ref->R());
	}
      }
    }
  }  // if we have track refs
  fTPCtrackLength = tpcmaxRadius-tpcminRadius;
  fMCtracks=nover+1;
}

//
//
//



void AliMCInfo::Update(TParticle * part, TClonesArray * runArrayTR, Double_t pvertex[4], Int_t label){
  //
  //
  //
  Clear();
  fLabel=label;
  fParticle=(*part);
  AliMCInfo *info = this;
  fVDist[0]=part->Vx()-pvertex[0];
  fVDist[1]=part->Vy()-pvertex[1];
  fVDist[2]=part->Vz()-pvertex[2];
  fVDist[3]=part->R()-pvertex[3];
  //
  //
  //
  for (Int_t iTrackRef = 0; iTrackRef < runArrayTR->GetEntriesFast(); iTrackRef++) {
    AliTrackReference *trackRef = (AliTrackReference*)runArrayTR->At(iTrackRef);         
    if (trackRef->DetectorId()== AliTrackReference::kTPC){     
      TClonesArray & arr = *(info->fTPCReferences);
      new (arr[arr.GetEntriesFast()]) AliTrackReference(*trackRef);     
    }
    if (trackRef->DetectorId()== AliTrackReference::kITS){
      TClonesArray & arr = *(info->fITSReferences);
      new (arr[arr.GetEntriesFast()]) AliTrackReference(*trackRef);     
    }
    if (trackRef->DetectorId()== AliTrackReference::kTRD){
      TClonesArray & arr = *(info->fTRDReferences);
      new (arr[arr.GetEntriesFast()]) AliTrackReference(*trackRef);     
    }
    if (trackRef->DetectorId()== AliTrackReference::kTOF){
      TClonesArray & arr = *(info->fTOFReferences);
      new (arr[arr.GetEntriesFast()]) AliTrackReference(*trackRef);     
    }
    //
    // decay case
    //
    if (trackRef->DetectorId()== AliTrackReference::kDisappeared){
      info->fTRdecay = *trackRef;      	
    }
  }
  //
  Update();
  CalcTPCrows(runArrayTR);
}

 AliMCInfo.cxx:1
 AliMCInfo.cxx:2
 AliMCInfo.cxx:3
 AliMCInfo.cxx:4
 AliMCInfo.cxx:5
 AliMCInfo.cxx:6
 AliMCInfo.cxx:7
 AliMCInfo.cxx:8
 AliMCInfo.cxx:9
 AliMCInfo.cxx:10
 AliMCInfo.cxx:11
 AliMCInfo.cxx:12
 AliMCInfo.cxx:13
 AliMCInfo.cxx:14
 AliMCInfo.cxx:15
 AliMCInfo.cxx:16
 AliMCInfo.cxx:17
 AliMCInfo.cxx:18
 AliMCInfo.cxx:19
 AliMCInfo.cxx:20
 AliMCInfo.cxx:21
 AliMCInfo.cxx:22
 AliMCInfo.cxx:23
 AliMCInfo.cxx:24
 AliMCInfo.cxx:25
 AliMCInfo.cxx:26
 AliMCInfo.cxx:27
 AliMCInfo.cxx:28
 AliMCInfo.cxx:29
 AliMCInfo.cxx:30
 AliMCInfo.cxx:31
 AliMCInfo.cxx:32
 AliMCInfo.cxx:33
 AliMCInfo.cxx:34
 AliMCInfo.cxx:35
 AliMCInfo.cxx:36
 AliMCInfo.cxx:37
 AliMCInfo.cxx:38
 AliMCInfo.cxx:39
 AliMCInfo.cxx:40
 AliMCInfo.cxx:41
 AliMCInfo.cxx:42
 AliMCInfo.cxx:43
 AliMCInfo.cxx:44
 AliMCInfo.cxx:45
 AliMCInfo.cxx:46
 AliMCInfo.cxx:47
 AliMCInfo.cxx:48
 AliMCInfo.cxx:49
 AliMCInfo.cxx:50
 AliMCInfo.cxx:51
 AliMCInfo.cxx:52
 AliMCInfo.cxx:53
 AliMCInfo.cxx:54
 AliMCInfo.cxx:55
 AliMCInfo.cxx:56
 AliMCInfo.cxx:57
 AliMCInfo.cxx:58
 AliMCInfo.cxx:59
 AliMCInfo.cxx:60
 AliMCInfo.cxx:61
 AliMCInfo.cxx:62
 AliMCInfo.cxx:63
 AliMCInfo.cxx:64
 AliMCInfo.cxx:65
 AliMCInfo.cxx:66
 AliMCInfo.cxx:67
 AliMCInfo.cxx:68
 AliMCInfo.cxx:69
 AliMCInfo.cxx:70
 AliMCInfo.cxx:71
 AliMCInfo.cxx:72
 AliMCInfo.cxx:73
 AliMCInfo.cxx:74
 AliMCInfo.cxx:75
 AliMCInfo.cxx:76
 AliMCInfo.cxx:77
 AliMCInfo.cxx:78
 AliMCInfo.cxx:79
 AliMCInfo.cxx:80
 AliMCInfo.cxx:81
 AliMCInfo.cxx:82
 AliMCInfo.cxx:83
 AliMCInfo.cxx:84
 AliMCInfo.cxx:85
 AliMCInfo.cxx:86
 AliMCInfo.cxx:87
 AliMCInfo.cxx:88
 AliMCInfo.cxx:89
 AliMCInfo.cxx:90
 AliMCInfo.cxx:91
 AliMCInfo.cxx:92
 AliMCInfo.cxx:93
 AliMCInfo.cxx:94
 AliMCInfo.cxx:95
 AliMCInfo.cxx:96
 AliMCInfo.cxx:97
 AliMCInfo.cxx:98
 AliMCInfo.cxx:99
 AliMCInfo.cxx:100
 AliMCInfo.cxx:101
 AliMCInfo.cxx:102
 AliMCInfo.cxx:103
 AliMCInfo.cxx:104
 AliMCInfo.cxx:105
 AliMCInfo.cxx:106
 AliMCInfo.cxx:107
 AliMCInfo.cxx:108
 AliMCInfo.cxx:109
 AliMCInfo.cxx:110
 AliMCInfo.cxx:111
 AliMCInfo.cxx:112
 AliMCInfo.cxx:113
 AliMCInfo.cxx:114
 AliMCInfo.cxx:115
 AliMCInfo.cxx:116
 AliMCInfo.cxx:117
 AliMCInfo.cxx:118
 AliMCInfo.cxx:119
 AliMCInfo.cxx:120
 AliMCInfo.cxx:121
 AliMCInfo.cxx:122
 AliMCInfo.cxx:123
 AliMCInfo.cxx:124
 AliMCInfo.cxx:125
 AliMCInfo.cxx:126
 AliMCInfo.cxx:127
 AliMCInfo.cxx:128
 AliMCInfo.cxx:129
 AliMCInfo.cxx:130
 AliMCInfo.cxx:131
 AliMCInfo.cxx:132
 AliMCInfo.cxx:133
 AliMCInfo.cxx:134
 AliMCInfo.cxx:135
 AliMCInfo.cxx:136
 AliMCInfo.cxx:137
 AliMCInfo.cxx:138
 AliMCInfo.cxx:139
 AliMCInfo.cxx:140
 AliMCInfo.cxx:141
 AliMCInfo.cxx:142
 AliMCInfo.cxx:143
 AliMCInfo.cxx:144
 AliMCInfo.cxx:145
 AliMCInfo.cxx:146
 AliMCInfo.cxx:147
 AliMCInfo.cxx:148
 AliMCInfo.cxx:149
 AliMCInfo.cxx:150
 AliMCInfo.cxx:151
 AliMCInfo.cxx:152
 AliMCInfo.cxx:153
 AliMCInfo.cxx:154
 AliMCInfo.cxx:155
 AliMCInfo.cxx:156
 AliMCInfo.cxx:157
 AliMCInfo.cxx:158
 AliMCInfo.cxx:159
 AliMCInfo.cxx:160
 AliMCInfo.cxx:161
 AliMCInfo.cxx:162
 AliMCInfo.cxx:163
 AliMCInfo.cxx:164
 AliMCInfo.cxx:165
 AliMCInfo.cxx:166
 AliMCInfo.cxx:167
 AliMCInfo.cxx:168
 AliMCInfo.cxx:169
 AliMCInfo.cxx:170
 AliMCInfo.cxx:171
 AliMCInfo.cxx:172
 AliMCInfo.cxx:173
 AliMCInfo.cxx:174
 AliMCInfo.cxx:175
 AliMCInfo.cxx:176
 AliMCInfo.cxx:177
 AliMCInfo.cxx:178
 AliMCInfo.cxx:179
 AliMCInfo.cxx:180
 AliMCInfo.cxx:181
 AliMCInfo.cxx:182
 AliMCInfo.cxx:183
 AliMCInfo.cxx:184
 AliMCInfo.cxx:185
 AliMCInfo.cxx:186
 AliMCInfo.cxx:187
 AliMCInfo.cxx:188
 AliMCInfo.cxx:189
 AliMCInfo.cxx:190
 AliMCInfo.cxx:191
 AliMCInfo.cxx:192
 AliMCInfo.cxx:193
 AliMCInfo.cxx:194
 AliMCInfo.cxx:195
 AliMCInfo.cxx:196
 AliMCInfo.cxx:197
 AliMCInfo.cxx:198
 AliMCInfo.cxx:199
 AliMCInfo.cxx:200
 AliMCInfo.cxx:201
 AliMCInfo.cxx:202
 AliMCInfo.cxx:203
 AliMCInfo.cxx:204
 AliMCInfo.cxx:205
 AliMCInfo.cxx:206
 AliMCInfo.cxx:207
 AliMCInfo.cxx:208
 AliMCInfo.cxx:209
 AliMCInfo.cxx:210
 AliMCInfo.cxx:211
 AliMCInfo.cxx:212
 AliMCInfo.cxx:213
 AliMCInfo.cxx:214
 AliMCInfo.cxx:215
 AliMCInfo.cxx:216
 AliMCInfo.cxx:217
 AliMCInfo.cxx:218
 AliMCInfo.cxx:219
 AliMCInfo.cxx:220
 AliMCInfo.cxx:221
 AliMCInfo.cxx:222
 AliMCInfo.cxx:223
 AliMCInfo.cxx:224
 AliMCInfo.cxx:225
 AliMCInfo.cxx:226
 AliMCInfo.cxx:227
 AliMCInfo.cxx:228
 AliMCInfo.cxx:229
 AliMCInfo.cxx:230
 AliMCInfo.cxx:231
 AliMCInfo.cxx:232
 AliMCInfo.cxx:233
 AliMCInfo.cxx:234
 AliMCInfo.cxx:235
 AliMCInfo.cxx:236
 AliMCInfo.cxx:237
 AliMCInfo.cxx:238
 AliMCInfo.cxx:239
 AliMCInfo.cxx:240
 AliMCInfo.cxx:241
 AliMCInfo.cxx:242
 AliMCInfo.cxx:243
 AliMCInfo.cxx:244
 AliMCInfo.cxx:245
 AliMCInfo.cxx:246
 AliMCInfo.cxx:247
 AliMCInfo.cxx:248
 AliMCInfo.cxx:249
 AliMCInfo.cxx:250
 AliMCInfo.cxx:251
 AliMCInfo.cxx:252
 AliMCInfo.cxx:253
 AliMCInfo.cxx:254
 AliMCInfo.cxx:255
 AliMCInfo.cxx:256
 AliMCInfo.cxx:257
 AliMCInfo.cxx:258
 AliMCInfo.cxx:259
 AliMCInfo.cxx:260
 AliMCInfo.cxx:261
 AliMCInfo.cxx:262
 AliMCInfo.cxx:263
 AliMCInfo.cxx:264
 AliMCInfo.cxx:265
 AliMCInfo.cxx:266
 AliMCInfo.cxx:267
 AliMCInfo.cxx:268
 AliMCInfo.cxx:269
 AliMCInfo.cxx:270
 AliMCInfo.cxx:271
 AliMCInfo.cxx:272
 AliMCInfo.cxx:273
 AliMCInfo.cxx:274
 AliMCInfo.cxx:275
 AliMCInfo.cxx:276
 AliMCInfo.cxx:277
 AliMCInfo.cxx:278
 AliMCInfo.cxx:279
 AliMCInfo.cxx:280
 AliMCInfo.cxx:281
 AliMCInfo.cxx:282
 AliMCInfo.cxx:283
 AliMCInfo.cxx:284
 AliMCInfo.cxx:285
 AliMCInfo.cxx:286
 AliMCInfo.cxx:287
 AliMCInfo.cxx:288
 AliMCInfo.cxx:289
 AliMCInfo.cxx:290
 AliMCInfo.cxx:291
 AliMCInfo.cxx:292
 AliMCInfo.cxx:293
 AliMCInfo.cxx:294
 AliMCInfo.cxx:295
 AliMCInfo.cxx:296
 AliMCInfo.cxx:297
 AliMCInfo.cxx:298
 AliMCInfo.cxx:299
 AliMCInfo.cxx:300
 AliMCInfo.cxx:301
 AliMCInfo.cxx:302
 AliMCInfo.cxx:303
 AliMCInfo.cxx:304
 AliMCInfo.cxx:305
 AliMCInfo.cxx:306
 AliMCInfo.cxx:307
 AliMCInfo.cxx:308
 AliMCInfo.cxx:309
 AliMCInfo.cxx:310
 AliMCInfo.cxx:311
 AliMCInfo.cxx:312
 AliMCInfo.cxx:313
 AliMCInfo.cxx:314
 AliMCInfo.cxx:315
 AliMCInfo.cxx:316
 AliMCInfo.cxx:317
 AliMCInfo.cxx:318
 AliMCInfo.cxx:319
 AliMCInfo.cxx:320
 AliMCInfo.cxx:321
 AliMCInfo.cxx:322
 AliMCInfo.cxx:323
 AliMCInfo.cxx:324
 AliMCInfo.cxx:325
 AliMCInfo.cxx:326
 AliMCInfo.cxx:327
 AliMCInfo.cxx:328
 AliMCInfo.cxx:329
 AliMCInfo.cxx:330
 AliMCInfo.cxx:331
 AliMCInfo.cxx:332
 AliMCInfo.cxx:333
 AliMCInfo.cxx:334
 AliMCInfo.cxx:335
 AliMCInfo.cxx:336
 AliMCInfo.cxx:337
 AliMCInfo.cxx:338
 AliMCInfo.cxx:339
 AliMCInfo.cxx:340
 AliMCInfo.cxx:341
 AliMCInfo.cxx:342
 AliMCInfo.cxx:343
 AliMCInfo.cxx:344
 AliMCInfo.cxx:345
 AliMCInfo.cxx:346
 AliMCInfo.cxx:347
 AliMCInfo.cxx:348
 AliMCInfo.cxx:349
 AliMCInfo.cxx:350
 AliMCInfo.cxx:351
 AliMCInfo.cxx:352
 AliMCInfo.cxx:353
 AliMCInfo.cxx:354
 AliMCInfo.cxx:355
 AliMCInfo.cxx:356
 AliMCInfo.cxx:357
 AliMCInfo.cxx:358
 AliMCInfo.cxx:359
 AliMCInfo.cxx:360
 AliMCInfo.cxx:361
 AliMCInfo.cxx:362
 AliMCInfo.cxx:363
 AliMCInfo.cxx:364
 AliMCInfo.cxx:365
 AliMCInfo.cxx:366
 AliMCInfo.cxx:367
 AliMCInfo.cxx:368
 AliMCInfo.cxx:369
 AliMCInfo.cxx:370
 AliMCInfo.cxx:371
 AliMCInfo.cxx:372
 AliMCInfo.cxx:373
 AliMCInfo.cxx:374
 AliMCInfo.cxx:375
 AliMCInfo.cxx:376
 AliMCInfo.cxx:377
 AliMCInfo.cxx:378
 AliMCInfo.cxx:379
 AliMCInfo.cxx:380
 AliMCInfo.cxx:381
 AliMCInfo.cxx:382
 AliMCInfo.cxx:383
 AliMCInfo.cxx:384
 AliMCInfo.cxx:385
 AliMCInfo.cxx:386
 AliMCInfo.cxx:387
 AliMCInfo.cxx:388
 AliMCInfo.cxx:389
 AliMCInfo.cxx:390
 AliMCInfo.cxx:391
 AliMCInfo.cxx:392
 AliMCInfo.cxx:393
 AliMCInfo.cxx:394
 AliMCInfo.cxx:395
 AliMCInfo.cxx:396
 AliMCInfo.cxx:397
 AliMCInfo.cxx:398
 AliMCInfo.cxx:399
 AliMCInfo.cxx:400
 AliMCInfo.cxx:401
 AliMCInfo.cxx:402
 AliMCInfo.cxx:403
 AliMCInfo.cxx:404
 AliMCInfo.cxx:405
 AliMCInfo.cxx:406
 AliMCInfo.cxx:407
 AliMCInfo.cxx:408
 AliMCInfo.cxx:409
 AliMCInfo.cxx:410
 AliMCInfo.cxx:411
 AliMCInfo.cxx:412
 AliMCInfo.cxx:413
 AliMCInfo.cxx:414
 AliMCInfo.cxx:415
 AliMCInfo.cxx:416
 AliMCInfo.cxx:417
 AliMCInfo.cxx:418
 AliMCInfo.cxx:419
 AliMCInfo.cxx:420
 AliMCInfo.cxx:421
 AliMCInfo.cxx:422
 AliMCInfo.cxx:423
 AliMCInfo.cxx:424
 AliMCInfo.cxx:425
 AliMCInfo.cxx:426
 AliMCInfo.cxx:427
 AliMCInfo.cxx:428
 AliMCInfo.cxx:429
 AliMCInfo.cxx:430
 AliMCInfo.cxx:431
 AliMCInfo.cxx:432
 AliMCInfo.cxx:433
 AliMCInfo.cxx:434
 AliMCInfo.cxx:435
 AliMCInfo.cxx:436
 AliMCInfo.cxx:437
 AliMCInfo.cxx:438
 AliMCInfo.cxx:439
 AliMCInfo.cxx:440
 AliMCInfo.cxx:441
 AliMCInfo.cxx:442
 AliMCInfo.cxx:443
 AliMCInfo.cxx:444
 AliMCInfo.cxx:445
 AliMCInfo.cxx:446
 AliMCInfo.cxx:447
 AliMCInfo.cxx:448
 AliMCInfo.cxx:449
 AliMCInfo.cxx:450
 AliMCInfo.cxx:451
 AliMCInfo.cxx:452
 AliMCInfo.cxx:453
 AliMCInfo.cxx:454
 AliMCInfo.cxx:455
 AliMCInfo.cxx:456
 AliMCInfo.cxx:457
 AliMCInfo.cxx:458
 AliMCInfo.cxx:459
 AliMCInfo.cxx:460
 AliMCInfo.cxx:461
 AliMCInfo.cxx:462
 AliMCInfo.cxx:463
 AliMCInfo.cxx:464
 AliMCInfo.cxx:465
 AliMCInfo.cxx:466
 AliMCInfo.cxx:467
 AliMCInfo.cxx:468
 AliMCInfo.cxx:469
 AliMCInfo.cxx:470
 AliMCInfo.cxx:471
 AliMCInfo.cxx:472
 AliMCInfo.cxx:473
 AliMCInfo.cxx:474
 AliMCInfo.cxx:475
 AliMCInfo.cxx:476
 AliMCInfo.cxx:477
 AliMCInfo.cxx:478
 AliMCInfo.cxx:479
 AliMCInfo.cxx:480
 AliMCInfo.cxx:481
 AliMCInfo.cxx:482
 AliMCInfo.cxx:483
 AliMCInfo.cxx:484
 AliMCInfo.cxx:485
 AliMCInfo.cxx:486
 AliMCInfo.cxx:487
 AliMCInfo.cxx:488
 AliMCInfo.cxx:489
 AliMCInfo.cxx:490
 AliMCInfo.cxx:491
 AliMCInfo.cxx:492
 AliMCInfo.cxx:493
 AliMCInfo.cxx:494
 AliMCInfo.cxx:495
 AliMCInfo.cxx:496
 AliMCInfo.cxx:497
 AliMCInfo.cxx:498
 AliMCInfo.cxx:499
 AliMCInfo.cxx:500
 AliMCInfo.cxx:501
 AliMCInfo.cxx:502
 AliMCInfo.cxx:503
 AliMCInfo.cxx:504
 AliMCInfo.cxx:505
 AliMCInfo.cxx:506
 AliMCInfo.cxx:507
 AliMCInfo.cxx:508
 AliMCInfo.cxx:509
 AliMCInfo.cxx:510
 AliMCInfo.cxx:511
 AliMCInfo.cxx:512