ROOT logo
#include "AliFMDMCTrackELoss.h"
#include "AliESDFMD.h"
#include "AliTrackReference.h"
#include <TMath.h>
#include "AliFMDStripIndex.h"
#include "AliFMDEncodedEdx.h"
#include "AliLog.h"
#include "AliMCParticle.h"
#include <TH2D.h>
#include <TH1D.h>
#include <TList.h>
#include <TROOT.h>
#include <TTree.h>
#include <TLorentzVector.h>
#include <TParticle.h>
#include <TClonesArray.h>
#include <iostream>

//====================================================================
void
AliFMDMCTrackELoss::State::Clear(Bool_t alsoCount)
{
  angle       = 0;
  oldDetector = 0;
  oldRing     = '\0';
  oldSector   = 1024;
  oldStrip    = 1024;
  startStrip  = 1024;
  nRefs       = 0;
  nStrips     = 0;
  longest     = 0x0;
  de          = 0;
  dx          = 0;      
  if (alsoCount) count = 0;
}

//____________________________________________________________________
AliFMDMCTrackELoss::State&
AliFMDMCTrackELoss::State::operator=(const State& o)
{
  if (&o == this) return *this;
  angle          = o.angle;
  oldDetector    = o.oldDetector;
  oldRing        = o.oldRing;
  oldSector      = o.oldSector;
  oldStrip       = o.oldStrip;
  startStrip     = o.startStrip;
  nRefs          = o.nRefs;
  nStrips        = o.nStrips;
  count          = o.count;
  longest        = o.longest;
  de             = o.de;
  dx             = o.dx;      
  return *this;
}

//====================================================================
AliFMDMCTrackELoss::Hit::Hit() 
  : fGamma(0), fBeta(0), fEta(0), fDe(0), fDx(0), fDetId(0), fPdg(0), 
    fPrimary(true), fDetector(0), fRing('\0'), 
    fSector(0xFFFF), fStrip(0xFFFF)
{}
//____________________________________________________________________
void 
AliFMDMCTrackELoss::Hit::Decode() const
{ 
  if (fDetector > 0) return;
  AliFMDStripIndex::Unpack(fDetId, fDetector, fRing, fSector, fStrip);
}
//____________________________________________________________________
UInt_t
AliFMDMCTrackELoss::Hit::AbsPdg() const 
{ 
  return TMath::Abs(fPdg); 
}

//====================================================================
AliFMDMCTrackELoss::AliFMDMCTrackELoss()
  : AliBaseMCTrackDensity(), 
    fState(),
    fEvent(),
    fMaxConsequtiveStrips(3), 
    fUseTree(false), 
    fHits(0),
    fTree(0),
    fNr(0), 
    fNt(0), 
    fNc(0),
    fNcr(0),
    fBetaGammadEdx(0),
    fBetaGammaEta(0),
    fDEdxEta(0),
    fPrimaries(0),
    fSecondaries(0),
    fAll(0),
    fEta(0)
{
  // Default constructor 
}

//____________________________________________________________________
AliFMDMCTrackELoss::AliFMDMCTrackELoss(const char*)
  : AliBaseMCTrackDensity("fmdMCTrackELoss"), 
    fState(),
    fEvent(),
    fMaxConsequtiveStrips(3), 
    fUseTree(false), 
    fHits(0),
    fTree(0),
    fNr(0), 
    fNt(0), 
    fNc(0),
    fNcr(0),
    fBetaGammadEdx(0),
    fBetaGammaEta(0),
    fDEdxEta(0),
    fPrimaries(0),
    fSecondaries(0),
    fAll(0),
    fEta(0)
{
  // Normal constructor constructor 
  SetTitle("mcTrackELoss");
  fHits = new TClonesArray("AliFMDMCTrackELoss::Hit");
}

#if 0
//____________________________________________________________________
AliFMDMCTrackELoss::AliFMDMCTrackELoss(const AliFMDMCTrackELoss& o)
  : AliBaseMCTrackDensity(o),
    fState(o.fState),
    fMaxConsequtiveStrips(o.fMaxConsequtiveStrips), 
    fNr(o.fNr), 
    fNt(o.fNt), 
    fNc(o.fNc),
    fNcr(o.fNcr),
    fOutput(o.fOutput)
{
  // Normal constructor constructor 
}

//____________________________________________________________________
AliFMDMCTrackELoss&
AliFMDMCTrackELoss::operator=(const AliFMDMCTrackELoss& o)
{
  // Assignment operator 
  if (&o == this) return *this; 
  AliBaseMCTrackDensity::operator=(o);
  fMaxConsequtiveStrips = o.fMaxConsequtiveStrips;
  fUseTree             = o.fUseTree;
  fNr                   = o.fNr;
  fNt                   = o.fNt;
  fNc                   = o.fNc;
  fNcr                  = o.fNcr;
  fState                = o.fState;

  if (o.fTree) 
    fTree               = static_cast<TTree*>(o.fTree->Clone());

  return *this;
}
#endif

//____________________________________________________________________
void
AliFMDMCTrackELoss::CreateOutputObjects(TList* l)
{
  AliBaseMCTrackDensity::CreateOutputObjects(l);
  TList* ll = static_cast<TList*>(l->FindObject(GetTitle()));
  if (!ll) ll = l;

  fNr = new TH1D("clusterRefs", "# track references per cluster",
		 21, -.5, 20.5);
  fNr->SetXTitle("# of track references/cluster");
  fNr->SetFillColor(kRed+1);
  fNr->SetFillStyle(3001);
  fNr->SetDirectory(0);
  ll->Add(fNr);

  fNt = new TH1D("clusterSize", "cluster length in strips", 21, -.5, 20.5);
  fNt->SetXTitle("Cluster size [strips]");
  fNt->SetFillColor(kBlue+1);
  fNt->SetFillStyle(3001);
  fNt->SetDirectory(0);
  ll->Add(fNt);

  fNc = new TH1D("nClusters", "# clusters per track", 21, -.5, 20.5);
  fNc->SetXTitle("# clusters");
  fNc->SetFillColor(kGreen+1);
  fNc->SetFillStyle(3001);
  fNc->SetDirectory(0);
  ll->Add(fNc);

  fNcr = new TH2D("clusterVsRefs", "# clusters vs. # refs", 
		  21, -.5, 20.5, 21, -.5, 20.5);
  fNcr->SetXTitle("# References");
  fNcr->SetYTitle("# Clusters");
  fNcr->SetOption("COLZ");
  fNcr->SetDirectory(0);
  ll->Add(fNcr);
  

  TArrayD edepArray;
  TArrayD bgArray(601);
  AliFMDEncodedEdx::GetdEAxis().FillBinArray(edepArray);
  AliForwardUtil::MakeLogScale(600, -2, 5, bgArray);
  for (Int_t i = 0; i < edepArray.GetSize(); i++) 
    edepArray[i] *= 10;

  fBetaGammadEdx = new TH2D("betaGammadEdx", "Energy loss", 
			    bgArray.GetSize()-1, bgArray.GetArray(),
			    edepArray.GetSize()-1, edepArray.GetArray());
  fBetaGammadEdx->SetDirectory(0);
  fBetaGammadEdx->SetXTitle("#it{#beta#gamma}");
  fBetaGammadEdx->SetYTitle("d#it{#Delta}/d#it{x}");
  fBetaGammadEdx->Sumw2();
  ll->Add(fBetaGammadEdx);
  
  fBetaGammaEta = new TH2D("betaGammaEta", "#beta#gamma", 
			   200, -4, 6, bgArray.GetSize()-1, bgArray.GetArray());
  fBetaGammaEta->SetXTitle("#eta");
  fBetaGammaEta->SetYTitle("#it{#beta#gamma}");
  fBetaGammaEta->Sumw2();
  ll->Add(fBetaGammaEta);

  fDEdxEta = new TH2D("dEdxEta", "d#it{#Delta}/d#it{x}", 
		      200, -4, 6, edepArray.GetSize()-1, edepArray.GetArray());
  fDEdxEta->SetXTitle("#eta");
  fDEdxEta->SetYTitle("d#it{#Delta}/d#it{x}");
  fDEdxEta->Sumw2();
  ll->Add(fDEdxEta);

  if (!fUseTree) return;

  fTree  = new TTree("tree", "Tree of hits");
  fTree->Branch("event", &fEvent, "ipZ/D:cent");
  fTree->Branch("hits", &fHits);
}

