Skip to content

Commit 51c8b8f

Browse files
committed
[RF] Use new RooStringView in RooFit dataset classes
This has two advantages over `std::string_view`: 1. We don't need preporcessor macros and branches to support ROOT's std::string_view backport for C++14. 2. The `std::string_view` was not appropriate anyway, because in the `TNamed` constructor the strig had to be copied anyway to guarantee the string is null-terminated. With `RooStringView` we don't have this problem: it is guaranteed to be null-terminated.
1 parent c740f9c commit 51c8b8f

14 files changed

Lines changed: 57 additions & 93 deletions

roofit/roofit/src/RooLagrangianMorphFunc.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,7 @@ void collectHistograms(const char *name, TDirectory *file, std::map<std::string,
833833
RooArgSet vars;
834834
vars.add(var);
835835

836-
RooDataHist *dh = new RooDataHist(histname.View(), histname.View(), vars, hist);
836+
RooDataHist *dh = new RooDataHist(histname, histname, vars, hist);
837837
// add it to the list
838838
RooHistFunc *hf = new RooHistFunc(funcname, funcname, var, *dh);
839839
int idx = physics.getSize();

roofit/roofitcore/inc/RooAbsData.h

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
#include "RooSpan.h"
2424
#include "RooNameReg.h"
2525

26-
#include "ROOT/RStringView.hxx"
2726
#include "TNamed.h"
2827

2928
#include <map>
@@ -57,37 +56,14 @@ struct ConstantTermsOptimizer;
5756
}
5857

5958

