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: AliESDEvent.cxx 64008 2013-08-28 13:09:59Z hristov $ */

//-----------------------------------------------------------------
//           Implementation of the AliESDEvent class
//   This is the class to deal with during the physics analysis of data.
//   It also ensures the backward compatibility with the old ESD format.
/*
   AliESDEvent *ev= new AliESDEvent();
   ev->ReadFromTree(esdTree);
   ...
    for (Int_t i=0; i<nev; i++) {
      esdTree->GetEntry(i);
      if(ev->GetAliESDOld())ev->CopyFromOldESD();
*/
//   The AliESDInputHandler does this automatically for you
//
// Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch
//-----------------------------------------------------------------

#include "TList.h"
#include "TRefArray.h"
#include <TNamed.h>
#include <TROOT.h>
#include <TInterpreter.h>

#include "AliESDEvent.h"
#include "AliESDfriend.h"
#include "AliESDVZERO.h"
#include "AliESDFMD.h"
#include "AliESD.h"
#include "AliESDMuonTrack.h"
#include "AliESDMuonCluster.h"
#include "AliESDMuonPad.h"
#include "AliESDMuonGlobalTrack.h"       // AU
#include "AliESDPmdTrack.h"
#include "AliESDTrdTrack.h"
#include "AliESDVertex.h"
#include "AliESDcascade.h"
#include "AliESDPmdTrack.h"
#include "AliESDTrdTrigger.h"
#include "AliESDTrdTrack.h"
#include "AliESDTrdTracklet.h"
#include "AliESDVertex.h"
#include "AliVertexerTracks.h"
#include "AliESDcascade.h"
#include "AliESDkink.h"
#include "AliESDtrack.h"
#include "AliESDHLTtrack.h"
#include "AliESDCaloCluster.h"
#include "AliESDCaloCells.h"
#include "AliESDv0.h"
#include "AliESDFMD.h"
#include "AliESDVZERO.h"
#include "AliMultiplicity.h"
#include "AliRawDataErrorLog.h"
#include "AliLog.h"
#include "AliESDACORDE.h"
#include "AliESDAD.h"
#include "AliESDHLTDecision.h"
#include "AliCentrality.h"
#include "AliESDCosmicTrack.h"
#include "AliTriggerConfiguration.h"
#include "AliTriggerClass.h"
#include "AliTriggerCluster.h"
#include "AliEventplane.h"

ClassImp(AliESDEvent)

// here we define the names, some classes are no TNamed, therefore the classnames 
// are the Names
  const char* AliESDEvent::fgkESDListName[kESDListN] = {"AliESDRun",
							"AliESDHeader",
							"AliESDZDC",
							"AliESDFMD",
							"AliESDVZERO",
							"AliESDTZERO",
							"TPCVertex",
							"SPDVertex",
							"PrimaryVertex",
							"AliMultiplicity",
							"PHOSTrigger",
							"EMCALTrigger",
							"SPDPileupVertices",
							"TrkPileupVertices",
							"Tracks",
							"MuonTracks",
							"MuonClusters",
							"MuonPads",
							"MuonGlobalTracks",      // AU
							"PmdTracks",
							"AliESDTrdTrigger",
							"TrdTracks",
  						        "TrdTracklets",
							"V0s",
							"Cascades",
							"Kinks",
							"CaloClusters",
							"EMCALCells",
							"PHOSCells",
							"AliRawDataErrorLogs",
							"AliESDACORDE",
							"AliESDAD",
							"AliTOFHeader",
                                                        "CosmicTracks",
							"AliESDTOFCluster",
							"AliESDTOFHit",
							"AliESDTOFMatch"};


//______________________________________________________________________________
AliESDEvent::AliESDEvent():
  AliVEvent(),
  fESDObjects(new TList()),
  fESDRun(0),
  fHeader(0),
  fESDZDC(0),
  fESDFMD(0),
  fESDVZERO(0),
  fESDTZERO(0),
  fTPCVertex(0),
  fSPDVertex(0),
  fPrimaryVertex(0),
  fSPDMult(0),
  fPHOSTrigger(0),
  fEMCALTrigger(0),
  fESDACORDE(0),
  fESDAD(0),
  fTrdTrigger(0),
  fSPDPileupVertices(0),
  fTrkPileupVertices(0),
  fTracks(0),
  fMuonTracks(0),
  fMuonClusters(0),
  fMuonPads(0),
  fMuonGlobalTracks(0),    // AU
  fPmdTracks(0),
  fTrdTracks(0),
  fTrdTracklets(0),
  fV0s(0),  
  fCascades(0),
  fKinks(0),
  fCaloClusters(0),
  fEMCALCells(0), fPHOSCells(0),
  fCosmicTracks(0),
  fESDTOFClusters(0),
  fESDTOFHits(0),
  fESDTOFMatches(0),
  fErrorLogs(0),
  fOldMuonStructure(kFALSE),
  fESDOld(0),
  fESDFriendOld(0),
  fConnected(kFALSE),
  fUseOwnList(kFALSE),
  fTracksConnected(kFALSE),
  fTOFHeader(0),
  fCentrality(0),
  fEventplane(0),
  fDetectorStatus(0xFFFFFFFF),
  fDAQDetectorPattern(0xFFFF),
  fDAQAttributes(0xFFFF)
{
}
//______________________________________________________________________________
AliESDEvent::AliESDEvent(const AliESDEvent& esd):
  AliVEvent(esd),
  fESDObjects(new TList()),
  fESDRun(new AliESDRun(*esd.fESDRun)),
  fHeader(new AliESDHeader(*esd.fHeader)),
  fESDZDC(new AliESDZDC(*esd.fESDZDC)),
  fESDFMD(new AliESDFMD(*esd.fESDFMD)),
  fESDVZERO(new AliESDVZERO(*esd.fESDVZERO)),
  fESDTZERO(new AliESDTZERO(*esd.fESDTZERO)),
  fTPCVertex(new AliESDVertex(*esd.fTPCVertex)),
  fSPDVertex(new AliESDVertex(*esd.fSPDVertex)),
  fPrimaryVertex(new AliESDVertex(*esd.fPrimaryVertex)),
  fSPDMult(new AliMultiplicity(*esd.fSPDMult)),
  fPHOSTrigger(new AliESDCaloTrigger(*esd.fPHOSTrigger)),
  fEMCALTrigger(new AliESDCaloTrigger(*esd.fEMCALTrigger)),
  fESDACORDE(new AliESDACORDE(*esd.fESDACORDE)),
  fESDAD(new AliESDAD(*esd.fESDAD)),
  fTrdTrigger(new AliESDTrdTrigger(*esd.fTrdTrigger)),
  fSPDPileupVertices(new TClonesArray(*esd.fSPDPileupVertices)),
  fTrkPileupVertices(new TClonesArray(*esd.fTrkPileupVertices)),
  fTracks(new TClonesArray(*esd.fTracks)),
  fMuonTracks(new TClonesArray(*esd.fMuonTracks)),
  fMuonClusters(new TClonesArray(*esd.fMuonClusters)),
  fMuonPads(new TClonesArray(*esd.fMuonPads)),
  fMuonGlobalTracks(new TClonesArray(*esd.fMuonGlobalTracks)),     // AU
  fPmdTracks(new TClonesArray(*esd.fPmdTracks)),
  fTrdTracks(new TClonesArray(*esd.fTrdTracks)),
  fTrdTracklets(new TClonesArray(*esd.fTrdTracklets)),
  fV0s(new TClonesArray(*esd.fV0s)),  
  fCascades(new TClonesArray(*esd.fCascades)),
  fKinks(new TClonesArray(*esd.fKinks)),
  fCaloClusters(new TClonesArray(*esd.fCaloClusters)),
  fEMCALCells(new AliESDCaloCells(*esd.fEMCALCells)),
  fPHOSCells(new AliESDCaloCells(*esd.fPHOSCells)),
  fCosmicTracks(new TClonesArray(*esd.fCosmicTracks)),
  fESDTOFClusters(esd.fESDTOFClusters ? new TClonesArray(*esd.fESDTOFClusters) : 0),
  fESDTOFHits(esd.fESDTOFHits ? new TClonesArray(*esd.fESDTOFHits) : 0),
  fESDTOFMatches(esd.fESDTOFMatches ? new TClonesArray(*esd.fESDTOFMatches) : 0),
  fErrorLogs(new TClonesArray(*esd.fErrorLogs)),
  fOldMuonStructure(esd.fOldMuonStructure),
  fESDOld(esd.fESDOld ? new AliESD(*esd.fESDOld) : 0),
  fESDFriendOld(esd.fESDFriendOld ? new AliESDfriend(*esd.fESDFriendOld) : 0),
  fConnected(esd.fConnected),
  fUseOwnList(esd.fUseOwnList),
  fTracksConnected(kFALSE),
  fTOFHeader(new AliTOFHeader(*esd.fTOFHeader)),
  fCentrality(new AliCentrality(*esd.fCentrality)),
  fEventplane(new AliEventplane(*esd.fEventplane)),
  fDetectorStatus(esd.fDetectorStatus),
  fDAQDetectorPattern(esd.fDAQDetectorPattern),
  fDAQAttributes(esd.fDAQAttributes)
{
  printf("copying ESD event...\n");   // AU
  // CKB init in the constructor list and only add here ...
  AddObject(fESDRun);
  AddObject(fHeader);
  AddObject(fESDZDC);
  AddObject(fESDFMD);
  AddObject(fESDVZERO);
  AddObject(fESDTZERO);
  AddObject(fTPCVertex);
  AddObject(fSPDVertex);
  AddObject(fPrimaryVertex);
  AddObject(fSPDMult);
  AddObject(fPHOSTrigger);
  AddObject(fEMCALTrigger);
  AddObject(fTrdTrigger);
  AddObject(fSPDPileupVertices);
  AddObject(fTrkPileupVertices);
  AddObject(fTracks);
  AddObject(fMuonTracks);
  AddObject(fMuonGlobalTracks);    // AU
  AddObject(fPmdTracks);
  AddObject(fTrdTracks);
  AddObject(fTrdTracklets);
  AddObject(fV0s);
  AddObject(fCascades);
  AddObject(fKinks);
  AddObject(fCaloClusters);
  AddObject(fEMCALCells);
  AddObject(fPHOSCells);
  AddObject(fCosmicTracks);
  AddObject(fESDTOFClusters);
  AddObject(fESDTOFHits);
  AddObject(fESDTOFMatches);
  AddObject(fErrorLogs);
  AddObject(fESDACORDE);
  AddObject(fESDAD);
  AddObject(fTOFHeader);
  AddObject(fMuonClusters);
  AddObject(fMuonPads);
  GetStdContent();
  ConnectTracks();

}

//______________________________________________________________________________
AliESDEvent & AliESDEvent::operator=(const AliESDEvent& source) {

  // Assignment operator
  printf("operator = ESD\n");
  if(&source == this) return *this;
  AliVEvent::operator=(source);

  // This assumes that the list is already created
  // and that the virtual void Copy(Tobject&) function
  // is correctly implemented in the derived class
  // otherwise only TObject::Copy() will be used



  if((fESDObjects->GetSize()==0)&&(source.fESDObjects->GetSize()>=kESDListN)){
    // We cover the case that we do not yet have the 
    // standard content but the source has it
    CreateStdContent();
  }

  TIter next(source.GetList());
  TObject *its = 0;
  TString name;
  while ((its = next())) {
    name.Form("%s", its->GetName());
    TObject *mine = fESDObjects->FindObject(name.Data());
    if(!mine){
      TClass* pClass=TClass::GetClass(its->ClassName());
      if (!pClass) {
	AliWarning(Form("Can not find class description for entry %s (%s)\n",
			its->ClassName(), name.Data()));
	continue;
      }

      mine=(TObject*)pClass->New();
      if(!mine){
      // not in this: can be added to list
	AliWarning(Form("%s:%d Could not find %s for copying \n",
			(char*)__FILE__,__LINE__,name.Data()));
	continue;
      }  
      if(mine->InheritsFrom("TNamed")){
	((TNamed*)mine)->SetName(name);
      }
      else if(mine->InheritsFrom("TCollection")){
	if(mine->InheritsFrom("TClonesArray")) {
	  TClonesArray* tcits = dynamic_cast<TClonesArray*>(its);
	  if (tcits)
	    dynamic_cast<TClonesArray*>(mine)->SetClass(tcits->GetClass());
	}
	dynamic_cast<TCollection*>(mine)->SetName(name);
      }
      AliDebug(1, Form("adding object %s of type %s", mine->GetName(), mine->ClassName()));
      AddObject(mine);
    }  
   
    if(!its->InheritsFrom("TCollection")){
      // simple objects
      its->Copy(*mine);
    }
    else if(its->InheritsFrom("TClonesArray")){
      // Create or expand the tclonesarray pointers
      // so we can directly copy to the object
      TClonesArray *itstca = (TClonesArray*)its;
      TClonesArray *minetca = (TClonesArray*)mine;

      // this leaves the capacity of the TClonesArray the same
      // except for a factor of 2 increase when size > capacity
      // does not release any memory occupied by the tca
      minetca->ExpandCreate(itstca->GetEntriesFast());
      for(int i = 0;i < itstca->GetEntriesFast();++i){
	// copy 
	TObject *minetcaobj = minetca->At(i);
	TObject *itstcaobj = itstca->At(i);
	// no need to delete first
	// pointers within the class should be handled by Copy()...
	// Can there be Empty slots?
	itstcaobj->Copy(*minetcaobj);
      }
    }
    else{
      AliWarning(Form("%s:%d cannot copy TCollection \n",
		      (char*)__FILE__,__LINE__));
    }
  }

  fOldMuonStructure = source.fOldMuonStructure;
  
  fCentrality = source.fCentrality;
  fEventplane = source.fEventplane;

  fConnected  = source.fConnected;
  fUseOwnList = source.fUseOwnList;

  fDetectorStatus = source.fDetectorStatus;
  fDAQDetectorPattern = source.fDAQDetectorPattern;
  fDAQAttributes = source.fDAQAttributes;

  fTracksConnected = kFALSE;
  ConnectTracks();
  return *this;
}


//______________________________________________________________________________
AliESDEvent::~AliESDEvent()
{
  //
  // Standard destructor
  //

  // everthing on the list gets deleted automatically

  
  if(fESDObjects&&!fConnected)
    {
      delete fESDObjects;
      fESDObjects = 0;
    }
  if (fCentrality) delete fCentrality;
  if (fEventplane) delete fEventplane;
  

}

