ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

#include "AliEveV0.h"

#include <TEveTrackPropagator.h>
#include <TEveManager.h>

#include <TPolyLine3D.h>
#include <TColor.h>

#include <TDatabasePDG.h>
#include <TParticlePDG.h>

#include <vector>

//______________________________________________________________________________
// Representation of a reconstructed V0.

ClassImp(AliEveV0)

//______________________________________________________________________________
AliEveV0::AliEveV0() :
  TEvePointSet(),

  fRecBirthV(),
  fRecDecayV(),
  fRecDecayP(),
  fNegTrack(0),
  fPosTrack(0),
  fRnrStyle(0),
  fPointingLine(0),
  fESDIndex(-1),
  fOnFlyStatus(kFALSE),
  fDaughterDCA(999),
  fChi2V0(-1),
  fNegMaxProbPdg(0),
  fPosMaxProbPdg(0),
  fNegMaxProbPid(0),
  fPosMaxProbPid(0)
{
  // Default constructor.

  // Override from TEveElement.
  fPickable = kTRUE;
  fMainColorPtr = &fMarkerColor;
}

//______________________________________________________________________________
AliEveV0::AliEveV0(TEveRecTrack* tNeg, TEveRecTrack* tPos,
		   TEveRecV0* v0, TEveTrackPropagator* rs) :
  TEvePointSet(),

  fRecBirthV(v0->fV0Birth),
  fRecDecayV(v0->fVCa),
  fRecDecayP(v0->fPNeg + v0->fPPos),

  fNegTrack(new AliEveTrack(tNeg, rs)),
  fPosTrack(new AliEveTrack(tPos, rs)),

  fRnrStyle(rs),
  fPointingLine(new TEveLine("Pointing line")),
  fESDIndex(-1),
  fOnFlyStatus(kFALSE),
  fDaughterDCA(999),
  fChi2V0(-1),
  fNegMaxProbPdg(0),
  fPosMaxProbPdg(0),
  fNegMaxProbPid(0),
  fPosMaxProbPid(0)
{
  // Constructor with full V0 specification.

  // Override from TEveElement.
  fPickable = kTRUE;
  fMainColorPtr = &fMarkerColor;

  fMarkerStyle = 2;
  fMarkerColor = kSpring + 6;
  fMarkerSize  = 1;

  fPointingLine->SetLineColor(fMarkerColor);
  fPointingLine->SetLineWidth(2);
  fPointingLine->IncDenyDestroy();
  AddElement(fPointingLine);

  fPosTrack->SetLineColor(2);  // red
  fPosTrack->SetStdTitle();
  fNegTrack->SetLineColor(7);  // light blue
  fNegTrack->SetStdTitle();

  fNegTrack->IncDenyDestroy();
  AddElement(fNegTrack);
  fPosTrack->IncDenyDestroy();
  AddElement(fPosTrack);
}

//______________________________________________________________________________
AliEveV0::~AliEveV0()
{
  // Destructor. Dereferences pos/neg tracks and pointing-line objects.

  fNegTrack->DecDenyDestroy();
  fPosTrack->DecDenyDestroy();
  fPointingLine->DecDenyDestroy();
}

//______________________________________________________________________________
void AliEveV0::SetMaxProbPdgPid(Int_t iDaughter, Int_t rPdg, Float_t rPid)
{
  // Sets the maximum probability Pdg value and Pid for one daughter
  // Should be moved to AliEveTrack property eventually (or AliEveTrack creation)

  if(iDaughter==0){
    fNegMaxProbPdg = rPdg;
    fNegMaxProbPid = rPid;
  }
  else if (iDaughter==1){
    fPosMaxProbPdg = rPdg;
    fPosMaxProbPid = rPid;
  }

}
//______________________________________________________________________________
Float_t AliEveV0::GetInvMass(Int_t nPdgCode, Int_t pPdgCode) const
{
  // Returns Invariant Mass assuming the masses of the daughter particles
  TEveVector lNegMomentum = fNegTrack->GetMomentum();
  // Does not work properly because momenta at the primary vertex !!!!!!!
  TEveVector lPosMomentum = fPosTrack->GetMomentum();
  Double_t nMass=TDatabasePDG::Instance()->GetParticle(nPdgCode)->Mass();
  Double_t pMass=TDatabasePDG::Instance()->GetParticle(pPdgCode)->Mass();

  printf("\n check the mass of the particle negative %.5f positive %.5f \n",nMass,pMass);

  Double_t eNeg = TMath::Sqrt(nMass*nMass + lNegMomentum.Mag2());
  Double_t ePos = TMath::Sqrt(pMass*pMass + lPosMomentum.Mag2());

  return TMath::Sqrt( (eNeg+ePos)*(eNeg+ePos) - fRecDecayP.Mag2() );
}

