]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AOD/AliAODPid.cxx
Fix for track vertices without constraint
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODPid.cxx
index 93dc85ec05678498b529b51794f5529128746075..de53e8879049e54fb7637bf8cd812722e39aed09 100644 (file)
@@ -24,6 +24,7 @@
 #include "AliESDtrack.h"
 #include "AliLog.h"
 #include "AliPID.h"
+#include "AliTPCdEdxInfo.h"
 
 ClassImp(AliAODPid)
 
@@ -37,19 +38,18 @@ AliAODPid::AliAODPid():
     fTRDnSlices(0),
     fTRDntls(0),
     fTRDslices(0x0),
+    fTRDsignal(0),
+    fTRDChi2(0x0),
     fTOFesdsignal(0),
-    fHMPIDsignal(0)
+    fTPCdEdxInfo(0)
 {
   // default constructor
-    for(Int_t i=0; i<kSPECIES; i++) fIntTime[i]   = 0; 
-    for(Int_t i=0; i<5; i++) fHMPIDprobs[i] = 0.;
-    for(Int_t i=0; i<3; i++) fEMCALPosition[i]    = 0.;
+    for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i]   = 0; 
     for(Int_t i=0; i<5; i++) fTOFpidResolution[i] = 0.;
     for(Int_t i=0; i<6; i++) {
       fTRDmomentum[i]      = 0.;
       fTRDncls[i]          = 0;
     }
-    for(Int_t i=0; i<3; i++) fEMCALMomentum[i]    = 0.;
     for(Int_t i=0; i<4; i++) fITSdEdxSamples[i]   = 0.;
 }
 
@@ -58,6 +58,7 @@ AliAODPid::~AliAODPid()
 {
   delete [] fTRDslices;
   fTRDslices = 0;
+  delete fTPCdEdxInfo;
   // destructor
 }
 
@@ -72,17 +73,15 @@ AliAODPid::AliAODPid(const AliAODPid& pid) :
   fTRDnSlices(pid.fTRDnSlices),
   fTRDntls(pid.fTRDntls),
   fTRDslices(0x0),
+  fTRDsignal(pid.fTRDsignal),
+  fTRDChi2(pid.fTRDChi2),
   fTOFesdsignal(pid.fTOFesdsignal),
-  fHMPIDsignal(pid.fHMPIDsignal)
+  fTPCdEdxInfo(0x0)
 {
   // Copy constructor
-  SetTRDsignal(fTRDnSlices, pid.fTRDslices);
-    for(Int_t i=0; i<kSPECIES; i++) fIntTime[i]=pid.fIntTime[i];
-    for(Int_t i=0; i<5; i++) fHMPIDprobs[i] = pid.fHMPIDprobs[i];
-    for(Int_t i=0; i<3; i++) {
-      fEMCALPosition[i]=pid.fEMCALPosition[i];
-      fEMCALMomentum[i]=pid.fEMCALMomentum[i];
-    }
+  SetTRDslices(fTRDnSlices, pid.fTRDslices);
+    for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i]=pid.fIntTime[i];
+
     for(Int_t i=0; i<6; i++){ 
       fTRDmomentum[i]=pid.fTRDmomentum[i];
       fTRDncls[i] = 0;
@@ -91,6 +90,8 @@ AliAODPid::AliAODPid(const AliAODPid& pid) :
     for(Int_t i=0; i<5; i++) fTOFpidResolution[i]=pid.fTOFpidResolution[i];
 
     for(Int_t i=0; i<4; i++) fITSdEdxSamples[i]=pid.fITSdEdxSamples[i];
+
+    if (pid.fTPCdEdxInfo) fTPCdEdxInfo=new AliTPCdEdxInfo(*pid.fTPCdEdxInfo);
 }
 
 //______________________________________________________________________________
