ROOT logo
#include "AliBaseMCTrackDensity.h"
#include <AliMCEvent.h>
#include <AliTrackReference.h>
#include <AliStack.h>
#include <TMath.h>
#include <AliLog.h>
#include <TH2D.h>
#include <TH1D.h>
#include <TList.h>
#include <TROOT.h>
#include <iostream>
#include "AliCollisionGeometry.h"
#include "AliGenEventHeader.h"
#include "AliForwardUtil.h"
#include <TF1.h>
#include <TGraph.h>

//____________________________________________________________________
AliBaseMCTrackDensity::AliBaseMCTrackDensity()
  : TNamed(), 
    fUseOnlyPrimary(false), 
    fUseFlowWeights(false),
    fBinFlow(0), 
    fEtaBinFlow(0),
    fPhiBinFlow(0),
    fNRefs(0),
    fWeights(),
    fVz(0), 
    fB(0),
    fPhiR(0),
    fDebug(false)
{
  // Default constructor 
  DGUARD(fDebug, 3,"Default CTOR of AliBasMCTrackDensity");
}

//____________________________________________________________________
AliBaseMCTrackDensity::AliBaseMCTrackDensity(const char* name)
  : TNamed(name,"mcTrackDensity"), 
    fUseOnlyPrimary(false), 
    fUseFlowWeights(false),
    fBinFlow(0), 
    fEtaBinFlow(0),
    fPhiBinFlow(0),
    fNRefs(0),
    fWeights(),
    fVz(0), 
    fB(0),
    fPhiR(0),
    fDebug(false)
{
  // Normal constructor constructor 
  DGUARD(fDebug, 3,"Named CTOR of AliBasMCTrackDensity: %s", name);
}

//____________________________________________________________________
AliBaseMCTrackDensity::AliBaseMCTrackDensity(const AliBaseMCTrackDensity& o)
  : TNamed(o),
    fUseOnlyPrimary(o.fUseOnlyPrimary), 
    fUseFlowWeights(o.fUseFlowWeights),
    fBinFlow(o.fBinFlow), 
    fEtaBinFlow(o.fEtaBinFlow),
    fPhiBinFlow(o.fPhiBinFlow),
    fNRefs(o.fNRefs),
    fWeights(o.fWeights),
    fVz(o.fVz), 
    fB(o.fB),
    fPhiR(o.fPhiR),
    fDebug(o.fDebug)
{
  // Normal constructor constructor 
  DGUARD(fDebug, 3,"Copy CTOR of AliBasMCTrackDensity");
}

//____________________________________________________________________
AliBaseMCTrackDensity&
AliBaseMCTrackDensity::operator=(const AliBaseMCTrackDensity& o)
{
  // Assignment operator 
  DGUARD(fDebug,3,"MC track density assignmetn");
  if (&o == this) return *this; 
  TNamed::operator=(o);
  fUseOnlyPrimary       = o.fUseOnlyPrimary;
  fBinFlow              = o.fBinFlow;
  fEtaBinFlow           = o.fEtaBinFlow;
  fPhiBinFlow           = o.fPhiBinFlow;
  fNRefs                = o.fNRefs;
  fDebug                = o.fDebug;
  fUseFlowWeights       = o.fUseFlowWeights;
  fWeights              = o.fWeights;
  fVz                   = o.fVz;
  fB                    = o.fB;
  fPhiR                 = o.fPhiR;
  return *this;
}

//____________________________________________________________________
void
AliBaseMCTrackDensity::CreateOutputObjects(TList* l)
{
  DGUARD(fDebug,1,"MC track defines output");
  TList* ll = new TList;
  ll->SetName(GetTitle());
  ll->SetOwner();
  l->Add(ll);
  
  fBinFlow = new TH2D("binFlow", "#eta and #varphi bin flow", 
		      200, -5, 5, 40, -180, 180);
  fBinFlow->SetXTitle("#Delta#eta");
  fBinFlow->SetYTitle("#Delta#varphi");
  fBinFlow->SetOption("colz");
  fBinFlow->SetDirectory(0);
  ll->Add(fBinFlow);

  fEtaBinFlow = new TH2D("binFlowEta", "#eta bin flow vs #eta", 
			 200, -4, 6, 200, -5, 5);
  fEtaBinFlow->SetXTitle("#eta");
  fEtaBinFlow->SetYTitle("#Delta#eta");
  fEtaBinFlow->SetOption("colz");
  fEtaBinFlow->SetDirectory(0);
  ll->Add(fEtaBinFlow);

  fPhiBinFlow = new TH2D("binFlowPhi", "#phi bin flow vs #phi", 
			 40, 0, 360, 40, -180, 180);
  fPhiBinFlow->SetXTitle("#varphi");
  fPhiBinFlow->SetYTitle("#Delta#varphi");
  fPhiBinFlow->SetOption("colz");
  fPhiBinFlow->SetDirectory(0);
  ll->Add(fPhiBinFlow);

  fNRefs = new TH1D("nRefs", "# references per track", 21, -.5, 20.5);
  fNRefs->SetXTitle("# references");
  fNRefs->SetFillColor(kMagenta+1);
  fNRefs->SetFillStyle(3001);
  fNRefs->SetDirectory(0);
  ll->Add(fNRefs);
  
  fWeights.Init(ll);
}