void AliESDEvent::Copy(TObject &obj) const {

  // interface to TOBject::Copy
  // Copies the content of this into obj!
  // bascially obj = *this

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

//______________________________________________________________________________
void AliESDEvent::Reset()
{

  // Handle the cases
  // Std content + Non std content

  // Reset the standard contents
  ResetStdContent(); 
  fDetectorStatus = 0xFFFFFFFF;
  fDAQDetectorPattern = 0xFFFF;
  fDAQAttributes = 0xFFFF;
  //  reset for the old data without AliESDEvent...
  if(fESDOld)fESDOld->Reset();
  if(fESDFriendOld){
    fESDFriendOld->~AliESDfriend();
    new (fESDFriendOld) AliESDfriend();
  }
  // 

  if(fESDObjects->GetSize()>kESDListN){
    // we have non std content
    // this also covers esdfriends
    for(int i = kESDListN;i < fESDObjects->GetSize();++i){
      TObject *pObject = fESDObjects->At(i);
      // TClonesArrays
      if(pObject->InheritsFrom(TClonesArray::Class())){
	((TClonesArray*)pObject)->Delete();
      }
      else if(!pObject->InheritsFrom(TCollection::Class())){
	TClass *pClass = TClass::GetClass(pObject->ClassName());
	if (pClass && pClass->GetListOfMethods()->FindObject("Clear")) {
	  AliDebug(1, Form("Clear for object %s class %s", pObject->GetName(), pObject->ClassName()));
	  pObject->Clear();
	}
	else {
	  AliDebug(1, Form("ResetWithPlacementNew for object %s class %s", pObject->GetName(), pObject->ClassName()));
	  ResetWithPlacementNew(pObject);
	}
      }
      else{
	AliWarning(Form("No reset for %s \n",
			pObject->ClassName()));
      }
    }
  }

}

//______________________________________________________________________________
Bool_t AliESDEvent::ResetWithPlacementNew(TObject *pObject){
  //
  // funtion to reset using the already allocated space
  //
  Long_t dtoronly = TObject::GetDtorOnly();
  TClass *pClass = TClass::GetClass(pObject->ClassName()); 
  TObject::SetDtorOnly(pObject);
  delete pObject;
  // Recreate with placement new
  pClass->New(pObject);
  // Restore the state.
  TObject::SetDtorOnly((void*)dtoronly);
  return kTRUE;
}

//______________________________________________________________________________
void AliESDEvent::ResetStdContent()
{
  // Reset the standard contents
  if(fESDRun) fESDRun->Reset();
  if(fHeader) fHeader->Reset();
  if(fCentrality) fCentrality->Reset();
  if(fEventplane) fEventplane->Reset();
  if(fESDZDC) fESDZDC->Reset();
  if(fESDFMD) {
    fESDFMD->Clear();
  }
  if(fESDVZERO){
    // reset by callin d'to /c'tor keep the pointer
    fESDVZERO->~AliESDVZERO();
    new (fESDVZERO) AliESDVZERO();
  }  
  if(fESDACORDE){
    fESDACORDE->~AliESDACORDE();
    new (fESDACORDE) AliESDACORDE();	
  } 

  if(fESDAD){
    fESDAD->~AliESDAD();
    new (fESDAD) AliESDAD();	
  } 


  if(fESDTZERO) fESDTZERO->Reset(); 
  // CKB no clear/reset implemented
  if(fTPCVertex){
    fTPCVertex->~AliESDVertex();
    new (fTPCVertex) AliESDVertex();
    fTPCVertex->SetName(fgkESDListName[kTPCVertex]);
  }
  if(fSPDVertex){
    fSPDVertex->~AliESDVertex();
    new (fSPDVertex) AliESDVertex();
    fSPDVertex->SetName(fgkESDListName[kSPDVertex]);
  }
  if(fPrimaryVertex){
    fPrimaryVertex->~AliESDVertex();
    new (fPrimaryVertex) AliESDVertex();
    fPrimaryVertex->SetName(fgkESDListName[kPrimaryVertex]);
  }
  if(fSPDMult){
    fSPDMult->~AliMultiplicity();
    new (fSPDMult) AliMultiplicity();
  }
  if(fTOFHeader){
    fTOFHeader->~AliTOFHeader();
    new (fTOFHeader) AliTOFHeader();
    //fTOFHeader->SetName(fgkESDListName[kTOFHeader]);
  }
  if (fTrdTrigger) {
    fTrdTrigger->~AliESDTrdTrigger();
    new (fTrdTrigger) AliESDTrdTrigger();
  }
	
  if(fPHOSTrigger)fPHOSTrigger->DeAllocate(); 
  if(fEMCALTrigger)fEMCALTrigger->DeAllocate(); 
  if(fSPDPileupVertices)fSPDPileupVertices->Delete();
  if(fTrkPileupVertices)fTrkPileupVertices->Delete();
  fTracksConnected = kFALSE;
  if(fTracks)fTracks->Delete();
  if(fMuonTracks)fMuonTracks->Clear("C");
  if(fMuonClusters)fMuonClusters->Clear("C");
  if(fMuonPads)fMuonPads->Clear("C");
  if(fMuonGlobalTracks)fMuonGlobalTracks->Clear("C");     // AU
  if(fPmdTracks)fPmdTracks->Delete();
  if(fTrdTracks)fTrdTracks->Delete();
  if(fTrdTracklets)fTrdTracklets->Delete();
  if(fV0s)fV0s->Delete();
  if(fCascades)fCascades->Delete();
  if(fKinks)fKinks->Delete();
  if(fCaloClusters)fCaloClusters->Delete();
  if(fPHOSCells)fPHOSCells->DeleteContainer();
  if(fEMCALCells)fEMCALCells->DeleteContainer();
  if(fCosmicTracks)fCosmicTracks->Delete();
  if(fESDTOFClusters)fESDTOFClusters->Clear();
  if(fESDTOFHits)fESDTOFHits->Clear();
  if(fESDTOFMatches)fESDTOFMatches->Clear();
  if(fErrorLogs) fErrorLogs->Delete();

  // don't reset fconnected fConnected and the list

}


//______________________________________________________________________________
Int_t AliESDEvent::AddV0(const AliESDv0 *v) {
  //
  // Add V0
  //
  TClonesArray &fv = *fV0s;
  Int_t idx=fV0s->GetEntriesFast();
  new(fv[idx]) AliESDv0(*v);
  return idx;
}  

//______________________________________________________________________________
Bool_t AliESDEvent::IsDetectorInTriggerCluster(TString detector, AliTriggerConfiguration* trigConf) const {
  // Check if a given detector was read-out in the analyzed event
  const TObjArray& classesArray=trigConf->GetClasses();
  ULong64_t trigMask=GetTriggerMask();
  ULong64_t trigMaskNext50=GetTriggerMaskNext50();
  Int_t nclasses = classesArray.GetEntriesFast();
  for(Int_t iclass=0; iclass < nclasses; iclass++ ) {
    AliTriggerClass* trclass = (AliTriggerClass*)classesArray.At(iclass);
    ULong64_t classMask=trclass->GetMask();
    ULong64_t classMaskNext50=trclass->GetMaskNext50();
    if(trigMask & classMask){
      TString detList=trclass->GetCluster()->GetDetectorsInCluster();
      if(detList.Contains(detector.Data())){
	return kTRUE;
      }
    }
    if(trigMaskNext50 & classMaskNext50){
      TString detList=trclass->GetCluster()->GetDetectorsInCluster();
      if(detList.Contains(detector.Data())){
	return kTRUE;
      }
    }
  }
  return kFALSE; 
}
//______________________________________________________________________________
void AliESDEvent::Print(Option_t *) const 
{
  //
  // Print header information of the event
  //
  printf("ESD run information\n");
  printf("Event # in file %d Bunch crossing # %d Orbit # %d Period # %d Run # %d Trigger %lld %lld Magnetic field %f \n",
	 GetEventNumberInFile(),
	 GetBunchCrossNumber(),
	 GetOrbitNumber(),
	 GetPeriodNumber(),
	 GetRunNumber(),
	 GetTriggerMask(),
	 GetTriggerMaskNext50(),
	 GetMagneticField() );
  if (fPrimaryVertex)
    printf("Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
	   fPrimaryVertex->GetX(), fPrimaryVertex->GetXRes(),
	   fPrimaryVertex->GetY(), fPrimaryVertex->GetYRes(),
	   fPrimaryVertex->GetZ(), fPrimaryVertex->GetZRes());
  printf("Mean vertex in RUN: X=%.4f Y=%.4f Z=%.4f cm\n",
	 GetDiamondX(),GetDiamondY(),GetDiamondZ());
  if(fSPDMult)
    printf("SPD Multiplicity. Number of tracklets %d \n",
           fSPDMult->GetNumberOfTracklets());
  printf("Number of pileup primary vertices reconstructed with SPD %d\n", 
	 GetNumberOfPileupVerticesSPD());
  printf("Number of pileup primary vertices reconstructed using the tracks %d\n",
	 GetNumberOfPileupVerticesTracks());
  printf("Number of tracks: \n");
  printf("                 charged   %d\n", GetNumberOfTracks());
  printf("                 muon      %d\n", GetNumberOfMuonTracks());
  printf("                 glob muon %d\n", GetNumberOfMuonGlobalTracks());    // AU
  printf("                 pmd       %d\n", GetNumberOfPmdTracks());
  printf("                 trd       %d\n", GetNumberOfTrdTracks());
  printf("                 trd trkl  %d\n", GetNumberOfTrdTracklets());
  printf("                 v0        %d\n", GetNumberOfV0s());
  printf("                 cascades  %d\n", GetNumberOfCascades());
  printf("                 kinks     %d\n", GetNumberOfKinks());
  if(fPHOSCells)printf("                 PHOSCells %d\n", fPHOSCells->GetNumberOfCells());
  else printf("                 PHOSCells not in the Event\n");
  if(fEMCALCells)printf("                 EMCALCells %d\n", fEMCALCells->GetNumberOfCells());
  else printf("                 EMCALCells not in the Event\n");
  printf("                 CaloClusters %d\n", GetNumberOfCaloClusters());
  printf("                 FMD       %s\n", (fESDFMD ? "yes" : "no"));
  printf("                 VZERO     %s\n", (fESDVZERO ? "yes" : "no"));
  printf("                 muClusters %d\n", fMuonClusters ? fMuonClusters->GetEntriesFast() : 0);
  printf("                 muPad     %d\n", fMuonPads ? fMuonPads->GetEntriesFast() : 0);
  if (fCosmicTracks) printf("                 Cosmics   %d\n",  GetNumberOfCosmicTracks());
	
  TObject* pHLTDecision=GetHLTTriggerDecision();
  printf("HLT trigger decision: %s\n", pHLTDecision?pHLTDecision->GetOption():"not available");
  if (pHLTDecision) pHLTDecision->Print("compact");

  return;
}

//______________________________________________________________________________
void AliESDEvent::SetESDfriend(const AliESDfriend *ev) const 
{
//
// Attaches the complementary info to the ESD
//
  if (!ev) return;

  // to be sure that we set the tracks also
  // in case of old esds 
  // if(fESDOld)CopyFromOldESD();

  Int_t ntrk=ev->GetNumberOfTracks();
 
  for (Int_t i=0; i<ntrk; i++) {
    const AliESDfriendTrack *f=ev->GetTrack(i);
    if (!f) {AliFatal(Form("NULL pointer for ESD track %d",i));}
    GetTrack(i)->SetFriendTrack(f);
  }
}

//______________________________________________________________________________
Bool_t  AliESDEvent::RemoveKink(Int_t rm) const 
{
// ---------------------------------------------------------
// Remove a kink candidate and references to it from ESD,
// if this candidate does not come from a reconstructed decay
// Not yet implemented...
// ---------------------------------------------------------
  Int_t last=GetNumberOfKinks()-1;
  if ((rm<0)||(rm>last)) return kFALSE;

  return kTRUE;
}

//______________________________________________________________________________
Bool_t  AliESDEvent::RemoveV0(Int_t rm) const 
{
// ---------------------------------------------------------
// Remove a V0 candidate and references to it from ESD,
// if this candidate does not come from a reconstructed decay
// ---------------------------------------------------------
  Int_t last=GetNumberOfV0s()-1;
  if ((rm<0)||(rm>last)) return kFALSE;

  AliESDv0 *v0=GetV0(rm);
  Int_t idxP=v0->GetPindex(), idxN=v0->GetNindex();

  v0=GetV0(last);
  Int_t lastIdxP=v0->GetPindex(), lastIdxN=v0->GetNindex();

  Int_t used=0;

  // Check if this V0 comes from a reconstructed decay
  Int_t ncs=GetNumberOfCascades();
  for (Int_t n=0; n<ncs; n++) {
    AliESDcascade *cs=GetCascade(n);

    Int_t csIdxP=cs->GetPindex();
    Int_t csIdxN=cs->GetNindex();

    if (idxP==csIdxP)
       if (idxN==csIdxN) return kFALSE;

    if (csIdxP==lastIdxP)
       if (csIdxN==lastIdxN) used++;
  }

  //Replace the removed V0 with the last V0 
  TClonesArray &a=*fV0s;
  delete a.RemoveAt(rm);

  if (rm==last) return kTRUE;

  //v0 is pointing to the last V0 candidate... 
  new (a[rm]) AliESDv0(*v0);
  delete a.RemoveAt(last);

  if (!used) return kTRUE;
  

  // Remap the indices of the daughters of reconstructed decays
  for (Int_t n=0; n<ncs; n++) {
    AliESDcascade *cs=GetCascade(n);


    Int_t csIdxP=cs->GetPindex();
    Int_t csIdxN=cs->GetNindex();

    if (csIdxP==lastIdxP)
      if (csIdxN==lastIdxN) {
         cs->AliESDv0::SetIndex(1,idxP);
         cs->AliESDv0::SetIndex(0,idxN);
         used--;
         if (!used) return kTRUE;
      }
  }

  return kTRUE;
}

//______________________________________________________________________________
Bool_t  AliESDEvent::RemoveTrack(Int_t rm) const 
{
// ---------------------------------------------------------
// Remove a track and references to it from ESD,
// if this track does not come from a reconstructed decay
// ---------------------------------------------------------
  Int_t last=GetNumberOfTracks()-1;
  if ((rm<0)||(rm>last)) return kFALSE;

  Int_t used=0;

  // Check if this track comes from the reconstructed primary vertices
  if (fTPCVertex && fTPCVertex->GetStatus()) {
     UShort_t *primIdx=fTPCVertex->GetIndices();
     Int_t n=fTPCVertex->GetNIndices();
     while (n--) {
       Int_t idx=Int_t(primIdx[n]);
       if (rm==idx) return kFALSE;
       if (idx==last) used++; 
     }
  }
  if (fPrimaryVertex && fPrimaryVertex->GetStatus()) {
     UShort_t *primIdx=fPrimaryVertex->GetIndices();
     Int_t n=fPrimaryVertex->GetNIndices();
     while (n--) {
       Int_t idx=Int_t(primIdx[n]);
       if (rm==idx) return kFALSE;
       if (idx==last) used++; 
     }
  }
  
  // Check if this track comes from a reconstructed decay
  Int_t nv0=GetNumberOfV0s();
  for (Int_t n=0; n<nv0; n++) {
    AliESDv0 *v0=GetV0(n);

    Int_t idx=v0->GetNindex();
    if (rm==idx) return kFALSE;
    if (idx==last) used++;

    idx=v0->GetPindex();
    if (rm==idx) return kFALSE;
    if (idx==last) used++;
  }

  Int_t ncs=GetNumberOfCascades();
  for (Int_t n=0; n<ncs; n++) {
    AliESDcascade *cs=GetCascade(n);

    Int_t idx=cs->GetIndex();
    if (rm==idx) return kFALSE;
    if (idx==last) used++;

    AliESDv0 *v0=cs;
    idx=v0->GetNindex();
    if (rm==idx) return kFALSE;
    if (idx==last) used++;

    idx=v0->GetPindex();
    if (rm==idx) return kFALSE;
    if (idx==last) used++;
  }

  Int_t nkn=GetNumberOfKinks();
  for (Int_t n=0; n<nkn; n++) {
    AliESDkink *kn=GetKink(n);

    Int_t idx=kn->GetIndex(0);
    if (rm==idx) return kFALSE;
    if (idx==last) used++;

    idx=kn->GetIndex(1);
    if (rm==idx) return kFALSE;
    if (idx==last) used++;
  }

  // Check if this track is associated with a CaloCluster
  Int_t ncl=GetNumberOfCaloClusters();
  for (Int_t n=0; n<ncl; n++) {
    AliESDCaloCluster *cluster=GetCaloCluster(n);
    TArrayI *arr=cluster->GetTracksMatched();
    Int_t s=arr->GetSize();
    while (s--) {
      Int_t idx=arr->At(s);
      if (rm==idx) return kFALSE;
      if (idx==last) used++;     
    }
  }

  // from here on we remove the track
  //
  //Replace the removed track with the last track 
  TClonesArray &a=*fTracks;
  AliESDtrack* trm = GetTrack(rm);
  trm->SuppressTOFMatches(); // remove reference to this track from stored TOF clusters
  delete a.RemoveAt(rm);
  //
  if (rm==last) return kTRUE;

  AliESDtrack *t=GetTrack(last);
  if (!t) {AliFatal(Form("NULL pointer for ESD track %d",last));}
  t->SetID(rm);
  new (a[rm]) AliESDtrack(*t);
  delete a.RemoveAt(last);

  if (!used) return kTRUE;
  

  // Remap the indices of the tracks used for the primary vertex reconstruction
  if (fTPCVertex && fTPCVertex->GetStatus()) {
     UShort_t *primIdx=fTPCVertex->GetIndices();
     Int_t n=fTPCVertex->GetNIndices();
     while (n--) {
       Int_t idx=Int_t(primIdx[n]);
       if (idx==last) {
          primIdx[n]=Short_t(rm); 
          used--;
          if (!used) return kTRUE;
       }
     }
  }  
  if (fPrimaryVertex && fPrimaryVertex->GetStatus()) {
     UShort_t *primIdx=fPrimaryVertex->GetIndices();
     Int_t n=fPrimaryVertex->GetNIndices();
     while (n--) {
       Int_t idx=Int_t(primIdx[n]);
       if (idx==last) {
          primIdx[n]=Short_t(rm); 
          used--;
          if (!used) return kTRUE;
       }
     }
  }  

  // Remap the indices of the daughters of reconstructed decays
  for (Int_t n=0; n<nv0; n++) {
    AliESDv0 *v0=GetV0(n);
    if (v0->GetIndex(0)==last) {
       v0->SetIndex(0,rm);
       used--;
       if (!used) return kTRUE;
    }
    if (v0->GetIndex(1)==last) {
       v0->SetIndex(1,rm);
       used--;
       if (!used) return kTRUE;
    }
  }

  for (Int_t n=0; n<ncs; n++) {
    AliESDcascade *cs=GetCascade(n);
    if (cs->GetIndex()==last) {
       cs->SetIndex(rm);
       used--;
       if (!used) return kTRUE;
    }
    AliESDv0 *v0=cs;
    if (v0->GetIndex(0)==last) {
       v0->SetIndex(0,rm);
       used--;
       if (!used) return kTRUE;
    }
    if (v0->GetIndex(1)==last) {
       v0->SetIndex(1,rm);
       used--;
       if (!used) return kTRUE;
    }
  }

  for (Int_t n=0; n<nkn; n++) {
    AliESDkink *kn=GetKink(n);
    if (kn->GetIndex(0)==last) {
       kn->SetIndex(rm,0);
       used--;
       if (!used) return kTRUE;
    }
    if (kn->GetIndex(1)==last) {
       kn->SetIndex(rm,1);
       used--;
       if (!used) return kTRUE;
    }
  }

  // Remap the indices of the tracks accosicated with CaloClusters
  for (Int_t n=0; n<ncl; n++) {
    AliESDCaloCluster *cluster=GetCaloCluster(n);
    TArrayI *arr=cluster->GetTracksMatched();
    Int_t s=arr->GetSize();
    while (s--) {
      Int_t idx=arr->At(s);
      if (idx==last) {
         arr->AddAt(rm,s);
         used--; 
         if (!used) return kTRUE;
      }
    }
  }

  return kTRUE;
}

//______________________________________________________________________________
Bool_t AliESDEvent::Clean(Float_t *cleanPars) 
{
  //
  // Remove the data which are not needed for the physics analysis.
  //
  // 1) Cleaning the V0 candidates
  //    ---------------------------
  //    If the cosine of the V0 pointing angle "csp" and 
  //    the DCA between the daughter tracks "dca" does not satisfy 
  //    the conditions 
  //
  //     csp > cleanPars[1] + dca/cleanPars[0]*(1.- cleanPars[1])
  //
  //    an attempt to remove this V0 candidate from ESD is made.
  //
  //    The V0 candidate gets removed if it does not belong to any 
  //    recosntructed cascade decay
  //
  //    12.11.2007, optimal values: cleanPars[0]=0.5, cleanPars[1]=0.999
  //
  // 2) Cleaning the tracks
  //    ----------------------
  //    If track's transverse parameter is larger than cleanPars[2]
  //                       OR
  //    track's longitudinal parameter is larger than cleanPars[3]
  //    an attempt to remove this track from ESD is made.
  //
  //    The track gets removed if it does not come 
  //    from a reconstructed decay
  //
  Bool_t rc=kFALSE;

  Float_t dcaMax=cleanPars[0];
  Float_t cspMin=cleanPars[1];

  Int_t nV0s=GetNumberOfV0s();
  for (Int_t i=nV0s-1; i>=0; i--) {
    AliESDv0 *v0=GetV0(i);

    Float_t dca=v0->GetDcaV0Daughters();
    Float_t csp=v0->GetV0CosineOfPointingAngle();
    Float_t cspcut=cspMin + dca/dcaMax*(1.-cspMin);
    if (csp > cspcut) continue;
    if (RemoveV0(i)) rc=kTRUE;
  }


  Float_t dmax=cleanPars[2], zmax=cleanPars[3];

  const AliESDVertex *vertex=GetPrimaryVertexSPD();
  Bool_t vtxOK=vertex->GetStatus();
  
  Int_t nTracks=GetNumberOfTracks();
  for (Int_t i=nTracks-1; i>=0; i--) {
    AliESDtrack *track=GetTrack(i);
    if (!track) {AliFatal(Form("NULL pointer for ESD track %d",i));}
    Float_t xy,z; track->GetImpactParameters(xy,z);
    if ((TMath::Abs(xy) > dmax) || (vtxOK && (TMath::Abs(z) > zmax))) {
      if (RemoveTrack(i)) rc=kTRUE;
    }
  }

  return rc;
}

//______________________________________________________________________________
Char_t  AliESDEvent::AddPileupVertexSPD(const AliESDVertex *vtx) 
{
    // Add a pileup primary vertex reconstructed with SPD
    TClonesArray &ftr = *fSPDPileupVertices;
    Char_t n=Char_t(ftr.GetEntriesFast());
    AliESDVertex *vertex = new(ftr[n]) AliESDVertex(*vtx);
    vertex->SetID(n);
    return n;
}

//______________________________________________________________________________
Char_t  AliESDEvent::AddPileupVertexTracks(const AliESDVertex *vtx) 
{
    // Add a pileup primary vertex reconstructed with SPD
    TClonesArray &ftr = *fTrkPileupVertices;
    Char_t n=Char_t(ftr.GetEntriesFast());
    AliESDVertex *vertex = new(ftr[n]) AliESDVertex(*vtx);
    vertex->SetID(n);
    return n;
}

//______________________________________________________________________________
Int_t  AliESDEvent::AddTrack(const AliESDtrack *t) 
{
    // Add track
    TClonesArray &ftr = *fTracks;
    AliESDtrack * track = new(ftr[fTracks->GetEntriesFast()])AliESDtrack(*t);
    track->SetID(fTracks->GetEntriesFast()-1);
    track->SetESDEvent(this);
    return  track->GetID();    
}

//______________________________________________________________________________
AliESDtrack*  AliESDEvent::NewTrack() 
{
    // Add a new track
    TClonesArray &ftr = *fTracks;
    AliESDtrack * track = new(ftr[fTracks->GetEntriesFast()])AliESDtrack();
    track->SetID(fTracks->GetEntriesFast()-1);
    track->SetESDEvent(this);
    return  track;
}

//______________________________________________________________________________
Bool_t AliESDEvent::MoveMuonObjects() 
{
  // move MUON clusters and pads to the new ESD structure in needed.
  // to ensure backward compatibility
  
  if (!fOldMuonStructure) return kTRUE;
  
  if (!fMuonTracks || !fMuonClusters || !fMuonPads) return kFALSE;
  
  Bool_t reset = kTRUE;
  Bool_t containTrackerData = kFALSE;
  for (Int_t i = 0; i < fMuonTracks->GetEntriesFast(); i++) {
    
    AliESDMuonTrack *track = (AliESDMuonTrack*) fMuonTracks->UncheckedAt(i);
    
    if (track->ContainTrackerData()) containTrackerData = kTRUE;
    else continue;
    
    if (!track->IsOldTrack()) continue;
    
    // remove objects connected to previous event if needed
    if (reset) {
      if (fMuonClusters->GetEntriesFast() > 0) fMuonClusters->Clear("C");
      if (fMuonPads->GetEntriesFast() > 0) fMuonPads->Clear("C");
      reset = kFALSE;
    }
    
    track->MoveClustersToESD(*this);
    
  }
  
  // remove objects connected to previous event if needed
  if (!containTrackerData) {
    if (fMuonClusters->GetEntriesFast() > 0) fMuonClusters->Clear("C");
    if (fMuonPads->GetEntriesFast() > 0) fMuonPads->Clear("C");
  }
  
  return kTRUE;
}

//______________________________________________________________________________
AliESDMuonTrack* AliESDEvent::GetMuonTrack(Int_t i)
{
  // get the MUON track at the position i in the internal array of track
  if (!fMuonTracks) return 0x0;
  if (!MoveMuonObjects()) return 0x0;
  AliESDMuonTrack *track = (AliESDMuonTrack*) fMuonTracks->UncheckedAt(i);
  track->SetESDEvent(this);
  return track;
}

//______________________________________________________________________________
AliESDMuonGlobalTrack* AliESDEvent::GetMuonGlobalTrack(Int_t i)                      // AU
{
  // get the MUON+MFT track at the position i in the internal array of track
  if (!fMuonGlobalTracks) return 0x0;
  AliESDMuonGlobalTrack *track = (AliESDMuonGlobalTrack*) fMuonGlobalTracks->UncheckedAt(i);
  track->SetESDEvent(this);
  return track;
}

//______________________________________________________________________________
void AliESDEvent::AddMuonTrack(const AliESDMuonTrack *t) 
{
  // add a MUON track
  TClonesArray &fmu = *fMuonTracks;
  AliESDMuonTrack *track = new(fmu[fMuonTracks->GetEntriesFast()]) AliESDMuonTrack(*t);
  track->MoveClustersToESD(*this);
}

//______________________________________________________________________________
void AliESDEvent::AddMuonGlobalTrack(const AliESDMuonGlobalTrack *t)                             // AU
{
  // add a MUON+MFT track
  TClonesArray &fmu = *fMuonGlobalTracks;
  new (fmu[fMuonGlobalTracks->GetEntriesFast()]) AliESDMuonGlobalTrack(*t);
}

//______________________________________________________________________________

AliESDMuonTrack* AliESDEvent::NewMuonTrack() 
{
  // create a new MUON track at the end of the internal array of track
  TClonesArray &fmu = *fMuonTracks;
  return new(fmu[fMuonTracks->GetEntriesFast()]) AliESDMuonTrack();
}

//______________________________________________________________________________
AliESDMuonGlobalTrack* AliESDEvent::NewMuonGlobalTrack()                                         // AU
{
  // create a new MUON+MFT track at the end of the internal array of track
  TClonesArray &fmu = *fMuonGlobalTracks;
  return new(fmu[fMuonGlobalTracks->GetEntriesFast()]) AliESDMuonGlobalTrack();
}

//______________________________________________________________________________
Int_t AliESDEvent::GetNumberOfMuonClusters()
{
  // get the number of MUON clusters
  if (!fMuonClusters) return 0;
  if (!MoveMuonObjects()) return 0;
  return fMuonClusters->GetEntriesFast();
}

//______________________________________________________________________________
AliESDMuonCluster* AliESDEvent::GetMuonCluster(Int_t i)
{
  // get the MUON cluster at the position i in the internal array of cluster
  if (!fMuonClusters) return 0x0;
  if (!MoveMuonObjects()) return 0x0;
  return (AliESDMuonCluster*) fMuonClusters->UncheckedAt(i);
}

//______________________________________________________________________________
AliESDMuonCluster* AliESDEvent::FindMuonCluster(UInt_t clusterId)
{
  // find the MUON cluster with this Id in the internal array of cluster
  if (!fMuonClusters) return 0x0;
  if (!MoveMuonObjects()) return 0x0;
  for (Int_t i = 0; i < fMuonClusters->GetEntriesFast(); i++) {
    AliESDMuonCluster *cluster = (AliESDMuonCluster*) fMuonClusters->UncheckedAt(i);
    if (cluster->GetUniqueID() == clusterId) return cluster;
  }
  return 0x0;
}

//______________________________________________________________________________
AliESDMuonCluster* AliESDEvent::NewMuonCluster() 
{
  // create a new MUON cluster at the end of the internal array of cluster
  TClonesArray &fmu = *fMuonClusters;
  return new(fmu[fMuonClusters->GetEntriesFast()]) AliESDMuonCluster();
}

//______________________________________________________________________________
Int_t AliESDEvent::GetNumberOfMuonPads()
{
  // get the number of MUON pads
  if (!fMuonPads) return 0;
  if (!MoveMuonObjects()) return 0;
  return fMuonPads->GetEntriesFast();
}

//______________________________________________________________________________
AliESDMuonPad* AliESDEvent::GetMuonPad(Int_t i)
{
  // get the MUON pad at the position i in the internal array of pad
  if (!fMuonPads) return 0x0;
  if (!MoveMuonObjects()) return 0x0;
  return (AliESDMuonPad*) fMuonPads->UncheckedAt(i);
}

//______________________________________________________________________________
AliESDMuonPad* AliESDEvent::FindMuonPad(UInt_t padId)
{
  // find the MUON pad with this Id in the internal array of pad
  if (!fMuonPads) return 0x0;
  if (!MoveMuonObjects()) return 0x0;
  for (Int_t i = 0; i < fMuonPads->GetEntriesFast(); i++) {
    AliESDMuonPad *pad = (AliESDMuonPad*) fMuonPads->UncheckedAt(i);
    if (pad->GetUniqueID() == padId) return pad;
  }
  return 0x0;
}

//______________________________________________________________________________
AliESDMuonPad* AliESDEvent::NewMuonPad() 
{
  // create a new MUON pad at the end of the internal array of pad
  TClonesArray &fmu = *fMuonPads;
  return new(fmu[fMuonPads->GetEntriesFast()]) AliESDMuonPad();
}

//______________________________________________________________________________
void AliESDEvent::AddPmdTrack(const AliESDPmdTrack *t) 
{
  TClonesArray &fpmd = *fPmdTracks;
  new(fpmd[fPmdTracks->GetEntriesFast()]) AliESDPmdTrack(*t);
}

//______________________________________________________________________________
void AliESDEvent::SetTrdTrigger(const AliESDTrdTrigger *t)
{
  *fTrdTrigger = *t;
}

//______________________________________________________________________________
void AliESDEvent::AddTrdTrack(const AliESDTrdTrack *t) 
{
  TClonesArray &ftrd = *fTrdTracks;
  new(ftrd[fTrdTracks->GetEntriesFast()]) AliESDTrdTrack(*t);
}

//______________________________________________________________________________
void AliESDEvent::AddTrdTracklet(const AliESDTrdTracklet *trkl)
{
  new ((*fTrdTracklets)[fTrdTracklets->GetEntriesFast()]) AliESDTrdTracklet(*trkl);
}

//______________________________________________________________________________
void AliESDEvent::AddTrdTracklet(UInt_t trackletWord, Short_t hcid, Int_t label)
{
  new ((*fTrdTracklets)[fTrdTracklets->GetEntriesFast()]) AliESDTrdTracklet(trackletWord, hcid, label);
}

//______________________________________________________________________________
Int_t AliESDEvent::AddKink(const AliESDkink *c) 
{
  // Add kink
  TClonesArray &fk = *fKinks;
  AliESDkink * kink = new(fk[fKinks->GetEntriesFast()]) AliESDkink(*c);
  kink->SetID(fKinks->GetEntriesFast()); // CKB different from the other imps..
  return fKinks->GetEntriesFast()-1;
}


//______________________________________________________________________________
void AliESDEvent::AddCascade(const AliESDcascade *c) 
{
  TClonesArray &fc = *fCascades;
  new(fc[fCascades->GetEntriesFast()]) AliESDcascade(*c);
}

//______________________________________________________________________________
void AliESDEvent::AddCosmicTrack(const AliESDCosmicTrack *t) 
{
  TClonesArray &ft = *fCosmicTracks;
  new(ft[fCosmicTracks->GetEntriesFast()]) AliESDCosmicTrack(*t);
} 


//______________________________________________________________________________
Int_t AliESDEvent::AddCaloCluster(const AliESDCaloCluster *c) 
{
  // Add calocluster
  TClonesArray &fc = *fCaloClusters;
  AliESDCaloCluster *clus = new(fc[fCaloClusters->GetEntriesFast()]) AliESDCaloCluster(*c);
  clus->SetID(fCaloClusters->GetEntriesFast()-1);
  return fCaloClusters->GetEntriesFast()-1;
}


//______________________________________________________________________________
void  AliESDEvent::AddRawDataErrorLog(const AliRawDataErrorLog *log) const {
  TClonesArray &errlogs = *fErrorLogs;
  new(errlogs[errlogs.GetEntriesFast()])  AliRawDataErrorLog(*log);
}

//______________________________________________________________________________
void AliESDEvent::SetZDCData(const AliESDZDC * obj)
{ 
  // use already allocated space
  if(fESDZDC)
    *fESDZDC = *obj;
}

//______________________________________________________________________________
void  AliESDEvent::SetPrimaryVertexTPC(const AliESDVertex *vertex) 
{
  // Set the TPC vertex
  // use already allocated space
  if(fTPCVertex){
    *fTPCVertex = *vertex;
    fTPCVertex->SetName(fgkESDListName[kTPCVertex]);
  }
}

//______________________________________________________________________________
void  AliESDEvent::SetPrimaryVertexSPD(const AliESDVertex *vertex) 
{
  // Set the SPD vertex
  // use already allocated space
  if(fSPDVertex){
    *fSPDVertex = *vertex;
    fSPDVertex->SetName(fgkESDListName[kSPDVertex]);
  }
}

//______________________________________________________________________________
void  AliESDEvent::SetPrimaryVertexTracks(const AliESDVertex *vertex) 
{
  // Set the primary vertex reconstructed using he ESD tracks.
  // use already allocated space
  if(fPrimaryVertex){
    *fPrimaryVertex = *vertex;
    fPrimaryVertex->SetName(fgkESDListName[kPrimaryVertex]);
  }
}

//______________________________________________________________________________
const AliESDVertex * AliESDEvent::GetPrimaryVertex() const 
{
  //
  // Get the "best" available reconstructed primary vertex.
  //
  if(fPrimaryVertex){
    if (fPrimaryVertex->GetStatus()) return fPrimaryVertex;
  }
  if(fSPDVertex){
    if (fSPDVertex->GetStatus()) return fSPDVertex;
  }
  if(fTPCVertex) return fTPCVertex;
  
  AliWarning("No primary vertex available. Returning the \"default\"...");
  return fSPDVertex;
}

//______________________________________________________________________________
AliESDVertex * AliESDEvent::PrimaryVertexTracksUnconstrained() const 
{
  //
  // Removes diamond constraint from fPrimaryVertex (reconstructed with tracks)
  // Returns a AliESDVertex which has to be deleted by the user
  //
  if(!fPrimaryVertex) {
    AliWarning("No primary vertex from tracks available.");
    return 0;
  }
  if(!fPrimaryVertex->GetStatus()) {
    AliWarning("No primary vertex from tracks available.");
    return 0;
  }

  AliVertexerTracks vertexer(GetMagneticField());
  Float_t diamondxyz[3]={(Float_t)GetDiamondX(),(Float_t)GetDiamondY(),0.};
  Float_t diamondcovxy[3]; GetDiamondCovXY(diamondcovxy);
  Float_t diamondcov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,7.};
  AliESDVertex *vertex = 
    (AliESDVertex*)vertexer.RemoveConstraintFromVertex(fPrimaryVertex,diamondxyz,diamondcov);

  return vertex;
}

