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

/* $Id$ */

//-------------------------------------------------------------------------
//               Implementation of the cascade vertex class
//              This is part of the Event Summary Data 
//              which contains the result of the reconstruction
//              and is the main set of classes for analaysis
//    Origin: Christian Kuhn, IReS, Strasbourg, christian.kuhn@ires.in2p3.fr
//     Modified by: Antonin Maire,IPHC, Antonin.Maire@ires.in2p3.fr
//            and  Boris Hippolyte,IPHC, hippolyt@in2p3.fr 
//-------------------------------------------------------------------------

#include <TDatabasePDG.h>
#include <TMath.h>
#include <TVector3.h>

#include "AliESDcascade.h"
#include "AliLog.h"

ClassImp(AliESDcascade)

AliESDcascade::AliESDcascade() : 
  AliESDv0(),
  fEffMassXi(TDatabasePDG::Instance()->GetParticle(kXiMinus)->Mass()),
  fChi2Xi(1024),
  fDcaXiDaughters(1024),
  fPdgCodeXi(kXiMinus),
  fBachIdx(-1)
{
  //--------------------------------------------------------------------
  // Default constructor  (Xi-)
  //--------------------------------------------------------------------
  for (Int_t j=0; j<3; j++) {
    fPosXi[j]=0.;
    fBachMom[j]=0.;
  }

  fPosCovXi[0]=1024;
  fPosCovXi[1]=fPosCovXi[2]=0.;
  fPosCovXi[3]=1024;
  fPosCovXi[4]=0.;
  fPosCovXi[5]=1024;

  fBachMomCov[0]=1024;
  fBachMomCov[1]=fBachMomCov[2]=0.;
  fBachMomCov[3]=1024;
  fBachMomCov[4]=0.;
  fBachMomCov[5]=1024;
}

AliESDcascade::AliESDcascade(const AliESDcascade& cas) :
  AliESDv0(cas),
  fEffMassXi(cas.fEffMassXi),
  fChi2Xi(cas.fChi2Xi),
  fDcaXiDaughters(cas.fDcaXiDaughters),
  fPdgCodeXi(cas.fPdgCodeXi),
  fBachIdx(cas.fBachIdx)
{
  //--------------------------------------------------------------------
  // The copy constructor
  //--------------------------------------------------------------------
  for (int i=0; i<3; i++) {
    fPosXi[i]     = cas.fPosXi[i];
    fBachMom[i] = cas.fBachMom[i];
  }
  for (int i=0; i<6; i++) {
    fPosCovXi[i]   = cas.fPosCovXi[i];
    fBachMomCov[i] = cas.fBachMomCov[i];
  }
}

