fTPCOnlyFilterMask(0),\r
fHighPthreshold(0),\r
fPtshape(0x0),\r
- fEnableFillAOD(kTRUE)\r
+ fEnableFillAOD(kTRUE),\r
+ fTimeZeroType(AliESDpid::kTOF_T0)\r
{\r
// Default constructor\r
}\r
fTPCOnlyFilterMask(0),\r
fHighPthreshold(0),\r
fPtshape(0x0),\r
- fEnableFillAOD(kTRUE)\r
+ fEnableFillAOD(kTRUE),\r
+ fTimeZeroType(AliESDpid::kTOF_T0)\r
{\r
// Constructor\r
}\r
//\r
//\r
Int_t nV0s = esd->GetNumberOfV0s();\r
- Int_t nCascades = esd->GetNumberOfCascades();\r
- Int_t nKinks = esd->GetNumberOfKinks();\r
+ Int_t nCascades = 0; // esd->GetNumberOfCascades();\r
+ Int_t nKinks = 0; // esd->GetNumberOfKinks();\r
Int_t nVertices = nV0s + nCascades /*V0 wihtin cascade already counted*/+ nKinks + 1 /* = prim. vtx*/;\r
Int_t nPileSPDVertices=1+esd->GetNumberOfPileupVerticesSPD(); // also SPD main vertex\r
Int_t nPileTrkVertices=esd->GetNumberOfPileupVerticesTracks();\r
TRefArray *aodV0Refs = NULL;\r
if (nV0s > 0) aodV0Refs = new TRefArray(nV0s);\r
\r
- \r
-\r
-\r
-\r
// Array to take into account the tracks already added to the AOD\r
Bool_t * usedTrack = NULL;\r
if (nTracks>0) {\r
\r
\r
//setting best TOF PID\r
- AliESDpid *esdPid = new AliESDpid;\r
+ AliESDInputHandler* handler = dynamic_cast<AliESDInputHandler*>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r
\r
- if(!esd->GetTOFHeader()){\r
+ AliESDpid *esdPid = 0;\r
+ if (handler) esdPid = handler->GetESDpid();\r
+\r
+ Bool_t isPidOwner = kFALSE;\r
+ if(!esdPid){ //in case of no Tender attached \r
+ esdPid = new AliESDpid;\r
+ isPidOwner = kTRUE;\r
+ }\r
+ \r
+ if(!esd->GetTOFHeader()){ //protection in case the pass2 LHC10b,c,d have been processed without tender. \r
Float_t *t0spread= new Float_t[10];\r
Float_t intrinsicTOFres=100; //ps ok for LHC10b,c,d pass2!! \r
for (Int_t i=0; i<10; i++) t0spread[i] = (TMath::Sqrt(esd->GetSigma2DiamondZ()))/0.03; //0.03 to convert from cm to ps\r
- \r
esdPid->GetTOFResponse().SetT0resolution(t0spread);\r
esdPid->GetTOFResponse().SetTimeResolution(intrinsicTOFres);\r
+ \r
+ esdPid->SetTOFResponse(esd, (AliESDpid::EStartTimeType_t)fTimeZeroType);\r
+ \r
delete[] t0spread;\r
t0spread=0x0;\r
}\r
- else{\r
- esdPid->SetTOFResponse(esd, AliESDpid::kBest_T0); //TOF_T0 uses the T0 computed with TOF, kBest_T0 uses the best information available \r
- }\r
- esdPid->MakePID(esd, kFALSE);\r
- \r
\r
+ if(esd->GetTOFHeader() && isPidOwner) esdPid->SetTOFResponse(esd, (AliESDpid::EStartTimeType_t)fTimeZeroType); //in case of AOD production strating form LHC10e without Tender. \r
+\r
+\r
// Cascades (Modified by A.Maire - February 2009)\r
for (Int_t nCascade = 0; nCascade < nCascades; ++nCascade) {\r
\r
track->GetCovarianceXYZPxPyPz(covTr);\r
track->GetESDpid(pid);\r
if(mcH)mcH->SelectParticle(esdTrack->GetLabel());\r
- aodTrack = new(tracks[jTracks++]) AliAODTrack(track->GetID(),\r
+ aodTrack = new(tracks[jTracks++]) AliAODTrack((track->GetID()+1)*-1,\r
track->GetLabel(),\r
p,\r
kTRUE,\r
aodTrack->SetTPCSharedMap (track->GetTPCSharedMap());\r
aodTrack->SetChi2perNDF(Chi2perNDF(track));\r
aodTrack->SetFlags(track->GetStatus());\r
- aodTrackRefs->AddAt(aodTrack, nTrack);\r
- \r
delete track;\r
} // end of loop on tracks\r
\r
delete aodV0Refs;\r
delete aodV0VtxRefs;\r
delete aodTrackRefs;\r
- delete esdPid;\r
+ if (isPidOwner) delete esdPid;\r
return;\r
}\r
\r