@@ -100,71 +101,53 @@ AliAODPid& AliAODPid::operator=(const AliAODPid& pid)
   if(this!=&pid) {
     // copy stuff
     TObject::operator=(pid);
-    fITSsignal=pid.fITSsignal; 
-    fTPCsignal=pid.fTPCsignal;
-    
-    if(pid.fTRDnSlices<=0||(fTRDnSlices!=pid.fTRDnSlices)){
+
+    fITSsignal   = pid.fITSsignal; 
+    for (Int_t i = 0; i < 4; i++) fITSdEdxSamples[i]=pid.fITSdEdxSamples[i];
+    fTPCsignal   = pid.fTPCsignal;
+    fTPCsignalN  = pid.fTPCsignalN;
+    fTPCmomentum = pid.fTPCmomentum;
+
+    fTRDsignal = pid.fTRDsignal;
+    if(fTRDnSlices != pid.fTRDnSlices) {
       // only delete if number changed or is 0
       delete [] fTRDslices;
       fTRDslices = 0;
-      if(pid.fTRDnSlices>0) fTRDslices = new Double32_t[fTRDnSlices];
+      fTRDnSlices = pid.fTRDnSlices;
+      if(pid.fTRDnSlices > 0) fTRDslices = new Double32_t[fTRDnSlices];
     }
-    fTRDnSlices=pid.fTRDnSlices;
-    
-    for(Int_t i=0; i< fTRDnSlices; i++) fTRDslices[i]=pid.fTRDslices[i];
-    fTOFesdsignal=pid.fTOFesdsignal;
-    fHMPIDsignal=pid.fHMPIDsignal;
-    for(Int_t i=0; i<kSPECIES; i++) fIntTime[i]=pid.fIntTime[i];
-    for(Int_t i=0; i<5; i++) fHMPIDprobs[i] = pid.fHMPIDprobs[i];
-    for(Int_t i=0; i<6; i++){ 
-      fTRDmomentum[i]=pid.fTRDmomentum[i];
-      fTRDncls[i] = pid.fTRDncls[i];
-    }
-    for(Int_t i=0; i<3; i++) {
-      fEMCALPosition[i]=pid.fEMCALPosition[i];
-      fEMCALMomentum[i]=pid.fEMCALMomentum[i];
+
+    if (fTRDslices && pid.fTRDslices)
+      memcpy(fTRDslices, pid.fTRDslices, fTRDnSlices*sizeof(Double32_t));
+
+    fTRDntls = pid.fTRDntls;
+    for(Int_t i = 0; i < 6; i++){ 
+       fTRDmomentum[i] = pid.fTRDmomentum[i];
+       fTRDncls[i]     = pid.fTRDncls[i];
     }
-    for (Int_t i=0; i<5; i++) fTOFpidResolution[i]=pid.fTOFpidResolution[i];
-    for (Int_t i=0; i<4; i++) fITSdEdxSamples[i]=pid.fITSdEdxSamples[i];
+
+    fTRDChi2 = pid.fTRDChi2;
+
+    fTOFesdsignal=pid.fTOFesdsignal;
+    for (Int_t i = 0; i < 5; i++) fTOFpidResolution[i]=pid.fTOFpidResolution[i];
+    for (Int_t i = 0; i < 5; i++) fIntTime[i]=pid.fIntTime[i];
+    
+     SetTPCdEdxInfo(pid.fTPCdEdxInfo);
   }
 
   return *this;
 }
 //_______________________________________________________________________________
-void AliAODPid::GetIntegratedTimes(Double_t timeint[kSPECIES]) const
+void AliAODPid::GetIntegratedTimes(Double_t timeint[AliPID::kSPECIES]) const
 {
  // Returns the array with integrated times for each particle hypothesis
-for(Int_t i=0; i<kSPECIES; i++) timeint[i]=fIntTime[i];
+ for(Int_t i=0; i<AliPID::kSPECIES; i++) timeint[i]=fIntTime[i];
 }
 //_______________________________________________________________________________
-void AliAODPid::SetIntegratedTimes(Double_t timeint[kSPECIES])
+void AliAODPid::SetIntegratedTimes(Double_t timeint[AliPID::kSPECIES])
 {
  // Returns the array with integrated times for each particle hypothesis
-for(Int_t i=0; i<kSPECIES; i++) fIntTime[i]=timeint[i];
-}
-//_______________________________________________________________________________
-void AliAODPid::GetEMCALPosition(Double_t emcalpos[3]) const
-{
- // Returns the array with extrapolated track position at the EMCAL surface
-  for(Int_t i=0; i<3; i++) emcalpos[i]=fEMCALPosition[i];
-}
-//_______________________________________________________________________________
-void AliAODPid::SetEMCALPosition(Double_t emcpos[3])
-{
- // Sets the array with extrapolated track position at the EMCAL surface
-  for(Int_t i=0; i<3; i++) fEMCALPosition[i]=emcpos[i];
-}
-//_______________________________________________________________________________
-void AliAODPid::GetEMCALMomentum(Double_t emcalmom[3]) const
-{
- // Returns the array with extrapolated track momentum at the EMCAL surface
-  for(Int_t i=0; i<3; i++) emcalmom[i]=fEMCALMomentum[i];
-}
-//_______________________________________________________________________________
-void AliAODPid::SetEMCALMomentum(Double_t emcmom[3])
-{
- // Sets the array with extrapolated track momentum at the EMCAL surface
-  for(Int_t i=0; i<3; i++) fEMCALMomentum[i]=emcmom[i];
+ for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i]=timeint[i];
 }
 //______________________________________________________________________________
 void AliAODPid::SetTOFpidResolution(Double_t tofPIDres[5])
@@ -178,22 +161,6 @@ void AliAODPid::GetTOFpidResolution(Double_t tofRes[5]) const
   for (Int_t i=0; i<5; i++) tofRes[i]=fTOFpidResolution[i];
 }
 
-//______________________________________________________________________________
-void AliAODPid::SetHMPIDprobs(Double_t hmpPid[5]) 
-{
-  //
-  // Set the HMPID PID probablities that are read from ESD
-  //  
-  for(Int_t i = 0; i < 5; i++ ) fHMPIDprobs[i] =  hmpPid[i];
-}
-//______________________________________________________________________________
-void AliAODPid::GetHMPIDprobs(Double_t *p) const
-{
-  //
-  // Set the HMPID PID probablities that are read from ESD
-  //  
-  for(Int_t i = 0; i < AliPID::kSPECIES; i++ ) p[i] =  fHMPIDprobs[i];
-}
 //______________________________________________________________________________
 void AliAODPid::SetITSdEdxSamples(const Double_t s[4])
 {
@@ -210,3 +177,18 @@ void AliAODPid::GetITSdEdxSamples(Double_t s[4]) const
   //  
   for (Int_t i=0; i<4; i++) s[i]=fITSdEdxSamples[i];
 }
+//______________________________________________________________________________
+void AliAODPid::SetTPCdEdxInfo(AliTPCdEdxInfo * dEdxInfo)
+{
+  //
+  // Set TPC dEdx info
+  //
+  if (dEdxInfo==0x0){
+    delete fTPCdEdxInfo;
+    fTPCdEdxInfo=0x0;
+    return;
+  }
+  if (!fTPCdEdxInfo) fTPCdEdxInfo=new AliTPCdEdxInfo;
+  (*fTPCdEdxInfo)=(*dEdxInfo);
+}
+