AliESDcascade::AliESDcascade(const AliESDv0 &v,
			     const AliExternalTrackParam &t, Int_t i) : 
  AliESDv0(v),
  fEffMassXi(TDatabasePDG::Instance()->GetParticle(kXiMinus)->Mass()),
  fChi2Xi(1024),
  fDcaXiDaughters(1024),
  fPdgCodeXi(kXiMinus),
  fBachIdx(i)
{
  //--------------------------------------------------------------------
  // Main constructor  (Xi-)
  //--------------------------------------------------------------------

  Double_t r[3]; t.GetXYZ(r);
  Double_t x1=r[0], y1=r[1], z1=r[2]; // position of the bachelor
  Double_t p[3]; t.GetPxPyPz(p);
  Double_t px1=p[0], py1=p[1], pz1=p[2];// momentum of the bachelor track

  Double_t x2,y2,z2;          // position of the V0 
  v.GetXYZ(x2,y2,z2);    
  Double_t px2,py2,pz2;       // momentum of V0
  v.GetPxPyPz(px2,py2,pz2);

  Double_t a2=((x1-x2)*px2+(y1-y2)*py2+(z1-z2)*pz2)/(px2*px2+py2*py2+pz2*pz2);

  Double_t xm=x2+a2*px2;
  Double_t ym=y2+a2*py2;
  Double_t zm=z2+a2*pz2;

  // position of the cascade decay
  
  fPosXi[0]=0.5*(x1+xm); fPosXi[1]=0.5*(y1+ym); fPosXi[2]=0.5*(z1+zm);
    

  // invariant mass of the cascade (default is Ximinus)
  
  Double_t e1=TMath::Sqrt(0.13957*0.13957 + px1*px1 + py1*py1 + pz1*pz1);
  Double_t e2=TMath::Sqrt(1.11568*1.11568 + px2*px2 + py2*py2 + pz2*pz2);
  
  fEffMassXi=TMath::Sqrt((e1+e2)*(e1+e2)-
    (px1+px2)*(px1+px2)-(py1+py2)*(py1+py2)-(pz1+pz2)*(pz1+pz2));


  // momenta of the bachelor and the V0
  
  fBachMom[0]=px1; fBachMom[1]=py1; fBachMom[2]=pz1; 

  // Setting pdg code and fixing charge
  if (t.Charge()<0)
    fPdgCodeXi = kXiMinus;
  else
    fPdgCodeXi = kXiPlusBar;

  //PH Covariance matrices: to be calculated correctly in the future
  fPosCovXi[0]=1024;
  fPosCovXi[1]=fPosCovXi[2]=0.;
  fPosCovXi[3]=1024;
  fPosCovXi[4]=0.;
  fPosCovXi[5]=1024;

  fBachMomCov[0]=1024;
  fBachMomCov[1]=fBachMomCov[2]=0.;
  fBachMomCov[3]=1024;
  fBachMomCov[4]=0.;
  fBachMomCov[5]=1024;

  fChi2Xi=1024.; 

}

AliESDcascade& AliESDcascade::operator=(const AliESDcascade& cas)
{
  //--------------------------------------------------------------------
  // The assignment operator
  //--------------------------------------------------------------------

  if(this==&cas) return *this;
  AliESDv0::operator=(cas);

  fEffMassXi = cas.fEffMassXi;
  fChi2Xi    = cas.fChi2Xi;
  fDcaXiDaughters = cas.fDcaXiDaughters;
  fPdgCodeXi      = cas.fPdgCodeXi;
  fBachIdx        = cas.fBachIdx;
  for (int i=0; i<3; i++) {
    fPosXi[i]     = cas.fPosXi[i];
    fBachMom[i]   = cas.fBachMom[i];
  }
  for (int i=0; i<6; i++) {
    fPosCovXi[i]   = cas.fPosCovXi[i];
    fBachMomCov[i] = cas.fBachMomCov[i];
  }
  return *this;
}

void AliESDcascade::Copy(TObject &obj) const {
  
  // this overwrites the virtual TOBject::Copy()
  // to allow run time copying without casting
  // in AliESDEvent

  if(this==&obj)return;
  AliESDcascade *robj = dynamic_cast<AliESDcascade*>(&obj);
  if(!robj)return; // not an AliESDcascade
  *robj = *this;
}

AliESDcascade::~AliESDcascade() {
  //--------------------------------------------------------------------
  // Empty destructor
  //--------------------------------------------------------------------
}

// Start with AliVParticle functions
Double_t AliESDcascade::E() const {
  //--------------------------------------------------------------------
  // This gives the energy assuming the ChangeMassHypothesis was called
  //--------------------------------------------------------------------
  return E(fPdgCodeXi);
}

Double_t AliESDcascade::Y() const {
  //--------------------------------------------------------------------
  // This gives the energy assuming the ChangeMassHypothesis was called
  //--------------------------------------------------------------------
  return Y(fPdgCodeXi);
}

// Then extend AliVParticle functions
Double_t AliESDcascade::E(Int_t pdg) const {
  //--------------------------------------------------------------------
  // This gives the energy with the particle hypothesis as argument 
  //--------------------------------------------------------------------
  Double_t mass = TDatabasePDG::Instance()->GetParticle(pdg)->Mass();
  return TMath::Sqrt(mass*mass+P()*P());
}

Double_t AliESDcascade::Y(Int_t pdg) const {
  //--------------------------------------------------------------------
  // This gives the rapidity with the particle hypothesis as argument 
  //--------------------------------------------------------------------
  return 0.5*TMath::Log((E(pdg)+Pz())/(E(pdg)-Pz()+1.e-13));
}

