]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODInputHandler.cxx
Fixing in/out tags in documentation
[u/mrichter/AliRoot.git] / STEER / AliAODInputHandler.cxx
index 52af5cd4b8fd15990450eb69c26f0475f5241104..4416bab2b7c2be8464bc4438175cea57aa07e00d 100644 (file)
@@ -31,6 +31,7 @@
 #include "AliAODEvent.h"
 #include "AliVCuts.h"
 #include "AliMCEvent.h"
+#include "AliAODpidUtil.h"
 
 ClassImp(AliAODInputHandler)
 
@@ -42,7 +43,13 @@ AliAODInputHandler::AliAODInputHandler() :
     fEvent(0),
     fMCEvent(new AliMCEvent()),
     fFriends(new TList()),
+    fAODpidUtil(0x0),
     fMergeEvents(kFALSE),
+    fMergeTracks(kTRUE), 
+    fMergeEMCALClusters(kTRUE), 
+    fMergePHOSClusters(kTRUE), 
+    fMergeEMCALCells(kTRUE), 
+    fMergePHOSCells(kTRUE),
     fFriendsConnected(kFALSE),
     fFileToMerge(0),
     fTreeToMerge(0),
@@ -59,7 +66,13 @@ AliAODInputHandler::AliAODInputHandler(const char* name, const char* title):
   fEvent(0),
   fMCEvent(new AliMCEvent()),
   fFriends(new TList()),
+  fAODpidUtil(0x0),
   fMergeEvents(kFALSE),
+  fMergeTracks(kTRUE), 
+  fMergeEMCALClusters(kTRUE), 
+  fMergePHOSClusters(kTRUE), 
+  fMergeEMCALCells(kTRUE), 
+  fMergePHOSCells(kTRUE),
   fFriendsConnected(kFALSE),
   fFileToMerge(0),
   fTreeToMerge(0),
@@ -83,6 +96,7 @@ AliAODInputHandler::~AliAODInputHandler()
     delete fHistStatistics[1];
     fHistStatistics[1] = 0;
   }
+  delete fAODpidUtil;
 }
 
 //______________________________________________________________________________
@@ -113,8 +127,11 @@ Bool_t AliAODInputHandler::BeginEvent(Long64_t entry)
     // Begin event
     TClonesArray* mcParticles = (TClonesArray*) (fEvent->FindListObject("mcparticles"));
     if (mcParticles) fMCEvent->SetParticleArray(mcParticles);
-    if (fTreeToMerge) fTreeToMerge->GetEntry(entry + fMergeOffset);
-    
+
+    // When merging, get current event number from GetReadEntry(), 
+    // entry gives the events in the current file
+    if (fTreeToMerge) fTreeToMerge->GetEntry(GetReadEntry() + fMergeOffset);
+  
     fIsSelectedResult = fEvent->GetHeader()->GetOfflineTrigger();
 
     if (fMixingHandler) fMixingHandler->BeginEvent(entry);
@@ -161,10 +178,12 @@ Bool_t AliAODInputHandler::Notify(const char* path)
               tmplist.Add(hBin0);
               if (fHistStatistics[1] && hBin0) fHistStatistics[1]->Merge(&tmplist);
            } else {
-             fHistStatistics[0] = static_cast<TH2F*>(hAll->Clone());
-             fHistStatistics[1] = static_cast<TH2F*>(hBin0->Clone());
-             fHistStatistics[0]->SetDirectory(0);
-             fHistStatistics[1]->SetDirectory(0);
+             if (hAll && hBin0) {
+                fHistStatistics[0] = static_cast<TH2F*>(hAll->Clone());
+                fHistStatistics[1] = static_cast<TH2F*>(hBin0->Clone());
+                fHistStatistics[0]->SetDirectory(0);
+                fHistStatistics[1]->SetDirectory(0);
+             }   
            }   
         }
         delete list;
@@ -229,7 +248,7 @@ void AliAODInputHandler::ConnectFriends()
     } else {
        // Friends have to be merged
        TNamed* filename = (TNamed*) (fFriends->At(0));
-       fFileToMerge = new TFile(filename->GetName());
+        fFileToMerge = TFile::Open(filename->GetName());
        if (fFileToMerge) {
            fFileToMerge->GetObject("aodTree", fTreeToMerge);
            if (!fAODEventToMerge) fAODEventToMerge = new AliAODEvent();
@@ -239,3 +258,14 @@ void AliAODInputHandler::ConnectFriends()
     fFriendsConnected = kTRUE;
 }
 
+//______________________________________________________________________________
+void AliAODInputHandler::CreatePIDResponse(Bool_t isMC/*=kFALSE*/)
+{
+  //
+  // create the pid response object if it does not exist yet
+  //
+  if (fAODpidUtil) return;
+  fAODpidUtil=new AliAODpidUtil(isMC);
+  
+}
+