#include <TNamed.h>
#include <TObjArray.h>
+#include <TBits.h>
+#include <THnBase.h>
#include "AliDielectronVarManager.h"
+#include "AliDielectronHistos.h"
class AliDielectronHF : public TNamed {
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();
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,
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
};