//____________________________________________________________________
void
AliFMDMCTrackELoss::Clear(Option_t*)
{
  fPrimaries.Reset(0);
  fSecondaries.Reset(0);
  fAll.Reset(0);
  fEta.Reset(AliESDFMD::kInvalidEta);
  fHits->Clear();
}

//____________________________________________________________________
Int_t
AliFMDMCTrackELoss::GetDetectorId() const
{
  return AliTrackReference::kFMD;
}

//____________________________________________________________________
void
AliFMDMCTrackELoss::BeginTrackRefs()
{
  fState.Clear(true);
}

//____________________________________________________________________
void
AliFMDMCTrackELoss::EndTrackRefs(Int_t nRefs)
{
  fNc->Fill(fState.count);
  fNcr->Fill(nRefs, fState.count);
  fState.Clear(true);
}
  
//____________________________________________________________________
AliTrackReference*
AliFMDMCTrackELoss::ProcessRef(AliMCParticle*       particle,
			       const AliMCParticle* mother,
			       AliTrackReference*   ref)
{
  // Get the detector coordinates 
  UShort_t d, s, t;
  Char_t r;
  AliFMDStripIndex::Unpack(ref->UserId(), d, r, s, t);
  Double_t edep, length, dEdep, dLength;
  AliFMDEncodedEdx::Decode((ref->UserId() >> 19), edep, length, dEdep, dLength);

		 
		 
		 
  // Calculate distance of previous reference to base of cluster 
  UShort_t nT = TMath::Abs(t - fState.startStrip) + 1;

  // Now check if we should flush to output 
  Bool_t used = false;

  // If this is a new detector/ring, then reset the other one 
  // Check if we have a valid old detectorm ring, and sector 
  if (fState.oldDetector >  0 && 
      fState.oldRing     != '\0' && 
      fState.oldSector   != 1024) {
    // New detector, new ring, or new sector 
    if (d != fState.oldDetector   || 
	r != fState.oldRing       || 
	s != fState.oldSector) {
      if (fDebug) Info("Process", "New because new sector");
      used = true;
    }
    else if (nT > fMaxConsequtiveStrips) {
      if (fDebug) Info("Process", "New because too long: %d (%d,%d,%d)", 
		       fState.nStrips, t, fState.oldStrip, fState.startStrip);
      used = true;
    }
  }
  if (used) {
    if (fDebug) 
      Info("Process", "I=%p L=%p D=%d (was %d), R=%c (was %c), "
	   "S=%2d (was %2d) t=%3d (was %3d) nT=%3d/%4d",
	   ref, fState.longest, 
	   d, fState.oldDetector, 
	   r, fState.oldRing, 
	   s, fState.oldSector, 
	   t, fState.oldStrip, 
	   fState.nStrips, fMaxConsequtiveStrips);
    // Int_t nnT   = TMath::Abs(fState.oldStrip - fState.startStrip) + 1;
    StoreParticle(particle, mother, fState.longest);
    fState.Clear(false);
  }

  // If base of cluster not set, set it here. 
  if (fState.startStrip == 1024) fState.startStrip = t;
  
  // Calculate distance of previous reference to base of cluster 
  fState.nStrips = TMath::Abs(t - fState.startStrip) + 1;

  // Count number of track refs in this sector 
  fState.nRefs++;

  fState.oldDetector = d;
  fState.oldRing     = r;
  fState.oldSector   = s;
  fState.oldStrip    = t;
  fState.de          += edep;
  fState.dx          += length;

  // Debug output 
  if (fDebug) {
    if (t == fState.startStrip) 
      Info("Process", "New cluster starting at FMD%d%c[%2d,%3d]", 
	   d, r, s, t);
    else 
      Info("Process", "Adding to cluster starting at FMD%d%c[%2d,%3d], "
	   "length=%3d (now in %3d, previous %3d)", 
	   d, r, s, fState.startStrip, fState.nStrips, t, fState.oldStrip);
  }
    
  // The longest passage is determined through the angle 
  Double_t ang  = GetTrackRefTheta(ref);
  if (ang > fState.angle) {
    fState.longest = ref;
    fState.angle   = ang;
  }

  return fState.longest;
}

