Coverity fixes (Philippe, Ivana)
[u/mrichter/AliRoot.git] / PWG3 / base / AliCounterCollection.h
index fae9cde..d875876 100644 (file)
@@ -3,6 +3,8 @@
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
+/* $Id$ */ 
+
 /// \ingroup PWG3muon
 /// \class AliCounterCollection
 /// \brief generic class to handle a collection of counters
@@ -32,22 +34,30 @@ public:
   // Add a new rubric containing at maximum maxNKeyWords key words
   void AddRubric(TString name, Int_t maxNKeyWords);
   // Initialize the internal counters from the added rubrics
-  void Init();
+  void Init(Bool_t weightedCounters = kFALSE);
   
   // return the list of key words for the given rubric
   TString GetKeyWords(TString rubric) const;
   
   // Add "value" to the counter referenced by "externalKey"
   void Count(TString externalKey, Int_t value = 1);
+  void Count(TString externalKey, Double_t value);
+  
+  // Get the overall statistics for the given selection (result is integrated over not specified rubrics)
+  Double_t GetSum(TString selections = "");
+  // Get counters of the rubric "rubric1" for the given "selection"
+  TH1D* Get(TString rubric1, TString selections);
+  // Get counters of the "rubric1" vs "rubric2" for the given "selection"
+  TH2D* Get(TString rubric1, TString rubric2, TString selections);
   
-  // Print every individual counters if opt=="", else call "Print(TString rubrics=opt, TString selections="")"
+  // Print every individual counters if opt=="" or call "Print(opt, "")".
   virtual void Print(const Option_t* opt = "") const;
   // Print the full list of key words
   void PrintKeyWords() const;
   // Print value of selected counter
   void PrintValue(TString selections);
   // Print desired rubrics for the given selection
-  void Print(TString rubrics, TString selections);
+  void Print(TString rubrics, TString selections, Bool_t removeEmpty = kFALSE);
   // Print the overall statistics for the given selection (result is integrated over not specified rubrics)
   void PrintSum(TString selections = "");
   
@@ -96,12 +106,15 @@ private:
   // Make sure all strings appear only once in this list
   void CleanListOfStrings(TObjArray* list);
   
+  // Add "value" to the counter referenced by "externalKey"
+  void CountAsDouble(TString externalKey, Double_t value);
+  
   // Print the content of 1D histogram as a list
-  void PrintList(const TH1D* hist) const;
+  void PrintList(const TH1D* hist, Bool_t removeEmpty = kFALSE) const;
   // Print the content of 2D histogram as an array
-  void PrintArray(const TH2D* hist) const;
+  void PrintArray(const TH2D* hist, Bool_t removeEmpty = kFALSE) const;
   // Print the content of nD histogram as a list of arrays
-  void PrintListOfArrays(const THnSparse* hist) const;
+  void PrintListOfArrays(const THnSparse* hist, Bool_t removeEmpty = kFALSE) const;
   
   // Return the number of characters of the longest label
   Int_t GetMaxLabelSize(THashList* labels) const;
@@ -122,8 +135,9 @@ private:
   THashList* fRubrics;        ///< list of rubrics with associated key words
   TArrayI*   fRubricsSize;    ///< maximum number of key words in the corresponding rubric
   THnSparse* fCounters;       ///< histogram of nRubrics dimensions used as n-dimensional counter
+  Bool_t fWeightedCounters;   ///< use THnSparseF instead of THnSparseI
   
-  ClassDef(AliCounterCollection, 1); // collection of mergeable counters
+  ClassDef(AliCounterCollection, 2); // collection of mergeable counters
 };
 
 #endif