//______________________________________________________________________________
void AliESDEvent::SetMultiplicity(const AliMultiplicity *mul) 
{
  // Set the SPD Multiplicity
  if(fSPDMult){
    *fSPDMult = *mul;
  }
}


//______________________________________________________________________________
void AliESDEvent::SetFMDData(AliESDFMD * obj) 
{ 
  // use already allocated space
  if(fESDFMD){
    *fESDFMD = *obj;
  }
}

//______________________________________________________________________________
void AliESDEvent::SetVZEROData(const AliESDVZERO * obj)
{ 
  // use already allocated space
  if(fESDVZERO)
    *fESDVZERO = *obj;
}

//______________________________________________________________________________
void AliESDEvent::SetTZEROData(const AliESDTZERO * obj)
{ 
  // use already allocated space
  if(fESDTZERO)
    *fESDTZERO = *obj;
}


//______________________________________________________________________________
void AliESDEvent::SetACORDEData(AliESDACORDE * obj)
{
  if(fESDACORDE)
    *fESDACORDE = *obj;
}

//______________________________________________________________________________
void AliESDEvent::SetADData(AliESDAD * obj)
{
  if(fESDAD)
    *fESDAD = *obj;
}

//______________________________________________________________________________
void AliESDEvent::GetESDfriend(AliESDfriend *ev) const 
{
  //
  // Extracts the complementary info from the ESD
  //
  if (!ev) return;

  Int_t ntrk=GetNumberOfTracks();

  for (Int_t i=0; i<ntrk; i++) {
    AliESDtrack *t=GetTrack(i);
    if (!t) {AliFatal(Form("NULL pointer for ESD track %d",i));}
    const AliESDfriendTrack *f=t->GetFriendTrack();
    ev->AddTrack(f);

    t->ReleaseESDfriendTrack();// Not to have two copies of "friendTrack"

  }

  AliESDfriend *fr = (AliESDfriend*)(const_cast<AliESDEvent*>(this)->FindFriend());
  if (fr) ev->SetVZEROfriend(fr->GetVZEROfriend());
}

//______________________________________________________________________________
void AliESDEvent::AddObject(TObject* obj) 
{
  // Add an object to the list of object.
  // Please be aware that in order to increase performance you should
  // refrain from using TObjArrays (if possible). Use TClonesArrays, instead.
  fESDObjects->SetOwner(kTRUE);
  fESDObjects->AddLast(obj);
}

//______________________________________________________________________________
void AliESDEvent::GetStdContent() 
{
  // set pointers for standard content
  // get by name much safer and not a big overhead since not called very often
 
  fESDRun = (AliESDRun*)fESDObjects->FindObject(fgkESDListName[kESDRun]);
  fHeader = (AliESDHeader*)fESDObjects->FindObject(fgkESDListName[kHeader]);
  fESDZDC = (AliESDZDC*)fESDObjects->FindObject(fgkESDListName[kESDZDC]);
  fESDFMD = (AliESDFMD*)fESDObjects->FindObject(fgkESDListName[kESDFMD]);
  fESDVZERO = (AliESDVZERO*)fESDObjects->FindObject(fgkESDListName[kESDVZERO]);
  fESDTZERO = (AliESDTZERO*)fESDObjects->FindObject(fgkESDListName[kESDTZERO]);
  fTPCVertex = (AliESDVertex*)fESDObjects->FindObject(fgkESDListName[kTPCVertex]);
  fSPDVertex = (AliESDVertex*)fESDObjects->FindObject(fgkESDListName[kSPDVertex]);
  fPrimaryVertex = (AliESDVertex*)fESDObjects->FindObject(fgkESDListName[kPrimaryVertex]);
  fSPDMult =       (AliMultiplicity*)fESDObjects->FindObject(fgkESDListName[kSPDMult]);
  fPHOSTrigger = (AliESDCaloTrigger*)fESDObjects->FindObject(fgkESDListName[kPHOSTrigger]);
  fEMCALTrigger = (AliESDCaloTrigger*)fESDObjects->FindObject(fgkESDListName[kEMCALTrigger]);
  fSPDPileupVertices = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kSPDPileupVertices]);
  fTrkPileupVertices = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kTrkPileupVertices]);
  fTracks = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kTracks]);
  fMuonTracks = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kMuonTracks]);
  fMuonClusters = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kMuonClusters]);
  fMuonPads = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kMuonPads]);
  fMuonGlobalTracks = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kMuonGlobalTracks]);         // AU
  fPmdTracks = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kPmdTracks]);
  fTrdTrigger = (AliESDTrdTrigger*)fESDObjects->FindObject(fgkESDListName[kTrdTrigger]);
  fTrdTracks = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kTrdTracks]);
  fTrdTracklets = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kTrdTracklets]);
  fV0s = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kV0s]);
  fCascades = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kCascades]);
  fKinks = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kKinks]);
  fCaloClusters = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kCaloClusters]);
  fEMCALCells = (AliESDCaloCells*)fESDObjects->FindObject(fgkESDListName[kEMCALCells]);
  fPHOSCells = (AliESDCaloCells*)fESDObjects->FindObject(fgkESDListName[kPHOSCells]);
  fErrorLogs = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kErrorLogs]);
  fESDACORDE = (AliESDACORDE*)fESDObjects->FindObject(fgkESDListName[kESDACORDE]);
  fESDAD = (AliESDAD*)fESDObjects->FindObject(fgkESDListName[kESDAD]);
  fTOFHeader = (AliTOFHeader*)fESDObjects->FindObject(fgkESDListName[kTOFHeader]);
  fCosmicTracks = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kCosmicTracks]);
  fESDTOFClusters = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kTOFclusters]);
  fESDTOFHits = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kTOFhit]);
  fESDTOFMatches = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kTOFmatch]);
}

//______________________________________________________________________________
void AliESDEvent::SetStdNames(){
  // Set the names of the standard contents
  // 
  if(fESDObjects->GetEntries()>=kESDListN){
    for(int i = 0;i < fESDObjects->GetEntries() && i<kESDListN;i++){
      TObject *fObj = fESDObjects->At(i);
      if(fObj->InheritsFrom("TNamed")){
	((TNamed*)fObj)->SetName(fgkESDListName[i]);
      }
      else if(fObj->InheritsFrom("TClonesArray")){
	((TClonesArray*)fObj)->SetName(fgkESDListName[i]);
      }
    }
  }
  else{
     AliWarning("Std Entries missing");
  }
} 

//______________________________________________________________________________
void AliESDEvent::CreateStdContent(Bool_t bUseThisList){
  fUseOwnList = bUseThisList;
  CreateStdContent();
}

//______________________________________________________________________________
void AliESDEvent::CreateStdContent() 
{
  // create the standard AOD content and set pointers

  // create standard objects and add them to the TList of objects
  AddObject(new AliESDRun());
  AddObject(new AliESDHeader());
  AddObject(new AliESDZDC());
  AddObject(new AliESDFMD());
  AddObject(new AliESDVZERO());
  AddObject(new AliESDTZERO());
  AddObject(new AliESDVertex());
  AddObject(new AliESDVertex());
  AddObject(new AliESDVertex());
  AddObject(new AliMultiplicity());
  AddObject(new AliESDCaloTrigger());
  AddObject(new AliESDCaloTrigger());
  AddObject(new TClonesArray("AliESDVertex",0));
  AddObject(new TClonesArray("AliESDVertex",0));
  AddObject(new TClonesArray("AliESDtrack",0));
  AddObject(new TClonesArray("AliESDMuonTrack",0));
  AddObject(new TClonesArray("AliESDMuonCluster",0));
  AddObject(new TClonesArray("AliESDMuonPad",0));
  AddObject(new TClonesArray("AliESDMuonGlobalTrack",0));   // AU
  AddObject(new TClonesArray("AliESDPmdTrack",0));
  AddObject(new AliESDTrdTrigger());
  AddObject(new TClonesArray("AliESDTrdTrack",0));
  AddObject(new TClonesArray("AliESDTrdTracklet",0));
  AddObject(new TClonesArray("AliESDv0",0));
  AddObject(new TClonesArray("AliESDcascade",0));
  AddObject(new TClonesArray("AliESDkink",0));
  AddObject(new TClonesArray("AliESDCaloCluster",0));
  AddObject(new AliESDCaloCells());
  AddObject(new AliESDCaloCells());
  AddObject(new TClonesArray("AliRawDataErrorLog",0));
  AddObject(new AliESDACORDE()); 
  AddObject(new AliESDAD()); 
  AddObject(new AliTOFHeader());
  AddObject(new TClonesArray("AliESDCosmicTrack",0));
  AddObject(new TClonesArray("AliESDTOFCluster",0));
  AddObject(new TClonesArray("AliESDTOFHit",0));
  AddObject(new TClonesArray("AliESDTOFMatch",0));
	
  // check the order of the indices against enum...

  // set names
  SetStdNames();
  // read back pointers
  GetStdContent();
}

//______________________________________________________________________________
void AliESDEvent::CompleteStdContent() 
{
  // Create missing standard objects and add them to the TList of objects
  //
  // Add cosmic tracks for cases where esd files were created 
  // before adding them to the std content
  if (!fESDObjects->FindObject(fgkESDListName[kCosmicTracks])) {
    TClonesArray* cosmics = new TClonesArray("AliESDCosmicTrack",0);
    fESDObjects->AddAt(cosmics, kCosmicTracks);
    fESDObjects->SetOwner(kTRUE);
  }
  // Add new MUON containers if missing (for backward compatibility)
  if (!fESDObjects->FindObject(fgkESDListName[kMuonClusters])) {
    TClonesArray* muonClusters = new TClonesArray("AliESDMuonCluster",0);
    muonClusters->SetName(fgkESDListName[kMuonClusters]);
    fESDObjects->AddAt(muonClusters, kMuonClusters);
    fESDObjects->SetOwner(kTRUE);
  }
  if (!fESDObjects->FindObject(fgkESDListName[kMuonPads])) {
    TClonesArray* muonPads = new TClonesArray("AliESDMuonPad",0);
    muonPads->SetName(fgkESDListName[kMuonPads]);
    fESDObjects->AddAt(muonPads, kMuonPads);
    fESDObjects->SetOwner(kTRUE);
  }
}

//______________________________________________________________________________
TObject* AliESDEvent::FindListObject(const char *name) const {
//
// Find object with name "name" in the list of branches
//
  if(fESDObjects){
    return fESDObjects->FindObject(name);
  }
  return 0;
} 

//______________________________________________________________________________
Int_t AliESDEvent::GetPHOSClusters(TRefArray *clusters) const
{
  // fills the provided TRefArray with all found phos clusters
  
  clusters->Clear();
  
  AliESDCaloCluster *cl = 0;
  for (Int_t i = 0; i < GetNumberOfCaloClusters(); i++) {
    
    if ( (cl = GetCaloCluster(i)) ) {
      if (cl->IsPHOS()){
	clusters->Add(cl);
	AliDebug(1,Form("IsPHOS cluster %d Size: %d \n",i,clusters->GetEntriesFast()));
      }
    }
  }
  return clusters->GetEntriesFast();
}

//______________________________________________________________________________
Int_t AliESDEvent::GetEMCALClusters(TRefArray *clusters) const
{
  // fills the provided TRefArray with all found emcal clusters

  clusters->Clear();

  AliESDCaloCluster *cl = 0;
  for (Int_t i = 0; i < GetNumberOfCaloClusters(); i++) {

    if ( (cl = GetCaloCluster(i)) ) {
      if (cl->IsEMCAL()){
	clusters->Add(cl);
	AliDebug(1,Form("IsEMCAL cluster %d Size: %d \n",i,clusters->GetEntriesFast()));
      }
    }
  }
  return clusters->GetEntriesFast();
}

//______________________________________________________________________________
void AliESDEvent::WriteToTree(TTree* tree) const {
  // Book the branches as in TTree::Branch(TCollection*)
  // but add a "." at the end of top level branches which are
  // not a TClonesArray


  TString branchname;
  TIter next(fESDObjects);
  const Int_t kSplitlevel = 99; // default value in TTree::Branch()
  const Int_t kBufsize = 32000; // default value in TTree::Branch()
  TObject *obj = 0;

  while ((obj = next())) {
    branchname.Form("%s", obj->GetName());
    if(branchname.CompareTo("AliESDfriend")==0)branchname = "ESDfriend.";
    if ((kSplitlevel > 1) &&  !obj->InheritsFrom(TClonesArray::Class())) {
      if(!branchname.EndsWith("."))branchname += ".";
    }
    if (!tree->FindBranch(branchname)) {
      // For the custom streamer to be called splitlevel
      // has to be negative, only needed for HLT
      Int_t splitLevel = (TString(obj->ClassName()) == "AliHLTGlobalTriggerDecision") ? -1 : kSplitlevel - 1;
      tree->Bronch(branchname, obj->ClassName(), fESDObjects->GetObjectRef(obj),kBufsize, splitLevel);
    }
  }

  tree->Branch("fDetectorStatus",(void*)&fDetectorStatus,"fDetectorStatus/l");
  tree->Branch("fDAQDetectorPattern",(void*)&fDAQDetectorPattern,"fDAQDetectorPattern/i");
  tree->Branch("fDAQAttributes",(void*)&fDAQAttributes,"fDAQAttributes/i");
}

//______________________________________________________________________________
void AliESDEvent::ReadFromTree(TTree *tree, Option_t* opt){
//
// Connect the ESDEvent to a tree
//
  if(!tree){
    AliWarning("AliESDEvent::ReadFromTree() Zero Pointer to Tree \n");
    return;
  }
  // load the TTree
  if(!tree->GetTree())tree->LoadTree(0);

  // if we find the "ESD" branch on the tree we do have the old structure
  if(tree->GetBranch("ESD")) {
    fOldMuonStructure = kFALSE;
    char ** address  = (char **)(tree->GetBranch("ESD")->GetAddress());
    // do we have the friend branch
    TBranch * esdFB = tree->GetBranch("ESDfriend.");
    char ** addressF = 0;
    if(esdFB)addressF = (char **)(esdFB->GetAddress());
    if (!address) {
      AliInfo("AliESDEvent::ReadFromTree() Reading old Tree");
      tree->SetBranchAddress("ESD",       &fESDOld);
      if(esdFB){
	tree->SetBranchAddress("ESDfriend.",&fESDFriendOld);
      }
    } else {
      AliInfo("AliESDEvent::ReadFromTree() Reading old Tree");
      AliInfo("Branch already connected. Using existing branch address.");
      fESDOld       = (AliESD*)       (*address);
      // addressF can still be 0, since branch needs to switched on
      if(addressF)fESDFriendOld = (AliESDfriend*) (*addressF);
    }
				       
    //  have already connected the old ESD structure... ?
    // reuse also the pointer of the AlliESDEvent
    // otherwise create new ones
    TList* connectedList = (TList*) (tree->GetUserInfo()->FindObject("ESDObjectsConnectedToTree"));
  
    if(connectedList){
      // If connected use the connected list of objects
      if(fESDObjects!= connectedList){
	// protect when called twice 
	fESDObjects->Delete();
	fESDObjects = connectedList;
      }
      GetStdContent(); 

      
      // The pointer to the friend changes when called twice via InitIO
      // since AliESDEvent is deleted
      TObject* oldf = FindListObject("AliESDfriend");
      TObject* newf = 0;
      if(addressF){
	newf = (TObject*)*addressF;
      }
      if(newf!=0&&oldf!=newf){
	// remove the old reference
	// Should we also delete it? Or is this handled in TTree I/O
	// since it is created by the first SetBranchAddress
	fESDObjects->Remove(oldf);
	// add the new one 
	fESDObjects->Add(newf);
      }
      
      fConnected = true;
      return;
    }
    // else...    
    CreateStdContent(); // create for copy
    // if we have the esdfriend add it, so we always can access it via the userinfo
    if(fESDFriendOld)AddObject(fESDFriendOld);
    // we are not owner of the list objects 
    // must not delete it
    fESDObjects->SetOwner(kTRUE);
    fESDObjects->SetName("ESDObjectsConnectedToTree");
    tree->GetUserInfo()->Add(fESDObjects);
    fConnected = true;
    return;
  }
  

    delete fESDOld;
    fESDOld = 0;
  // Try to find AliESDEvent
  AliESDEvent *esdEvent = 0;
  esdEvent = (AliESDEvent*)tree->GetTree()->GetUserInfo()->FindObject("AliESDEvent");
  if(esdEvent){   
      // Check if already connected to tree
    esdEvent->Reset();
    TList* connectedList = (TList*) (tree->GetUserInfo()->FindObject("ESDObjectsConnectedToTree"));

    
    if (connectedList && (strcmp(opt, "reconnect"))) {
      // If connected use the connected list if objects
      fESDObjects->Delete();
      fESDObjects = connectedList;
      tree->SetBranchAddress("fDetectorStatus",&fDetectorStatus); //PH probably redundant
      tree->SetBranchAddress("fDAQDetectorPattern",&fDAQDetectorPattern);
      tree->SetBranchAddress("fDAQAttributes",&fDAQAttributes);
      GetStdContent(); 
      fOldMuonStructure = fESDObjects->TestBit(BIT(23));
      fConnected = true;
      return;
    }

    // Connect to tree
    // prevent a memory leak when reading back the TList
    // if (!(strcmp(opt, "reconnect"))) fESDObjects->Delete();
    
    if(!fUseOwnList){
      // create a new TList from the UserInfo TList... 
      // copy constructor does not work...
      fESDObjects = (TList*)(esdEvent->GetList()->Clone());
      fESDObjects->SetOwner(kTRUE);
    }
    else if ( fESDObjects->GetEntries()==0){
      // at least create the std content if we want to read to our list
      CreateStdContent(); 
    }

    // in principle
    // we only need new things in the list if we do no already have it..
    // TODO just add new entries
    CompleteStdContent();

    if(fESDObjects->GetEntries()<kESDListN){
      AliWarning(Form("AliESDEvent::ReadFromTree() TList contains less than the standard contents %d < %d \n",
		      fESDObjects->GetEntries(),kESDListN));
    }
    // set the branch addresses
    fOldMuonStructure = kFALSE;
    TIter next(fESDObjects);
    TNamed *el;
    while((el=(TNamed*)next())){
      TString bname(el->GetName());
      if(bname.CompareTo("AliESDfriend")==0)
	{
	  // AliESDfriend does not have a name ...
	    TBranch *br = tree->GetBranch("ESDfriend.");
	    if (br) tree->SetBranchAddress("ESDfriend.",fESDObjects->GetObjectRef(el));
	}
      else{
	// check if branch exists under this Name
        TBranch *br = tree->GetBranch(bname.Data());
        if(br){
          tree->SetBranchAddress(bname.Data(),fESDObjects->GetObjectRef(el));
        }
        else{
          br = tree->GetBranch(Form("%s.",bname.Data()));
          if(br){
            tree->SetBranchAddress(Form("%s.",bname.Data()),fESDObjects->GetObjectRef(el));
          }
          else{
            AliWarning(Form("AliESDEvent::ReadFromTree() No Branch found with Name %s or %s.",bname.Data(),bname.Data()));
	    if (bname == fgkESDListName[kMuonClusters]) {
	      fOldMuonStructure = kTRUE;
	    }
          }

	}
      }
    }
    tree->SetBranchAddress("fDetectorStatus",&fDetectorStatus);
    tree->SetBranchAddress("fDAQDetectorPattern",&fDAQDetectorPattern);
    tree->SetBranchAddress("fDAQAttributes",&fDAQAttributes);

    GetStdContent();
    // when reading back we are not owner of the list 
    // must not delete it
    fESDObjects->SetOwner(kTRUE);
    fESDObjects->SetName("ESDObjectsConnectedToTree");
    fESDObjects->SetBit(BIT(23), fOldMuonStructure);
    // we are not owner of the list objects 
    // must not delete it
    tree->GetUserInfo()->Add(fESDObjects);
    tree->GetUserInfo()->SetOwner(kFALSE);
    fConnected = true;
  }// no esdEvent -->
  else {
    // we can't get the list from the user data, create standard content
    // and set it by hand (no ESDfriend at the moment
    CreateStdContent();
    fOldMuonStructure = kFALSE;
    TIter next(fESDObjects);
    TNamed *el;
    while((el=(TNamed*)next())){
      TString bname(el->GetName());    
      TBranch *br = tree->GetBranch(bname.Data());
      if(br){
	tree->SetBranchAddress(bname.Data(),fESDObjects->GetObjectRef(el));
      }
      else{
	br = tree->GetBranch(Form("%s.",bname.Data()));
	if(br){
	  tree->SetBranchAddress(Form("%s.",bname.Data()),fESDObjects->GetObjectRef(el));
	}
	else if (bname == fgkESDListName[kMuonClusters]) {
	  fOldMuonStructure = kTRUE;
	}
      }
    }
    tree->SetBranchAddress("fDetectorStatus",&fDetectorStatus);
    tree->SetBranchAddress("fDAQDetectorPattern",&fDAQDetectorPattern);
    tree->SetBranchAddress("fDAQAttributes",&fDAQAttributes);

    GetStdContent();
    // when reading back we are not owner of the list 
    // must not delete it
    fESDObjects->SetOwner(kTRUE);
  }
}