//______________________________________________________________________________
void AliEveV0::MakeV0()
{
  // Set all dependant components for drawing.

  SetPoint(0, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ);

  fNegTrack->MakeTrack();
  fPosTrack->MakeTrack();

  fPointingLine->SetPoint(0, fRecBirthV.fX, fRecBirthV.fY, fRecBirthV.fZ);
  fPointingLine->SetPoint(1, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ);
}


//==============================================================================
//==============================================================================

//______________________________________________________________________________
//
// Container for AliEveV0s.
//
// Allows runtime selection by pT and DCA of daughters, radius of V0
// creation and PID priobabilities

ClassImp(AliEveV0List)

//______________________________________________________________________________
AliEveV0List::AliEveV0List() :
  TEveElementList(),
  fTitle(),
  fRnrStyle(0),
  fRnrDaughters(kTRUE),
  fRnrV0vtx(kTRUE),
  fRnrV0path(kTRUE),
  fNegColor(0),
  fPosColor(0),
  fMinRCut(0),
  fMaxRCut(250),
  fMinDaughterDCA(0),
  fMaxDaughterDCA(1),
  fMinPt(0),
  fMaxPt(20),
  fNegCheckedPid(211),
  fPosCheckedPid(211),
  fNegCheckedProb(0.5),
  fPosCheckedProb(0.5),
  fMinInvariantMass(0),
  fMaxInvariantMass(1.2)
{
  // Default constructor.

  fChildClass = AliEveV0::Class(); // override member from base TEveElementList
}

//______________________________________________________________________________
AliEveV0List::AliEveV0List(TEveTrackPropagator* rs) :
  TEveElementList(),
  fTitle(),
  fRnrStyle(rs),
  fRnrDaughters(kTRUE),
  fRnrV0vtx(kTRUE),
  fRnrV0path(kTRUE),
  fNegColor(0),
  fPosColor(0),
  fMinRCut(0),
  fMaxRCut(250),
  fMinDaughterDCA(0),
  fMaxDaughterDCA(1),
  fMinPt(0),
  fMaxPt(20),
  fNegCheckedPid(211),
  fPosCheckedPid(211),
  fNegCheckedProb(0.5),
  fPosCheckedProb(0.5),
  fMinInvariantMass(0),
  fMaxInvariantMass(1.2)
{
  // Constructor with given track-propagator..

  fChildClass = AliEveV0::Class(); // override member from base TEveElementList

  Init();
}

//______________________________________________________________________________
AliEveV0List::AliEveV0List(const Text_t* name, TEveTrackPropagator* rs) :
  TEveElementList(),
  fTitle(),
  fRnrStyle(rs),
  fRnrDaughters(kTRUE),
  fRnrV0vtx(kTRUE),
  fRnrV0path(kTRUE),
  fNegColor(0),
  fPosColor(0),
  fMinRCut(0),
  fMaxRCut(100),
  fMinDaughterDCA(0),
  fMaxDaughterDCA(1),
  fMinPt(0),
  fMaxPt(20),
  fNegCheckedPid(211),
  fPosCheckedPid(211),
  fNegCheckedProb(0.5),
  fPosCheckedProb(0.5),
  fMinInvariantMass(0),
  fMaxInvariantMass(1.2)
{
  // Standard constructor.

  fChildClass = AliEveV0::Class(); // override member from base TEveElementList

  Init();
  SetName(name);
}

