]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAnalysisTaskESDfilter.cxx
Coverity fix.
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskESDfilter.cxx
index da95c38a2ffe8423984e0467755b598ae236c1f0..291a3534cfda401590919c2323d730853603fa9f 100644 (file)
@@ -63,7 +63,8 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter():
     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
@@ -77,7 +78,8 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter(const char* name):
     fTPCOnlyFilterMask(0),\r
     fHighPthreshold(0),\r
     fPtshape(0x0),\r
-    fEnableFillAOD(kTRUE)\r
+    fEnableFillAOD(kTRUE),\r
+    fTimeZeroType(AliESDpid::kTOF_T0)\r
 {\r
   // Constructor\r
 }\r
@@ -219,8 +221,8 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
 //\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
@@ -256,10 +258,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 +351,33 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
 \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
@@ -1217,7 +1224,7 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
        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
@@ -1236,8 +1243,6 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
        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
@@ -1365,7 +1370,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