//______________________________________________________________________________
void AliESDEvent::CopyFromOldESD()
{
  // Method which copies over everthing from the old esd structure to the 
  // new  
  if(fESDOld){
    ResetStdContent();
     // Run
    SetRunNumber(fESDOld->GetRunNumber());
    SetPeriodNumber(fESDOld->GetPeriodNumber());
    SetMagneticField(fESDOld->GetMagneticField());
  
    // leave out diamond ...
    // SetDiamond(const AliESDVertex *vertex) { fESDRun->SetDiamond(vertex);}

    // header
    SetTriggerMask(fESDOld->GetTriggerMask());
    SetOrbitNumber(fESDOld->GetOrbitNumber());
    SetTimeStamp(fESDOld->GetTimeStamp());
    SetEventType(fESDOld->GetEventType());
    SetEventNumberInFile(fESDOld->GetEventNumberInFile());
    SetBunchCrossNumber(fESDOld->GetBunchCrossNumber());
    SetTriggerCluster(fESDOld->GetTriggerCluster());

    // ZDC

    SetZDC(fESDOld->GetZDCN1Energy(),
           fESDOld->GetZDCP1Energy(),
           fESDOld->GetZDCEMEnergy(),
           0,
           fESDOld->GetZDCN2Energy(),
           fESDOld->GetZDCP2Energy(),
           fESDOld->GetZDCParticipants(),
	   0,
	   0,
	   0,
	   0,
	   0,
	   0);

    // FMD
    
    if(fESDOld->GetFMDData())SetFMDData(fESDOld->GetFMDData());

    // T0

    SetT0zVertex(fESDOld->GetT0zVertex());
    SetT0(fESDOld->GetT0());
    //  leave amps out

    // VZERO
    if (fESDOld->GetVZEROData()) SetVZEROData(fESDOld->GetVZEROData());

    if(fESDOld->GetVertex())SetPrimaryVertexSPD(fESDOld->GetVertex());

    if(fESDOld->GetPrimaryVertex())SetPrimaryVertexTracks(fESDOld->GetPrimaryVertex());

    if(fESDOld->GetMultiplicity())SetMultiplicity(fESDOld->GetMultiplicity());

    for(int i = 0;i<fESDOld->GetNumberOfTracks();i++){
      AddTrack(fESDOld->GetTrack(i));
    }

    for(int i = 0;i<fESDOld->GetNumberOfMuonTracks();i++){
      AddMuonTrack(fESDOld->GetMuonTrack(i));
    }

    for(int i = 0;i<fESDOld->GetNumberOfPmdTracks();i++){
      AddPmdTrack(fESDOld->GetPmdTrack(i));
    }

    for(int i = 0;i<fESDOld->GetNumberOfTrdTracks();i++){
      AddTrdTrack(fESDOld->GetTrdTrack(i));
    }

    for(int i = 0;i<fESDOld->GetNumberOfV0s();i++){
      AddV0(fESDOld->GetV0(i));
    }

    for(int i = 0;i<fESDOld->GetNumberOfCascades();i++){
      AddCascade(fESDOld->GetCascade(i));
    }

    for(int i = 0;i<fESDOld->GetNumberOfKinks();i++){
      AddKink(fESDOld->GetKink(i));
    }


    for(int i = 0;i<fESDOld->GetNumberOfCaloClusters();i++){
      AddCaloCluster(fESDOld->GetCaloCluster(i));
    }
	  
  }// if fesdold
}

//______________________________________________________________________________
Bool_t AliESDEvent::IsEventSelected(const char *trigExpr) const
{
  // Check if the event satisfies the trigger
  // selection expression trigExpr.
  // trigExpr can be any logical expression
  // of the trigger classes defined in AliESDRun
  // In case of wrong syntax return kTRUE.
  // Modified by rl for 100 classes - to be tested

  TString expr(trigExpr);
  if (expr.IsNull()) return kTRUE;

  ULong64_t mask = GetTriggerMask();
  for(Int_t itrig = 0; itrig < AliESDRun::kNTriggerClasses/2; itrig++) {
    if (mask & (1ull << itrig)) {
      expr.ReplaceAll(GetESDRun()->GetTriggerClass(itrig),"1");
    }
    else {
      expr.ReplaceAll(GetESDRun()->GetTriggerClass(itrig),"0");
    }
  }
  ULong64_t maskNext50 = GetTriggerMaskNext50();
  for(Int_t itrig = 0; itrig < AliESDRun::kNTriggerClasses/2; itrig++) {
    if (maskNext50 & (1ull << itrig)) {
      expr.ReplaceAll(GetESDRun()->GetTriggerClass(itrig+50),"1");
    }
    else {
      expr.ReplaceAll(GetESDRun()->GetTriggerClass(itrig+50),"0");
    }
  }

  Int_t error;
  if ((gROOT->ProcessLineFast(expr.Data(),&error) == 0) &&
      (error == TInterpreter::kNoError)) {
    return kFALSE;
  }

  return kTRUE;

}

//______________________________________________________________________________
TObject*  AliESDEvent::GetHLTTriggerDecision() const
{
  // get the HLT trigger decission object

  // cast away const'nes because the FindListObject method
  // is not const
  AliESDEvent* pNonConst=const_cast<AliESDEvent*>(this);
  return pNonConst->FindListObject("HLTGlobalTrigger");
}

TString   AliESDEvent::GetHLTTriggerDescription() const
{
  // get the HLT trigger decission description
  TString description;
  TObject* pDecision=GetHLTTriggerDecision();
  if (pDecision) {
    description=pDecision->GetTitle();
  }

  return description;
}

//______________________________________________________________________________
Bool_t    AliESDEvent::IsHLTTriggerFired(const char* name) const
{
  // get the HLT trigger decission description
  TObject* pDecision=GetHLTTriggerDecision();
  if (!pDecision) return kFALSE;

  Option_t* option=pDecision->GetOption();
  if (option==NULL || *option!='1') return kFALSE;

  if (name) {
    TString description=GetHLTTriggerDescription();
    Int_t index=description.Index(name);
    if (index<0) return kFALSE;
    index+=strlen(name);
    if (index>=description.Length()) return kFALSE;
    if (description[index]!=0 && description[index]!=' ') return kFALSE;
  }
  return kTRUE;
}

//______________________________________________________________________________
Bool_t  AliESDEvent::IsPileupFromSPD(Int_t minContributors, 
				     Double_t minZdist, 
				     Double_t nSigmaZdist, 
				     Double_t nSigmaDiamXY, 
				     Double_t nSigmaDiamZ) const{
  //
  // This function checks if there was a pile up
  // reconstructed with SPD
  //
  Int_t nc1=fSPDVertex->GetNContributors();
  if(nc1<1) return kFALSE;
  Int_t nPileVert=GetNumberOfPileupVerticesSPD();
  if(nPileVert==0) return kFALSE;
  
  for(Int_t i=0; i<nPileVert;i++){
    const AliESDVertex* pv=GetPileupVertexSPD(i);
    Int_t nc2=pv->GetNContributors();
    if(nc2>=minContributors){
      Double_t z1=fSPDVertex->GetZ();
      Double_t z2=pv->GetZ();
      Double_t distZ=TMath::Abs(z2-z1);
      Double_t distZdiam=TMath::Abs(z2-GetDiamondZ());
      Double_t cutZdiam=nSigmaDiamZ*TMath::Sqrt(GetSigma2DiamondZ());
      if(GetSigma2DiamondZ()<0.0001)cutZdiam=99999.; //protection for missing z diamond information
      if(distZ>minZdist && distZdiam<cutZdiam){
	Double_t x2=pv->GetX();
	Double_t y2=pv->GetY();
	Double_t distXdiam=TMath::Abs(x2-GetDiamondX());
	Double_t distYdiam=TMath::Abs(y2-GetDiamondY());
	Double_t cov1[6],cov2[6];	
	fSPDVertex->GetCovarianceMatrix(cov1);
	pv->GetCovarianceMatrix(cov2);
	Double_t errxDist=TMath::Sqrt(cov2[0]+GetSigma2DiamondX());
	Double_t erryDist=TMath::Sqrt(cov2[2]+GetSigma2DiamondY());
	Double_t errzDist=TMath::Sqrt(cov1[5]+cov2[5]);
	Double_t cutXdiam=nSigmaDiamXY*errxDist;
	if(GetSigma2DiamondX()<0.0001)cutXdiam=99999.; //protection for missing diamond information
	Double_t cutYdiam=nSigmaDiamXY*erryDist;
	if(GetSigma2DiamondY()<0.0001)cutYdiam=99999.; //protection for missing diamond information
	if( (distXdiam<cutXdiam) && (distYdiam<cutYdiam) && (distZ>nSigmaZdist*errzDist) ){
	  return kTRUE;
	}
      }
    }
  }
  return kFALSE;
}

//______________________________________________________________________________
void AliESDEvent::EstimateMultiplicity(Int_t &tracklets, Int_t &trITSTPC, Int_t &trITSSApure, Double_t eta, Bool_t useDCAFlag,Bool_t useV0Flag) const
{
  //
  // calculates 3 estimators for the multiplicity in the -eta:eta range
  // tracklets   : using SPD tracklets only
  // trITSTPC    : using TPC/ITS + complementary ITS SA tracks + tracklets from clusters not used by tracks
  // trITSSApure : using ITS standalone tracks + tracklets from clusters not used by tracks
  // if useDCAFlag is true: account for the ESDtrack flag marking the tracks with large DCA
  // if useV0Flag  is true: account for the ESDtrack flag marking conversion and K0's V0s

  AliWarning("This obsolete method will be eliminated soon. Use AliESDtrackCuts::GetReferenceMultiplicity");

  tracklets = trITSSApure = trITSTPC = 0;
  int ntr = fSPDMult ? fSPDMult->GetNumberOfTracklets() : 0;
  //
  // count tracklets
  for (int itr=ntr;itr--;) { 
    if (TMath::Abs(fSPDMult->GetEta(itr))>eta) continue;
    tracklets++;
    if (fSPDMult->FreeClustersTracklet(itr,0)) trITSTPC++;    // not used in ITS/TPC or ITS_SA track
    if (fSPDMult->FreeClustersTracklet(itr,1)) trITSSApure++; // not used in ITS_SA_Pure track
  }
  //
  // count real tracks
  ntr = GetNumberOfTracks();
  for (int itr=ntr;itr--;) {
    AliESDtrack *t = GetTrack(itr);
    if (!t) {AliFatal(Form("NULL pointer for ESD track %d",itr));}
    if (TMath::Abs(t->Eta())>eta) continue;
    if (!t->IsOn(AliESDtrack::kITSin)) continue;
    if (useDCAFlag && t->IsOn(AliESDtrack::kMultSec))  continue;
    if (useV0Flag  && t->IsOn(AliESDtrack::kMultInV0)) continue;    
    if (t->IsOn(AliESDtrack::kITSpureSA)) trITSSApure++;
    else                                  trITSTPC++;
  }
  //
}

//______________________________________________________________________________
Bool_t AliESDEvent::IsPileupFromSPDInMultBins() const {
    Int_t nTracklets=GetMultiplicity()->GetNumberOfTracklets();
    if(nTracklets<20) return IsPileupFromSPD(3,0.8);
    else if(nTracklets<50) return IsPileupFromSPD(4,0.8);
    else return IsPileupFromSPD(5,0.8);
}

//______________________________________________________________________________
void  AliESDEvent::SetTOFHeader(const AliTOFHeader *header)
{
  //
  // Set the TOF event_time
  //

  if (fTOFHeader) {
    *fTOFHeader=*header;
    //fTOFHeader->SetName(fgkESDListName[kTOFHeader]);
  }
  else {
    // for analysis of reconstructed events
    // when this information is not avaliable
    fTOFHeader = new AliTOFHeader(*header);
    //AddObject(fTOFHeader);
  }

}

//______________________________________________________________________________
AliCentrality* AliESDEvent::GetCentrality()
{
    if (!fCentrality) fCentrality = new AliCentrality();
    return  fCentrality;
}

//______________________________________________________________________________
AliEventplane* AliESDEvent::GetEventplane()
{
    if (!fEventplane) fEventplane = new AliEventplane();
    return  fEventplane;
}

//______________________________________________________________________________
Float_t AliESDEvent::GetVZEROEqMultiplicity(Int_t i) const
{
  // Get VZERO Multiplicity for channel i
  // Themethod uses the equalization factors
  // stored in the ESD-run object in order to
  // get equal multiplicities within a VZERO rins (1/8 of VZERO)
  if (!fESDVZERO || !fESDRun) return -1;

  Int_t ring = i/8;
  Float_t factorSum = 0;
  for(Int_t j = 8*ring; j < (8*ring+8); ++j) {
    factorSum += fESDRun->GetVZEROEqFactors(j);
  }
  Float_t factor = fESDRun->GetVZEROEqFactors(i)*8./factorSum;

  return (fESDVZERO->GetMultiplicity(i)/factor);
}

//______________________________________________________________________________
void AliESDEvent::SetTOFcluster(Int_t ntofclusters,AliESDTOFCluster *cluster,Int_t *mapping)
{
  // Reset TClonesArray of TOF clusters
  if (!fESDTOFClusters) {
    AliError("fESDTOFClusters is not initialized");
    return;
  }
  fESDTOFClusters->Clear();
  
  Int_t goodhit[20000];
  if(mapping){
    for(Int_t i=0;i < 20000;i++){
      goodhit[i] = 0;
    }
  }

  for(Int_t i=0;i < ntofclusters;i++){
    
    if(cluster[i].GetNMatchableTracks() || !mapping){
      if(mapping)
	mapping[i] = fESDTOFClusters->GetEntriesFast();
      
      // update TClonesArray
      TClonesArray &ftr = *fESDTOFClusters;
      AliESDTOFCluster *clusterTBW = new(ftr[fESDTOFClusters->GetEntriesFast()])AliESDTOFCluster(cluster[i]);

      if(mapping){
	// loop over hit in the cluster
        for(Int_t k=0;k < clusterTBW->GetNTOFhits();k++){
	  Int_t ipos = clusterTBW->GetHitIndex(k);
	  goodhit[ipos] = 1; // hit should be kept
	}
      }
    }
  }

  if(mapping){
    AliInfo(Form("TOF cluster before of matching = %i , after = %i\n",ntofclusters,fESDTOFClusters->GetEntriesFast()));
    Int_t hitnewpos[20000]={0};
    Int_t nhitOriginal = fESDTOFHits->GetEntries();
    for(Int_t i=0;i < fESDTOFHits->GetEntries();i++){
      if(goodhit[i]){
	hitnewpos[i] = i;
      }
      else{ // remove hit and decrease the hit array
	TClonesArray &a=*fESDTOFHits;
	Int_t lastpos = fESDTOFHits->GetEntries()-1;

	if(i == lastpos)
	  delete a.RemoveAt(i);
	else{
	  Int_t nhitBefore = fESDTOFHits->GetEntries();
	  for(Int_t k=nhitBefore-1;k>i;k--){ // find the last good track
	    if(!goodhit[k]){ // remove track
	      delete a.RemoveAt(k);
	      if(k-i==1) delete a.RemoveAt(i);
	    }
	    else{ // replace last one to the "i"
	      AliESDTOFHit *last = (AliESDTOFHit *) fESDTOFHits->At(k);
	      delete a.RemoveAt(i);
	      new (a[i]) AliESDTOFHit(*last);
	      delete a.RemoveAt(k);
	      hitnewpos[k] = i;
	      k = 0;
	    }
	  }
	}
      }
    }

    // remap cluster to hits
    for(Int_t i=0;i < fESDTOFClusters->GetEntries();i++){
      AliESDTOFCluster *cl = (AliESDTOFCluster *) fESDTOFClusters->At(i);
      // loop over hit in the cluster
      for(Int_t k=0;k < cl->GetNTOFhits();k++){
	cl->SetHitIndex(k,hitnewpos[cl->GetHitIndex(k)]);
      }
    }
    AliInfo(Form("TOF hit before of matching = %i , after = %i\n",nhitOriginal,fESDTOFHits->GetEntriesFast()));
  } // end mapping

}

//______________________________________________________________________________
void AliESDEvent::SetTOFcluster(Int_t ntofclusters,AliESDTOFCluster *cluster[],Int_t *mapping)
{    
  // Reset TClonesArray of TOF clusters
  if(fESDTOFClusters)fESDTOFClusters->Delete();
   
  Int_t goodhit[20000];
  if(mapping){
    for(Int_t i=0;i < 20000;i++){
      goodhit[i] = 0;
    }
  }
      
  for(Int_t i=0;i < ntofclusters;i++){

    if(cluster[i]->GetNMatchableTracks() || !mapping){
      if(mapping)
	mapping[i] = fESDTOFClusters->GetEntriesFast();
	
      // update TClonesArray
      TClonesArray &ftr = *fESDTOFClusters;
      AliESDTOFCluster *clusterTBW = new(ftr[fESDTOFClusters->GetEntriesFast()])AliESDTOFCluster(*(cluster[i]));

      if(mapping){
	// loop over hit in the cluster
        for(Int_t k=0;k < clusterTBW->GetNTOFhits();k++){
	  Int_t ipos = clusterTBW->GetHitIndex(k);
	  goodhit[ipos] = 1; // hit should be kept
	}
      }
    }
  }

  if(mapping){
    AliInfo(Form("TOF cluster before of matching = %i , after = %i\n",ntofclusters,fESDTOFClusters->GetEntriesFast()));
    Int_t hitnewpos[20000]={0};
    Int_t nhitOriginal = fESDTOFHits->GetEntries();
    for(Int_t i=0;i < fESDTOFHits->GetEntries();i++){
      if(goodhit[i]){
	hitnewpos[i] = i;
      }
      else{ // remove hit and decrease the hit array
	TClonesArray &a=*fESDTOFHits;
	Int_t lastpos = fESDTOFHits->GetEntries()-1;

	if(i == lastpos)
	  delete a.RemoveAt(i);
	else{
	  Int_t nhitBefore = fESDTOFHits->GetEntries();
	  for(Int_t k=nhitBefore-1;k>i;k--){ // find the last good track
	    if(!goodhit[k]){ // remove track
	      delete a.RemoveAt(k);
	      if(k-i==1) delete a.RemoveAt(i);
	    }
	    else{ // replace last one to the "i"
	      AliESDTOFHit *last = (AliESDTOFHit *) fESDTOFHits->At(k);
	      delete a.RemoveAt(i);
	      new (a[i]) AliESDTOFHit(*last);
	      delete a.RemoveAt(k);
	      hitnewpos[k] = i;
	      k = 0;
	    }
	  }
	}
      }
    }

    // remap cluster to hits
    for(Int_t i=0;i < fESDTOFClusters->GetEntries();i++){
      AliESDTOFCluster *cl = (AliESDTOFCluster *) fESDTOFClusters->At(i);
      // loop over hit in the cluster
      for(Int_t k=0;k < cl->GetNTOFhits();k++){
	cl->SetHitIndex(k,hitnewpos[cl->GetHitIndex(k)]);
      }
    }
    AliInfo(Form("TOF hit before of matching = %i , after = %i\n",nhitOriginal,fESDTOFHits->GetEntriesFast()));
  } // end mapping

}

//______________________________________________________________________________
void AliESDEvent::ConnectTracks() {
// Connect tracks to this event
  if (fTracksConnected || !fTracks || !fTracks->GetEntriesFast()) return;
  AliESDtrack *track;
  TIter next(fTracks);
  while ((track=(AliESDtrack*)next())) track->SetESDEvent(this);
  //
  // The same for TOF clusters
  if (fESDTOFClusters) {
    AliESDTOFCluster *clus;
    TIter nextTOF(fESDTOFClusters);
    while ((clus=(AliESDTOFCluster*)nextTOF())) clus->SetEvent((AliVEvent *) this);
  }
  fTracksConnected = kTRUE;
  //
}

//______________________________________________________________________________
AliESDfriend* AliESDEvent::FindFriend() const 
{ 
  return static_cast<AliESDfriend*>(FindListObject("AliESDfriend")); 
}