//______________________________________________________________________________
void AliEveV0List::Init()
{
  // Initialize members needed for drawing operations.

  if (fRnrStyle== 0) fRnrStyle = new TEveTrackPropagator;
}

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

//______________________________________________________________________________
void AliEveV0List::MakeV0s()
{
  // Call MakeV0() for all elements.

  for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
    ((AliEveV0*)(*i))->MakeV0();
  }
  gEve->Redraw3D();
}

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

//______________________________________________________________________________
void AliEveV0List::FilterByRadius(Float_t minR, Float_t maxR)
{
  // Select visibility of elements based on their axial radius.

  fMinRCut = minR;
  fMaxRCut = maxR;

  for(List_i i = fChildren.begin(); i != fChildren.end(); ++i)
  {
    AliEveV0* v0 = (AliEveV0*) *i;
    Float_t  rad = v0->GetRadius();
    Bool_t  show = rad >= fMinRCut && rad <= fMaxRCut;
    v0->SetRnrState(show);
  }
  ElementChanged();
  gEve->Redraw3D();
}

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

//______________________________________________________________________________
void AliEveV0List::FilterByDaughterDCA(Float_t minDaughterDCA, Float_t maxDaughterDCA)
{
  // Select visibility of elements based on the DCA between daughters.

  fMinDaughterDCA = minDaughterDCA;
  fMaxDaughterDCA = maxDaughterDCA;

  for(List_i i = fChildren.begin(); i != fChildren.end(); ++i)
  {
    AliEveV0* v0 = (AliEveV0*) *i;
    Float_t  dca = v0->GetDaughterDCA();
    Bool_t  show = dca >= fMinDaughterDCA && dca <= fMaxDaughterDCA;
    v0->SetRnrState(show);
  }
  ElementChanged();
  gEve->Redraw3D();
}

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

//______________________________________________________________________________
void AliEveV0List::FilterByPt(Float_t minPt, Float_t maxPt)
{
  // Select visibility of elements based on the V0 pt.

  fMinPt = minPt;
  fMaxPt = maxPt;

  for(List_i i = fChildren.begin(); i != fChildren.end(); ++i)
  {
    AliEveV0* v0 = (AliEveV0*) *i;
    Float_t  pt = v0->GetPt();
    Bool_t  show = pt >= fMinPt && pt <= fMaxPt;
    v0->SetRnrState(show);
  }
  ElementChanged();
  gEve->Redraw3D();
}

//______________________________________________________________________________
void AliEveV0List::FilterByCheckedPidMinProb(Int_t rFlag,Int_t rDaughter, Int_t rPid, Float_t rProb)
{
  // Select visibility of elements based on one of the V0 daughters PID

  if (!rDaughter){
    fNegCheckedPid  = rPid;
    fNegCheckedProb = rProb;
  }
  else {
    fPosCheckedPid  = rPid;
    fPosCheckedProb = rProb;
  }

  for(List_i i = fChildren.begin(); i != fChildren.end(); ++i)
  {
    AliEveV0* v0 = (AliEveV0*) *i;
    Int_t   pid = 0;
    Float_t prob = 0.0;
    Bool_t  show = 0;
    if     (!rDaughter) {// Negative daughter checked
      pid  = v0->GetNegMaxProbPdg();
      prob = v0->GetNegMaxProbPid();
      show = (pid == fNegCheckedPid && prob > fNegCheckedProb) || !rFlag ; 
    }
    else if (rDaughter) {// Positive daughter checked
      pid = v0->GetPosMaxProbPdg();
      prob = v0->GetPosMaxProbPid();
      show = (pid == fPosCheckedPid && prob > fPosCheckedProb) || !rFlag ; 
    }
    v0->SetRnrState(show);
  }
  ElementChanged();
  gEve->Redraw3D();
}

//______________________________________________________________________________
void AliEveV0List::FilterByInvariantMass(Float_t minInvariantMass, Float_t maxInvariantMass, Int_t nPdgCode, Int_t pPdgCode)
{
  // Select visibility of elements based on the V0 invariant mass.

  fMinInvariantMass = minInvariantMass;
  fMaxInvariantMass = maxInvariantMass;

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