//____________________________________________________________________
Double_t
AliBaseMCTrackDensity::StoreParticle(AliMCParticle*       particle, 
				     const AliMCParticle* mother, 
				     AliTrackReference*   ref) const
{
  DGUARD(fDebug,3,"MC track density store particle");
  // Store a particle. 
  if (!ref) return 0;

  Double_t weight = 1;
  if (fUseFlowWeights) {
    Double_t phi = (mother ? mother->Phi() : particle->Phi());
    Double_t eta = (mother ? mother->Eta() : particle->Eta());
    Double_t pt  = (mother ? mother->Pt() : particle->Pt());
    Int_t    id  = (mother ? mother->PdgCode() : 2212);
    weight       = CalculateWeight(eta, pt, phi, id);
  }

  // Get track-reference stuff 
  Double_t x      = ref->X();
  Double_t y      = ref->Y();
  Double_t z      = ref->Z()-fVz;
  Double_t rr     = TMath::Sqrt(x*x+y*y);
  Double_t thetaR = TMath::ATan2(rr,z);
  Double_t phiR   = TMath::ATan2(y,x);
  Double_t etaR   = -TMath::Log(TMath::Tan(thetaR/2));
  
  // Correct angle and convert to degrees 
  if (thetaR < 0) thetaR += 2*TMath::Pi();
  thetaR *= 180. / TMath::Pi();
  if (phiR < 0) phiR += 2*TMath::Pi();
  phiR *= 180. / TMath::Pi();

  const AliMCParticle* mp = (mother ? mother : particle);
  Double_t dEta = mp->Eta() - etaR;
  Double_t dPhi = mp->Phi() * 180 / TMath::Pi() - phiR;
  if (dPhi >  180) dPhi -= 360;
  if (dPhi < -180) dPhi += 360;
  fBinFlow->Fill(dEta, dPhi);
  fEtaBinFlow->Fill(etaR, dEta);
  fPhiBinFlow->Fill(phiR, dPhi);

  return weight;
}

//____________________________________________________________________
Double_t
AliBaseMCTrackDensity::GetTrackRefTheta(const AliTrackReference* ref) const
{
  // Get the incidient angle of the track reference. 
  Double_t x    = ref->X();
  Double_t y    = ref->Y();
  Double_t z    = ref->Z()-fVz;
  Double_t rr   = TMath::Sqrt(x*x+y*y);
  Double_t theta= TMath::ATan2(rr,z);
  Double_t ang  = TMath::Abs(TMath::Pi()-theta);
  return ang;
}
				    
//____________________________________________________________________
const AliMCParticle*
AliBaseMCTrackDensity::GetMother(Int_t     iTr,
				const AliMCEvent& event) const
{
  // 
  // Track down primary mother 
  // 
  Int_t i  = iTr;
  do { 
    const AliMCParticle* p = static_cast<AliMCParticle*>(event.GetTrack(i));
    if (const_cast<AliMCEvent&>(event).Stack()->IsPhysicalPrimary(i)) return p;
    
    i = p->GetMother();
  } while (i > 0);

  return 0;
}  

//____________________________________________________________________
Bool_t
AliBaseMCTrackDensity::GetCollisionParameters(const AliMCEvent& event)
{ 
  DGUARD(fDebug,3,"MC track density get collision parameters");
  AliCollisionGeometry* hd = 
    dynamic_cast<AliCollisionGeometry*>(event.GenEventHeader());
  fPhiR = (hd ? hd->ReactionPlaneAngle() : 0.);
  fB    = (hd ? hd->ImpactParameter() : -1 );
  return hd != 0;
}

