Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
Domains.h
Go to the documentation of this file.
1/*
2 * Project: RooFit
3 * Authors:
4 * Jonas Rembser, CERN, Jan 2023
5 *
6 * Copyright (c) 2023, CERN
7 *
8 * Redistribution and use in source and binary forms,
9 * with or without modification, are permitted according to the terms
10 * listed in LICENSE (http://roofit.sourceforge.net/license.txt)
11 */
12
13#ifndef RooFit_JSONIO_Detail_Domains_h
14#define RooFit_JSONIO_Detail_Domains_h
15
16#include <string>
17#include <map>
18#include <vector>
19
20class RooAbsBinning;
21class RooRealVar;
22class RooWorkspace;
23
24namespace RooFit {
25namespace Detail {
26class JSONNode;
27class JSONTree;
28} // namespace Detail
29} // namespace RooFit
30
31namespace RooFit {
32namespace JSONIO {
33namespace Detail {
34
35class Domains {
36public:
37 void readVariable(RooRealVar const &);
38 void writeVariable(RooRealVar &) const;
39
42
43 bool hasVariable(const char *name) const;
44
45 void populate(RooWorkspace &ws) const;
46
48 public:
49 void readVariable(const RooRealVar &);
50 void readVariable(const char *name, RooAbsBinning const &binning);
51 void writeVariable(RooRealVar &) const;
52
55
56 bool hasVariable(const char *name) const;
57
58 void populate(RooWorkspace &ws) const;
59 void registerBinnings(const char *name, RooWorkspace &ws) const;
60
61 private:
63 bool hasMin = false;
64 bool hasMax = false;
65 double min = 0.0;
66 double max = 0.0;
67 bool hasNBins = false;
68 int nBins = 0;
69 std::vector<double> edges;
70 };
71
72 static void applyBinning(RooRealVar &var, ProductDomainElement const &elem, const char *name = nullptr);
73 static void readBinning(ProductDomainElement &elem, RooAbsBinning const &binning);
75
76 std::map<std::string, ProductDomainElement> _map;
77 };
78
79 std::map<std::string, ProductDomain> _map;
80};
81
82} // namespace Detail
83} // namespace JSONIO
84} // namespace RooFit
85
86#endif
char name[80]
Definition TGX11.cxx:145
Abstract base class for RooRealVar binning definitions.
void registerBinnings(const char *name, RooWorkspace &ws) const
Definition Domains.cxx:278
bool hasVariable(const char *name) const
Definition Domains.cxx:204
static void writeBinning(RooFit::Detail::JSONNode &node, ProductDomainElement const &elem)
Definition Domains.cxx:170
static void readBinning(ProductDomainElement &elem, RooAbsBinning const &binning)
Definition Domains.cxx:124
std::map< std::string, ProductDomainElement > _map
Definition Domains.h:76
void populate(RooWorkspace &ws) const
Definition Domains.cxx:264
static void applyBinning(RooRealVar &var, ProductDomainElement const &elem, const char *name=nullptr)
Definition Domains.cxx:157
void writeJSON(RooFit::Detail::JSONNode &) const
Definition Domains.cxx:248
void readJSON(RooFit::Detail::JSONNode const &)
Definition Domains.cxx:209
void populate(RooWorkspace &ws) const
Definition Domains.cxx:52
std::map< std::string, ProductDomain > _map
Definition Domains.h:79
void writeVariable(RooRealVar &) const
Definition Domains.cxx:76
void readVariable(RooRealVar const &)
Definition Domains.cxx:65
void writeJSON(RooFit::Detail::JSONNode &) const
Definition Domains.cxx:99
void readJSON(RooFit::Detail::JSONNode const &)
Definition Domains.cxx:84
bool hasVariable(const char *name) const
Definition Domains.cxx:109
Variable that can be changed from the outside.
Definition RooRealVar.h:37
Persistable container for RooFit projects.
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Definition CodegenImpl.h:72