AliVEvent::EDataLayoutType AliESDEvent::GetDataLayoutType() const {return AliVEvent::kESD;}

 AliESDEvent.cxx:1
 AliESDEvent.cxx:2
 AliESDEvent.cxx:3
 AliESDEvent.cxx:4
 AliESDEvent.cxx:5
 AliESDEvent.cxx:6
 AliESDEvent.cxx:7
 AliESDEvent.cxx:8
 AliESDEvent.cxx:9
 AliESDEvent.cxx:10
 AliESDEvent.cxx:11
 AliESDEvent.cxx:12
 AliESDEvent.cxx:13
 AliESDEvent.cxx:14
 AliESDEvent.cxx:15
 AliESDEvent.cxx:16
 AliESDEvent.cxx:17
 AliESDEvent.cxx:18
 AliESDEvent.cxx:19
 AliESDEvent.cxx:20
 AliESDEvent.cxx:21
 AliESDEvent.cxx:22
 AliESDEvent.cxx:23
 AliESDEvent.cxx:24
 AliESDEvent.cxx:25
 AliESDEvent.cxx:26
 AliESDEvent.cxx:27
 AliESDEvent.cxx:28
 AliESDEvent.cxx:29
 AliESDEvent.cxx:30
 AliESDEvent.cxx:31
 AliESDEvent.cxx:32
 AliESDEvent.cxx:33
 AliESDEvent.cxx:34
 AliESDEvent.cxx:35
 AliESDEvent.cxx:36
 AliESDEvent.cxx:37
 AliESDEvent.cxx:38
 AliESDEvent.cxx:39
 AliESDEvent.cxx:40
 AliESDEvent.cxx:41
 AliESDEvent.cxx:42
 AliESDEvent.cxx:43
 AliESDEvent.cxx:44
 AliESDEvent.cxx:45
 AliESDEvent.cxx:46
 AliESDEvent.cxx:47
 AliESDEvent.cxx:48
 AliESDEvent.cxx:49
 AliESDEvent.cxx:50
 AliESDEvent.cxx:51
 AliESDEvent.cxx:52
 AliESDEvent.cxx:53
 AliESDEvent.cxx:54
 AliESDEvent.cxx:55
 AliESDEvent.cxx:56
 AliESDEvent.cxx:57
 AliESDEvent.cxx:58
 AliESDEvent.cxx:59
 AliESDEvent.cxx:60
 AliESDEvent.cxx:61
 AliESDEvent.cxx:62
 AliESDEvent.cxx:63
 AliESDEvent.cxx:64
 AliESDEvent.cxx:65
 AliESDEvent.cxx:66
 AliESDEvent.cxx:67
 AliESDEvent.cxx:68
 AliESDEvent.cxx:69
 AliESDEvent.cxx:70
 AliESDEvent.cxx:71
 AliESDEvent.cxx:72
 AliESDEvent.cxx:73
 AliESDEvent.cxx:74
 AliESDEvent.cxx:75
 AliESDEvent.cxx:76
 AliESDEvent.cxx:77
 AliESDEvent.cxx:78
 AliESDEvent.cxx:79
 AliESDEvent.cxx:80
 AliESDEvent.cxx:81
 AliESDEvent.cxx:82
 AliESDEvent.cxx:83
 AliESDEvent.cxx:84
 AliESDEvent.cxx:85
 AliESDEvent.cxx:86
 AliESDEvent.cxx:87
 AliESDEvent.cxx:88
 AliESDEvent.cxx:89
 AliESDEvent.cxx:90
 AliESDEvent.cxx:91
 AliESDEvent.cxx:92
 AliESDEvent.cxx:93
 AliESDEvent.cxx:94
 AliESDEvent.cxx:95
 AliESDEvent.cxx:96
 AliESDEvent.cxx:97
 AliESDEvent.cxx:98
 AliESDEvent.cxx:99
 AliESDEvent.cxx:100
 AliESDEvent.cxx:101
 AliESDEvent.cxx:102
 AliESDEvent.cxx:103
 AliESDEvent.cxx:104
 AliESDEvent.cxx:105
 AliESDEvent.cxx:106
 AliESDEvent.cxx:107
 AliESDEvent.cxx:108
 AliESDEvent.cxx:109
 AliESDEvent.cxx:110
 AliESDEvent.cxx:111
 AliESDEvent.cxx:112
 AliESDEvent.cxx:113
 AliESDEvent.cxx:114
 AliESDEvent.cxx:115
 AliESDEvent.cxx:116
 AliESDEvent.cxx:117
 AliESDEvent.cxx:118
 AliESDEvent.cxx:119
 AliESDEvent.cxx:120
 AliESDEvent.cxx:121
 AliESDEvent.cxx:122
 AliESDEvent.cxx:123
 AliESDEvent.cxx:124
 AliESDEvent.cxx:125
 AliESDEvent.cxx:126
 AliESDEvent.cxx:127
 AliESDEvent.cxx:128
 AliESDEvent.cxx:129
 AliESDEvent.cxx:130
 AliESDEvent.cxx:131
 AliESDEvent.cxx:132
 AliESDEvent.cxx:133
 AliESDEvent.cxx:134
 AliESDEvent.cxx:135
 AliESDEvent.cxx:136
 AliESDEvent.cxx:137
 AliESDEvent.cxx:138
 AliESDEvent.cxx:139
 AliESDEvent.cxx:140
 AliESDEvent.cxx:141
 AliESDEvent.cxx:142
 AliESDEvent.cxx:143
 AliESDEvent.cxx:144
 AliESDEvent.cxx:145
 AliESDEvent.cxx:146
 AliESDEvent.cxx:147
 AliESDEvent.cxx:148
 AliESDEvent.cxx:149
 AliESDEvent.cxx:150
 AliESDEvent.cxx:151
 AliESDEvent.cxx:152
 AliESDEvent.cxx:153
 AliESDEvent.cxx:154
 AliESDEvent.cxx:155
 AliESDEvent.cxx:156
 AliESDEvent.cxx:157
 AliESDEvent.cxx:158
 AliESDEvent.cxx:159
 AliESDEvent.cxx:160
 AliESDEvent.cxx:161
 AliESDEvent.cxx:162
 AliESDEvent.cxx:163
 AliESDEvent.cxx:164
 AliESDEvent.cxx:165
 AliESDEvent.cxx:166
 AliESDEvent.cxx:167
 AliESDEvent.cxx:168
 AliESDEvent.cxx:169
 AliESDEvent.cxx:170
 AliESDEvent.cxx:171
 AliESDEvent.cxx:172
 AliESDEvent.cxx:173
 AliESDEvent.cxx:174
 AliESDEvent.cxx:175
 AliESDEvent.cxx:176
 AliESDEvent.cxx:177
 AliESDEvent.cxx:178
 AliESDEvent.cxx:179
 AliESDEvent.cxx:180
 AliESDEvent.cxx:181
 AliESDEvent.cxx:182
 AliESDEvent.cxx:183
 AliESDEvent.cxx:184
 AliESDEvent.cxx:185
 AliESDEvent.cxx:186
 AliESDEvent.cxx:187
 AliESDEvent.cxx:188
 AliESDEvent.cxx:189
 AliESDEvent.cxx:190
 AliESDEvent.cxx:191
 AliESDEvent.cxx:192
 AliESDEvent.cxx:193
 AliESDEvent.cxx:194
 AliESDEvent.cxx:195
 AliESDEvent.cxx:196
 AliESDEvent.cxx:197
 AliESDEvent.cxx:198
 AliESDEvent.cxx:199
 AliESDEvent.cxx:200
 AliESDEvent.cxx:201
 AliESDEvent.cxx:202
 AliESDEvent.cxx:203
 AliESDEvent.cxx:204
 AliESDEvent.cxx:205
 AliESDEvent.cxx:206
 AliESDEvent.cxx:207
 AliESDEvent.cxx:208
 AliESDEvent.cxx:209
 AliESDEvent.cxx:210
 AliESDEvent.cxx:211
 AliESDEvent.cxx:212
 AliESDEvent.cxx:213
 AliESDEvent.cxx:214
 AliESDEvent.cxx:215
 AliESDEvent.cxx:216
 AliESDEvent.cxx:217
 AliESDEvent.cxx:218
 AliESDEvent.cxx:219
 AliESDEvent.cxx:220
 AliESDEvent.cxx:221
 AliESDEvent.cxx:222
 AliESDEvent.cxx:223
 AliESDEvent.cxx:224
 AliESDEvent.cxx:225
 AliESDEvent.cxx:226
 AliESDEvent.cxx:227
 AliESDEvent.cxx:228
 AliESDEvent.cxx:229
 AliESDEvent.cxx:230
 AliESDEvent.cxx:231
 AliESDEvent.cxx:232
 AliESDEvent.cxx:233
 AliESDEvent.cxx:234
 AliESDEvent.cxx:235
 AliESDEvent.cxx:236
 AliESDEvent.cxx:237
 AliESDEvent.cxx:238
 AliESDEvent.cxx:239
 AliESDEvent.cxx:240
 AliESDEvent.cxx:241
 AliESDEvent.cxx:242
 AliESDEvent.cxx:243
 AliESDEvent.cxx:244
 AliESDEvent.cxx:245
 AliESDEvent.cxx:246
 AliESDEvent.cxx:247
 AliESDEvent.cxx:248
 AliESDEvent.cxx:249
 AliESDEvent.cxx:250
 AliESDEvent.cxx:251
 AliESDEvent.cxx:252
 AliESDEvent.cxx:253
 AliESDEvent.cxx:254
 AliESDEvent.cxx:255
 AliESDEvent.cxx:256
 AliESDEvent.cxx:257
 AliESDEvent.cxx:258
 AliESDEvent.cxx:259
 AliESDEvent.cxx:260
 AliESDEvent.cxx:261
 AliESDEvent.cxx:262
 AliESDEvent.cxx:263
 AliESDEvent.cxx:264
 AliESDEvent.cxx:265
 AliESDEvent.cxx:266
 AliESDEvent.cxx:267
 AliESDEvent.cxx:268
 AliESDEvent.cxx:269
 AliESDEvent.cxx:270
 AliESDEvent.cxx:271
 AliESDEvent.cxx:272
 AliESDEvent.cxx:273
 AliESDEvent.cxx:274
 AliESDEvent.cxx:275
 AliESDEvent.cxx:276
 AliESDEvent.cxx:277
 AliESDEvent.cxx:278
 AliESDEvent.cxx:279
 AliESDEvent.cxx:280
 AliESDEvent.cxx:281
 AliESDEvent.cxx:282
 AliESDEvent.cxx:283
 AliESDEvent.cxx:284
 AliESDEvent.cxx:285
 AliESDEvent.cxx:286
 AliESDEvent.cxx:287
 AliESDEvent.cxx:288
 AliESDEvent.cxx:289
 AliESDEvent.cxx:290
 AliESDEvent.cxx:291
 AliESDEvent.cxx:292
 AliESDEvent.cxx:293
 AliESDEvent.cxx:294
 AliESDEvent.cxx:295
 AliESDEvent.cxx:296
 AliESDEvent.cxx:297
 AliESDEvent.cxx:298
 AliESDEvent.cxx:299
 AliESDEvent.cxx:300
 AliESDEvent.cxx:301
 AliESDEvent.cxx:302
 AliESDEvent.cxx:303
 AliESDEvent.cxx:304
 AliESDEvent.cxx:305
 AliESDEvent.cxx:306
 AliESDEvent.cxx:307
 AliESDEvent.cxx:308
 AliESDEvent.cxx:309
 AliESDEvent.cxx:310
 AliESDEvent.cxx:311
 AliESDEvent.cxx:312
 AliESDEvent.cxx:313
 AliESDEvent.cxx:314
 AliESDEvent.cxx:315
 AliESDEvent.cxx:316
 AliESDEvent.cxx:317
 AliESDEvent.cxx:318
 AliESDEvent.cxx:319
 AliESDEvent.cxx:320
 AliESDEvent.cxx:321
 AliESDEvent.cxx:322
 AliESDEvent.cxx:323
 AliESDEvent.cxx:324
 AliESDEvent.cxx:325
 AliESDEvent.cxx:326
 AliESDEvent.cxx:327
 AliESDEvent.cxx:328
 AliESDEvent.cxx:329
 AliESDEvent.cxx:330
 AliESDEvent.cxx:331
 AliESDEvent.cxx:332
 AliESDEvent.cxx:333
 AliESDEvent.cxx:334
 AliESDEvent.cxx:335
 AliESDEvent.cxx:336
 AliESDEvent.cxx:337
 AliESDEvent.cxx:338
 AliESDEvent.cxx:339
 AliESDEvent.cxx:340
 AliESDEvent.cxx:341
 AliESDEvent.cxx:342
 AliESDEvent.cxx:343
 AliESDEvent.cxx:344
 AliESDEvent.cxx:345
 AliESDEvent.cxx:346
 AliESDEvent.cxx:347
 AliESDEvent.cxx:348
 AliESDEvent.cxx:349
 AliESDEvent.cxx:350
 AliESDEvent.cxx:351
 AliESDEvent.cxx:352
 AliESDEvent.cxx:353
 AliESDEvent.cxx:354
 AliESDEvent.cxx:355
 AliESDEvent.cxx:356
 AliESDEvent.cxx:357
 AliESDEvent.cxx:358
 AliESDEvent.cxx:359
 AliESDEvent.cxx:360
 AliESDEvent.cxx:361
 AliESDEvent.cxx:362
 AliESDEvent.cxx:363
 AliESDEvent.cxx:364
 AliESDEvent.cxx:365
 AliESDEvent.cxx:366
 AliESDEvent.cxx:367
 AliESDEvent.cxx:368
 AliESDEvent.cxx:369
 AliESDEvent.cxx:370
 AliESDEvent.cxx:371
 AliESDEvent.cxx:372
 AliESDEvent.cxx:373
 AliESDEvent.cxx:374
 AliESDEvent.cxx:375
 AliESDEvent.cxx:376
 AliESDEvent.cxx:377
 AliESDEvent.cxx:378
 AliESDEvent.cxx:379
 AliESDEvent.cxx:380
 AliESDEvent.cxx:381
 AliESDEvent.cxx:382
 AliESDEvent.cxx:383
 AliESDEvent.cxx:384
 AliESDEvent.cxx:385
 AliESDEvent.cxx:386
 AliESDEvent.cxx:387
 AliESDEvent.cxx:388
 AliESDEvent.cxx:389
 AliESDEvent.cxx:390
 AliESDEvent.cxx:391
 AliESDEvent.cxx:392
 AliESDEvent.cxx:393
 AliESDEvent.cxx:394
 AliESDEvent.cxx:395
 AliESDEvent.cxx:396
 AliESDEvent.cxx:397
 AliESDEvent.cxx:398
 AliESDEvent.cxx:399
 AliESDEvent.cxx:400
 AliESDEvent.cxx:401
 AliESDEvent.cxx:402
 AliESDEvent.cxx:403
 AliESDEvent.cxx:404
 AliESDEvent.cxx:405
 AliESDEvent.cxx:406
 AliESDEvent.cxx:407
 AliESDEvent.cxx:408
 AliESDEvent.cxx:409
 AliESDEvent.cxx:410
 AliESDEvent.cxx:411
 AliESDEvent.cxx:412
 AliESDEvent.cxx:413
 AliESDEvent.cxx:414
 AliESDEvent.cxx:415
 AliESDEvent.cxx:416
 AliESDEvent.cxx:417
 AliESDEvent.cxx:418
 AliESDEvent.cxx:419
 AliESDEvent.cxx:420
 AliESDEvent.cxx:421
 AliESDEvent.cxx:422
 AliESDEvent.cxx:423
 AliESDEvent.cxx:424
 AliESDEvent.cxx:425
 AliESDEvent.cxx:426
 AliESDEvent.cxx:427
 AliESDEvent.cxx:428
 AliESDEvent.cxx:429
 AliESDEvent.cxx:430
 AliESDEvent.cxx:431
 AliESDEvent.cxx:432
 AliESDEvent.cxx:433
 AliESDEvent.cxx:434
 AliESDEvent.cxx:435
 AliESDEvent.cxx:436
 AliESDEvent.cxx:437
 AliESDEvent.cxx:438
 AliESDEvent.cxx:439
 AliESDEvent.cxx:440
 AliESDEvent.cxx:441
 AliESDEvent.cxx:442
 AliESDEvent.cxx:443
 AliESDEvent.cxx:444
 AliESDEvent.cxx:445
 AliESDEvent.cxx:446
 AliESDEvent.cxx:447
 AliESDEvent.cxx:448
 AliESDEvent.cxx:449
 AliESDEvent.cxx:450
 AliESDEvent.cxx:451
 AliESDEvent.cxx:452
 AliESDEvent.cxx:453
 AliESDEvent.cxx:454
 AliESDEvent.cxx:455
 AliESDEvent.cxx:456
 AliESDEvent.cxx:457
 AliESDEvent.cxx:458
 AliESDEvent.cxx:459
 AliESDEvent.cxx:460
 AliESDEvent.cxx:461
 AliESDEvent.cxx:462
 AliESDEvent.cxx:463
 AliESDEvent.cxx:464
 AliESDEvent.cxx:465
 AliESDEvent.cxx:466
 AliESDEvent.cxx:467
 AliESDEvent.cxx:468
 AliESDEvent.cxx:469
 AliESDEvent.cxx:470
 AliESDEvent.cxx:471
 AliESDEvent.cxx:472
 AliESDEvent.cxx:473
 AliESDEvent.cxx:474
 AliESDEvent.cxx:475
 AliESDEvent.cxx:476
 AliESDEvent.cxx:477
 AliESDEvent.cxx:478
 AliESDEvent.cxx:479
 AliESDEvent.cxx:480
 AliESDEvent.cxx:481
 AliESDEvent.cxx:482
 AliESDEvent.cxx:483
 AliESDEvent.cxx:484
 AliESDEvent.cxx:485
 AliESDEvent.cxx:486
 AliESDEvent.cxx:487
 AliESDEvent.cxx:488
 AliESDEvent.cxx:489
 AliESDEvent.cxx:490
 AliESDEvent.cxx:491
 AliESDEvent.cxx:492
 AliESDEvent.cxx:493
 AliESDEvent.cxx:494
 AliESDEvent.cxx:495
 AliESDEvent.cxx:496
 AliESDEvent.cxx:497
 AliESDEvent.cxx:498
 AliESDEvent.cxx:499
 AliESDEvent.cxx:500
 AliESDEvent.cxx:501
 AliESDEvent.cxx:502
 AliESDEvent.cxx:503
 AliESDEvent.cxx:504
 AliESDEvent.cxx:505
 AliESDEvent.cxx:506
 AliESDEvent.cxx:507
 AliESDEvent.cxx:508
 AliESDEvent.cxx:509
 AliESDEvent.cxx:510
 AliESDEvent.cxx:511
 AliESDEvent.cxx:512
 AliESDEvent.cxx:513
 AliESDEvent.cxx:514
 AliESDEvent.cxx:515
 AliESDEvent.cxx:516
 AliESDEvent.cxx:517
 AliESDEvent.cxx:518
 AliESDEvent.cxx:519
 AliESDEvent.cxx:520
 AliESDEvent.cxx:521
 AliESDEvent.cxx:522
 AliESDEvent.cxx:523
 AliESDEvent.cxx:524
 AliESDEvent.cxx:525
 AliESDEvent.cxx:526
 AliESDEvent.cxx:527
 AliESDEvent.cxx:528
 AliESDEvent.cxx:529
 AliESDEvent.cxx:530
 AliESDEvent.cxx:531
 AliESDEvent.cxx:532
 AliESDEvent.cxx:533
 AliESDEvent.cxx:534
 AliESDEvent.cxx:535
 AliESDEvent.cxx:536
 AliESDEvent.cxx:537
 AliESDEvent.cxx:538
 AliESDEvent.cxx:539
 AliESDEvent.cxx:540
 AliESDEvent.cxx:541
 AliESDEvent.cxx:542
 AliESDEvent.cxx:543
 AliESDEvent.cxx:544
 AliESDEvent.cxx:545
 AliESDEvent.cxx:546
 AliESDEvent.cxx:547
 AliESDEvent.cxx:548
 AliESDEvent.cxx:549
 AliESDEvent.cxx:550
 AliESDEvent.cxx:551
 AliESDEvent.cxx:552
 AliESDEvent.cxx:553
 AliESDEvent.cxx:554
 AliESDEvent.cxx:555
 AliESDEvent.cxx:556
 AliESDEvent.cxx:557
 AliESDEvent.cxx:558
 AliESDEvent.cxx:559
 AliESDEvent.cxx:560
 AliESDEvent.cxx:561
 AliESDEvent.cxx:562
 AliESDEvent.cxx:563
 AliESDEvent.cxx:564
 AliESDEvent.cxx:565
 AliESDEvent.cxx:566
 AliESDEvent.cxx:567
 AliESDEvent.cxx:568
 AliESDEvent.cxx:569
 AliESDEvent.cxx:570
 AliESDEvent.cxx:571
 AliESDEvent.cxx:572
 AliESDEvent.cxx:573
 AliESDEvent.cxx:574
 AliESDEvent.cxx:575
 AliESDEvent.cxx:576
 AliESDEvent.cxx:577
 AliESDEvent.cxx:578
 AliESDEvent.cxx:579
 AliESDEvent.cxx:580
 AliESDEvent.cxx:581
 AliESDEvent.cxx:582
 AliESDEvent.cxx:583
 AliESDEvent.cxx:584
 AliESDEvent.cxx:585
 AliESDEvent.cxx:586
 AliESDEvent.cxx:587
 AliESDEvent.cxx:588
 AliESDEvent.cxx:589
 AliESDEvent.cxx:590
 AliESDEvent.cxx:591
 AliESDEvent.cxx:592
 AliESDEvent.cxx:593
 AliESDEvent.cxx:594
 AliESDEvent.cxx:595
 AliESDEvent.cxx:596
 AliESDEvent.cxx:597
 AliESDEvent.cxx:598
 AliESDEvent.cxx:599
 AliESDEvent.cxx:600
 AliESDEvent.cxx:601
 AliESDEvent.cxx:602
 AliESDEvent.cxx:603
 AliESDEvent.cxx:604
 AliESDEvent.cxx:605
 AliESDEvent.cxx:606
 AliESDEvent.cxx:607
 AliESDEvent.cxx:608
 AliESDEvent.cxx:609
 AliESDEvent.cxx:610
 AliESDEvent.cxx:611
 AliESDEvent.cxx:612
 AliESDEvent.cxx:613
 AliESDEvent.cxx:614
 AliESDEvent.cxx:615
 AliESDEvent.cxx:616
 AliESDEvent.cxx:617
 AliESDEvent.cxx:618
 AliESDEvent.cxx:619
 AliESDEvent.cxx:620
 AliESDEvent.cxx:621
 AliESDEvent.cxx:622
 AliESDEvent.cxx:623
 AliESDEvent.cxx:624
 AliESDEvent.cxx:625
 AliESDEvent.cxx:626
 AliESDEvent.cxx:627
 AliESDEvent.cxx:628
 AliESDEvent.cxx:629
 AliESDEvent.cxx:630
 AliESDEvent.cxx:631
 AliESDEvent.cxx:632
 AliESDEvent.cxx:633
 AliESDEvent.cxx:634
 AliESDEvent.cxx:635
 AliESDEvent.cxx:636
 AliESDEvent.cxx:637
 AliESDEvent.cxx:638
 AliESDEvent.cxx:639
 AliESDEvent.cxx:640
 AliESDEvent.cxx:641
 AliESDEvent.cxx:642
 AliESDEvent.cxx:643
 AliESDEvent.cxx:644
 AliESDEvent.cxx:645
 AliESDEvent.cxx:646
 AliESDEvent.cxx:647
 AliESDEvent.cxx:648
 AliESDEvent.cxx:649
 AliESDEvent.cxx:650
 AliESDEvent.cxx:651
 AliESDEvent.cxx:652
 AliESDEvent.cxx:653
 AliESDEvent.cxx:654
 AliESDEvent.cxx:655
 AliESDEvent.cxx:656
 AliESDEvent.cxx:657
 AliESDEvent.cxx:658
 AliESDEvent.cxx:659
 AliESDEvent.cxx:660
 AliESDEvent.cxx:661
 AliESDEvent.cxx:662
 AliESDEvent.cxx:663
 AliESDEvent.cxx:664
 AliESDEvent.cxx:665
 AliESDEvent.cxx:666
 AliESDEvent.cxx:667
 AliESDEvent.cxx:668
 AliESDEvent.cxx:669
 AliESDEvent.cxx:670
 AliESDEvent.cxx:671
 AliESDEvent.cxx:672
 AliESDEvent.cxx:673
 AliESDEvent.cxx:674
 AliESDEvent.cxx:675
 AliESDEvent.cxx:676
 AliESDEvent.cxx:677
 AliESDEvent.cxx:678
 AliESDEvent.cxx:679
 AliESDEvent.cxx:680
 AliESDEvent.cxx:681
 AliESDEvent.cxx:682
 AliESDEvent.cxx:683
 AliESDEvent.cxx:684
 AliESDEvent.cxx:685
 AliESDEvent.cxx:686
 AliESDEvent.cxx:687
 AliESDEvent.cxx:688
 AliESDEvent.cxx:689
 AliESDEvent.cxx:690
 AliESDEvent.cxx:691
 AliESDEvent.cxx:692
 AliESDEvent.cxx:693
 AliESDEvent.cxx:694
 AliESDEvent.cxx:695
 AliESDEvent.cxx:696
 AliESDEvent.cxx:697
 AliESDEvent.cxx:698
 AliESDEvent.cxx:699
 AliESDEvent.cxx:700
 AliESDEvent.cxx:701
 AliESDEvent.cxx:702
 AliESDEvent.cxx:703
 AliESDEvent.cxx:704
 AliESDEvent.cxx:705
 AliESDEvent.cxx:706
 AliESDEvent.cxx:707
 AliESDEvent.cxx:708
 AliESDEvent.cxx:709
 AliESDEvent.cxx:710
 AliESDEvent.cxx:711
 AliESDEvent.cxx:712
 AliESDEvent.cxx:713
 AliESDEvent.cxx:714
 AliESDEvent.cxx:715
 AliESDEvent.cxx:716
 AliESDEvent.cxx:717
 AliESDEvent.cxx:718
 AliESDEvent.cxx:719
 AliESDEvent.cxx:720
 AliESDEvent.cxx:721
 AliESDEvent.cxx:722
 AliESDEvent.cxx:723
 AliESDEvent.cxx:724
 AliESDEvent.cxx:725
 AliESDEvent.cxx:726
 AliESDEvent.cxx:727
 AliESDEvent.cxx:728
 AliESDEvent.cxx:729
 AliESDEvent.cxx:730
 AliESDEvent.cxx:731
 AliESDEvent.cxx:732
 AliESDEvent.cxx:733
 AliESDEvent.cxx:734
 AliESDEvent.cxx:735
 AliESDEvent.cxx:736
 AliESDEvent.cxx:737
 AliESDEvent.cxx:738
 AliESDEvent.cxx:739
 AliESDEvent.cxx:740
 AliESDEvent.cxx:741
 AliESDEvent.cxx:742
 AliESDEvent.cxx:743
 AliESDEvent.cxx:744
 AliESDEvent.cxx:745
 AliESDEvent.cxx:746
 AliESDEvent.cxx:747
 AliESDEvent.cxx:748
 AliESDEvent.cxx:749
 AliESDEvent.cxx:750
 AliESDEvent.cxx:751
 AliESDEvent.cxx:752
 AliESDEvent.cxx:753
 AliESDEvent.cxx:754
 AliESDEvent.cxx:755
 AliESDEvent.cxx:756
 AliESDEvent.cxx:757
 AliESDEvent.cxx:758
 AliESDEvent.cxx:759
 AliESDEvent.cxx:760
 AliESDEvent.cxx:761
 AliESDEvent.cxx:762
 AliESDEvent.cxx:763
 AliESDEvent.cxx:764
 AliESDEvent.cxx:765
 AliESDEvent.cxx:766
 AliESDEvent.cxx:767
 AliESDEvent.cxx:768
 AliESDEvent.cxx:769
 AliESDEvent.cxx:770
 AliESDEvent.cxx:771
 AliESDEvent.cxx:772
 AliESDEvent.cxx:773
 AliESDEvent.cxx:774
 AliESDEvent.cxx:775
 AliESDEvent.cxx:776
 AliESDEvent.cxx:777
 AliESDEvent.cxx:778
 AliESDEvent.cxx:779
 AliESDEvent.cxx:780
 AliESDEvent.cxx:781
 AliESDEvent.cxx:782
 AliESDEvent.cxx:783
 AliESDEvent.cxx:784
 AliESDEvent.cxx:785
 AliESDEvent.cxx:786
 AliESDEvent.cxx:787
 AliESDEvent.cxx:788
 AliESDEvent.cxx:789
 AliESDEvent.cxx:790
 AliESDEvent.cxx:791
 AliESDEvent.cxx:792
 AliESDEvent.cxx:793
 AliESDEvent.cxx:794
 AliESDEvent.cxx:795
 AliESDEvent.cxx:796
 AliESDEvent.cxx:797
 AliESDEvent.cxx:798
 AliESDEvent.cxx:799
 AliESDEvent.cxx:800
 AliESDEvent.cxx:801
 AliESDEvent.cxx:802
 AliESDEvent.cxx:803
 AliESDEvent.cxx:804
 AliESDEvent.cxx:805
 AliESDEvent.cxx:806
 AliESDEvent.cxx:807
 AliESDEvent.cxx:808
 AliESDEvent.cxx:809
 AliESDEvent.cxx:810
 AliESDEvent.cxx:811
 AliESDEvent.cxx:812
 AliESDEvent.cxx:813
 AliESDEvent.cxx:814
 AliESDEvent.cxx:815
 AliESDEvent.cxx:816
 AliESDEvent.cxx:817
 AliESDEvent.cxx:818
 AliESDEvent.cxx:819
 AliESDEvent.cxx:820
 AliESDEvent.cxx:821
 AliESDEvent.cxx:822
 AliESDEvent.cxx:823
 AliESDEvent.cxx:824
 AliESDEvent.cxx:825
 AliESDEvent.cxx:826
 AliESDEvent.cxx:827
 AliESDEvent.cxx:828
 AliESDEvent.cxx:829
 AliESDEvent.cxx:830
 AliESDEvent.cxx:831
 AliESDEvent.cxx:832
 AliESDEvent.cxx:833
 AliESDEvent.cxx:834
 AliESDEvent.cxx:835
 AliESDEvent.cxx:836
 AliESDEvent.cxx:837
 AliESDEvent.cxx:838
 AliESDEvent.cxx:839
 AliESDEvent.cxx:840
 AliESDEvent.cxx:841
 AliESDEvent.cxx:842
 AliESDEvent.cxx:843
 AliESDEvent.cxx:844
 AliESDEvent.cxx:845
 AliESDEvent.cxx:846
 AliESDEvent.cxx:847
 AliESDEvent.cxx:848
 AliESDEvent.cxx:849
 AliESDEvent.cxx:850
 AliESDEvent.cxx:851
 AliESDEvent.cxx:852
 AliESDEvent.cxx:853
 AliESDEvent.cxx:854
 AliESDEvent.cxx:855
 AliESDEvent.cxx:856
 AliESDEvent.cxx:857
 AliESDEvent.cxx:858
 AliESDEvent.cxx:859
 AliESDEvent.cxx:860
 AliESDEvent.cxx:861
 AliESDEvent.cxx:862
 AliESDEvent.cxx:863
 AliESDEvent.cxx:864
 AliESDEvent.cxx:865
 AliESDEvent.cxx:866
 AliESDEvent.cxx:867
 AliESDEvent.cxx:868
 AliESDEvent.cxx:869
 AliESDEvent.cxx:870
 AliESDEvent.cxx:871
 AliESDEvent.cxx:872
 AliESDEvent.cxx:873
 AliESDEvent.cxx:874
 AliESDEvent.cxx:875
 AliESDEvent.cxx:876
 AliESDEvent.cxx:877
 AliESDEvent.cxx:878
 AliESDEvent.cxx:879
 AliESDEvent.cxx:880
 AliESDEvent.cxx:881
 AliESDEvent.cxx:882
 AliESDEvent.cxx:883
 AliESDEvent.cxx:884
 AliESDEvent.cxx:885
 AliESDEvent.cxx:886
 AliESDEvent.cxx:887
 AliESDEvent.cxx:888
 AliESDEvent.cxx:889
 AliESDEvent.cxx:890
 AliESDEvent.cxx:891
 AliESDEvent.cxx:892
 AliESDEvent.cxx:893
 AliESDEvent.cxx:894
 AliESDEvent.cxx:895
 AliESDEvent.cxx:896
 AliESDEvent.cxx:897
 AliESDEvent.cxx:898
 AliESDEvent.cxx:899
 AliESDEvent.cxx:900
 AliESDEvent.cxx:901
 AliESDEvent.cxx:902
 AliESDEvent.cxx:903
 AliESDEvent.cxx:904
 AliESDEvent.cxx:905
 AliESDEvent.cxx:906
 AliESDEvent.cxx:907
 AliESDEvent.cxx:908
 AliESDEvent.cxx:909
 AliESDEvent.cxx:910
 AliESDEvent.cxx:911
 AliESDEvent.cxx:912
 AliESDEvent.cxx:913
 AliESDEvent.cxx:914
 AliESDEvent.cxx:915
 AliESDEvent.cxx:916
 AliESDEvent.cxx:917
 AliESDEvent.cxx:918
 AliESDEvent.cxx:919
 AliESDEvent.cxx:920
 AliESDEvent.cxx:921
 AliESDEvent.cxx:922
 AliESDEvent.cxx:923
 AliESDEvent.cxx:924
 AliESDEvent.cxx:925
 AliESDEvent.cxx:926
 AliESDEvent.cxx:927
 AliESDEvent.cxx:928
 AliESDEvent.cxx:929
 AliESDEvent.cxx:930
 AliESDEvent.cxx:931
 AliESDEvent.cxx:932
 AliESDEvent.cxx:933
 AliESDEvent.cxx:934
 AliESDEvent.cxx:935
 AliESDEvent.cxx:936
 AliESDEvent.cxx:937
 AliESDEvent.cxx:938
 AliESDEvent.cxx:939
 AliESDEvent.cxx:940
 AliESDEvent.cxx:941
 AliESDEvent.cxx:942
 AliESDEvent.cxx:943
 AliESDEvent.cxx:944
 AliESDEvent.cxx:945
 AliESDEvent.cxx:946
 AliESDEvent.cxx:947
 AliESDEvent.cxx:948
 AliESDEvent.cxx:949
 AliESDEvent.cxx:950
 AliESDEvent.cxx:951
 AliESDEvent.cxx:952
 AliESDEvent.cxx:953
 AliESDEvent.cxx:954
 AliESDEvent.cxx:955
 AliESDEvent.cxx:956
 AliESDEvent.cxx:957
 AliESDEvent.cxx:958
 AliESDEvent.cxx:959
 AliESDEvent.cxx:960
 AliESDEvent.cxx:961
 AliESDEvent.cxx:962
 AliESDEvent.cxx:963
 AliESDEvent.cxx:964
 AliESDEvent.cxx:965
 AliESDEvent.cxx:966
 AliESDEvent.cxx:967
 AliESDEvent.cxx:968
 AliESDEvent.cxx:969
 AliESDEvent.cxx:970
 AliESDEvent.cxx:971
 AliESDEvent.cxx:972
 AliESDEvent.cxx:973
 AliESDEvent.cxx:974
 AliESDEvent.cxx:975
 AliESDEvent.cxx:976
 AliESDEvent.cxx:977
 AliESDEvent.cxx:978
 AliESDEvent.cxx:979
 AliESDEvent.cxx:980
 AliESDEvent.cxx:981
 AliESDEvent.cxx:982
 AliESDEvent.cxx:983
 AliESDEvent.cxx:984
 AliESDEvent.cxx:985
 AliESDEvent.cxx:986
 AliESDEvent.cxx:987
 AliESDEvent.cxx:988
 AliESDEvent.cxx:989
 AliESDEvent.cxx:990
 AliESDEvent.cxx:991
 AliESDEvent.cxx:992
 AliESDEvent.cxx:993
 AliESDEvent.cxx:994
 AliESDEvent.cxx:995
 AliESDEvent.cxx:996
 AliESDEvent.cxx:997
 AliESDEvent.cxx:998
 AliESDEvent.cxx:999
 AliESDEvent.cxx:1000
 AliESDEvent.cxx:1001
 AliESDEvent.cxx:1002
 AliESDEvent.cxx:1003
 AliESDEvent.cxx:1004
 AliESDEvent.cxx:1005
 AliESDEvent.cxx:1006
 AliESDEvent.cxx:1007
 AliESDEvent.cxx:1008
 AliESDEvent.cxx:1009
 AliESDEvent.cxx:1010
 AliESDEvent.cxx:1011
 AliESDEvent.cxx:1012
 AliESDEvent.cxx:1013
 AliESDEvent.cxx:1014
 AliESDEvent.cxx:1015
 AliESDEvent.cxx:1016
 AliESDEvent.cxx:1017
 AliESDEvent.cxx:1018
 AliESDEvent.cxx:1019
 AliESDEvent.cxx:1020
 AliESDEvent.cxx:1021
 AliESDEvent.cxx:1022
 AliESDEvent.cxx:1023
 AliESDEvent.cxx:1024
 AliESDEvent.cxx:1025
 AliESDEvent.cxx:1026
 AliESDEvent.cxx:1027
 AliESDEvent.cxx:1028
 AliESDEvent.cxx:1029
 AliESDEvent.cxx:1030
 AliESDEvent.cxx:1031
 AliESDEvent.cxx:1032
 AliESDEvent.cxx:1033
 AliESDEvent.cxx:1034
 AliESDEvent.cxx:1035
 AliESDEvent.cxx:1036
 AliESDEvent.cxx:1037
 AliESDEvent.cxx:1038
 AliESDEvent.cxx:1039
 AliESDEvent.cxx:1040
 AliESDEvent.cxx:1041
 AliESDEvent.cxx:1042
 AliESDEvent.cxx:1043
 AliESDEvent.cxx:1044
 AliESDEvent.cxx:1045
 AliESDEvent.cxx:1046
 AliESDEvent.cxx:1047
 AliESDEvent.cxx:1048
 AliESDEvent.cxx:1049
 AliESDEvent.cxx:1050
 AliESDEvent.cxx:1051
 AliESDEvent.cxx:1052
 AliESDEvent.cxx:1053
 AliESDEvent.cxx:1054
 AliESDEvent.cxx:1055
 AliESDEvent.cxx:1056
 AliESDEvent.cxx:1057
 AliESDEvent.cxx:1058
 AliESDEvent.cxx:1059
 AliESDEvent.cxx:1060
 AliESDEvent.cxx:1061
 AliESDEvent.cxx:1062
 AliESDEvent.cxx:1063
 AliESDEvent.cxx:1064
 AliESDEvent.cxx:1065
 AliESDEvent.cxx:1066
 AliESDEvent.cxx:1067
 AliESDEvent.cxx:1068
 AliESDEvent.cxx:1069
 AliESDEvent.cxx:1070
 AliESDEvent.cxx:1071
 AliESDEvent.cxx:1072
 AliESDEvent.cxx:1073
 AliESDEvent.cxx:1074
 AliESDEvent.cxx:1075
 AliESDEvent.cxx:1076
 AliESDEvent.cxx:1077
 AliESDEvent.cxx:1078
 AliESDEvent.cxx:1079
 AliESDEvent.cxx:1080
 AliESDEvent.cxx:1081
 AliESDEvent.cxx:1082
 AliESDEvent.cxx:1083
 AliESDEvent.cxx:1084
 AliESDEvent.cxx:1085
 AliESDEvent.cxx:1086
 AliESDEvent.cxx:1087
 AliESDEvent.cxx:1088
 AliESDEvent.cxx:1089
 AliESDEvent.cxx:1090
 AliESDEvent.cxx:1091
 AliESDEvent.cxx:1092
 AliESDEvent.cxx:1093
 AliESDEvent.cxx:1094
 AliESDEvent.cxx:1095
 AliESDEvent.cxx:1096
 AliESDEvent.cxx:1097
 AliESDEvent.cxx:1098
 AliESDEvent.cxx:1099
 AliESDEvent.cxx:1100
 AliESDEvent.cxx:1101
 AliESDEvent.cxx:1102
 AliESDEvent.cxx:1103
 AliESDEvent.cxx:1104
 AliESDEvent.cxx:1105
 AliESDEvent.cxx:1106
 AliESDEvent.cxx:1107
 AliESDEvent.cxx:1108
 AliESDEvent.cxx:1109
 AliESDEvent.cxx:1110
 AliESDEvent.cxx:1111
 AliESDEvent.cxx:1112
 AliESDEvent.cxx:1113
 AliESDEvent.cxx:1114
 AliESDEvent.cxx:1115
 AliESDEvent.cxx:1116
 AliESDEvent.cxx:1117
 AliESDEvent.cxx:1118
 AliESDEvent.cxx:1119
 AliESDEvent.cxx:1120
 AliESDEvent.cxx:1121
 AliESDEvent.cxx:1122
 AliESDEvent.cxx:1123
 AliESDEvent.cxx:1124
 AliESDEvent.cxx:1125
 AliESDEvent.cxx:1126
 AliESDEvent.cxx:1127
 AliESDEvent.cxx:1128
 AliESDEvent.cxx:1129
 AliESDEvent.cxx:1130
 AliESDEvent.cxx:1131
 AliESDEvent.cxx:1132
 AliESDEvent.cxx:1133
 AliESDEvent.cxx:1134
 AliESDEvent.cxx:1135
 AliESDEvent.cxx:1136
 AliESDEvent.cxx:1137
 AliESDEvent.cxx:1138
 AliESDEvent.cxx:1139
 AliESDEvent.cxx:1140
 AliESDEvent.cxx:1141
 AliESDEvent.cxx:1142
 AliESDEvent.cxx:1143
 AliESDEvent.cxx:1144
 AliESDEvent.cxx:1145
 AliESDEvent.cxx:1146
 AliESDEvent.cxx:1147
 AliESDEvent.cxx:1148
 AliESDEvent.cxx:1149
 AliESDEvent.cxx:1150
 AliESDEvent.cxx:1151
 AliESDEvent.cxx:1152
 AliESDEvent.cxx:1153
 AliESDEvent.cxx:1154
 AliESDEvent.cxx:1155
 AliESDEvent.cxx:1156
 AliESDEvent.cxx:1157
 AliESDEvent.cxx:1158
 AliESDEvent.cxx:1159
 AliESDEvent.cxx:1160
 AliESDEvent.cxx:1161
 AliESDEvent.cxx:1162
 AliESDEvent.cxx:1163
 AliESDEvent.cxx:1164
 AliESDEvent.cxx:1165
 AliESDEvent.cxx:1166
 AliESDEvent.cxx:1167
 AliESDEvent.cxx:1168
 AliESDEvent.cxx:1169
 AliESDEvent.cxx:1170
 AliESDEvent.cxx:1171
 AliESDEvent.cxx:1172
 AliESDEvent.cxx:1173
 AliESDEvent.cxx:1174
 AliESDEvent.cxx:1175
 AliESDEvent.cxx:1176
 AliESDEvent.cxx:1177
 AliESDEvent.cxx:1178
 AliESDEvent.cxx:1179
 AliESDEvent.cxx:1180
 AliESDEvent.cxx:1181
 AliESDEvent.cxx:1182
 AliESDEvent.cxx:1183
 AliESDEvent.cxx:1184
 AliESDEvent.cxx:1185
 AliESDEvent.cxx:1186
 AliESDEvent.cxx:1187
 AliESDEvent.cxx:1188
 AliESDEvent.cxx:1189
 AliESDEvent.cxx:1190
 AliESDEvent.cxx:1191
 AliESDEvent.cxx:1192
 AliESDEvent.cxx:1193
 AliESDEvent.cxx:1194
 AliESDEvent.cxx:1195
 AliESDEvent.cxx:1196
 AliESDEvent.cxx:1197
 AliESDEvent.cxx:1198
 AliESDEvent.cxx:1199
 AliESDEvent.cxx:1200
 AliESDEvent.cxx:1201
 AliESDEvent.cxx:1202
 AliESDEvent.cxx:1203
 AliESDEvent.cxx:1204
 AliESDEvent.cxx:1205
 AliESDEvent.cxx:1206
 AliESDEvent.cxx:1207
 AliESDEvent.cxx:1208
 AliESDEvent.cxx:1209
 AliESDEvent.cxx:1210
 AliESDEvent.cxx:1211
 AliESDEvent.cxx:1212
 AliESDEvent.cxx:1213
 AliESDEvent.cxx:1214
 AliESDEvent.cxx:1215
 AliESDEvent.cxx:1216
 AliESDEvent.cxx:1217
 AliESDEvent.cxx:1218
 AliESDEvent.cxx:1219
 AliESDEvent.cxx:1220
 AliESDEvent.cxx:1221
 AliESDEvent.cxx:1222
 AliESDEvent.cxx:1223
 AliESDEvent.cxx:1224
 AliESDEvent.cxx:1225
 AliESDEvent.cxx:1226
 AliESDEvent.cxx:1227
 AliESDEvent.cxx:1228
 AliESDEvent.cxx:1229
 AliESDEvent.cxx:1230
 AliESDEvent.cxx:1231
 AliESDEvent.cxx:1232
 AliESDEvent.cxx:1233
 AliESDEvent.cxx:1234
 AliESDEvent.cxx:1235
 AliESDEvent.cxx:1236
 AliESDEvent.cxx:1237
 AliESDEvent.cxx:1238
 AliESDEvent.cxx:1239
 AliESDEvent.cxx:1240
 AliESDEvent.cxx:1241
 AliESDEvent.cxx:1242
 AliESDEvent.cxx:1243
 AliESDEvent.cxx:1244
 AliESDEvent.cxx:1245
 AliESDEvent.cxx:1246
 AliESDEvent.cxx:1247
 AliESDEvent.cxx:1248
 AliESDEvent.cxx:1249
 AliESDEvent.cxx:1250
 AliESDEvent.cxx:1251
 AliESDEvent.cxx:1252
 AliESDEvent.cxx:1253
 AliESDEvent.cxx:1254
 AliESDEvent.cxx:1255
 AliESDEvent.cxx:1256
 AliESDEvent.cxx:1257
 AliESDEvent.cxx:1258
 AliESDEvent.cxx:1259
 AliESDEvent.cxx:1260
 AliESDEvent.cxx:1261
 AliESDEvent.cxx:1262
 AliESDEvent.cxx:1263
 AliESDEvent.cxx:1264
 AliESDEvent.cxx:1265
 AliESDEvent.cxx:1266
 AliESDEvent.cxx:1267
 AliESDEvent.cxx:1268
 AliESDEvent.cxx:1269
 AliESDEvent.cxx:1270
 AliESDEvent.cxx:1271
 AliESDEvent.cxx:1272
 AliESDEvent.cxx:1273
 AliESDEvent.cxx:1274
 AliESDEvent.cxx:1275
 AliESDEvent.cxx:1276
 AliESDEvent.cxx:1277
 AliESDEvent.cxx:1278
 AliESDEvent.cxx:1279
 AliESDEvent.cxx:1280
 AliESDEvent.cxx:1281
 AliESDEvent.cxx:1282
 AliESDEvent.cxx:1283
 AliESDEvent.cxx:1284
 AliESDEvent.cxx:1285
 AliESDEvent.cxx:1286
 AliESDEvent.cxx:1287
 AliESDEvent.cxx:1288
 AliESDEvent.cxx:1289
 AliESDEvent.cxx:1290
 AliESDEvent.cxx:1291
 AliESDEvent.cxx:1292
 AliESDEvent.cxx:1293
 AliESDEvent.cxx:1294
 AliESDEvent.cxx:1295
 AliESDEvent.cxx:1296
 AliESDEvent.cxx:1297
 AliESDEvent.cxx:1298
 AliESDEvent.cxx:1299
 AliESDEvent.cxx:1300
 AliESDEvent.cxx:1301
 AliESDEvent.cxx:1302
 AliESDEvent.cxx:1303
 AliESDEvent.cxx:1304
 AliESDEvent.cxx:1305
 AliESDEvent.cxx:1306
 AliESDEvent.cxx:1307
 AliESDEvent.cxx:1308
 AliESDEvent.cxx:1309
 AliESDEvent.cxx:1310
 AliESDEvent.cxx:1311
 AliESDEvent.cxx:1312
 AliESDEvent.cxx:1313
 AliESDEvent.cxx:1314
 AliESDEvent.cxx:1315
 AliESDEvent.cxx:1316
 AliESDEvent.cxx:1317
 AliESDEvent.cxx:1318
 AliESDEvent.cxx:1319
 AliESDEvent.cxx:1320
 AliESDEvent.cxx:1321
 AliESDEvent.cxx:1322
 AliESDEvent.cxx:1323
 AliESDEvent.cxx:1324
 AliESDEvent.cxx:1325
 AliESDEvent.cxx:1326
 AliESDEvent.cxx:1327
 AliESDEvent.cxx:1328
 AliESDEvent.cxx:1329
 AliESDEvent.cxx:1330
 AliESDEvent.cxx:1331
 AliESDEvent.cxx:1332
 AliESDEvent.cxx:1333
 AliESDEvent.cxx:1334
 AliESDEvent.cxx:1335
 AliESDEvent.cxx:1336
 AliESDEvent.cxx:1337
 AliESDEvent.cxx:1338
 AliESDEvent.cxx:1339
 AliESDEvent.cxx:1340
 AliESDEvent.cxx:1341
 AliESDEvent.cxx:1342
 AliESDEvent.cxx:1343
 AliESDEvent.cxx:1344
 AliESDEvent.cxx:1345
 AliESDEvent.cxx:1346
 AliESDEvent.cxx:1347
 AliESDEvent.cxx:1348
 AliESDEvent.cxx:1349
 AliESDEvent.cxx:1350
 AliESDEvent.cxx:1351
 AliESDEvent.cxx:1352
 AliESDEvent.cxx:1353
 AliESDEvent.cxx:1354
 AliESDEvent.cxx:1355
 AliESDEvent.cxx:1356
 AliESDEvent.cxx:1357
 AliESDEvent.cxx:1358
 AliESDEvent.cxx:1359
 AliESDEvent.cxx:1360
 AliESDEvent.cxx:1361
 AliESDEvent.cxx:1362
 AliESDEvent.cxx:1363
 AliESDEvent.cxx:1364
 AliESDEvent.cxx:1365
 AliESDEvent.cxx:1366
 AliESDEvent.cxx:1367
 AliESDEvent.cxx:1368
 AliESDEvent.cxx:1369
 AliESDEvent.cxx:1370
 AliESDEvent.cxx:1371
 AliESDEvent.cxx:1372
 AliESDEvent.cxx:1373
 AliESDEvent.cxx:1374
 AliESDEvent.cxx:1375
 AliESDEvent.cxx:1376
 AliESDEvent.cxx:1377
 AliESDEvent.cxx:1378
 AliESDEvent.cxx:1379
 AliESDEvent.cxx:1380
 AliESDEvent.cxx:1381
 AliESDEvent.cxx:1382
 AliESDEvent.cxx:1383
 AliESDEvent.cxx:1384
 AliESDEvent.cxx:1385
 AliESDEvent.cxx:1386
 AliESDEvent.cxx:1387
 AliESDEvent.cxx:1388
 AliESDEvent.cxx:1389
 AliESDEvent.cxx:1390
 AliESDEvent.cxx:1391
 AliESDEvent.cxx:1392
 AliESDEvent.cxx:1393
 AliESDEvent.cxx:1394
 AliESDEvent.cxx:1395
 AliESDEvent.cxx:1396
 AliESDEvent.cxx:1397
 AliESDEvent.cxx:1398
 AliESDEvent.cxx:1399
 AliESDEvent.cxx:1400
 AliESDEvent.cxx:1401
 AliESDEvent.cxx:1402
 AliESDEvent.cxx:1403
 AliESDEvent.cxx:1404
 AliESDEvent.cxx:1405
 AliESDEvent.cxx:1406
 AliESDEvent.cxx:1407
 AliESDEvent.cxx:1408
 AliESDEvent.cxx:1409
 AliESDEvent.cxx:1410
 AliESDEvent.cxx:1411
 AliESDEvent.cxx:1412
 AliESDEvent.cxx:1413
 AliESDEvent.cxx:1414
 AliESDEvent.cxx:1415
 AliESDEvent.cxx:1416
 AliESDEvent.cxx:1417
 AliESDEvent.cxx:1418
 AliESDEvent.cxx:1419
 AliESDEvent.cxx:1420
 AliESDEvent.cxx:1421
 AliESDEvent.cxx:1422
 AliESDEvent.cxx:1423
 AliESDEvent.cxx:1424
 AliESDEvent.cxx:1425
 AliESDEvent.cxx:1426
 AliESDEvent.cxx:1427
 AliESDEvent.cxx:1428
 AliESDEvent.cxx:1429
 AliESDEvent.cxx:1430
 AliESDEvent.cxx:1431
 AliESDEvent.cxx:1432
 AliESDEvent.cxx:1433
 AliESDEvent.cxx:1434
 AliESDEvent.cxx:1435
 AliESDEvent.cxx:1436
 AliESDEvent.cxx:1437
 AliESDEvent.cxx:1438
 AliESDEvent.cxx:1439
 AliESDEvent.cxx:1440
 AliESDEvent.cxx:1441
 AliESDEvent.cxx:1442
 AliESDEvent.cxx:1443
 AliESDEvent.cxx:1444
 AliESDEvent.cxx:1445
 AliESDEvent.cxx:1446
 AliESDEvent.cxx:1447
 AliESDEvent.cxx:1448
 AliESDEvent.cxx:1449
 AliESDEvent.cxx:1450
 AliESDEvent.cxx:1451
 AliESDEvent.cxx:1452
 AliESDEvent.cxx:1453
 AliESDEvent.cxx:1454
 AliESDEvent.cxx:1455
 AliESDEvent.cxx:1456
 AliESDEvent.cxx:1457
 AliESDEvent.cxx:1458
 AliESDEvent.cxx:1459
 AliESDEvent.cxx:1460
 AliESDEvent.cxx:1461
 AliESDEvent.cxx:1462
 AliESDEvent.cxx:1463
 AliESDEvent.cxx:1464
 AliESDEvent.cxx:1465
 AliESDEvent.cxx:1466
 AliESDEvent.cxx:1467
 AliESDEvent.cxx:1468
 AliESDEvent.cxx:1469
 AliESDEvent.cxx:1470
 AliESDEvent.cxx:1471
 AliESDEvent.cxx:1472
 AliESDEvent.cxx:1473
 AliESDEvent.cxx:1474
 AliESDEvent.cxx:1475
 AliESDEvent.cxx:1476
 AliESDEvent.cxx:1477
 AliESDEvent.cxx:1478
 AliESDEvent.cxx:1479
 AliESDEvent.cxx:1480
 AliESDEvent.cxx:1481
 AliESDEvent.cxx:1482
 AliESDEvent.cxx:1483
 AliESDEvent.cxx:1484
 AliESDEvent.cxx:1485
 AliESDEvent.cxx:1486
 AliESDEvent.cxx:1487
 AliESDEvent.cxx:1488
 AliESDEvent.cxx:1489
 AliESDEvent.cxx:1490
 AliESDEvent.cxx:1491
 AliESDEvent.cxx:1492
 AliESDEvent.cxx:1493
 AliESDEvent.cxx:1494
 AliESDEvent.cxx:1495
 AliESDEvent.cxx:1496
 AliESDEvent.cxx:1497
 AliESDEvent.cxx:1498
 AliESDEvent.cxx:1499
 AliESDEvent.cxx:1500
 AliESDEvent.cxx:1501
 AliESDEvent.cxx:1502
 AliESDEvent.cxx:1503
 AliESDEvent.cxx:1504
 AliESDEvent.cxx:1505
 AliESDEvent.cxx:1506
 AliESDEvent.cxx:1507
 AliESDEvent.cxx:1508
 AliESDEvent.cxx:1509
 AliESDEvent.cxx:1510
 AliESDEvent.cxx:1511
 AliESDEvent.cxx:1512
 AliESDEvent.cxx:1513
 AliESDEvent.cxx:1514
 AliESDEvent.cxx:1515
 AliESDEvent.cxx:1516
 AliESDEvent.cxx:1517
 AliESDEvent.cxx:1518
 AliESDEvent.cxx:1519
 AliESDEvent.cxx:1520
 AliESDEvent.cxx:1521
 AliESDEvent.cxx:1522
 AliESDEvent.cxx:1523
 AliESDEvent.cxx:1524
 AliESDEvent.cxx:1525
 AliESDEvent.cxx:1526
 AliESDEvent.cxx:1527
 AliESDEvent.cxx:1528
 AliESDEvent.cxx:1529
 AliESDEvent.cxx:1530
 AliESDEvent.cxx:1531
 AliESDEvent.cxx:1532
 AliESDEvent.cxx:1533
 AliESDEvent.cxx:1534
 AliESDEvent.cxx:1535
 AliESDEvent.cxx:1536
 AliESDEvent.cxx:1537
 AliESDEvent.cxx:1538
 AliESDEvent.cxx:1539
 AliESDEvent.cxx:1540
 AliESDEvent.cxx:1541
 AliESDEvent.cxx:1542
 AliESDEvent.cxx:1543
 AliESDEvent.cxx:1544
 AliESDEvent.cxx:1545
 AliESDEvent.cxx:1546
 AliESDEvent.cxx:1547
 AliESDEvent.cxx:1548
 AliESDEvent.cxx:1549
 AliESDEvent.cxx:1550
 AliESDEvent.cxx:1551
 AliESDEvent.cxx:1552
 AliESDEvent.cxx:1553
 AliESDEvent.cxx:1554
 AliESDEvent.cxx:1555
 AliESDEvent.cxx:1556
 AliESDEvent.cxx:1557
 AliESDEvent.cxx:1558
 AliESDEvent.cxx:1559
 AliESDEvent.cxx:1560
 AliESDEvent.cxx:1561
 AliESDEvent.cxx:1562
 AliESDEvent.cxx:1563
 AliESDEvent.cxx:1564
 AliESDEvent.cxx:1565
 AliESDEvent.cxx:1566
 AliESDEvent.cxx:1567
 AliESDEvent.cxx:1568
 AliESDEvent.cxx:1569
 AliESDEvent.cxx:1570
 AliESDEvent.cxx:1571
 AliESDEvent.cxx:1572
 AliESDEvent.cxx:1573
 AliESDEvent.cxx:1574
 AliESDEvent.cxx:1575
 AliESDEvent.cxx:1576
 AliESDEvent.cxx:1577
 AliESDEvent.cxx:1578
 AliESDEvent.cxx:1579
 AliESDEvent.cxx:1580
 AliESDEvent.cxx:1581
 AliESDEvent.cxx:1582
 AliESDEvent.cxx:1583
 AliESDEvent.cxx:1584
 AliESDEvent.cxx:1585
 AliESDEvent.cxx:1586
 AliESDEvent.cxx:1587
 AliESDEvent.cxx:1588
 AliESDEvent.cxx:1589
 AliESDEvent.cxx:1590
 AliESDEvent.cxx:1591
 AliESDEvent.cxx:1592
 AliESDEvent.cxx:1593
 AliESDEvent.cxx:1594
 AliESDEvent.cxx:1595
 AliESDEvent.cxx:1596
 AliESDEvent.cxx:1597
 AliESDEvent.cxx:1598
 AliESDEvent.cxx:1599
 AliESDEvent.cxx:1600
 AliESDEvent.cxx:1601
 AliESDEvent.cxx:1602
 AliESDEvent.cxx:1603
 AliESDEvent.cxx:1604
 AliESDEvent.cxx:1605
 AliESDEvent.cxx:1606
 AliESDEvent.cxx:1607
 AliESDEvent.cxx:1608
 AliESDEvent.cxx:1609
 AliESDEvent.cxx:1610
 AliESDEvent.cxx:1611
 AliESDEvent.cxx:1612
 AliESDEvent.cxx:1613
 AliESDEvent.cxx:1614
 AliESDEvent.cxx:1615
 AliESDEvent.cxx:1616
 AliESDEvent.cxx:1617
 AliESDEvent.cxx:1618
 AliESDEvent.cxx:1619
 AliESDEvent.cxx:1620
 AliESDEvent.cxx:1621
 AliESDEvent.cxx:1622
 AliESDEvent.cxx:1623
 AliESDEvent.cxx:1624
 AliESDEvent.cxx:1625
 AliESDEvent.cxx:1626
 AliESDEvent.cxx:1627
 AliESDEvent.cxx:1628
 AliESDEvent.cxx:1629
 AliESDEvent.cxx:1630
 AliESDEvent.cxx:1631
 AliESDEvent.cxx:1632
 AliESDEvent.cxx:1633
 AliESDEvent.cxx:1634
 AliESDEvent.cxx:1635
 AliESDEvent.cxx:1636
 AliESDEvent.cxx:1637
 AliESDEvent.cxx:1638
 AliESDEvent.cxx:1639
 AliESDEvent.cxx:1640
 AliESDEvent.cxx:1641
 AliESDEvent.cxx:1642
 AliESDEvent.cxx:1643
 AliESDEvent.cxx:1644
 AliESDEvent.cxx:1645
 AliESDEvent.cxx:1646
 AliESDEvent.cxx:1647
 AliESDEvent.cxx:1648
 AliESDEvent.cxx:1649
 AliESDEvent.cxx:1650
 AliESDEvent.cxx:1651
 AliESDEvent.cxx:1652
 AliESDEvent.cxx:1653
 AliESDEvent.cxx:1654
 AliESDEvent.cxx:1655
 AliESDEvent.cxx:1656
 AliESDEvent.cxx:1657
 AliESDEvent.cxx:1658
 AliESDEvent.cxx:1659
 AliESDEvent.cxx:1660
 AliESDEvent.cxx:1661
 AliESDEvent.cxx:1662
 AliESDEvent.cxx:1663
 AliESDEvent.cxx:1664
 AliESDEvent.cxx:1665
 AliESDEvent.cxx:1666
 AliESDEvent.cxx:1667
 AliESDEvent.cxx:1668
 AliESDEvent.cxx:1669
 AliESDEvent.cxx:1670
 AliESDEvent.cxx:1671
 AliESDEvent.cxx:1672
 AliESDEvent.cxx:1673
 AliESDEvent.cxx:1674
 AliESDEvent.cxx:1675
 AliESDEvent.cxx:1676
 AliESDEvent.cxx:1677
 AliESDEvent.cxx:1678
 AliESDEvent.cxx:1679
 AliESDEvent.cxx:1680
 AliESDEvent.cxx:1681
 AliESDEvent.cxx:1682
 AliESDEvent.cxx:1683
 AliESDEvent.cxx:1684
 AliESDEvent.cxx:1685
 AliESDEvent.cxx:1686
 AliESDEvent.cxx:1687
 AliESDEvent.cxx:1688
 AliESDEvent.cxx:1689
 AliESDEvent.cxx:1690
 AliESDEvent.cxx:1691
 AliESDEvent.cxx:1692
 AliESDEvent.cxx:1693
 AliESDEvent.cxx:1694
 AliESDEvent.cxx:1695
 AliESDEvent.cxx:1696
 AliESDEvent.cxx:1697
 AliESDEvent.cxx:1698
 AliESDEvent.cxx:1699
 AliESDEvent.cxx:1700
 AliESDEvent.cxx:1701
 AliESDEvent.cxx:1702
 AliESDEvent.cxx:1703
 AliESDEvent.cxx:1704
 AliESDEvent.cxx:1705
 AliESDEvent.cxx:1706
 AliESDEvent.cxx:1707
 AliESDEvent.cxx:1708
 AliESDEvent.cxx:1709
 AliESDEvent.cxx:1710
 AliESDEvent.cxx:1711
 AliESDEvent.cxx:1712
 AliESDEvent.cxx:1713
 AliESDEvent.cxx:1714
 AliESDEvent.cxx:1715
 AliESDEvent.cxx:1716
 AliESDEvent.cxx:1717
 AliESDEvent.cxx:1718
 AliESDEvent.cxx:1719
 AliESDEvent.cxx:1720
 AliESDEvent.cxx:1721
 AliESDEvent.cxx:1722
 AliESDEvent.cxx:1723
 AliESDEvent.cxx:1724
 AliESDEvent.cxx:1725
 AliESDEvent.cxx:1726
 AliESDEvent.cxx:1727
 AliESDEvent.cxx:1728
 AliESDEvent.cxx:1729
 AliESDEvent.cxx:1730
 AliESDEvent.cxx:1731
 AliESDEvent.cxx:1732
 AliESDEvent.cxx:1733
 AliESDEvent.cxx:1734
 AliESDEvent.cxx:1735
 AliESDEvent.cxx:1736
 AliESDEvent.cxx:1737
 AliESDEvent.cxx:1738
 AliESDEvent.cxx:1739
 AliESDEvent.cxx:1740
 AliESDEvent.cxx:1741
 AliESDEvent.cxx:1742
 AliESDEvent.cxx:1743
 AliESDEvent.cxx:1744
 AliESDEvent.cxx:1745
 AliESDEvent.cxx:1746
 AliESDEvent.cxx:1747
 AliESDEvent.cxx:1748
 AliESDEvent.cxx:1749
 AliESDEvent.cxx:1750
 AliESDEvent.cxx:1751
 AliESDEvent.cxx:1752
 AliESDEvent.cxx:1753
 AliESDEvent.cxx:1754
 AliESDEvent.cxx:1755
 AliESDEvent.cxx:1756
 AliESDEvent.cxx:1757
 AliESDEvent.cxx:1758
 AliESDEvent.cxx:1759
 AliESDEvent.cxx:1760
 AliESDEvent.cxx:1761
 AliESDEvent.cxx:1762
 AliESDEvent.cxx:1763
 AliESDEvent.cxx:1764
 AliESDEvent.cxx:1765
 AliESDEvent.cxx:1766
 AliESDEvent.cxx:1767
 AliESDEvent.cxx:1768
 AliESDEvent.cxx:1769
 AliESDEvent.cxx:1770
 AliESDEvent.cxx:1771
 AliESDEvent.cxx:1772
 AliESDEvent.cxx:1773
 AliESDEvent.cxx:1774
 AliESDEvent.cxx:1775
 AliESDEvent.cxx:1776
 AliESDEvent.cxx:1777
 AliESDEvent.cxx:1778
 AliESDEvent.cxx:1779
 AliESDEvent.cxx:1780
 AliESDEvent.cxx:1781
 AliESDEvent.cxx:1782
 AliESDEvent.cxx:1783
 AliESDEvent.cxx:1784
 AliESDEvent.cxx:1785
 AliESDEvent.cxx:1786
 AliESDEvent.cxx:1787
 AliESDEvent.cxx:1788
 AliESDEvent.cxx:1789
 AliESDEvent.cxx:1790
 AliESDEvent.cxx:1791
 AliESDEvent.cxx:1792
 AliESDEvent.cxx:1793
 AliESDEvent.cxx:1794
 AliESDEvent.cxx:1795
 AliESDEvent.cxx:1796
 AliESDEvent.cxx:1797
 AliESDEvent.cxx:1798
 AliESDEvent.cxx:1799
 AliESDEvent.cxx:1800
 AliESDEvent.cxx:1801
 AliESDEvent.cxx:1802
 AliESDEvent.cxx:1803
 AliESDEvent.cxx:1804
 AliESDEvent.cxx:1805
 AliESDEvent.cxx:1806
 AliESDEvent.cxx:1807
 AliESDEvent.cxx:1808
 AliESDEvent.cxx:1809
 AliESDEvent.cxx:1810
 AliESDEvent.cxx:1811
 AliESDEvent.cxx:1812
 AliESDEvent.cxx:1813
 AliESDEvent.cxx:1814
 AliESDEvent.cxx:1815
 AliESDEvent.cxx:1816
 AliESDEvent.cxx:1817
 AliESDEvent.cxx:1818
 AliESDEvent.cxx:1819
 AliESDEvent.cxx:1820
 AliESDEvent.cxx:1821
 AliESDEvent.cxx:1822
 AliESDEvent.cxx:1823
 AliESDEvent.cxx:1824
 AliESDEvent.cxx:1825
 AliESDEvent.cxx:1826
 AliESDEvent.cxx:1827
 AliESDEvent.cxx:1828
 AliESDEvent.cxx:1829
 AliESDEvent.cxx:1830
 AliESDEvent.cxx:1831
 AliESDEvent.cxx:1832
 AliESDEvent.cxx:1833
 AliESDEvent.cxx:1834
 AliESDEvent.cxx:1835
 AliESDEvent.cxx:1836
 AliESDEvent.cxx:1837
 AliESDEvent.cxx:1838
 AliESDEvent.cxx:1839
 AliESDEvent.cxx:1840
 AliESDEvent.cxx:1841
 AliESDEvent.cxx:1842
 AliESDEvent.cxx:1843
 AliESDEvent.cxx:1844
 AliESDEvent.cxx:1845
 AliESDEvent.cxx:1846
 AliESDEvent.cxx:1847
 AliESDEvent.cxx:1848
 AliESDEvent.cxx:1849
 AliESDEvent.cxx:1850
 AliESDEvent.cxx:1851
 AliESDEvent.cxx:1852
 AliESDEvent.cxx:1853
 AliESDEvent.cxx:1854
 AliESDEvent.cxx:1855
 AliESDEvent.cxx:1856
 AliESDEvent.cxx:1857
 AliESDEvent.cxx:1858
 AliESDEvent.cxx:1859
 AliESDEvent.cxx:1860
 AliESDEvent.cxx:1861
 AliESDEvent.cxx:1862
 AliESDEvent.cxx:1863
 AliESDEvent.cxx:1864
 AliESDEvent.cxx:1865
 AliESDEvent.cxx:1866
 AliESDEvent.cxx:1867
 AliESDEvent.cxx:1868
 AliESDEvent.cxx:1869
 AliESDEvent.cxx:1870
 AliESDEvent.cxx:1871
 AliESDEvent.cxx:1872
 AliESDEvent.cxx:1873
 AliESDEvent.cxx:1874
 AliESDEvent.cxx:1875
 AliESDEvent.cxx:1876
 AliESDEvent.cxx:1877
 AliESDEvent.cxx:1878
 AliESDEvent.cxx:1879
 AliESDEvent.cxx:1880
 AliESDEvent.cxx:1881
 AliESDEvent.cxx:1882
 AliESDEvent.cxx:1883
 AliESDEvent.cxx:1884
 AliESDEvent.cxx:1885
 AliESDEvent.cxx:1886
 AliESDEvent.cxx:1887
 AliESDEvent.cxx:1888
 AliESDEvent.cxx:1889
 AliESDEvent.cxx:1890
 AliESDEvent.cxx:1891
 AliESDEvent.cxx:1892
 AliESDEvent.cxx:1893
 AliESDEvent.cxx:1894
 AliESDEvent.cxx:1895
 AliESDEvent.cxx:1896
 AliESDEvent.cxx:1897
 AliESDEvent.cxx:1898
 AliESDEvent.cxx:1899
 AliESDEvent.cxx:1900
 AliESDEvent.cxx:1901
 AliESDEvent.cxx:1902
 AliESDEvent.cxx:1903
 AliESDEvent.cxx:1904
 AliESDEvent.cxx:1905
 AliESDEvent.cxx:1906
 AliESDEvent.cxx:1907
 AliESDEvent.cxx:1908
 AliESDEvent.cxx:1909
 AliESDEvent.cxx:1910
 AliESDEvent.cxx:1911
 AliESDEvent.cxx:1912
 AliESDEvent.cxx:1913
 AliESDEvent.cxx:1914
 AliESDEvent.cxx:1915
 AliESDEvent.cxx:1916
 AliESDEvent.cxx:1917
 AliESDEvent.cxx:1918
 AliESDEvent.cxx:1919
 AliESDEvent.cxx:1920
 AliESDEvent.cxx:1921
 AliESDEvent.cxx:1922
 AliESDEvent.cxx:1923
 AliESDEvent.cxx:1924
 AliESDEvent.cxx:1925
 AliESDEvent.cxx:1926
 AliESDEvent.cxx:1927
 AliESDEvent.cxx:1928
 AliESDEvent.cxx:1929
 AliESDEvent.cxx:1930
 AliESDEvent.cxx:1931
 AliESDEvent.cxx:1932
 AliESDEvent.cxx:1933
 AliESDEvent.cxx:1934
 AliESDEvent.cxx:1935
 AliESDEvent.cxx:1936
 AliESDEvent.cxx:1937
 AliESDEvent.cxx:1938
 AliESDEvent.cxx:1939
 AliESDEvent.cxx:1940
 AliESDEvent.cxx:1941
 AliESDEvent.cxx:1942
 AliESDEvent.cxx:1943
 AliESDEvent.cxx:1944
 AliESDEvent.cxx:1945
 AliESDEvent.cxx:1946
 AliESDEvent.cxx:1947
 AliESDEvent.cxx:1948
 AliESDEvent.cxx:1949
 AliESDEvent.cxx:1950
 AliESDEvent.cxx:1951
 AliESDEvent.cxx:1952
 AliESDEvent.cxx:1953
 AliESDEvent.cxx:1954
 AliESDEvent.cxx:1955
 AliESDEvent.cxx:1956
 AliESDEvent.cxx:1957
 AliESDEvent.cxx:1958
 AliESDEvent.cxx:1959
 AliESDEvent.cxx:1960
 AliESDEvent.cxx:1961
 AliESDEvent.cxx:1962
 AliESDEvent.cxx:1963
 AliESDEvent.cxx:1964
 AliESDEvent.cxx:1965
 AliESDEvent.cxx:1966
 AliESDEvent.cxx:1967
 AliESDEvent.cxx:1968
 AliESDEvent.cxx:1969
 AliESDEvent.cxx:1970
 AliESDEvent.cxx:1971
 AliESDEvent.cxx:1972
 AliESDEvent.cxx:1973
 AliESDEvent.cxx:1974
 AliESDEvent.cxx:1975
 AliESDEvent.cxx:1976
 AliESDEvent.cxx:1977
 AliESDEvent.cxx:1978
 AliESDEvent.cxx:1979
 AliESDEvent.cxx:1980
 AliESDEvent.cxx:1981
 AliESDEvent.cxx:1982
 AliESDEvent.cxx:1983
 AliESDEvent.cxx:1984
 AliESDEvent.cxx:1985
 AliESDEvent.cxx:1986
 AliESDEvent.cxx:1987
 AliESDEvent.cxx:1988
 AliESDEvent.cxx:1989
 AliESDEvent.cxx:1990
 AliESDEvent.cxx:1991
 AliESDEvent.cxx:1992
 AliESDEvent.cxx:1993
 AliESDEvent.cxx:1994
 AliESDEvent.cxx:1995
 AliESDEvent.cxx:1996
 AliESDEvent.cxx:1997
 AliESDEvent.cxx:1998
 AliESDEvent.cxx:1999
 AliESDEvent.cxx:2000
 AliESDEvent.cxx:2001
 AliESDEvent.cxx:2002
 AliESDEvent.cxx:2003
 AliESDEvent.cxx:2004
 AliESDEvent.cxx:2005
 AliESDEvent.cxx:2006
 AliESDEvent.cxx:2007
 AliESDEvent.cxx:2008
 AliESDEvent.cxx:2009
 AliESDEvent.cxx:2010
 AliESDEvent.cxx:2011
 AliESDEvent.cxx:2012
 AliESDEvent.cxx:2013
 AliESDEvent.cxx:2014
 AliESDEvent.cxx:2015
 AliESDEvent.cxx:2016
 AliESDEvent.cxx:2017
 AliESDEvent.cxx:2018
 AliESDEvent.cxx:2019
 AliESDEvent.cxx:2020
 AliESDEvent.cxx:2021
 AliESDEvent.cxx:2022
 AliESDEvent.cxx:2023
 AliESDEvent.cxx:2024
 AliESDEvent.cxx:2025
 AliESDEvent.cxx:2026
 AliESDEvent.cxx:2027
 AliESDEvent.cxx:2028
 AliESDEvent.cxx:2029
 AliESDEvent.cxx:2030
 AliESDEvent.cxx:2031
 AliESDEvent.cxx:2032
 AliESDEvent.cxx:2033
 AliESDEvent.cxx:2034
 AliESDEvent.cxx:2035
 AliESDEvent.cxx:2036
 AliESDEvent.cxx:2037
 AliESDEvent.cxx:2038
 AliESDEvent.cxx:2039
 AliESDEvent.cxx:2040
 AliESDEvent.cxx:2041
 AliESDEvent.cxx:2042
 AliESDEvent.cxx:2043
 AliESDEvent.cxx:2044
 AliESDEvent.cxx:2045
 AliESDEvent.cxx:2046
 AliESDEvent.cxx:2047
 AliESDEvent.cxx:2048
 AliESDEvent.cxx:2049
 AliESDEvent.cxx:2050
 AliESDEvent.cxx:2051
 AliESDEvent.cxx:2052
 AliESDEvent.cxx:2053
 AliESDEvent.cxx:2054
 AliESDEvent.cxx:2055
 AliESDEvent.cxx:2056
 AliESDEvent.cxx:2057
 AliESDEvent.cxx:2058
 AliESDEvent.cxx:2059
 AliESDEvent.cxx:2060
 AliESDEvent.cxx:2061
 AliESDEvent.cxx:2062
 AliESDEvent.cxx:2063
 AliESDEvent.cxx:2064
 AliESDEvent.cxx:2065
 AliESDEvent.cxx:2066
 AliESDEvent.cxx:2067
 AliESDEvent.cxx:2068
 AliESDEvent.cxx:2069
 AliESDEvent.cxx:2070
 AliESDEvent.cxx:2071
 AliESDEvent.cxx:2072
 AliESDEvent.cxx:2073
 AliESDEvent.cxx:2074
 AliESDEvent.cxx:2075
 AliESDEvent.cxx:2076
 AliESDEvent.cxx:2077
 AliESDEvent.cxx:2078
 AliESDEvent.cxx:2079
 AliESDEvent.cxx:2080
 AliESDEvent.cxx:2081
 AliESDEvent.cxx:2082
 AliESDEvent.cxx:2083
 AliESDEvent.cxx:2084
 AliESDEvent.cxx:2085
 AliESDEvent.cxx:2086
 AliESDEvent.cxx:2087
 AliESDEvent.cxx:2088
 AliESDEvent.cxx:2089
 AliESDEvent.cxx:2090
 AliESDEvent.cxx:2091
 AliESDEvent.cxx:2092
 AliESDEvent.cxx:2093
 AliESDEvent.cxx:2094
 AliESDEvent.cxx:2095
 AliESDEvent.cxx:2096
 AliESDEvent.cxx:2097
 AliESDEvent.cxx:2098
 AliESDEvent.cxx:2099
 AliESDEvent.cxx:2100
 AliESDEvent.cxx:2101
 AliESDEvent.cxx:2102
 AliESDEvent.cxx:2103
 AliESDEvent.cxx:2104
 AliESDEvent.cxx:2105
 AliESDEvent.cxx:2106
 AliESDEvent.cxx:2107
 AliESDEvent.cxx:2108
 AliESDEvent.cxx:2109
 AliESDEvent.cxx:2110
 AliESDEvent.cxx:2111
 AliESDEvent.cxx:2112
 AliESDEvent.cxx:2113
 AliESDEvent.cxx:2114
 AliESDEvent.cxx:2115
 AliESDEvent.cxx:2116
 AliESDEvent.cxx:2117
 AliESDEvent.cxx:2118
 AliESDEvent.cxx:2119
 AliESDEvent.cxx:2120
 AliESDEvent.cxx:2121
 AliESDEvent.cxx:2122
 AliESDEvent.cxx:2123
 AliESDEvent.cxx:2124
 AliESDEvent.cxx:2125
 AliESDEvent.cxx:2126
 AliESDEvent.cxx:2127
 AliESDEvent.cxx:2128
 AliESDEvent.cxx:2129
 AliESDEvent.cxx:2130
 AliESDEvent.cxx:2131
 AliESDEvent.cxx:2132
 AliESDEvent.cxx:2133
 AliESDEvent.cxx:2134
 AliESDEvent.cxx:2135
 AliESDEvent.cxx:2136
 AliESDEvent.cxx:2137
 AliESDEvent.cxx:2138
 AliESDEvent.cxx:2139
 AliESDEvent.cxx:2140
 AliESDEvent.cxx:2141
 AliESDEvent.cxx:2142
 AliESDEvent.cxx:2143
 AliESDEvent.cxx:2144
 AliESDEvent.cxx:2145
 AliESDEvent.cxx:2146
 AliESDEvent.cxx:2147
 AliESDEvent.cxx:2148
 AliESDEvent.cxx:2149
 AliESDEvent.cxx:2150
 AliESDEvent.cxx:2151
 AliESDEvent.cxx:2152
 AliESDEvent.cxx:2153
 AliESDEvent.cxx:2154
 AliESDEvent.cxx:2155
 AliESDEvent.cxx:2156
 AliESDEvent.cxx:2157
 AliESDEvent.cxx:2158
 AliESDEvent.cxx:2159
 AliESDEvent.cxx:2160
 AliESDEvent.cxx:2161
 AliESDEvent.cxx:2162
 AliESDEvent.cxx:2163
 AliESDEvent.cxx:2164
 AliESDEvent.cxx:2165
 AliESDEvent.cxx:2166
 AliESDEvent.cxx:2167
 AliESDEvent.cxx:2168
 AliESDEvent.cxx:2169
 AliESDEvent.cxx:2170
 AliESDEvent.cxx:2171
 AliESDEvent.cxx:2172
 AliESDEvent.cxx:2173
 AliESDEvent.cxx:2174
 AliESDEvent.cxx:2175
 AliESDEvent.cxx:2176
 AliESDEvent.cxx:2177
 AliESDEvent.cxx:2178
 AliESDEvent.cxx:2179
 AliESDEvent.cxx:2180
 AliESDEvent.cxx:2181
 AliESDEvent.cxx:2182
 AliESDEvent.cxx:2183
 AliESDEvent.cxx:2184
 AliESDEvent.cxx:2185
 AliESDEvent.cxx:2186
 AliESDEvent.cxx:2187
 AliESDEvent.cxx:2188
 AliESDEvent.cxx:2189
 AliESDEvent.cxx:2190
 AliESDEvent.cxx:2191
 AliESDEvent.cxx:2192
 AliESDEvent.cxx:2193
 AliESDEvent.cxx:2194
 AliESDEvent.cxx:2195
 AliESDEvent.cxx:2196
 AliESDEvent.cxx:2197
 AliESDEvent.cxx:2198
 AliESDEvent.cxx:2199
 AliESDEvent.cxx:2200
 AliESDEvent.cxx:2201
 AliESDEvent.cxx:2202
 AliESDEvent.cxx:2203
 AliESDEvent.cxx:2204
 AliESDEvent.cxx:2205
 AliESDEvent.cxx:2206
 AliESDEvent.cxx:2207
 AliESDEvent.cxx:2208
 AliESDEvent.cxx:2209
 AliESDEvent.cxx:2210
 AliESDEvent.cxx:2211
 AliESDEvent.cxx:2212
 AliESDEvent.cxx:2213
 AliESDEvent.cxx:2214
 AliESDEvent.cxx:2215
 AliESDEvent.cxx:2216
 AliESDEvent.cxx:2217
 AliESDEvent.cxx:2218
 AliESDEvent.cxx:2219
 AliESDEvent.cxx:2220
 AliESDEvent.cxx:2221
 AliESDEvent.cxx:2222
 AliESDEvent.cxx:2223
 AliESDEvent.cxx:2224
 AliESDEvent.cxx:2225
 AliESDEvent.cxx:2226
 AliESDEvent.cxx:2227
 AliESDEvent.cxx:2228
 AliESDEvent.cxx:2229
 AliESDEvent.cxx:2230
 AliESDEvent.cxx:2231
 AliESDEvent.cxx:2232
 AliESDEvent.cxx:2233
 AliESDEvent.cxx:2234
 AliESDEvent.cxx:2235
 AliESDEvent.cxx:2236
 AliESDEvent.cxx:2237
 AliESDEvent.cxx:2238
 AliESDEvent.cxx:2239
 AliESDEvent.cxx:2240
 AliESDEvent.cxx:2241
 AliESDEvent.cxx:2242
 AliESDEvent.cxx:2243
 AliESDEvent.cxx:2244
 AliESDEvent.cxx:2245
 AliESDEvent.cxx:2246
 AliESDEvent.cxx:2247
 AliESDEvent.cxx:2248
 AliESDEvent.cxx:2249
 AliESDEvent.cxx:2250
 AliESDEvent.cxx:2251
 AliESDEvent.cxx:2252
 AliESDEvent.cxx:2253
 AliESDEvent.cxx:2254
 AliESDEvent.cxx:2255
 AliESDEvent.cxx:2256
 AliESDEvent.cxx:2257
 AliESDEvent.cxx:2258
 AliESDEvent.cxx:2259
 AliESDEvent.cxx:2260
 AliESDEvent.cxx:2261
 AliESDEvent.cxx:2262
 AliESDEvent.cxx:2263
 AliESDEvent.cxx:2264
 AliESDEvent.cxx:2265
 AliESDEvent.cxx:2266
 AliESDEvent.cxx:2267
 AliESDEvent.cxx:2268
 AliESDEvent.cxx:2269
 AliESDEvent.cxx:2270
 AliESDEvent.cxx:2271
 AliESDEvent.cxx:2272
 AliESDEvent.cxx:2273
 AliESDEvent.cxx:2274
 AliESDEvent.cxx:2275
 AliESDEvent.cxx:2276
 AliESDEvent.cxx:2277
 AliESDEvent.cxx:2278
 AliESDEvent.cxx:2279
 AliESDEvent.cxx:2280
 AliESDEvent.cxx:2281
 AliESDEvent.cxx:2282
 AliESDEvent.cxx:2283
 AliESDEvent.cxx:2284
 AliESDEvent.cxx:2285
 AliESDEvent.cxx:2286
 AliESDEvent.cxx:2287
 AliESDEvent.cxx:2288
 AliESDEvent.cxx:2289
 AliESDEvent.cxx:2290
 AliESDEvent.cxx:2291
 AliESDEvent.cxx:2292
 AliESDEvent.cxx:2293
 AliESDEvent.cxx:2294
 AliESDEvent.cxx:2295
 AliESDEvent.cxx:2296
 AliESDEvent.cxx:2297
 AliESDEvent.cxx:2298
 AliESDEvent.cxx:2299
 AliESDEvent.cxx:2300
 AliESDEvent.cxx:2301
 AliESDEvent.cxx:2302
 AliESDEvent.cxx:2303
 AliESDEvent.cxx:2304
 AliESDEvent.cxx:2305
 AliESDEvent.cxx:2306
 AliESDEvent.cxx:2307
 AliESDEvent.cxx:2308
 AliESDEvent.cxx:2309
 AliESDEvent.cxx:2310
 AliESDEvent.cxx:2311
 AliESDEvent.cxx:2312
 AliESDEvent.cxx:2313
 AliESDEvent.cxx:2314
 AliESDEvent.cxx:2315
 AliESDEvent.cxx:2316
 AliESDEvent.cxx:2317
 AliESDEvent.cxx:2318
 AliESDEvent.cxx:2319
 AliESDEvent.cxx:2320
 AliESDEvent.cxx:2321
 AliESDEvent.cxx:2322
 AliESDEvent.cxx:2323
 AliESDEvent.cxx:2324
 AliESDEvent.cxx:2325
 AliESDEvent.cxx:2326
 AliESDEvent.cxx:2327
 AliESDEvent.cxx:2328
 AliESDEvent.cxx:2329
 AliESDEvent.cxx:2330
 AliESDEvent.cxx:2331
 AliESDEvent.cxx:2332
 AliESDEvent.cxx:2333
 AliESDEvent.cxx:2334
 AliESDEvent.cxx:2335
 AliESDEvent.cxx:2336
 AliESDEvent.cxx:2337
 AliESDEvent.cxx:2338
 AliESDEvent.cxx:2339
 AliESDEvent.cxx:2340
 AliESDEvent.cxx:2341
 AliESDEvent.cxx:2342
 AliESDEvent.cxx:2343
 AliESDEvent.cxx:2344
 AliESDEvent.cxx:2345
 AliESDEvent.cxx:2346
 AliESDEvent.cxx:2347
 AliESDEvent.cxx:2348
 AliESDEvent.cxx:2349
 AliESDEvent.cxx:2350
 AliESDEvent.cxx:2351
 AliESDEvent.cxx:2352
 AliESDEvent.cxx:2353
 AliESDEvent.cxx:2354
 AliESDEvent.cxx:2355
 AliESDEvent.cxx:2356
 AliESDEvent.cxx:2357
 AliESDEvent.cxx:2358
 AliESDEvent.cxx:2359
 AliESDEvent.cxx:2360
 AliESDEvent.cxx:2361
 AliESDEvent.cxx:2362
 AliESDEvent.cxx:2363
 AliESDEvent.cxx:2364
 AliESDEvent.cxx:2365
 AliESDEvent.cxx:2366
 AliESDEvent.cxx:2367
 AliESDEvent.cxx:2368
 AliESDEvent.cxx:2369
 AliESDEvent.cxx:2370
 AliESDEvent.cxx:2371
 AliESDEvent.cxx:2372
 AliESDEvent.cxx:2373
 AliESDEvent.cxx:2374
 AliESDEvent.cxx:2375
 AliESDEvent.cxx:2376
 AliESDEvent.cxx:2377
 AliESDEvent.cxx:2378
 AliESDEvent.cxx:2379
 AliESDEvent.cxx:2380
 AliESDEvent.cxx:2381
 AliESDEvent.cxx:2382
 AliESDEvent.cxx:2383
 AliESDEvent.cxx:2384
 AliESDEvent.cxx:2385
 AliESDEvent.cxx:2386
 AliESDEvent.cxx:2387
 AliESDEvent.cxx:2388
 AliESDEvent.cxx:2389
 AliESDEvent.cxx:2390
 AliESDEvent.cxx:2391
 AliESDEvent.cxx:2392
 AliESDEvent.cxx:2393
 AliESDEvent.cxx:2394
 AliESDEvent.cxx:2395
 AliESDEvent.cxx:2396
 AliESDEvent.cxx:2397
 AliESDEvent.cxx:2398
 AliESDEvent.cxx:2399
 AliESDEvent.cxx:2400
 AliESDEvent.cxx:2401
 AliESDEvent.cxx:2402
 AliESDEvent.cxx:2403
 AliESDEvent.cxx:2404
 AliESDEvent.cxx:2405
 AliESDEvent.cxx:2406
 AliESDEvent.cxx:2407
 AliESDEvent.cxx:2408
 AliESDEvent.cxx:2409
 AliESDEvent.cxx:2410
 AliESDEvent.cxx:2411
 AliESDEvent.cxx:2412
 AliESDEvent.cxx:2413
 AliESDEvent.cxx:2414
 AliESDEvent.cxx:2415
 AliESDEvent.cxx:2416
 AliESDEvent.cxx:2417
 AliESDEvent.cxx:2418
 AliESDEvent.cxx:2419
 AliESDEvent.cxx:2420
 AliESDEvent.cxx:2421
 AliESDEvent.cxx:2422
 AliESDEvent.cxx:2423
 AliESDEvent.cxx:2424
 AliESDEvent.cxx:2425
 AliESDEvent.cxx:2426
 AliESDEvent.cxx:2427
 AliESDEvent.cxx:2428
 AliESDEvent.cxx:2429
 AliESDEvent.cxx:2430
 AliESDEvent.cxx:2431
 AliESDEvent.cxx:2432
 AliESDEvent.cxx:2433
 AliESDEvent.cxx:2434
 AliESDEvent.cxx:2435
 AliESDEvent.cxx:2436
 AliESDEvent.cxx:2437
 AliESDEvent.cxx:2438
 AliESDEvent.cxx:2439
 AliESDEvent.cxx:2440
 AliESDEvent.cxx:2441
 AliESDEvent.cxx:2442
 AliESDEvent.cxx:2443
 AliESDEvent.cxx:2444
 AliESDEvent.cxx:2445
 AliESDEvent.cxx:2446
 AliESDEvent.cxx:2447
 AliESDEvent.cxx:2448
 AliESDEvent.cxx:2449
 AliESDEvent.cxx:2450
 AliESDEvent.cxx:2451
 AliESDEvent.cxx:2452
 AliESDEvent.cxx:2453
 AliESDEvent.cxx:2454
 AliESDEvent.cxx:2455
 AliESDEvent.cxx:2456
 AliESDEvent.cxx:2457
 AliESDEvent.cxx:2458
 AliESDEvent.cxx:2459