]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGDQ/dielectron/AliDielectronHF.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliDielectronHF.h
index 9f49a49e50d3513e5fe582ec6d999f55497a7f0f..ff3d2ca7d81bf94a30bf5146812a31719d4ab137 100644 (file)
 
 #include <TNamed.h>
 #include <TObjArray.h>
+#include <TBits.h>
+#include <THnBase.h>
 
 #include "AliDielectronVarManager.h"
+#include "AliDielectronHistos.h"
 
 class AliDielectronHF : public TNamed {
 public:
@@ -28,7 +31,12 @@ public:
     kSymBin
   };
   enum EPairType {
-    kOSonly=0,  kOSandLS, kOSandROT, kOSandMIX, kAll
+    //    kOSonly=0,  kOSandLS, kOSandROT, kOSandMIX, kAll, kMConly
+    kAll=0, kMConly,
+    kSeAll,   kSeOnlyOS,
+    kMeAll,   kMeOnlyOS,
+    kSeMeAll, kSeMeOnlyOS,
+    kSeReAll, kSeReOnlyOS,
   };
 
   AliDielectronHF();
@@ -39,9 +47,42 @@ public:
   void Init();
   void SetSignalsMC(TObjArray* array)    {fSignalsMC = array;}
   void SetStepForMCGenerated(Bool_t switcher=kTRUE)    {fStepGenerated = switcher;}
-  void SetPairTypes(EPairType ptype=kOSonly) { fPairType=ptype; }
-  void SetRefHist(TH1 *obj, UInt_t vars[4]);
-
+  void SetPairTypes(EPairType ptype) { fPairType=ptype; }
+  void SetEventArray(Bool_t switcher=kTRUE) {fEventArray=switcher;}
+
+  // functions to add 1-dimensional objects
+  void UserProfile(const char* histClass, UInt_t valTypeP,
+                  const TVectorD * const binsX, UInt_t valTypeX, TString option="",
+                  UInt_t valTypeW=AliDielectronHistos::kNoWeights);
+  void UserHistogram(const char* histClass,
+                    const TVectorD * const binsX, UInt_t valTypeX, UInt_t valTypeW=AliDielectronHistos::kNoWeights)
+  { UserProfile(histClass,AliDielectronHistos::kNoProfile,binsX,valTypeX,"",valTypeW); }
+
+  // functions to add 2-dimensional objects
+  void UserProfile(const char* histClass, UInt_t valTypeP,
+                  const TVectorD * const binsX, const TVectorD * const binsY,
+                  UInt_t valTypeX, UInt_t valTypeY, TString option="", UInt_t valTypeW=AliDielectronHistos::kNoWeights);
+  void UserHistogram(const char* histClass,
+                     const TVectorD * const binsX, const TVectorD * const binsY,
+                    UInt_t valTypeX, UInt_t valTypeY, UInt_t valTypeW=AliDielectronHistos::kNoWeights)
+  { UserProfile(histClass,AliDielectronHistos::kNoProfile,binsX,binsY,valTypeX,valTypeY,"",valTypeW); }
+
+  // functions to add 3-dimensional objects
+  void UserProfile(const char* histClass, UInt_t valTypeP,
+                  const TVectorD * const binsX, const TVectorD * const binsY, const TVectorD * const binsZ,
+                  UInt_t valTypeX, UInt_t valTypeY, UInt_t valTypeZ, TString option="",
+                  UInt_t valTypeW=AliDielectronHistos::kNoWeights);
+  void UserHistogram(const char* histClass,
+                     const TVectorD * const binsX, const TVectorD * const binsY, const TVectorD * const binsZ,
+                     UInt_t valTypeX, UInt_t valTypeY, UInt_t valTypeZ, UInt_t valTypeW=AliDielectronHistos::kNoWeights)
+  { UserProfile(histClass,AliDielectronHistos::kNoProfile,binsX,binsY,binsZ,valTypeX,valTypeY,valTypeZ,"",valTypeW); }
+
+  // functions to add multidimensional stuff
+  void UserSparse(const char* histClass,
+                 Int_t ndim, TObjArray *limits, UInt_t *vars, UInt_t valTypeW=AliDielectronHistos::kNoWeights);
+
+
+  // functions to define the grid
   void AddCutVariable(AliDielectronVarManager::ValueTypes type, Int_t nbins,
                      Double_t min, Double_t max, Bool_t log=kFALSE, Bool_t leg=kFALSE, EBinType btype=kStdBin);
   void AddCutVariable(AliDielectronVarManager::ValueTypes type, 
@@ -57,28 +98,34 @@ public:
 
   Int_t GetNumberOfBins() const;
   const TObjArray * GetHistArray() const { return &fArrPairType; }
-  Bool_t GetStepForMCGenerated() const   { return fStepGenerated; }
+  Bool_t GetStepForMCGenerated()   const { return fStepGenerated; }
+  Bool_t IsEventArray()           const { return fEventArray; }
+  
+  
 
 private:
+  TBits     *fUsedVars;             // list of used variables
+
   TObjArray fArrPairType;           //-> array of pair types
   EPairType fPairType;              // which pair combinations to include
   TObjArray* fSignalsMC;            //! array of MC signals to be studied
 
   UShort_t  fVarCuts[kMaxCuts];     // cut variables
-  Bool_t    fVarCutType[kMaxCuts];  // array to store leg booleans
+  TBits     *fVarCutType;           // array to store leg booleans
+  //  Bool_t    fVarCutType[kMaxCuts];  // array to store leg booleans
   TObjArray fAxes;                  // Axis descriptions of the cut binning
   UShort_t  fBinType[kMaxCuts];     // binning type of the axes
   
-  Bool_t    fHasMC;
+  Bool_t    fHasMC;                 // is mc array
   Bool_t    fStepGenerated;         // switcher for generated particles
-
-  TH1       *fRefObj;               // reference object
+  Bool_t    fEventArray;            // switch OFF pair types and ON event array
+  TObjArray fRefObj;               // reference object
 
   AliDielectronHF(const AliDielectronHF &c);
   AliDielectronHF &operator=(const AliDielectronHF &c);
 
   
-  ClassDef(AliDielectronHF,2)         // Dielectron HF
+  ClassDef(AliDielectronHF,6)         // Dielectron HF
 };