Fixed problem of getting mixed event in proof mode. Better handling of AliAODVertex...
authormvala <mvala@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Nov 2011 09:31:12 +0000 (09:31 +0000)
committermvala <mvala@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Nov 2011 09:31:12 +0000 (09:31 +0000)
ANALYSIS/EventMixing/AliMixEventCutObj.cxx
ANALYSIS/EventMixing/AliMixInfo.cxx
ANALYSIS/EventMixing/AliMixInputEventHandler.cxx

index 09cbc76..6a6148e 100644 (file)
 #include "AliESDEvent.h"
 #include "AliAODEvent.h"
 #include "AliMultiplicity.h"
+#include "AliAODVertex.h"
 
 #include "AliMixEventCutObj.h"
 
 ClassImp(AliMixEventCutObj)
 
 //_________________________________________________________________________________________________
-AliMixEventCutObj::AliMixEventCutObj(AliMixEventCutObj::EEPAxis_t type, Float_t min, Float_t max, Float_t step, const char* opt) : TObject(),
+AliMixEventCutObj::AliMixEventCutObj(AliMixEventCutObj::EEPAxis_t type, Float_t min, Float_t max, Float_t step, const char *opt) : TObject(),
    fCutType((Int_t)type),
    fCutOpt(opt),
    fCutMin(min),
@@ -53,7 +54,7 @@ AliMixEventCutObj::AliMixEventCutObj(const AliMixEventCutObj &obj) : TObject(obj
 }
 
 //_________________________________________________________________________________________________
-AliMixEventCutObj& AliMixEventCutObj::operator=(const AliMixEventCutObj& obj)
+AliMixEventCutObj &AliMixEventCutObj::operator=(const AliMixEventCutObj &obj)
 {
    //
    // Assigned operator
@@ -155,7 +156,7 @@ Int_t AliMixEventCutObj::GetIndex(AliVEvent *ev)
 }
 
 //_________________________________________________________________________________________________
-Double_t AliMixEventCutObj::GetValue(AliVEvent* ev)
+Double_t AliMixEventCutObj::GetValue(AliVEvent *ev)
 {
    //
    // Returns value from event
@@ -171,7 +172,7 @@ Double_t AliMixEventCutObj::GetValue(AliVEvent* ev)
 }
 
 //_________________________________________________________________________________________________
-Double_t AliMixEventCutObj::GetValue(AliESDEvent* ev)
+Double_t AliMixEventCutObj::GetValue(AliESDEvent *ev)
 {
    //
    // Returns value from esd event
@@ -205,16 +206,22 @@ Double_t AliMixEventCutObj::GetValue(AliESDEvent* ev)
 }
 
 //_________________________________________________________________________________________________
-Double_t AliMixEventCutObj::GetValue(AliAODEvent* ev)
+Double_t AliMixEventCutObj::GetValue(AliAODEvent *ev)
 {
    //
    // Returns value from aod event
    //
+
+   AliAODVertex *v=0;
    switch (fCutType) {
       case kMultiplicity:
          return (Double_t) ev->GetNumberOfTracks();
       case kZVertex:
+         v = ev->GetVertex(0);
+         if (!v)  return -99999;
          return ev->GetVertex(0)->GetZ();
+         // if verttex is null return -9999
+         return -99999;
       case kNumberV0s:
          return ev->GetNumberOfV0s();
       case kCentrality:
@@ -222,7 +229,6 @@ Double_t AliMixEventCutObj::GetValue(AliAODEvent* ev)
          if (!c) AliFatal("aod->GetCentrality() is null");
          if (fCutOpt.IsNull()) AliFatal("fCutOpt is null");
          return c->GetCentralityPercentile(fCutOpt.Data());
-
    }
 
    AliFatal("Mixing Cut TYPE is not supported for AOD");
@@ -262,7 +268,7 @@ void AliMixEventCutObj::SetCurrentValueToIndex(Int_t index)
 }
 
 //_________________________________________________________________________________________________
