]> 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 6f082f8a1c442dc827ba5d395d8c8c63788b7265..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);
@@ -135,9 +152,17 @@ Bool_t AliAODInputHandler::Notify(const char* path)
     
   TTree *ttree = fTree->GetTree();
   if (!ttree) ttree = fTree;
-  TString statFname(gSystem->DirName(ttree->GetCurrentFile()->GetName()));
-  statFname += "/EventStat_temp.root";
-  TFile *statFile = TFile::Open(statFname, "READ");
+  TString statFname(ttree->GetCurrentFile()->GetName());
+  Int_t indarchive = statFname.Index("#");
+  if (indarchive<0) {
+     statFname = gSystem->DirName(statFname);
+     statFname += "/";
+  } else {
+     statFname.Remove(indarchive+1);
+  }   
+  statFname += "EventStat_temp.root";
+  TFile *statFile = 0;
+  if (IsCheckStatistics()) statFile = TFile::Open(statFname, "READ");
   if (statFile) {
      TList *list = (TList*)statFile->Get("cstatsout");
      if (list) {
@@ -153,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;
@@ -221,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();
@@ -231,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);
+  
+}
+