File indexing completed on 2025-01-18 10:11:21
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef ROO_ERROR_VAR
0017 #define ROO_ERROR_VAR
0018
0019 #include "RooAbsReal.h"
0020 #include "RooRealVar.h"
0021 #include "RooRealProxy.h"
0022
0023 #include <list>
0024 #include <string>
0025
0026 class RooVectorDataStore;
0027
0028 class RooErrorVar : public RooAbsRealLValue {
0029 public:
0030
0031
0032 inline RooErrorVar() {
0033 }
0034 RooErrorVar(const char *name, const char *title, const RooRealVar& input) ;
0035 RooErrorVar(const RooErrorVar& other, const char* name=nullptr);
0036 TObject* clone(const char* newname) const override { return new RooErrorVar(*this,newname); }
0037 ~RooErrorVar() override ;
0038
0039 double getValV(const RooArgSet* set=nullptr) const override ;
0040
0041 double evaluate() const override {
0042
0043 return ((RooRealVar&)_realVar.arg()).getError() ;
0044 }
0045
0046 void setVal(double value) override {
0047
0048 ((RooRealVar&)_realVar.arg()).setVal(value) ;
0049 }
0050
0051 inline bool isFundamental() const override {
0052
0053 return true ;
0054 }
0055
0056
0057 bool readFromStream(std::istream& is, bool compact, bool verbose=false) override ;
0058 void writeToStream(std::ostream& os, bool compact) const override ;
0059
0060
0061
0062 inline void setMin(double value) {
0063 setMin(nullptr,value) ;
0064 }
0065
0066 inline void setMax(double value) {
0067 setMax(nullptr,value) ;
0068 }
0069
0070 inline void setRange(double min, double max) {
0071 setRange(nullptr,min,max) ;
0072 }
0073 void setMin(const char* name, double value) ;
0074 void setMax(const char* name, double value) ;
0075 void setRange(const char* name, double min, double max) ;
0076
0077 void setBins(Int_t nBins);
0078 void setBinning(const RooAbsBinning& binning, const char* name=nullptr) ;
0079 const RooAbsBinning& getBinning(const char* name=nullptr, bool verbose=true, bool createOnTheFly=false) const override ;
0080 RooAbsBinning& getBinning(const char* name=nullptr, bool verbose=true, bool createOnTheFly=false) override ;
0081 bool hasBinning(const char* name) const override ;
0082 std::list<std::string> getBinningNames() const override ;
0083
0084
0085 void removeMin(const char* name=nullptr);
0086 void removeMax(const char* name=nullptr);
0087 void removeRange(const char* name=nullptr);
0088
0089 using RooAbsRealLValue::operator= ;
0090 using RooAbsRealLValue::setVal ;
0091
0092 protected:
0093
0094 RooLinkedList _altBinning ;
0095
0096 void syncCache(const RooArgSet* set=nullptr) override ;
0097
0098 RooRealProxy _realVar ;
0099 std::unique_ptr<RooAbsBinning> _binning ;
0100
0101 ClassDefOverride(RooErrorVar,1)
0102 };
0103
0104 #endif