]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESD.cxx
Getting properly the run number and adding a protection in case of run number inconsi...
[u/mrichter/AliRoot.git] / STEER / AliESD.cxx
index 2f5096cd438ab8ed9a17baa22eacc6ea94cf08b9..a13cc0f5c4945f3970e328b4ae676ba3aa71ad5c 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log:
-*/
+/* $Id$ */
 
-/////////////////////////////////////////////////////////////////////////
-//                                                                     //
-//                                                                     //
-/////////////////////////////////////////////////////////////////////////
-
-#include "Riostream.h"
+//-----------------------------------------------------------------
+//           Implementation of the ESD class
+//   This is the class to deal with during the phisical analysis of data
+//   This class is generated directly by the reconstruction methods
+//      Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
+//-----------------------------------------------------------------
 
 #include "AliESD.h"
+#include "AliESDfriend.h"
 
 ClassImp(AliESD)
 
-//_______________________________________________________________________
+//______________________________________________________________________________
 AliESD::AliESD():
   fEventNumber(0),
   fRunNumber(0),
-  fTrigger(0),
+  fTriggerMask(0),
+  fTriggerCluster(0),
   fRecoVersion(0),
-  fBitDDL(0),
-  fNSecVertex(0),
-  fNParticipants(0),
-  fNPartError(0),
-  fNElectron(0),
-  fNMuons(0),
-  fNPions(0),
-  fNKaons(0),
-  fNProtons(0),
-  fNPHOSPhotons(0),
-  fNPHOSNeutrons(0),
-  fNPHOSCCluster(0),
-  fNEMCALCluster(0),
-  fNPMDCluster(0),
-  fTMaxClusterEnergy(0),
-  fTMaxPCharged(0),
-  fNCharged(0),
-  fTotTranEnergy(0),
-  fESDVertex(),
-  fSecVertex(0),
-  fNonAssTrack(0),
-  fPhoton(0),
-  fNeutron(0),
-  fEMCALCluster(0),
-  fPMDCluster(0)
+  fMagneticField(0),
+  fZDCN1Energy(0),
+  fZDCP1Energy(0),
+  fZDCN2Energy(0),
+  fZDCP2Energy(0),
+  fZDCEMEnergy(0),
+  fZDCParticipants(0),
+  fT0zVertex(0),
+  fSPDVertex(0),
+  fPrimaryVertex(0),
+  fT0timeStart(0),
+  fTracks("AliESDtrack",15000),
+  fHLTConfMapTracks("AliESDHLTtrack",25000),
+  fHLTHoughTracks("AliESDHLTtrack",15000),
+  fMuonTracks("AliESDMuonTrack",30),
+  fPmdTracks("AliESDPmdTrack",3000),
+  fTrdTracks("AliESDTrdTrack",300),
+  fV0s("AliESDv0",200),  
+  fCascades("AliESDcascade",20),
+  fKinks("AliESDkink",4000),
+  fV0MIs("AliESDV0MI",4000),
+  fCaloClusters("AliESDCaloCluster",10000),
+  fEMCALClusters(0), 
+  fFirstEMCALCluster(-1),
+  fPHOSClusters(0), 
+  fFirstPHOSCluster(-1),
+  fESDFMD(0x0)
 {
-  Info("def ctor","Has been called\n");
+  for (Int_t i=0; i<24; i++) {
+    fT0time[i] = 0;
+    fT0amplitude[i] = 0;
+  }
 }
 