//____________________________________________________________________
Bool_t
AliBaseMCTrackDensity::ProcessTrack(AliMCParticle* particle, 
				    const AliMCParticle* mother)
{
  // Check the returned particle 
  DGUARD(fDebug,3,"MC track density Process a track");
  if (!particle) return false;
    
  Int_t              nTrRef = particle->GetNumberOfTrackReferences();
  AliTrackReference* store  = 0;

  BeginTrackRefs();

  // Double_t oTheta= 0;
  Int_t nRefs = 0;
  for (Int_t iTrRef = 0; iTrRef < nTrRef; iTrRef++) { 
    AliTrackReference* ref = particle->GetTrackReference(iTrRef);
      
    // Check existence 
    if (!ref) continue;

    // Check that we hit an Base element 
    if (ref->DetectorId() != GetDetectorId()) continue;
    if (!CheckTrackRef(ref)) continue;

    nRefs++;

    AliTrackReference* test = ProcessRef(particle, mother, ref);
    if (test) store = test;

  } // Loop over track references
  if (!store) return true; // Nothing found
  
  StoreParticle(particle, mother, store);

  fNRefs->Fill(nRefs);

  EndTrackRefs(nRefs);

  return true;
}


//____________________________________________________________________
Bool_t
AliBaseMCTrackDensity::ProcessTracks(const AliMCEvent& event,
				     Double_t          vz,
				     TH2D*             primary)
{
  // 
  // Filter the input kinematics and track references, using 
  // some of the ESD information
  // 
  // Parameters:
  //    input   Input ESD event
  //    event   Input MC event
  //    vz      Vertex position 
  //    output  Output ESD-like object
  //    primary Per-event histogram of primaries 
  //
  // Return:
  //    True on succes, false otherwise 
  //
  DGUARD(fDebug,3,"MC track density Process a tracks");
  fVz = vz;
  GetCollisionParameters(event);
  
  AliStack* stack = const_cast<AliMCEvent&>(event).Stack();
  Int_t nTracks   = stack->GetNtrack();//event.GetNumberOfTracks();
  Int_t nPrim     = stack->GetNprimary();//event.GetNumberOfPrimary();
  for (Int_t iTr = 0; iTr < nTracks; iTr++) { 
    AliMCParticle* particle = 
      static_cast<AliMCParticle*>(event.GetTrack(iTr));
    
    // Check if this charged and a primary 
    if (!particle->Charge() != 0) continue;
    
    Bool_t isPrimary = stack->IsPhysicalPrimary(iTr) && iTr < nPrim;
    
    // Fill 'dn/deta' histogram 
    if (isPrimary && primary) 
      primary->Fill(particle->Eta(), particle->Phi());

    // Bail out if we're only processing primaries - perhaps we should
    // track back to the original primary?
    if (fUseOnlyPrimary && !isPrimary) continue;

    const AliMCParticle* mother = isPrimary ? particle : GetMother(iTr, event);
    ProcessTrack(particle, mother);

  } // Loop over tracks
  return kTRUE;
}

  
//____________________________________________________________________
Double_t
AliBaseMCTrackDensity::CalculateWeight(Double_t eta, Double_t pt, 
				       Double_t phi, Int_t id) const
{
  return fWeights.CalcWeight(eta, pt, phi, id, fPhiR, fB);
}

#define PF(N,V,...)					\
  AliForwardUtil::PrintField(N,V, ## __VA_ARGS__)
#define PFB(N,FLAG)				\
  do {									\
    AliForwardUtil::PrintName(N);					\
    std::cout << std::boolalpha << (FLAG) << std::noboolalpha << std::endl; \
  } while(false)
#define PFV(N,VALUE)					\
  do {							\
    AliForwardUtil::PrintName(N);			\
    std::cout << (VALUE) << std::endl; } while(false)

//____________________________________________________________________
void
AliBaseMCTrackDensity::Print(Option_t* /*option*/) const 
{
  AliForwardUtil::PrintTask(*this);
  gROOT->IncreaseDirLevel();  
  PFB("Only primary tracks", fUseOnlyPrimary);
  PFB("Use flow after burner", fUseFlowWeights);
  gROOT->DecreaseDirLevel();
  
}

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