26 enum class EOption { kFull, kSimple };
27 enum class ECopyDir { kSerialize, kDeserialize };
28 enum class EData { kSlice, kCF, kUnkown };
33 Int_t fBinStart = {-1};
34 Int_t fBinStop = {-1};
36 EOption fOption = {EOption::kFull};
37 EData fDataType = {EData::kUnkown};
40 virtual void ConvertCF(ECopyDir dir) = 0;
41 virtual void ConvertSlice(ECopyDir dir) = 0;
42 virtual void ConvertCFSimple(ECopyDir dir) = 0;
43 virtual void ConvertSliceSimple(ECopyDir dir) = 0;
44 virtual void PostInit() {};
45 virtual Bool_t HaveCF()
const = 0;
46 virtual Bool_t HaveSlice()
const = 0;
47 virtual Bool_t GetBinsNo() = 0;
48 void CopyData1D(std::vector<TH1*>& list,
int bin, ECopyDir dir, Bool_t error =
false);
49 void CopyData3D(std::vector<TH3*>& list,
int binx,
int biny,
int binz, ECopyDir dir, Bool_t error =
false);
50 void CopyData1D2(std::vector<TH1*>& listN, std::vector<TH1*>& listD,
int bin, ECopyDir dir);
51 void CopyData3D2(std::vector<TH3*>& listN, std::vector<TH3*>& listD,
int binx,
int biny,
int binz, ECopyDir dir);
52 void CopyDataVec(std::vector<std::vector<double>>& list,
int pos, ECopyDir dir);
53 void ExpandArrayIfSerialize(Int_t newSize, ECopyDir dir);
55 void CopyDataSingle(T& x, ECopyDir dir) {
57 case ECopyDir::kSerialize:
58 fArray->
Set(fCounter, x);
61 case ECopyDir::kDeserialize:
62 x = fArray->
Get(fCounter);
68 void CopyDataPair(T& n, T& d, ECopyDir dir) {
70 case ECopyDir::kSerialize:
71 fArray->
Set(fCounter, n / d);
74 case ECopyDir::kDeserialize:
75 n = fArray->
Get(fCounter);
84 void Data(EData opt) { fDataType = opt; }
85 void SetOption(EOption opt) { fOption = opt; }
86 virtual Bool_t BindCFs(TObject* cf) = 0;
87 virtual Bool_t BindSlices(TObject* slice) = 0;
90 if (fArray)
return kTRUE;
93 virtual Bool_t Init();
98 virtual void Serialize(Int_t binLo = -1, Int_t binHi = -1);
99 virtual void Deserialize(Int_t binLo = -1, Int_t binHi = -1);