60-
// Writes a templated constructor for compatibility with ROOT builds using the
61-
// C++14 standard or earlier, taking `ROOT::Internal::TStringView` instead of
62-
// `std::string_view`. This means one can still use a `TString` for the name or
63-
// title parameter. The condition in the following `#if` should be kept in
64-
// sync with the one in TString.h.
65-
#if (__cplusplus >= 201700L) && !defined(_MSC_VER) && (!defined(__clang_major__) || __clang_major__ > 5)
66-
#define WRITE_TSTRING_COMPATIBLE_CONSTRUCTOR(Class_t) // does nothing
67-
#else
68-
#define WRITE_TSTRING_COMPATIBLE_CONSTRUCTOR(Class_t) \
69-
template<typename ...Args_t> \
70-
Class_t(ROOT::Internal::TStringView name, ROOT::Internal::TStringView title, Args_t &&... args) \
71-
: Class_t(std::string_view(name), std::string_view(title), std::forward<Args_t>(args)...) {} \
72-
template<typename ...Args_t> \
73-
Class_t(ROOT::Internal::TStringView name, std::string_view title, Args_t &&... args) \
74-
: Class_t(std::string_view(name), title, std::forward<Args_t>(args)...) {} \
75-
template<typename ...Args_t> \
76-
Class_t(std::string_view name, ROOT::Internal::TStringView title, Args_t &&... args) \
77-
: Class_t(name, std::string_view(title), std::forward<Args_t>(args)...) {}
78-
#endif
79-
80-
8159
class RooAbsData : public TNamed, public RooPrintable {
8260
public:
8361

8462
// Constructors, factory methods etc.
8563
RooAbsData() ;
86-
RooAbsData(std::string_view name, std::string_view title, const RooArgSet& vars, RooAbsDataStore* store=0) ;
64+
RooAbsData(RooStringView name, RooStringView title, const RooArgSet& vars, RooAbsDataStore* store=0) ;
8765
RooAbsData(const RooAbsData& other, const char* newname = 0) ;
8866

89-
WRITE_TSTRING_COMPATIBLE_CONSTRUCTOR(RooAbsData)
90-
9167
RooAbsData& operator=(const RooAbsData& other);
9268
virtual ~RooAbsData() ;
9369
virtual RooAbsData* emptyClone(const char* newName=0, const char* newTitle=0, const RooArgSet* vars=0, const char* wgtVarName=0) const = 0 ;

roofit/roofitcore/inc/RooAbsDataStore.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ class RooAbsDataStore : public TNamed, public RooPrintable {
3838
public:
3939

4040
RooAbsDataStore() {}
41-
RooAbsDataStore(std::string_view name, std::string_view title, const RooArgSet& vars)
42-
: TNamed(TString{name},TString{title}), _vars{vars} {}
41+
RooAbsDataStore(RooStringView name, RooStringView title, const RooArgSet& vars)
42+
: TNamed(name,title), _vars{vars} {}
4343
RooAbsDataStore(const RooAbsDataStore& other, const char* newname=0)
4444
: RooAbsDataStore(other, other._vars, newname) {}
4545
RooAbsDataStore(const RooAbsDataStore& other, const RooArgSet& vars, const char* newname=0)
@@ -48,8 +48,6 @@ class RooAbsDataStore : public TNamed, public RooPrintable {
4848
if(newname) SetName(newname);
4949
}
5050

51-
WRITE_TSTRING_COMPATIBLE_CONSTRUCTOR(RooAbsDataStore)
52-
5351
virtual RooAbsDataStore* clone(const char* newname=0) const = 0 ;
5452
virtual RooAbsDataStore* clone(const RooArgSet& vars, const char* newname=0) const = 0 ;
5553

roofit/roofitcore/inc/RooCompositeDataStore.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@ class RooCompositeDataStore : public RooAbsDataStore {
3737
RooCompositeDataStore() ;
3838

3939
// Ctors from DataStore
40-
RooCompositeDataStore(std::string_view name, std::string_view title, const RooArgSet& vars, RooCategory& indexCat, std::map<std::string,RooAbsDataStore*> inputData) ;
41-
42-
WRITE_TSTRING_COMPATIBLE_CONSTRUCTOR(RooCompositeDataStore)
40+
RooCompositeDataStore(RooStringView name, RooStringView title, const RooArgSet& vars, RooCategory& indexCat, std::map<std::string,RooAbsDataStore*> inputData) ;
4341

4442
// Empty ctor
4543
virtual RooAbsDataStore* clone(const char* newname=0) const { return new RooCompositeDataStore(*this,newname) ; }

roofit/roofitcore/inc/RooDataHist.h

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,16 @@ class RooDataHist : public RooAbsData, public RooDirItem {
4747

4848
// Constructors, factory methods etc.
4949
RooDataHist() ;
50-
RooDataHist(std::string_view name, std::string_view title, const RooArgSet& vars, const char* binningName=0) ;
51-
RooDataHist(std::string_view name, std::string_view title, const RooArgSet& vars, const RooAbsData& data, Double_t initWgt=1.0) ;
52-
RooDataHist(std::string_view name, std::string_view title, const RooArgList& vars, const TH1* hist, Double_t initWgt=1.0) ;
53-
RooDataHist(std::string_view name, std::string_view title, const RooArgList& vars, RooCategory& indexCat, std::map<std::string,TH1*> histMap, Double_t initWgt=1.0) ;
54-
RooDataHist(std::string_view name, std::string_view title, const RooArgList& vars, RooCategory& indexCat, std::map<std::string,RooDataHist*> dhistMap, Double_t wgt=1.0) ;
50+
RooDataHist(RooStringView name, RooStringView title, const RooArgSet& vars, const char* binningName=0) ;
51+
RooDataHist(RooStringView name, RooStringView title, const RooArgSet& vars, const RooAbsData& data, Double_t initWgt=1.0) ;
52+
RooDataHist(RooStringView name, RooStringView title, const RooArgList& vars, const TH1* hist, Double_t initWgt=1.0) ;
53+
RooDataHist(RooStringView name, RooStringView title, const RooArgList& vars, RooCategory& indexCat, std::map<std::string,TH1*> histMap, Double_t initWgt=1.0) ;
54+
RooDataHist(RooStringView name, RooStringView title, const RooArgList& vars, RooCategory& indexCat, std::map<std::string,RooDataHist*> dhistMap, Double_t wgt=1.0) ;
5555
//RooDataHist(const char *name, const char *title, const RooArgList& vars, Double_t initWgt=1.0) ;
56-
RooDataHist(std::string_view name, std::string_view title, const RooArgList& vars, const RooCmdArg& arg1, const RooCmdArg& arg2=RooCmdArg(), const RooCmdArg& arg3=RooCmdArg(),
56+
RooDataHist(RooStringView name, RooStringView title, const RooArgList& vars, const RooCmdArg& arg1, const RooCmdArg& arg2=RooCmdArg(), const RooCmdArg& arg3=RooCmdArg(),
5757
const RooCmdArg& arg4=RooCmdArg(),const RooCmdArg& arg5=RooCmdArg(),const RooCmdArg& arg6=RooCmdArg(),const RooCmdArg& arg7=RooCmdArg(),const RooCmdArg& arg8=RooCmdArg()) ;
5858
RooDataHist& operator=(const RooDataHist&) = delete;
5959

60-
WRITE_TSTRING_COMPATIBLE_CONSTRUCTOR(RooDataHist)
61-
6260
RooDataHist(const RooDataHist& other, const char* newname = 0) ;
6361
TObject* Clone(const char* newname="") const override {
6462
return new RooDataHist(*this, newname && newname[0] != '\0' ? newname : GetName());
@@ -246,7 +244,7 @@ class RooDataHist : public RooAbsData, public RooDirItem {
246244
void setAllWeights(Double_t value) ;
247245

248246
void initialize(const char* binningName=0,Bool_t fillTree=kTRUE) ;
249-
RooDataHist(std::string_view name, std::string_view title, RooDataHist* h, const RooArgSet& varSubset,
247+
RooDataHist(RooStringView name, RooStringView title, RooDataHist* h, const RooArgSet& varSubset,
250248
const RooFormulaVar* cutVar, const char* cutRange, Int_t nStart, Int_t nStop, Bool_t copyCache) ;
251249
RooAbsData* reduceEng(const RooArgSet& varSubset, const RooFormulaVar* cutVar, const char* cutRange=0,
252250
std::size_t nStart=0, std::size_t nStop=std::numeric_limits<std::size_t>::max(), Bool_t copyCache=kTRUE) override;

roofit/roofitcore/inc/RooDataSet.h

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,28 +46,26 @@ class RooDataSet : public RooAbsData, public RooDirItem {
4646
RooDataSet() ;
4747

4848
// Empty constructor
49-
RooDataSet(std::string_view name, std::string_view title, const RooArgSet& vars, const char* wgtVarName=0) ;
49+
RooDataSet(RooStringView name, RooStringView title, const RooArgSet& vars, const char* wgtVarName=0) ;
5050

5151
// Universal constructor
52-
RooDataSet(std::string_view name, std::string_view title, const RooArgSet& vars, const RooCmdArg& arg1, const RooCmdArg& arg2=RooCmdArg(),
52+
RooDataSet(RooStringView name, RooStringView title, const RooArgSet& vars, const RooCmdArg& arg1, const RooCmdArg& arg2=RooCmdArg(),
5353
const RooCmdArg& arg3=RooCmdArg(), const RooCmdArg& arg4=RooCmdArg(),const RooCmdArg& arg5=RooCmdArg(),
5454
const RooCmdArg& arg6=RooCmdArg(),const RooCmdArg& arg7=RooCmdArg(),const RooCmdArg& arg8=RooCmdArg()) ;
5555

5656
// Constructor for subset of existing dataset
57-
RooDataSet(std::string_view name, std::string_view title, RooDataSet *data, const RooArgSet& vars,
57+
RooDataSet(RooStringView name, RooStringView title, RooDataSet *data, const RooArgSet& vars,
5858
const char *cuts=0, const char* wgtVarName=0);
59-
RooDataSet(std::string_view name, std::string_view title, RooDataSet *data, const RooArgSet& vars,
59+
RooDataSet(RooStringView name, RooStringView title, RooDataSet *data, const RooArgSet& vars,
6060
const RooFormulaVar& cutVar, const char* wgtVarName=0) ;
6161

6262

6363
// Constructor importing data from external ROOT Tree
64-
RooDataSet(std::string_view name, std::string_view title, TTree *tree, const RooArgSet& vars,
64+
RooDataSet(RooStringView name, RooStringView title, TTree *tree, const RooArgSet& vars,
6565
const char *cuts=0, const char* wgtVarName=0);
66-
RooDataSet(std::string_view name, std::string_view title, TTree *tree, const RooArgSet& vars,
66+
RooDataSet(RooStringView name, RooStringView title, TTree *tree, const RooArgSet& vars,
6767
const RooFormulaVar& cutVar, const char* wgtVarName=0) ;
6868

69-
WRITE_TSTRING_COMPATIBLE_CONSTRUCTOR(RooDataSet)
70-
7169
RooDataSet(RooDataSet const & other, const char* newname=0) ;
7270
virtual TObject* Clone(const char* newname = "") const override {
7371
return new RooDataSet(*this, newname && newname[0] != '\0' ? newname : GetName());
@@ -159,7 +157,7 @@ class RooDataSet : public RooAbsData, public RooDirItem {
159157
// Cache copy feature is not publicly accessible
160158
RooAbsData* reduceEng(const RooArgSet& varSubset, const RooFormulaVar* cutVar, const char* cutRange=0,
161159
std::size_t nStart=0, std::size_t nStop = std::numeric_limits<std::size_t>::max(), Bool_t copyCache=kTRUE) override;
162-
RooDataSet(std::string_view name, std::string_view title, RooDataSet *ntuple,
160+
RooDataSet(RooStringView name, RooStringView title, RooDataSet *ntuple,
163161
const RooArgSet& vars, const RooFormulaVar* cutVar, const char* cutRange, std::size_t nStart, std::size_t nStop, Bool_t copyCache, const char* wgtVarName=0);
164162

165163
RooArgSet addWgtVar(const RooArgSet& origVars, const RooAbsArg* wgtVar) ;

roofit/roofitcore/inc/RooTreeDataStore.h

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,20 @@ class RooTreeDataStore : public RooAbsDataStore {
3838
RooTreeDataStore() ;
3939
RooTreeDataStore(TTree* t, const RooArgSet& vars, const char* wgtVarName=0) ;
4040

41-
WRITE_TSTRING_COMPATIBLE_CONSTRUCTOR(RooTreeDataStore)
42-
4341
// Empty ctor
44-
RooTreeDataStore(std::string_view name, std::string_view title, const RooArgSet& vars, const char* wgtVarName=0) ;
42+
RooTreeDataStore(RooStringView name, RooStringView title, const RooArgSet& vars, const char* wgtVarName=0) ;
4543
virtual RooAbsDataStore* clone(const char* newname=0) const { return new RooTreeDataStore(*this,newname) ; }
4644
virtual RooAbsDataStore* clone(const RooArgSet& vars, const char* newname=0) const { return new RooTreeDataStore(*this,vars,newname) ; }
4745

4846
// Ctors from TTree
49-
RooTreeDataStore(std::string_view name, std::string_view title, const RooArgSet& vars, TTree& t, const RooFormulaVar& select, const char* wgtVarName=0) ;
50-
RooTreeDataStore(std::string_view name, std::string_view title, const RooArgSet& vars, TTree& t, const char* selExpr=0, const char* wgtVarName=0) ;
47+
RooTreeDataStore(RooStringView name, RooStringView title, const RooArgSet& vars, TTree& t, const RooFormulaVar& select, const char* wgtVarName=0) ;
48+
RooTreeDataStore(RooStringView name, RooStringView title, const RooArgSet& vars, TTree& t, const char* selExpr=0, const char* wgtVarName=0) ;
5149

5250
// Ctors from DataStore
53-
RooTreeDataStore(std::string_view name, std::string_view title, const RooArgSet& vars, const RooAbsDataStore& tds, const RooFormulaVar& select, const char* wgtVarName=0) ;
54-
RooTreeDataStore(std::string_view name, std::string_view title, const RooArgSet& vars, const RooAbsDataStore& tds, const char* selExpr=0, const char* wgtVarName=0) ;
51+
RooTreeDataStore(RooStringView name, RooStringView title, const RooArgSet& vars, const RooAbsDataStore& tds, const RooFormulaVar& select, const char* wgtVarName=0) ;
52+
RooTreeDataStore(RooStringView name, RooStringView title, const RooArgSet& vars, const RooAbsDataStore& tds, const char* selExpr=0, const char* wgtVarName=0) ;
5553

56-
RooTreeDataStore(std::string_view name, std::string_view title, RooAbsDataStore& tds,
54+
RooTreeDataStore(RooStringView name, RooStringView title, RooAbsDataStore& tds,
5755
const RooArgSet& vars, const RooFormulaVar* cutVar, const char* cutRange,
5856
Int_t nStart, Int_t nStop, Bool_t /*copyCache*/, const char* wgtVarName=0) ;
5957

@@ -158,7 +156,7 @@ class RooTreeDataStore : public RooAbsDataStore {
158156

159157
static Int_t _defTreeBufSize ;
160158

161-
void createTree(std::string_view name, std::string_view title) ;
159+
void createTree(RooStringView name, RooStringView title) ;
162160
TTree *_tree ; // TTree holding the data points
163161
TTree *_cacheTree ; //! TTree holding the cached function values
164162
const RooAbsArg* _cacheOwner ; //! Object owning cache contents

roofit/roofitcore/inc/RooVectorDataStore.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,7 @@ class RooVectorDataStore : public RooAbsDataStore {
4343
RooVectorDataStore() ;
4444

4545
// Empty ctor
46-
RooVectorDataStore(std::string_view name, std::string_view title, const RooArgSet& vars, const char* wgtVarName=0) ;
47-
48-
WRITE_TSTRING_COMPATIBLE_CONSTRUCTOR(RooVectorDataStore)
46+
RooVectorDataStore(RooStringView name, RooStringView title, const RooArgSet& vars, const char* wgtVarName=0) ;
4947

5048
virtual RooAbsDataStore* clone(const char* newname=0) const override { return new RooVectorDataStore(*this,newname) ; }
5149
virtual RooAbsDataStore* clone(const RooArgSet& vars, const char* newname=0) const override { return new RooVectorDataStore(*this,vars,newname) ; }
@@ -55,7 +53,7 @@ class RooVectorDataStore : public RooAbsDataStore {
5553
RooVectorDataStore(const RooVectorDataStore& other, const RooArgSet& vars, const char* newname=0) ;
5654

5755

58-
RooVectorDataStore(std::string_view name, std::string_view title, RooAbsDataStore& tds,
56+
RooVectorDataStore(RooStringView name, RooStringView title, RooAbsDataStore& tds,
5957
const RooArgSet& vars, const RooFormulaVar* cutVar, const char* cutRange,
6058
std::size_t nStart, std::size_t nStop, Bool_t /*copyCache*/, const char* wgtVarName=0) ;
6159

@@ -68,7 +66,7 @@ class RooVectorDataStore : public RooAbsDataStore {
6866

6967
template<class T>
7068
struct ArrayInfo {
71-
ArrayInfo(std::string_view n, T const* d) : name{n}, data{d} {}
69+
ArrayInfo(RooStringView n, T const* d) : name{n}, data{d} {}
7270
std::string name;
7371
T const* data;
7472
};

roofit/roofitcore/src/RooAbsData.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,8 @@ RooAbsData::RooAbsData()
183183
/// Constructor from a set of variables. Only fundamental elements of vars
184184
/// (RooRealVar,RooCategory etc) are stored as part of the dataset
185185

186-
RooAbsData::RooAbsData(std::string_view name, std::string_view title, const RooArgSet& vars, RooAbsDataStore* dstore) :
187-
TNamed(TString{name},TString{title}),
186+
RooAbsData::RooAbsData(RooStringView name, RooStringView title, const RooArgSet& vars, RooAbsDataStore* dstore) :
187+
TNamed(name,title),
188188
_vars("Dataset Variables"),
189189
_cachedVars("Cached Variables"),
190190
_dstore(dstore),

roofit/roofitcore/src/RooCompositeDataStore.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ RooCompositeDataStore::RooCompositeDataStore() : _indexCat(0), _curStore(0), _cu
6161
/// Convert map by label to map by index for more efficient internal use
6262

6363
RooCompositeDataStore::RooCompositeDataStore(
64-
std::string_view name, std::string_view title,
64+
RooStringView name, RooStringView title,
6565
const RooArgSet& vars, RooCategory& indexCat,map<std::string,RooAbsDataStore*> inputData) :
6666
RooAbsDataStore(name,title,RooArgSet(vars,indexCat)), _indexCat(&indexCat), _curStore(0), _curIndex(0), _ownComps(kFALSE)
6767
{

0 commit comments

Comments
 (0)