// Now the functions for analysis consistency
Double_t AliESDcascade::RapXi() const {
  //--------------------------------------------------------------------
  // This gives the pseudorapidity assuming a (Anti) Xi particle
  //--------------------------------------------------------------------
  return Y(kXiMinus);
}

Double_t AliESDcascade::RapOmega() const {
  //--------------------------------------------------------------------
  // This gives the pseudorapidity assuming a (Anti) Omega particle
  //--------------------------------------------------------------------
  return Y(kOmegaMinus);
}

Double_t AliESDcascade::AlphaXi() const {
  //--------------------------------------------------------------------
  // This gives the Armenteros-Podolanski alpha
  //--------------------------------------------------------------------
  TVector3 momBach(fBachMom[0],fBachMom[1],fBachMom[2]);
  TVector3 momV0(fNmom[0]+fPmom[0],fNmom[1]+fPmom[1],fNmom[2]+fPmom[2]);
  TVector3 momTot(Px(),Py(),Pz());

  Double_t lQlBach = momBach.Dot(momTot)/momTot.Mag();
  Double_t lQlV0 = momV0.Dot(momTot)/momTot.Mag();

  return 1.-2./(1.+lQlBach/lQlV0);
}

Double_t AliESDcascade::PtArmXi() const {
  //--------------------------------------------------------------------
  // This gives the Armenteros-Podolanski ptarm
  //--------------------------------------------------------------------
  TVector3 momBach(fBachMom[0],fBachMom[1],fBachMom[2]);
  TVector3 momTot(Px(),Py(),Pz());

  return momBach.Perp(momTot);
}

// Then the older functions
Double_t AliESDcascade::ChangeMassHypothesis(Double_t &v0q, Int_t code) {
  //--------------------------------------------------------------------
  // This function changes the mass hypothesis for this cascade
  // and returns the "kinematical quality" of this hypothesis
  // together with the "quality" of associated V0 (argument v0q) 
  //--------------------------------------------------------------------
  Double_t nmass=0.13957, pmass=0.93827, ps0=0.101; 
  Double_t bmass=0.13957, mass =1.3213,  ps =0.139;

  if (Charge()*code<0)
    fPdgCodeXi = code;
  else {
    AliWarning("Chosen PDG code does not match the sign of the bachelor... Corrected !!");
    fPdgCodeXi = -code;
  }

  switch (fPdgCodeXi) {
  case kXiMinus:
       break;
  case kXiPlusBar:
       nmass=0.93827; pmass=0.13957; 
       break;
  case kOmegaMinus: 
       bmass=0.49368; mass=1.67245; ps=0.211;
       break;
  case kOmegaPlusBar: 
       nmass=0.93827; pmass=0.13957; 
       bmass=0.49368; mass=1.67245; ps=0.211;
       break;
  default:
       AliError("Invalide PDG code !  Assuming a Xi particle...");
       if (Charge()<0) {
	 fPdgCodeXi=kXiMinus;
       }
       else {
	 fPdgCodeXi=kXiPlusBar;
	 nmass=0.93827; pmass=0.13957; 
       }
    break;
  }

  Double_t pxn=fNmom[0], pyn=fNmom[1], pzn=fNmom[2];
  Double_t pxp=fPmom[0], pyp=fPmom[1], pzp=fPmom[2];

  Double_t px0=pxn+pxp, py0=pyn+pyp, pz0=pzn+pzp;
  Double_t p0=TMath::Sqrt(px0*px0 + py0*py0 + pz0*pz0);

  Double_t e0=TMath::Sqrt(1.11568*1.11568 + p0*p0);
  Double_t beta0=p0/e0;
  Double_t pln=(pxn*px0 + pyn*py0 + pzn*pz0)/p0;
  Double_t plp=(pxp*px0 + pyp*py0 + pzp*pz0)/p0;
  Double_t pt2=pxp*pxp + pyp*pyp + pzp*pzp - plp*plp;

  Double_t a=(plp-pln)/(plp+pln);
  a -= (pmass*pmass-nmass*nmass)/(1.11568*1.11568);
  a = 0.25*beta0*beta0*1.11568*1.11568*a*a + pt2;


  v0q=a - ps0*ps0;


  Double_t pxb=fBachMom[0], pyb=fBachMom[1], pzb=fBachMom[2]; 

  Double_t eb=TMath::Sqrt(bmass*bmass + pxb*pxb + pyb*pyb + pzb*pzb);
  Double_t pxl=px0+pxb, pyl=py0+pyb, pzl=pz0+pzb;
  Double_t pl=TMath::Sqrt(pxl*pxl + pyl*pyl + pzl*pzl);
  
  fEffMassXi=TMath::Sqrt(((e0+eb)-pl)*((e0+eb)+pl));

  Double_t beta=pl/(e0+eb);
  Double_t pl0=(px0*pxl + py0*pyl + pz0*pzl)/pl;
  Double_t plb=(pxb*pxl + pyb*pyl + pzb*pzl)/pl;
  pt2=p0*p0 - pl0*pl0;

  a=(pl0-plb)/(pl0+plb);
  a -= (1.11568*1.11568-bmass*bmass)/(mass*mass);
  a = 0.25*beta*beta*mass*mass*a*a + pt2;

  return (a - ps*ps);
}

