]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Added method mgr->AddStatisticsTask(offlineMask) that allows to configure the statist...
authoragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 6 Jan 2011 11:17:06 +0000 (11:17 +0000)
committeragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 6 Jan 2011 11:17:06 +0000 (11:17 +0000)
ANALYSIS/AliAnalysisManager.cxx
ANALYSIS/AliAnalysisManager.h
ANALYSIS/AliAnalysisStatistics.cxx
ANALYSIS/AliAnalysisStatistics.h
ANALYSIS/AliAnalysisTaskStat.cxx
ANALYSIS/AliAnalysisTaskStat.h

index 069a11defd609c4d82eaf5debdc08b9d572911f0..50d112337ace872555e56dd153de3bc023360acb 100644 (file)
@@ -2268,14 +2268,15 @@ void AliAnalysisManager::DoLoadBranch(const char *name)
 }
 
 //______________________________________________________________________________
-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);
 }  
 
 //______________________________________________________________________________
@@ -2305,12 +2306,15 @@ void AliAnalysisManager::WriteStatisticsMsg(Int_t nevents)
 {
 // 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);      
index bd968d9271d9ec6a7f3c59b6b2fb86063c213ccc..76d8f51451ffeed2b92cfe86dde1b216b8edc178 100644 (file)
@@ -159,7 +159,7 @@ enum EAliAnalysisFlags {
    
    // 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();
@@ -176,6 +176,7 @@ enum EAliAnalysisFlags {
    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;
index d5401c7f5af4bf4dec8cd38a688529150c999222..5c8950d0804204c319eeeb480008ef02a45c0d41 100644 (file)
@@ -28,6 +28,8 @@
 #include "Riostream.h"
 #include "TCollection.h"
 
+#include "AliVEvent.h"
+
 ClassImp(AliAnalysisStatistics)
 
 //______________________________________________________________________________
@@ -36,7 +38,8 @@ AliAnalysisStatistics::AliAnalysisStatistics(const AliAnalysisStatistics &other)
        fNinput(other.fNinput),
        fNprocessed(other.fNprocessed),
        fNfailed(other.fNfailed),
-       fNaccepted(other.fNaccepted)
+       fNaccepted(other.fNaccepted),
+       fOfflineMask(other.fOfflineMask)
 {
 // Copy constructor.
 }
@@ -50,6 +53,7 @@ AliAnalysisStatistics &AliAnalysisStatistics::operator=(const AliAnalysisStatist
   fNprocessed = other.fNprocessed;
   fNfailed    = other.fNfailed;
   fNaccepted  = other.fNaccepted;
+  fOfflineMask = other.fOfflineMask;
   return *this;
 }
 
@@ -77,5 +81,31 @@ void AliAnalysisStatistics::Print(const Option_t *) const
   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();
 }
+   
index 85319773a5813aa1db739934cce08e8dc1b3bf77..be902ebe1102837b8229779a9d3a3c8bd06005db 100644 (file)
@@ -24,10 +24,10 @@ protected:
   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() {}
   
@@ -42,7 +42,10 @@ public:
   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;
 
index 6d73f9780b67e86ea125099dd9e1d634af9557da..c1332a772af8cc15d926cfabe2230ee6ef620a5c 100644 (file)
@@ -56,7 +56,7 @@ AliAnalysisTaskStat::~AliAnalysisTaskStat()
 } 
     
 //______________________________________________________________________________
-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();
@@ -73,7 +73,10 @@ AliAnalysisTaskStat *AliAnalysisTaskStat::AddToManager()
                 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;
@@ -113,11 +116,14 @@ void  AliAnalysisTaskStat::Terminate(Option_t *)
     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();
 }  
index 9ba1b63a2e9fc063b487e7680d25543210a677e8..9bc5f745b7606babf6a21bcc55c584e6c919bbcc 100644 (file)
@@ -34,7 +34,7 @@ public:
   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();