}
//______________________________________________________________________________
-void AliAnalysisManager::AddStatisticsTask()
+void AliAnalysisManager::AddStatisticsTask(UInt_t offlineMask)
{
// Add the statistics task to the manager.
if (fStatistics) {
Info("AddStatisticsTask", "Already added");
return;
- }
- fStatistics = (AliAnalysisStatistics*)gROOT->ProcessLine("AliAnalysisTaskStat::AddToManager()->GetStatistics();");
+ }
+ TString line = Form("AliAnalysisTaskStat::AddToManager(%u);", offlineMask);
+ gROOT->ProcessLine(line);
}
//______________________________________________________________________________
{
// Write the statistics message in a file named <nevents.stat>.
// If fStatistics is present, write the file in the format ninput_nprocessed_nfailed_naccepted.stat
+ static Bool_t done = kFALSE;
+ if (done) return;
+ done = kTRUE;
ofstream out;
if (fStatistics) {
AddStatisticsMsg(Form("Number of input events: %lld",fStatistics->GetNinput()));
AddStatisticsMsg(Form("Number of processed events: %lld",fStatistics->GetNprocessed()));
AddStatisticsMsg(Form("Number of failed events (I/O): %lld",fStatistics->GetNfailed()));
- AddStatisticsMsg(Form("Number of accepted events: %lld",fStatistics->GetNaccepted()));
+ AddStatisticsMsg(Form("Number of accepted events for mask %s: %lld", AliAnalysisStatistics::GetMaskAsString(fStatistics->GetOfflineMask()), fStatistics->GetNaccepted()));
out.open(Form("%lld_%lld_%lld_%lld.stat",fStatistics->GetNinput(),
fStatistics->GetNprocessed(),fStatistics->GetNfailed(),
fStatistics->GetNaccepted()), ios::out);
// Analysis initialization and execution, status
void AddBranches(const char *branches);
- void AddStatisticsTask();
+ void AddStatisticsTask(UInt_t offlineMask=0);
void CheckBranches(Bool_t load=kFALSE);
void CountEvent(Int_t ninput, Int_t nprocessed, Int_t nfailed, Int_t naccepted);
Bool_t InitAnalysis();
void AddStatisticsMsg(const char *line);
const char *GetStatisticsMsg() const {return fStatisticsMsg.Data();}
const AliAnalysisStatistics *GetStatistics() const {return fStatistics;}
+ void SetStatistics(AliAnalysisStatistics *stat) {fStatistics = stat;}
void WriteStatisticsMsg(Int_t nevents);
Int_t GetNcalls() const {return fNcalls;}
Bool_t ValidateOutputFiles() const;
#include "Riostream.h"
#include "TCollection.h"
+#include "AliVEvent.h"
+
ClassImp(AliAnalysisStatistics)
//______________________________________________________________________________
fNinput(other.fNinput),
fNprocessed(other.fNprocessed),
fNfailed(other.fNfailed),
- fNaccepted(other.fNaccepted)
+ fNaccepted(other.fNaccepted),
+ fOfflineMask(other.fOfflineMask)
{
// Copy constructor.
}
fNprocessed = other.fNprocessed;
fNfailed = other.fNfailed;
fNaccepted = other.fNaccepted;
+ fOfflineMask = other.fOfflineMask;
return *this;
}
cout << "### Input events : " << fNinput << endl;
cout << "### Processed events w/o errors : " << fNprocessed << endl;
cout << "### Failed events : " << fNfailed << endl;
- cout << "### Accepted events : " << fNaccepted << endl;
+ cout << "### Accepted events for mask: " << GetMaskAsString(fOfflineMask) << ": " << fNaccepted << endl;
+}
+
+//______________________________________________________________________________
+const char *AliAnalysisStatistics::GetMaskAsString(UInt_t mask)
+{
+// Returns a string corresponding to the offline mask.
+ static TString smask;
+ smask = "ALL EVT.";
+ if (!mask) return smask.Data();
+ smask.Clear();
+ if (mask & AliVEvent::kMB) smask = "MB";
+ if (mask & AliVEvent::kMUON) {
+ if (!smask.IsNull()) smask += " | ";
+ smask += "MUON";
+ }
+ if (mask & AliVEvent::kHighMult) {
+ if (!smask.IsNull()) smask += " | ";
+ smask += "HighMult";
+ }
+ if (mask & AliVEvent::kUserDefined) {
+ if (!smask.IsNull()) smask += " | ";
+ smask += "UserDefined";
+ }
+ if (mask == AliVEvent::kAny) smask = "ANY";
+ return smask.Data();
}
+
Long64_t fNprocessed; // Number of events processed
Long64_t fNfailed; // Number of events for which reading failed
Long64_t fNaccepted; // Number of events that passed filtering criteria
-
+ UInt_t fOfflineMask; // Offline mask used for accepted events
public:
- AliAnalysisStatistics() : TNamed(),fNinput(0),fNprocessed(0),fNfailed(0),fNaccepted(0) {}
- AliAnalysisStatistics(const char *name) : TNamed(name,""),fNinput(0),fNprocessed(0),fNfailed(0),fNaccepted(0) {}
+ AliAnalysisStatistics() : TNamed(),fNinput(0),fNprocessed(0),fNfailed(0),fNaccepted(0),fOfflineMask(0) {}
+ AliAnalysisStatistics(const char *name) : TNamed(name,""),fNinput(0),fNprocessed(0),fNfailed(0),fNaccepted(0),fOfflineMask(0) {}
AliAnalysisStatistics(const AliAnalysisStatistics &other);
virtual ~AliAnalysisStatistics() {}
Long64_t GetNprocessed() const {return fNprocessed;}
Long64_t GetNfailed() const {return fNfailed;}
Long64_t GetNaccepted() const {return fNaccepted;}
-
+ UInt_t GetOfflineMask() const {return fOfflineMask;}
+ static const char *GetMaskAsString(UInt_t mask);
+
+ void SetOfflineMask(UInt_t mask) {fOfflineMask = mask;}
virtual Long64_t Merge(TCollection* list);
virtual void Print(const Option_t *option="") const;
}
//______________________________________________________________________________
-AliAnalysisTaskStat *AliAnalysisTaskStat::AddToManager()
+AliAnalysisTaskStat *AliAnalysisTaskStat::AddToManager(UInt_t offlineMask)
{
// Add this task to the analysis manager. By default it selects MB events.
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
mgr->GetCommonFileName());
AliAnalysisTaskStat *taskStatistics = new AliAnalysisTaskStat("MgrStat");
mgr->AddTask(taskStatistics);
- taskStatistics->SelectCollisionCandidates(AliVEvent::kMB);
+ AliAnalysisStatistics *stat = taskStatistics->GetStatistics();
+ stat->SetOfflineMask(offlineMask);
+ mgr->SetStatistics(stat);
+ taskStatistics->SelectCollisionCandidates(offlineMask);
mgr->ConnectInput(taskStatistics, 0, cinput);
mgr->ConnectOutput(taskStatistics, 1, coutput);
return taskStatistics;
Error("Terminate", "Statistics object not found in list");
return;
}
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (stat != fStatistics) {
+ // Non-local mode
fStatistics->AddInput(stat->GetNinput());
fStatistics->AddProcessed(stat->GetNprocessed());
fStatistics->AddFailed(stat->GetNfailed());
fStatistics->AddAccepted(stat->GetNaccepted());
+ mgr->SetStatistics(fStatistics);
}
fStatistics->Print();
}
virtual ~AliAnalysisTaskStat();
// Static method to add to the analysis manager
- static AliAnalysisTaskStat *AddToManager();
+ static AliAnalysisTaskStat *AddToManager(UInt_t offlineMask=0);
// Implementation of interface methods
virtual void UserCreateOutputObjects();