void 
AliESDcascade::GetPxPyPz(Double_t &px, Double_t &py, Double_t &pz) const {
  //--------------------------------------------------------------------
  // This function returns the cascade momentum (global)
  //--------------------------------------------------------------------
  px=fNmom[0]+fPmom[0]+fBachMom[0];
  py=fNmom[1]+fPmom[1]+fBachMom[1]; 
  pz=fNmom[2]+fPmom[2]+fBachMom[2]; 
}

void AliESDcascade::GetXYZcascade(Double_t &x, Double_t &y, Double_t &z) const {
  //--------------------------------------------------------------------
  // This function returns cascade position (global)
  //--------------------------------------------------------------------
  x=fPosXi[0];
  y=fPosXi[1];
  z=fPosXi[2];
}

Double_t AliESDcascade::GetDcascade(Double_t x0, Double_t y0, Double_t z0) const {
  //--------------------------------------------------------------------
  // This function returns the cascade impact parameter
  //--------------------------------------------------------------------

  Double_t x=fPosXi[0],y=fPosXi[1],z=fPosXi[2];
  Double_t px=fNmom[0]+fPmom[0]+fBachMom[0];
  Double_t py=fNmom[1]+fPmom[1]+fBachMom[1];
  Double_t pz=fNmom[2]+fPmom[2]+fBachMom[2];

  Double_t dx=(y0-y)*pz - (z0-z)*py; 
  Double_t dy=(x0-x)*pz - (z0-z)*px;
  Double_t dz=(x0-x)*py - (y0-y)*px;
  Double_t d=TMath::Sqrt((dx*dx+dy*dy+dz*dz)/(px*px+py*py+pz*pz));

  return d;
}

Double_t AliESDcascade::GetCascadeCosineOfPointingAngle(Double_t refPointX, Double_t refPointY, Double_t refPointZ) const {
  // calculates the pointing angle of the cascade wrt a reference point

  Double_t momCas[3]; //momentum of the cascade
  GetPxPyPz(momCas[0],momCas[1],momCas[2]);

  Double_t deltaPos[3]; //vector between the reference point and the cascade vertex
  deltaPos[0] = fPosXi[0] - refPointX;
  deltaPos[1] = fPosXi[1] - refPointY;
  deltaPos[2] = fPosXi[2] - refPointZ;

  Double_t momCas2    = momCas[0]*momCas[0] + momCas[1]*momCas[1] + momCas[2]*momCas[2];
  Double_t deltaPos2 = deltaPos[0]*deltaPos[0] + deltaPos[1]*deltaPos[1] + deltaPos[2]*deltaPos[2];

  Double_t cosinePointingAngle = (deltaPos[0]*momCas[0] +
				  deltaPos[1]*momCas[1] +
				  deltaPos[2]*momCas[2] ) /
    TMath::Sqrt(momCas2 * deltaPos2);
  
  return cosinePointingAngle;
}

void AliESDcascade::GetPosCovXi(Double_t cov[6]) const {

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