#include "AliESDtrack.h"
#include "AliLog.h"
#include "AliPID.h"
+#include "AliTPCdEdxInfo.h"
ClassImp(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.;
}
{
delete [] fTRDslices;
fTRDslices = 0;
+ delete fTPCdEdxInfo;
// destructor
}
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;
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);
}
//______________________________________________________________________________
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])
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])
{
//
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);
+}
+