//____________________________________________________________________
Double_t
AliFMDMCTrackELoss::StoreParticle(AliMCParticle*       particle, 
				  const AliMCParticle* mother, 
				  AliTrackReference*   ref) const
{
  Double_t w = 
    AliBaseMCTrackDensity::StoreParticle(particle, mother, ref);
  if (w <= 0) return w;

  // Get the detector coordinates 
  UShort_t d, s, t;
  Char_t r;
  AliFMDStripIndex::Unpack(ref->UserId(), d, r, s, t);
  
  Double_t de   = fState.de;
  Double_t dx   = fState.dx;
  Bool_t   prim = particle == mother;
  fAll(d,r,s,t) += de;
  if (prim) fPrimaries(d,r,s,t)   += de;
  else      fSecondaries(d,r,s,t) += de;

  // Fill histograms 
  fNr->Fill(fState.nRefs);
  fNt->Fill(fState.nStrips);

  fState.count++;

  if (de <= 0 || dx <= 0) return w;
  
  TLorentzVector v;  
  particle->Particle()->Momentum(v);
  if (v.E() <= 0) return w;
  if (v.Beta() < 0 || v.Beta() > 1) return w;

  Double_t eta   = fEta(d,r,s,t);
  Double_t beta  = v.Beta();
  Double_t gamma = v.Gamma();
  Double_t dEdx  = de/dx;


  fBetaGammadEdx->Fill(beta*gamma, dEdx);
  fBetaGammaEta->Fill(eta, beta*gamma);
  fDEdxEta->Fill(eta, dEdx);

  Int_t nHits = fHits->GetEntries();
  Hit* hit = new((*fHits)[nHits]) Hit;
  hit->fPrimary   = prim;
  hit->fEta       = eta;
  hit->fDe        = de;
  hit->fDx        = dx;
  hit->fDetId     = ref->UserId() & AliFMDStripIndex::kIdMask;
  hit->fBeta      = beta;
  hit->fGamma     = gamma;
  hit->fPdg       = particle->PdgCode();

  return w;
}  

//____________________________________________________________________
Bool_t
AliFMDMCTrackELoss::Calculate(const AliESDFMD&  input, 
			      const AliMCEvent& event,
			      Double_t          vz,
			      Double_t          cent)
{
  // 
  // 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 
  //
  Clear();
  fEvent.fCent = cent;
  fEvent.fIpZ  = vz;

  // Copy eta values to output 
  for (UShort_t ed = 1; ed <= 3; ed++) { 
    UShort_t nq = (ed == 1 ? 1 : 2);
    for (UShort_t eq = 0; eq < nq; eq++) {
      Char_t   er = (eq == 0 ? 'I' : 'O');
      UShort_t ns = (eq == 0 ?  20 :  40);
      UShort_t nt = (eq == 0 ? 512 : 256);
      for (UShort_t es = 0; es < ns; es++) 
	for (UShort_t et = 0; et < nt; et++) 
	  fEta(ed, er, es, et) = input.Eta(ed, er, es, et);
    }
  }

  Bool_t ret = ProcessTracks(event, vz, 0);

  if (fTree) fTree->Fill();

  return ret;
}

#define PFV(N,VALUE)					\
  do {							\
    AliForwardUtil::PrintName(N);			\
    std::cout << (VALUE) << std::endl; } while(false)
//____________________________________________________________________
void
AliFMDMCTrackELoss::Print(Option_t* option) const 
{
  AliBaseMCTrackDensity::Print(option);
  gROOT->IncreaseDirLevel();
  PFV("Max cluster size", fMaxConsequtiveStrips);
  gROOT->DecreaseDirLevel();
}

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