use particle map
authorsaiola <salvatore.aiola@cern.ch>
Thu, 10 Jul 2014 04:10:41 +0000 (00:10 -0400)
committersaiola <salvatore.aiola@cern.ch>
Thu, 10 Jul 2014 04:10:41 +0000 (00:10 -0400)
PWG/EMCAL/AliEmcalPicoTrackMaker.cxx
PWG/EMCAL/AliEmcalPicoTrackMaker.h

index baf2309..e9123aa 100644 (file)
@@ -16,6 +16,7 @@
 #include "AliPicoTrack.h"
 #include "AliVTrack.h"
 #include "AliAODMCParticle.h"
+#include "AliNamedArrayI.h"
 
 ClassImp(AliEmcalPicoTrackMaker)
 
@@ -36,6 +37,7 @@ AliEmcalPicoTrackMaker::AliEmcalPicoTrackMaker() :
   fTracksIn(0),
   fTracksOut(0),
   fMCParticles(0),
+  fMCParticlesMap(0),
   fInit(kFALSE)
 {
   // Constructor.
@@ -61,6 +63,7 @@ AliEmcalPicoTrackMaker::AliEmcalPicoTrackMaker(const char *name) :
   fTracksIn(0),
   fTracksOut(0),
   fMCParticles(0),
+  fMCParticlesMap(0),
   fInit(kFALSE)
 {
   // Constructor.
@@ -118,6 +121,10 @@ void AliEmcalPicoTrackMaker::UserExec(Option_t *)
        AliError(Form("%s: Collection %s does not contain AliVParticle objects!", GetName(), fMCParticlesName.Data()));
        fMCParticles = 0;
       }
+      
+      TString mapName(fMCParticlesName);
+      mapName += "_Map";
+      fMCParticlesMap = dynamic_cast<AliNamedArrayI*>(InputEvent()->FindListObject(mapName));
     }
 
     fInit = kTRUE;
@@ -183,6 +190,9 @@ void AliEmcalPicoTrackMaker::UserExec(Option_t *)
 AliVParticle* AliEmcalPicoTrackMaker::GetMCParticle(Int_t label) 
 {
   if (!fMCParticles) return 0;
-  AliVParticle *part = static_cast<AliVParticle*>(fMCParticles->At(label));
+  Int_t index = label;
+  if (fMCParticlesMap) index = fMCParticlesMap->At(label);
+  if (index < 0 || index >= fMCParticles->GetEntriesFast()) return 0;
+  AliVParticle *part = static_cast<AliVParticle*>(fMCParticles->At(index));
   return part;
 }
index dac2dc1..cc737c9 100644 (file)
@@ -3,6 +3,7 @@
 
 class TClonesArray;
 class AliVParticle;
+class AliNamedArrayI;
 
 #include "AliAnalysisTaskSE.h"
 
@@ -42,7 +43,8 @@ class AliEmcalPicoTrackMaker : public AliAnalysisTaskSE {
   Bool_t             fCopyMCFlag;           // copy MC flag
   TClonesArray      *fTracksIn;             //!track array in
   TClonesArray      *fTracksOut;            //!track array out
-  TClonesArray      *fMCParticles;          //!MC particle array, used by IsHIJINGParticle
+  TClonesArray      *fMCParticles;          //!MC particle array
+  AliNamedArrayI    *fMCParticlesMap;       //!MC particle map
   Bool_t             fInit;                 //!true = task initialized
 
  private: