MCEvent() is available when running with the AODInputHandler
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 2 Sep 2009 16:26:26 +0000 (16:26 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 2 Sep 2009 16:26:26 +0000 (16:26 +0000)
ANALYSIS/AliAnalysisTaskSE.cxx
STEER/AliAODInputHandler.cxx
STEER/AliAODInputHandler.h

index 7f20b3b..d3171c3 100644 (file)
@@ -100,7 +100,6 @@ AliAnalysisTaskSE::AliAnalysisTaskSE(const AliAnalysisTaskSE& obj):
     fOutputAOD    = obj.fOutputAOD;
     fMCEvent      = obj.fMCEvent;
     fTreeA        = obj.fTreeA;    
-    printf("Constructor (3) \n");
 }
 
 
@@ -133,8 +132,9 @@ void AliAnalysisTaskSE::ConnectInputData(Option_t* /*option*/)
 //
     AliMCEventHandler*    mcH = 0;
     mcH = (AliMCEventHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetMCtruthEventHandler());
-    if (mcH) fMCEvent = mcH->MCEvent();
-    
+    if (mcH) {
+       fMCEvent = mcH->MCEvent();
+    } 
     
     if (fInputHandler) {
          fInputEvent = fInputHandler->GetEvent();
@@ -235,8 +235,12 @@ void AliAnalysisTaskSE::Exec(Option_t* option)
 //
 // Exec analysis of one event
     if (fDebug > 1) AliInfo("AliAnalysisTaskSE::Exec() \n");
-    if( fInputHandler ) 
+
+    if( fInputHandler ) {
        fEntry = fInputHandler->GetReadEntry();
+    }
+    
+          
     else if( fMCEvent )
        fEntry = fMCEvent->Header()->GetEvent(); 
     if ( !((Entry()-1)%100) && fDebug > 0) 
@@ -247,6 +251,8 @@ void AliAnalysisTaskSE::Exec(Option_t* option)
     AliAODInputHandler* aodH = dynamic_cast<AliAODInputHandler*>(fInputHandler);
 
     if (handler && aodH) {
+       fMCEvent = aodH->MCEvent();
+       
        if (!(handler->IsStandard()) && !(handler->AODIsReplicated())) {
            if ((handler->NeedsHeaderReplication()) && (fgAODHeader))
            {
index 1c0cda9..6729a31 100644 (file)
@@ -36,6 +36,7 @@ static Option_t *gAODDataType = "AOD";
 AliAODInputHandler::AliAODInputHandler() :
     AliInputEventHandler(),
     fEvent(0),
+    fMCEvent(new AliMCEvent()),
     fFriends(new TList())
 {
   // Default constructor
@@ -45,6 +46,7 @@ AliAODInputHandler::AliAODInputHandler() :
 AliAODInputHandler::AliAODInputHandler(const char* name, const char* title):
   AliInputEventHandler(name, title),
   fEvent(0),
+  fMCEvent(new AliMCEvent()),
   fFriends(new TList())
 {
     // Constructor
@@ -93,13 +95,15 @@ Bool_t AliAODInputHandler::Init(TTree* tree, Option_t* /*opt*/)
     if (!fEvent) fEvent = new AliAODEvent();
 
     fEvent->ReadFromTree(fTree);
+
     return kTRUE;
 }
 
 Bool_t AliAODInputHandler::BeginEvent(Long64_t /*entry*/)
 {
     //
-    //if (fTree) fTree->BranchRef();
+    TClonesArray* mcParticles = (TClonesArray*) (fEvent->FindListObject("mcparticles"));
+    if (mcParticles) fMCEvent->SetParticleArray(mcParticles);
     return kTRUE;
 }
 
index b995df1..a69e207 100644 (file)
 
 #include "AliInputEventHandler.h"
 #include "AliAODEvent.h"
+#include "AliMCEvent.h"
 
 class TList;
+class AliMCEvent;
 
 class AliAODInputHandler : public AliInputEventHandler {
 
@@ -24,6 +26,7 @@ class AliAODInputHandler : public AliInputEventHandler {
     virtual Bool_t       Init(Option_t* /*opt*/) {return kTRUE;}
     virtual Bool_t       Init(TTree* tree, Option_t* opt);
     AliAODEvent         *GetEvent() const {return fEvent;}
+    AliMCEvent          *MCEvent()  const {return fMCEvent;}
     virtual void         AddFriend(char* filename);
     virtual Bool_t       BeginEvent(Long64_t entry);
     Option_t            *GetDataType() const;
@@ -32,6 +35,7 @@ class AliAODInputHandler : public AliInputEventHandler {
     AliAODInputHandler& operator=(const AliAODInputHandler& handler);  
  private:
     AliAODEvent    *fEvent;   //! Pointer to the event
+    AliMCEvent     *fMCEvent; //! Pointer to the MCEvent
     TList          *fFriends; //  List of friend trees 
     ClassDef(AliAODInputHandler, 1);
 };