-//_______________________________________________________________________
-AliESD::AliESD(const AliESD &esd):
-  TObject(esd),
-  fEventNumber(0),
-  fRunNumber(0),
-  fTrigger(0),
-  fRecoVersion(0),
-  fBitDDL(0),
-  fNSecVertex(0),
-  fNParticipants(0),
-  fNPartError(0),
-  fNElectron(0),
-  fNMuons(0),
-  fNPions(0),
-  fNKaons(0),
-  fNProtons(0),
-  fNPHOSPhotons(0),
-  fNPHOSNeutrons(0),
-  fNPHOSCCluster(0),
-  fNEMCALCluster(0),
-  fNPMDCluster(0),
-  fTMaxClusterEnergy(0),
-  fTMaxPCharged(0),
-  fNCharged(0),
-  fTotTranEnergy(0),
-  fESDVertex(),
-  fSecVertex(0),
-  fNonAssTrack(0),
-  fPhoton(0),
-  fNeutron(0),
-  fEMCALCluster(0),
-  fPMDCluster(0)
+//______________________________________________________________________________
+AliESD::~AliESD()
 {
+  //
+  // Standard destructor
+  //
+  delete fSPDVertex;
+  delete fPrimaryVertex;
+  fTracks.Delete();
+  fHLTConfMapTracks.Delete();
+  fHLTHoughTracks.Delete();
+  fMuonTracks.Delete();
+  fPmdTracks.Delete();
+  fTrdTracks.Delete();
+  fV0s.Delete();
+  fCascades.Delete();
+  fKinks.Delete();
+  fV0MIs.Delete();
+  fCaloClusters.Delete();
+  delete fESDFMD;
 }
 
-ClassImp(AliESDVertex)
-
-//_______________________________________________________________________
-AliESDVertex::AliESDVertex():
-  fNPrimary(0),
-  fCoordinates(3),
-  fErrorMatrix(6),
-  fPrimaryTracks(0),
-  fEffectiveMass(0),
-  fEffectiveMassError(0)
+void AliESD::UpdateV0PIDs()
 {
-  cout << "ESDVertex def ctor" << endl;
+  //
+  //
+  //
+  Int_t nV0 = GetNumberOfV0MIs();
+  for (Int_t i=0;i<nV0;i++){
+    AliESDV0MI * v0 = GetV0MI(i);
+    AliESDtrack* tp = GetTrack(v0->GetIndex(0));
+    AliESDtrack* tm = GetTrack(v0->GetIndex(1));
+    if (!tm || !tp){
+      printf("BBBUUUUUUUGGGG\n");
+    }
+    Double_t pp[5],pm[5];
+    tp->GetESDpid(pp);
+    tm->GetESDpid(pm);
+    v0->UpdatePID(pp,pm);    
+  }
 }
 
-//_______________________________________________________________________
-AliESDVertex::AliESDVertex(const AliESDVertex &esdv):
-  TObject(esdv),
-  fNPrimary(0),
-  fCoordinates(0),
-  fErrorMatrix(0),
-  fPrimaryTracks(0),
-  fEffectiveMass(0),
-  fEffectiveMassError(0)
+//______________________________________________________________________________
+void AliESD::Reset()
 {
+  fEventNumber=0;
+  fRunNumber=0;
+  fTriggerMask=0;
+  fTriggerCluster=0;
+  fRecoVersion=0;
+  fMagneticField=0;
+  fZDCN1Energy=0;
+  fZDCP1Energy=0;
+  fZDCN2Energy=0;
+  fZDCP2Energy=0;
+  fZDCEMEnergy=0;
+  fZDCParticipants=0;
+  fT0zVertex=0;
+  fT0timeStart = 0;
+  delete fSPDVertex; fSPDVertex=0;
+  delete fPrimaryVertex; fPrimaryVertex=0;
+  fTracks.Clear();
+  fHLTConfMapTracks.Clear();
+  fHLTHoughTracks.Clear();
+  fMuonTracks.Clear();
+  fPmdTracks.Clear();
+  fTrdTracks.Clear();
+  fV0s.Clear();
+  fCascades.Clear();
+  fCaloClusters.Clear();
+  fEMCALClusters=0; 
+  fFirstEMCALCluster=-1; 
+  fPHOSClusters=0; 
+  fFirstPHOSCluster=-1; 
+  if (fESDFMD) fESDFMD->Clear();
 }
 
-ClassImp(AliESDTrack)
-
-//_______________________________________________________________________
-AliESDTrack::AliESDTrack() :
-  fTrackID(0),
-  fPVertex(5),
-  fPEVertex(15),
-  fPFMeasPoint(6),
-  fPFMeasPointErr(15),
-  fPLMeasPoint(6),
-  fPLMeasPointErr(15),
-  fTrackLength(0),
-  fTrackLengthErr(0),
-  fStopVertex(0),
-  fNPointsITS(0),
-  fNPointsTPC(0),
-  fNPointsTRD(0),
-  fMeanResITS(0),
-  fMeanResTPC(0),
-  fMeanResTRD(0),
-  fGlobalChi2(0),
-  fParticleType(0),
-  fPIDprobPi(0),
-  fPIDprobK(0),
-  fPIDprobP(0),
-  fPIDprobE(0)
+//______________________________________________________________________________
+void AliESD::Print(Option_t *) const 
 {
-  cout << "ESDTrack def ctor" << endl;
+  //
+  // Print header information of the event
+  //
+  printf("ESD run information\n");
+  printf("Event # %d Run # %d Trigger %lld Magnetic field %f \n",
+        GetEventNumber(),
+        GetRunNumber(),
+        GetTriggerMask(),
+        GetMagneticField() );
+  if (fPrimaryVertex)
+    printf("Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
+          fPrimaryVertex->GetXv(), fPrimaryVertex->GetXRes(),
+          fPrimaryVertex->GetYv(), fPrimaryVertex->GetYRes(),
+          fPrimaryVertex->GetZv(), fPrimaryVertex->GetZRes());
+  printf("Event from reconstruction version %d \n",fRecoVersion);
+  printf("Number of tracks: \n");
+  printf("                 charged   %d\n", GetNumberOfTracks());
+  printf("                 hlt CF    %d\n", GetNumberOfHLTConfMapTracks());
+  printf("                 hlt HT    %d\n", GetNumberOfHLTHoughTracks());
+  printf("                 muon      %d\n", GetNumberOfMuonTracks());
+  printf("                 pmd       %d\n", GetNumberOfPmdTracks());
+  printf("                 trd       %d\n", GetNumberOfTrdTracks());
+  printf("                 v0        %d\n", GetNumberOfV0s());
+  printf("                 cascades  %d\n", GetNumberOfCascades());
+  printf("                 kinks     %d\n", GetNumberOfKinks());
+  printf("                 V0MIs     %d\n", GetNumberOfV0MIs());
+  printf("                 CaloClusters %d\n", GetNumberOfCaloClusters());
+  printf("                 phos      %d\n", GetNumberOfPHOSClusters());
+  printf("                 emcal     %d\n", GetNumberOfEMCALClusters());
+  printf("                 FMD       %s\n", (fESDFMD ? "yes" : "no"));
 }
 
-//_______________________________________________________________________
-AliESDTrack::AliESDTrack(const AliESDTrack &esdt):
-  TObject(esdt),
-  fTrackID(0),
-  fPVertex(0),
-  fPEVertex(0),
-  fPFMeasPoint(0),
-  fPFMeasPointErr(0),
-  fPLMeasPoint(0),
-  fPLMeasPointErr(0),
-  fTrackLength(0),
-  fTrackLengthErr(0),
-  fStopVertex(0),
-  fNPointsITS(0),
-  fNPointsTPC(0),
-  fNPointsTRD(0),
-  fMeanResITS(0),
-  fMeanResTPC(0),
-  fMeanResTRD(0),
-  fGlobalChi2(0),
-  fParticleType(0),
-  fPIDprobPi(0),
-  fPIDprobK(0),
-  fPIDprobP(0),
-  fPIDprobE(0)
-{
+void AliESD::SetESDfriend(const AliESDfriend *ev) {
+  //
+  // Attaches the complementary info to the ESD
+  //
+  if (!ev) return;
+
+  Int_t ntrk=ev->GetNumberOfTracks();
+
+  for (Int_t i=0; i<ntrk; i++) {
+    const AliESDfriendTrack *f=ev->GetTrack(i);
+    GetTrack(i)->SetFriendTrack(f);
+  }
 }
 
+void AliESD::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++) {
+    const AliESDtrack *t=GetTrack(i);
+    const AliESDfriendTrack *f=t->GetFriendTrack();
+    ev->AddTrack(f);
+  }
+}