-void AliMixEventCutObj::PrintValues(AliVEvent* main, AliVEvent* mix)
+void AliMixEventCutObj::PrintValues(AliVEvent *main, AliVEvent *mix)
 {
    //
    // Prints values of both events for current type
index 3874c67..4489c7d 100644 (file)
@@ -317,12 +317,12 @@ void AliMixInfo::DynamicExec(AliMixInfo *const mixInfo)
    Double_t numMix = hMix->GetBinContent(binX);
    Int_t hist2DValue = (Int_t) hSelected->GetBinContent(binX + 1, 1);
 
-   Int_t mixNum = 1;
+//    Int_t mixNum = 1;
    if (text) {
       if (mixInfo) {
          AliMixEventPool *evPool = (AliMixEventPool *) mixInfo->GetEventPool("mixEventPool");
          if (evPool) {
-            mixNum = evPool->GetMixNumber();
+//             mixNum = evPool->GetMixNumber();
             if (binX - 1 >= 0) {
                if (!evPool->SetCutValuesFromBinIndex(binX - 1)) return;
             }
index 0552fa6..61bd4a6 100644 (file)
@@ -128,8 +128,13 @@ Bool_t AliMixInputEventHandler::Notify(const char *path)
    // Notify(const char*path) is called for all mix input handlers
    //
    AliDebug(AliLog::kDebug + 5, Form("<- %s", path));
-   
-   Bool_t firstRun=(fMixIntupHandlerInfoTmp->GetChain()->GetEntries()<=0);
+
+   Bool_t doPrepareEntry=kTRUE;
+   TString anType = fAnalysisType;
+
+   // in case of local doPrepareEntry only first time
+   if (anType.CompareTo("proof")) doPrepareEntry = (fMixIntupHandlerInfoTmp->GetChain()->GetEntries()<=0);
+
    // adds current file
    fMixIntupHandlerInfoTmp->AddTreeToChain(path);
    Int_t lastIndex = fMixIntupHandlerInfoTmp->GetChain()->GetListOfFiles()->GetEntries();
@@ -138,7 +143,8 @@ Bool_t AliMixInputEventHandler::Notify(const char *path)
    for (Int_t i = 0; i < fInputHandlers.GetEntries(); i++) {
       AliDebug(AliLog::kDebug + 5, Form("fInputHandlers[%d]", i));
       mixIHI = new AliMixInputHandlerInfo(fMixIntupHandlerInfoTmp->GetName(), fMixIntupHandlerInfoTmp->GetTitle());
-      if (firstRun) mixIHI->PrepareEntry(che, -1, (AliInputEventHandler*)InputEventHandler(i), fAnalysisType);
+//       mixIHI->PrepareEntry(che, -1, (AliInputEventHandler *)InputEventHandler(i), fAnalysisType);
+      if (doPrepareEntry) mixIHI->PrepareEntry(che, -1, (AliInputEventHandler *)InputEventHandler(i), fAnalysisType);
       AliDebug(AliLog::kDebug + 5, Form("chain[%d]->GetEntries() = %lld", i, mixIHI->GetChain()->GetEntries()));
       fMixTrees.Add(mixIHI);
    }
@@ -239,9 +245,9 @@ Bool_t AliMixInputEventHandler::MixStd()
       mihi = (AliMixInputHandlerInfo *) fMixTrees.At(0);
       TChainElement *te = fMixIntupHandlerInfoTmp->GetEntryInTree(entryMix);
       if (!te) {
-       AliError("te is null. this is error. tell to developer (#1)");
+         AliError("te is null. this is error. tell to developer (#1)");
       } else {
-         mihi->PrepareEntry(te, entryMix, (AliInputEventHandler*)InputEventHandler(0), fAnalysisType);
+         mihi->PrepareEntry(te, entryMix, (AliInputEventHandler *)InputEventHandler(0), fAnalysisType);
          // runs UserExecMix for all tasks
          fNumberMixed++;
          UserExecMixAllTasks(fEntryCounter, 1, fEntryCounter, entryMixReal, fNumberMixed);
@@ -331,10 +337,10 @@ Bool_t AliMixInputEventHandler::MixBuffer()
       mihi = (AliMixInputHandlerInfo *) fMixTrees.At(counter);
       TChainElement *te = fMixIntupHandlerInfoTmp->GetEntryInTree(entryMix);
       if (!te) {
-       AliError("te is null. this is error. tell to developer (#1)");
+         AliError("te is null. this is error. tell to developer (#1)");
       } else {
          AliDebug(AliLog::kDebug + 3, Form("Preparing InputEventHandler(%d)", counter));
-         mihi->PrepareEntry(te, entryMix, (AliInputEventHandler*)InputEventHandler(counter), fAnalysisType);
+         mihi->PrepareEntry(te, entryMix, (AliInputEventHandler *)InputEventHandler(counter), fAnalysisType);
          // runs UserExecMix for all tasks
          UserExecMixAllTasks(fEntryCounter, idEntryList, fEntryCounter, entryMixReal, counter);
          fNumberMixed++;
@@ -440,9 +446,9 @@ Bool_t AliMixInputEventHandler::MixEventsMoreTimesWithOneEvent()
       entryMixReal = entryMix;
       TChainElement *te = fMixIntupHandlerInfoTmp->GetEntryInTree(entryMix);
       if (!te) {
-       AliError("te is null. this is error. tell to developer (#2)");
+         AliError("te is null. this is error. tell to developer (#2)");
       } else {
-         mihi->PrepareEntry(te, entryMix, (AliInputEventHandler*)InputEventHandler(0), fAnalysisType);
+         mihi->PrepareEntry(te, entryMix, (AliInputEventHandler *)InputEventHandler(0), fAnalysisType);
          // runs UserExecMix for all tasks
          fNumberMixed++;
          UserExecMixAllTasks(fEntryCounter, idEntryList, currentMainEntry, entryMixReal, fNumberMixed);
@@ -480,7 +486,7 @@ Bool_t AliMixInputEventHandler::FinishEvent()
 }
 
 //_____________________________________________________________________________
-void AliMixInputEventHandler::AddInputEventHandler(AliVEventHandler*)
+void AliMixInputEventHandler::AddInputEventHandler(AliVEventHandler *)
 {
    //
    // AddInputEventHandler will not be used
@@ -498,15 +504,13 @@ void AliMixInputEventHandler::UserExecMixAllTasks(Long64_t entryCounter, Int_t i
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    AliAnalysisTaskSE *mixTask = 0;
    TObjArrayIter next(mgr->GetTasks());
-   while ((mixTask = (AliAnalysisTaskSE *) next())) {
-      if (dynamic_cast<AliAnalysisTaskSE *>(mixTask)) {
+   while ((mixTask = dynamic_cast<AliAnalysisTaskSE *>(next()))) {
          AliDebug(AliLog::kDebug, Form("%s %lld %d [%lld,%lld] %d", mixTask->GetName(), entryCounter, numMixed, entryMainReal, entryMixReal, idEntryList));
          fCurrentEntry = entryCounter;
          fCurrentEntryMain = entryMainReal;
          fCurrentEntryMix = entryMixReal;
          fCurrentBinIndex = idEntryList;
          if (entryMixReal >= 0) mixTask->UserExecMix("");
-      }
    }
 }
 
@@ -517,8 +521,8 @@ void AliMixInputEventHandler::SetMixNumber(const Int_t mixNum)
    // Sets mix number
    //
    if (fMixNumber > 1 && fBufferSize > 1) {
-     AliWarning("Sleeping 10 sec to show Warning Message ...");
-     AliWarning("=========================================================================================");
+      AliWarning("Sleeping 10 sec to show Warning Message ...");
+      AliWarning("=========================================================================================");
       AliWarning(Form("BufferSize(%d) higher > 1 and fMixNumber(%d) > 1, which is not supported", fBufferSize, mixNum));
       AliWarning("");
       AliWarning("\tBufferSize will be set to 1");