Consistency of Filter and Tender restored (D. Caffarri)
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 18 Jan 2011 14:13:55 +0000 (14:13 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 18 Jan 2011 14:13:55 +0000 (14:13 +0000)
ANALYSIS/AliAnalysisTaskESDfilter.cxx

index da95c38..3096101 100644 (file)
@@ -256,10 +256,6 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
     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
@@ -353,24 +349,31 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
 \r
 \r
     //setting best TOF PID\r
-    AliESDpid *esdPid = new AliESDpid;\r
+\r
+    AliESDpid *esdPid = dynamic_cast<AliESDInputHandler*>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler())->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()){\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::kBest_T0);\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::kBest_T0); //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
@@ -1235,7 +1238,7 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
        aodTrack->SetTPCClusterMap(track->GetTPCClusterMap());\r
        aodTrack->SetTPCSharedMap (track->GetTPCSharedMap());\r
        aodTrack->SetChi2perNDF(Chi2perNDF(track));\r
-       aodTrack->SetFlags(track->GetStatus());\r
+       \r
        aodTrackRefs->AddAt(aodTrack, nTrack);\r
        \r
        delete track;\r
@@ -1365,7 +1368,7 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
     delete    aodV0Refs;\r
     delete    aodV0VtxRefs;\r
     delete    aodTrackRefs;\r
-    delete    esdPid;\r
+    if (isPidOwner) delete  esdPid;\r
     return;\r
 }\r
 \r