#ifndef ALIANALYSISMUMUBINNING_H
#define ALIANALYSISMUMUBINNING_H
#include "TNamed.h"
#include "TString.h"
#include "TMath.h"
class TMap;
class TObjArray;
class AliAnalysisMuMuBinning : public TNamed
{
public:
class Range;
AliAnalysisMuMuBinning(const char* name="", const char* title="");
AliAnalysisMuMuBinning(const AliAnalysisMuMuBinning& rhs);
AliAnalysisMuMuBinning& operator=(const AliAnalysisMuMuBinning& rhs);
virtual ~AliAnalysisMuMuBinning();
void AddBin(const AliAnalysisMuMuBinning::Range& bin);
void AddBin(const char* what, const char* quantity,
Double_t xmin=TMath::Limits<Double_t>::Max(),
Double_t xmax=TMath::Limits<Double_t>::Max(),
const char* flavour="")
{ AddBin(what,quantity,xmin,xmax,TMath::Limits<Double_t>::Max(),TMath::Limits<Double_t>::Max(),flavour); }
void AddBin(const char* what, const char* quantity,
Double_t xmin,
Double_t xmax,
Double_t ymin,
Double_t ymax,
const char* flavour="");
TObjArray* CreateWhatArray() const;
TObjArray* CreateQuantityArray() const;
Double_t* CreateBinArray() const;
Double_t* CreateBinArrayY() const;
Double_t* CreateBinArrayX() const;
TObjArray* CreateBinObjArray() const;
TObjArray* CreateBinObjArray(const char* what) const;
TObjArray* CreateBinObjArray(const char* what, const char* quantity, const char* flavour) const;
Int_t GetNBinsX() const;
Int_t GetNBinsY() const;
AliAnalysisMuMuBinning* Project(const char* what, const char* quantity, const char* flavour="") const;
virtual void Print(Option_t* opt="") const;
void CreateMesh(const char* what, const char* quantity1, const char* quantity2, const char* flavour="", Bool_t remove12=kFALSE);
Long64_t Merge(TCollection* list);
Bool_t IsEqual(const TObject* obj) const;
class Range : public TObject {
public:
Range(const char* what="",const char* quantity="",
Double_t xmin=TMath::Limits<Double_t>::Max(),
Double_t xmax=TMath::Limits<Double_t>::Max(),
Double_t ymin=TMath::Limits<Double_t>::Max(),
Double_t ymax=TMath::Limits<Double_t>::Max(),
const char* version="");
virtual Int_t Compare(const TObject* obj) const;
Bool_t IsEqual(const TObject* obj) const { return Compare(obj)==0; }
Bool_t IsSortable() const { return kTRUE; }
virtual TObject* Clone(const char* = "") const { return new Range(*this); }
bool operator==(const Range& other) const { return Compare(&other)==0; }
bool operator!=(const Range& other) const { return !(*this==other); }
Bool_t IsIntegrated() const;
TString Quantity() const { return fQuantity; }
TString What() const { return fWhat; }
Double_t Xmin() const { return fXmin; }
Double_t Xmax() const { return fXmax; }
Double_t Ymin() const { return fYmin; }
Double_t Ymax() const { return fYmax; }
Double_t WidthX() const { return TMath::Abs(fXmin-fXmax); }
Double_t WidthY() const { return TMath::Abs(fYmin-fYmax); }
Bool_t Is2D() const { return fYmax > fYmin; }
const char* GetName() const { return What().Data(); }
TString AsString() const;
virtual void Print(Option_t* opt="") const;
Bool_t IsInRange(Double_t x, Double_t y=TMath::Limits<Double_t>::Max()) const;
TString Flavour() const { return fFlavour; }
private:
TString fWhat;
TString fQuantity;
Double_t fXmin;
Double_t fXmax;
Double_t fYmin;
Double_t fYmax;
TString fFlavour;
ClassDef(AliAnalysisMuMuBinning::Range,3)
};
private:
TMap* fBins;
ClassDef(AliAnalysisMuMuBinning,2)
};
#endif
AliAnalysisMuMuBinning.h:1 AliAnalysisMuMuBinning.h:2 AliAnalysisMuMuBinning.h:3 AliAnalysisMuMuBinning.h:4 AliAnalysisMuMuBinning.h:5 AliAnalysisMuMuBinning.h:6 AliAnalysisMuMuBinning.h:7 AliAnalysisMuMuBinning.h:8 AliAnalysisMuMuBinning.h:9 AliAnalysisMuMuBinning.h:10 AliAnalysisMuMuBinning.h:11 AliAnalysisMuMuBinning.h:12 AliAnalysisMuMuBinning.h:13 AliAnalysisMuMuBinning.h:14 AliAnalysisMuMuBinning.h:15 AliAnalysisMuMuBinning.h:16 AliAnalysisMuMuBinning.h:17 AliAnalysisMuMuBinning.h:18 AliAnalysisMuMuBinning.h:19 AliAnalysisMuMuBinning.h:20 AliAnalysisMuMuBinning.h:21 AliAnalysisMuMuBinning.h:22 AliAnalysisMuMuBinning.h:23 AliAnalysisMuMuBinning.h:24 AliAnalysisMuMuBinning.h:25 AliAnalysisMuMuBinning.h:26 AliAnalysisMuMuBinning.h:27 AliAnalysisMuMuBinning.h:28 AliAnalysisMuMuBinning.h:29 AliAnalysisMuMuBinning.h:30 AliAnalysisMuMuBinning.h:31 AliAnalysisMuMuBinning.h:32 AliAnalysisMuMuBinning.h:33 AliAnalysisMuMuBinning.h:34 AliAnalysisMuMuBinning.h:35 AliAnalysisMuMuBinning.h:36 AliAnalysisMuMuBinning.h:37 AliAnalysisMuMuBinning.h:38 AliAnalysisMuMuBinning.h:39 AliAnalysisMuMuBinning.h:40 AliAnalysisMuMuBinning.h:41 AliAnalysisMuMuBinning.h:42 AliAnalysisMuMuBinning.h:43 AliAnalysisMuMuBinning.h:44 AliAnalysisMuMuBinning.h:45 AliAnalysisMuMuBinning.h:46 AliAnalysisMuMuBinning.h:47 AliAnalysisMuMuBinning.h:48 AliAnalysisMuMuBinning.h:49 AliAnalysisMuMuBinning.h:50 AliAnalysisMuMuBinning.h:51 AliAnalysisMuMuBinning.h:52 AliAnalysisMuMuBinning.h:53 AliAnalysisMuMuBinning.h:54 AliAnalysisMuMuBinning.h:55 AliAnalysisMuMuBinning.h:56 AliAnalysisMuMuBinning.h:57 AliAnalysisMuMuBinning.h:58 AliAnalysisMuMuBinning.h:59 AliAnalysisMuMuBinning.h:60 AliAnalysisMuMuBinning.h:61 AliAnalysisMuMuBinning.h:62 AliAnalysisMuMuBinning.h:63 AliAnalysisMuMuBinning.h:64 AliAnalysisMuMuBinning.h:65 AliAnalysisMuMuBinning.h:66 AliAnalysisMuMuBinning.h:67 AliAnalysisMuMuBinning.h:68 AliAnalysisMuMuBinning.h:69 AliAnalysisMuMuBinning.h:70 AliAnalysisMuMuBinning.h:71 AliAnalysisMuMuBinning.h:72 AliAnalysisMuMuBinning.h:73 AliAnalysisMuMuBinning.h:74 AliAnalysisMuMuBinning.h:75 AliAnalysisMuMuBinning.h:76 AliAnalysisMuMuBinning.h:77 AliAnalysisMuMuBinning.h:78 AliAnalysisMuMuBinning.h:79 AliAnalysisMuMuBinning.h:80 AliAnalysisMuMuBinning.h:81 AliAnalysisMuMuBinning.h:82 AliAnalysisMuMuBinning.h:83 AliAnalysisMuMuBinning.h:84 AliAnalysisMuMuBinning.h:85 AliAnalysisMuMuBinning.h:86 AliAnalysisMuMuBinning.h:87 AliAnalysisMuMuBinning.h:88 AliAnalysisMuMuBinning.h:89 AliAnalysisMuMuBinning.h:90 AliAnalysisMuMuBinning.h:91 AliAnalysisMuMuBinning.h:92 AliAnalysisMuMuBinning.h:93 AliAnalysisMuMuBinning.h:94 AliAnalysisMuMuBinning.h:95 AliAnalysisMuMuBinning.h:96 AliAnalysisMuMuBinning.h:97 AliAnalysisMuMuBinning.h:98 AliAnalysisMuMuBinning.h:99 AliAnalysisMuMuBinning.h:100 AliAnalysisMuMuBinning.h:101 AliAnalysisMuMuBinning.h:102 AliAnalysisMuMuBinning.h:103 AliAnalysisMuMuBinning.h:104 AliAnalysisMuMuBinning.h:105 AliAnalysisMuMuBinning.h:106 AliAnalysisMuMuBinning.h:107 AliAnalysisMuMuBinning.h:108 AliAnalysisMuMuBinning.h:109 AliAnalysisMuMuBinning.h:110 AliAnalysisMuMuBinning.h:111 AliAnalysisMuMuBinning.h:112 AliAnalysisMuMuBinning.h:113 AliAnalysisMuMuBinning.h:114 AliAnalysisMuMuBinning.h:115 AliAnalysisMuMuBinning.h:116 AliAnalysisMuMuBinning.h:117 AliAnalysisMuMuBinning.h:118 AliAnalysisMuMuBinning.h:119 AliAnalysisMuMuBinning.h:120 AliAnalysisMuMuBinning.h:121 AliAnalysisMuMuBinning.h:122 AliAnalysisMuMuBinning.h:123 AliAnalysisMuMuBinning.h:124 AliAnalysisMuMuBinning.h:125 AliAnalysisMuMuBinning.h:126 AliAnalysisMuMuBinning.h:127 AliAnalysisMuMuBinning.h:128 AliAnalysisMuMuBinning.h:129 AliAnalysisMuMuBinning.h:130 AliAnalysisMuMuBinning.h:131 AliAnalysisMuMuBinning.h:132 AliAnalysisMuMuBinning.h:133 AliAnalysisMuMuBinning.h:134 AliAnalysisMuMuBinning.h:135 AliAnalysisMuMuBinning.h:136 AliAnalysisMuMuBinning.h:137