29 class RooAbsCategory ;
36 class RooAbsDataStore ;
39 class RooAbsData :
public TNamed,
public RooPrintable {
44 RooAbsData(
const char *name,
const char *title,
const RooArgSet& vars, RooAbsDataStore* store=0) ;
45 RooAbsData(
const RooAbsData& other,
const char* newname = 0) ;
46 RooAbsData& operator=(
const RooAbsData& other);
47 virtual ~RooAbsData() ;
48 virtual RooAbsData* emptyClone(
const char* newName=0,
const char* newTitle=0,
const RooArgSet* vars=0,
const char* wgtVarName=0)
const = 0 ;
51 RooAbsData* reduce(
const RooCmdArg& arg1,
const RooCmdArg& arg2=RooCmdArg(),
const RooCmdArg& arg3=RooCmdArg(),
const RooCmdArg& arg4=RooCmdArg(),
52 const RooCmdArg& arg5=RooCmdArg(),
const RooCmdArg& arg6=RooCmdArg(),
const RooCmdArg& arg7=RooCmdArg(),
const RooCmdArg& arg8=RooCmdArg()) ;
53 RooAbsData* reduce(
const char* cut) ;
54 RooAbsData* reduce(
const RooFormulaVar& cutVar) ;
55 RooAbsData* reduce(
const RooArgSet& varSubset,
const char* cut=0) ;
56 RooAbsData* reduce(
const RooArgSet& varSubset,
const RooFormulaVar& cutVar) ;
58 RooAbsDataStore* store() {
return _dstore ; }
59 const RooAbsDataStore* store()
const {
return _dstore ; }
60 const TTree* tree()
const ;
61 TTree *GetClonedTree()
const;
63 void convertToVectorStore() ;
64 virtual void convertToTreeStore();
66 void attachBuffers(
const RooArgSet& extObs) ;
70 virtual void Draw(Option_t* option =
"") ;
72 void checkInit()
const ;
75 virtual Bool_t changeObservableName(
const char* from,
const char* to) ;
78 virtual void add(
const RooArgSet& row, Double_t weight=1, Double_t weightError=0) = 0 ;
82 virtual inline const RooArgSet*
get()
const {
86 virtual Double_t weight()
const = 0 ;
87 virtual Double_t weightSquared()
const = 0 ;
88 virtual Bool_t valid()
const {
return kTRUE ; }
89 enum ErrorType { Poisson, SumW2, None, Auto, Expected } ;
90 virtual Double_t weightError(ErrorType etype=Poisson)
const ;
91 virtual void weightError(Double_t& lo, Double_t& hi, ErrorType etype=Poisson)
const ;
92 virtual const RooArgSet*
get(Int_t index)
const ;
94 virtual RooSpan<const double> getWeightBatch(std::size_t first, std::size_t last)
const = 0;
96 virtual Int_t numEntries()
const ;
97 virtual Double_t sumEntries()
const = 0 ;
98 virtual Double_t sumEntries(
const char* cutSpec,
const char* cutRange=0)
const = 0 ;
99 virtual Bool_t isWeighted()
const {
103 virtual Bool_t isNonPoissonWeighted()
const {
107 virtual void reset() ;
110 Bool_t getRange(RooRealVar& var, Double_t& lowest, Double_t& highest, Double_t marginFrac=0, Bool_t symMode=kFALSE)
const ;
113 virtual Roo1DTable* table(
const RooArgSet& catSet,
const char* cuts=
"",
const char* opts=
"")
const ;
114 virtual Roo1DTable* table(
const RooAbsCategory& cat,
const char* cuts=
"",
const char* opts=
"")
const ;
116 virtual RooPlot* plotOn(RooPlot* frame,
117 const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
118 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
119 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none(),
120 const RooCmdArg& arg7=RooCmdArg::none(),
const RooCmdArg& arg8=RooCmdArg::none())
const ;
122 virtual RooPlot* plotOn(RooPlot* frame,
const RooLinkedList& cmdList)
const ;
126 PlotOpt() : cuts(
""), drawOptions(
"P"), bins(0), etype(RooAbsData::Poisson), cutRange(0), histName(0), histInvisible(kFALSE),
127 addToHistName(0),addToWgtSelf(1.),addToWgtOther(1.),xErrorSize(1),refreshFrameNorm(kFALSE),correctForBinWidth(kTRUE),
130 Option_t* drawOptions ;
131 RooAbsBinning* bins ;
132 RooAbsData::ErrorType etype ;
133 const char* cutRange ;
134 const char* histName ;
135 Bool_t histInvisible ;
136 const char* addToHistName ;
137 Double_t addToWgtSelf ;
138 Double_t addToWgtOther ;
139 Double_t xErrorSize ;
140 Bool_t refreshFrameNorm ;
141 Bool_t correctForBinWidth ;
142 Double_t scaleFactor ;
146 virtual TList* split(
const RooAbsCategory& splitCat, Bool_t createEmptyDataSets=kFALSE)
const ;
149 Bool_t canSplitFast()
const ;
150 RooAbsData* getSimData(
const char* idxstate) ;
153 TH1 *createHistogram(
const char *name,
const RooAbsRealLValue& xvar,
154 const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
155 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
156 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none(),
157 const RooCmdArg& arg7=RooCmdArg::none(),
const RooCmdArg& arg8=RooCmdArg::none())
const ;
159 TH1 *createHistogram(
const char *name,
const RooAbsRealLValue& xvar,
const RooLinkedList& argList)
const ;
160 TH1 *createHistogram(
const char* varNameList, Int_t xbins=0, Int_t ybins=0, Int_t zbins=0)
const ;
163 virtual TH1 *fillHistogram(TH1 *hist,
const RooArgList &plotVars,
const char *cuts=
"",
const char* cutRange=0)
const;
166 inline virtual void Print(Option_t *options= 0)
const {
168 printStream(defaultPrintStream(),defaultPrintContents(options),defaultPrintStyle(options));
171 virtual void printName(std::ostream& os)
const ;
172 virtual void printTitle(std::ostream& os)
const ;
173 virtual void printClassName(std::ostream& os)
const ;
174 void printMultiline(std::ostream& os, Int_t contents, Bool_t verbose=kFALSE, TString indent=
"")
const ;
176 virtual Int_t defaultPrintContents(Option_t* opt)
const ;
178 void setDirtyProp(Bool_t flag) ;
180 Double_t moment(RooRealVar &var, Double_t order,
const char* cutSpec=0,
const char* cutRange=0)
const ;
181 Double_t moment(RooRealVar &var, Double_t order, Double_t offset,
const char* cutSpec=0,
const char* cutRange=0)
const ;
182 Double_t standMoment(RooRealVar &var, Double_t order,
const char* cutSpec=0,
const char* cutRange=0)
const ;
184 Double_t mean(RooRealVar& var,
const char* cutSpec=0,
const char* cutRange=0)
const {
return moment(var,1,0,cutSpec,cutRange) ; }
185 Double_t sigma(RooRealVar& var,
const char* cutSpec=0,
const char* cutRange=0)
const {
return sqrt(moment(var,2,cutSpec,cutRange)) ; }
186 Double_t skewness(RooRealVar& var,
const char* cutSpec=0,
const char* cutRange=0)
const {
return standMoment(var,3,cutSpec,cutRange) ; }
187 Double_t kurtosis(RooRealVar& var,
const char* cutSpec=0,
const char* cutRange=0)
const {
return standMoment(var,4,cutSpec,cutRange) ; }
189 Double_t covariance(RooRealVar &x,RooRealVar &y,
const char* cutSpec=0,
const char* cutRange=0)
const {
return corrcov(x,y,cutSpec,cutRange,kFALSE) ; }
190 Double_t correlation(RooRealVar &x,RooRealVar &y,
const char* cutSpec=0,
const char* cutRange=0)
const {
return corrcov(x,y,cutSpec,cutRange,kTRUE) ; }
192 TMatrixDSym* covarianceMatrix(
const char* cutSpec=0,
const char* cutRange=0)
const {
return covarianceMatrix(*
get(),cutSpec,cutRange) ; }
193 TMatrixDSym* correlationMatrix(
const char* cutSpec=0,
const char* cutRange=0)
const {
return correlationMatrix(*
get(),cutSpec,cutRange) ; }
194 TMatrixDSym* covarianceMatrix(
const RooArgList& vars,
const char* cutSpec=0,
const char* cutRange=0)
const {
return corrcovMatrix(vars,cutSpec,cutRange,kFALSE) ; }
195 TMatrixDSym* correlationMatrix(
const RooArgList& vars,
const char* cutSpec=0,
const char* cutRange=0)
const {
return corrcovMatrix(vars,cutSpec,cutRange,kTRUE) ; }
197 RooRealVar* meanVar(RooRealVar &var,
const char* cutSpec=0,
const char* cutRange=0)
const ;
198 RooRealVar* rmsVar(RooRealVar &var,
const char* cutSpec=0,
const char* cutRange=0)
const ;
200 virtual RooPlot* statOn(RooPlot* frame,
201 const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
202 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
203 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none(),
204 const RooCmdArg& arg7=RooCmdArg::none(),
const RooCmdArg& arg8=RooCmdArg::none()) ;
206 virtual RooPlot* statOn(RooPlot* frame,
const char *what,
207 const char *label=
"", Int_t sigDigits= 2,
208 Option_t *options=
"NELU", Double_t xmin=0.15,
209 Double_t xmax= 0.65,Double_t ymax=0.85,
210 const char* cutSpec=0,
const char* cutRange=0,
211 const RooCmdArg* formatCmd=0);
213 virtual void RecursiveRemove(TObject *obj);
215 Bool_t hasFilledCache()
const ;
217 void addOwnedComponent(
const char* idxlabel, RooAbsData& data) ;
218 static void claimVars(RooAbsData*) ;
219 static Bool_t releaseVars(RooAbsData*) ;
221 enum StorageType { Tree, Vector, Composite };
223 static void setDefaultStorageType(StorageType s) ;
225 static StorageType getDefaultStorageType();
229 static StorageType defaultStorageType ;
231 StorageType storageType;
233 Double_t corrcov(RooRealVar &x,RooRealVar &y,
const char* cutSpec,
const char* cutRange, Bool_t corr)
const ;
234 TMatrixDSym* corrcovMatrix(
const RooArgList& vars,
const char* cutSpec,
const char* cutRange, Bool_t corr)
const ;
236 virtual void optimizeReadingWithCaching(RooAbsArg& arg,
const RooArgSet& cacheList,
const RooArgSet& keepObsList) ;
237 Bool_t allClientsCached(RooAbsArg*,
const RooArgSet&) ;
241 virtual RooPlot *plotOn(RooPlot *frame, PlotOpt o)
const ;
242 virtual RooPlot *plotAsymOn(RooPlot* frame,
const RooAbsCategoryLValue& asymCat, PlotOpt o)
const ;
243 virtual RooPlot *plotEffOn(RooPlot* frame,
const RooAbsCategoryLValue& effCat, PlotOpt o)
const ;
247 friend class RooAbsArg ;
248 friend class RooAbsReal ;
249 friend class RooAbsOptTestStatistic ;
250 friend class RooAbsCachedPdf ;
252 virtual void cacheArgs(
const RooAbsArg* owner, RooArgSet& varSet,
const RooArgSet* nset=0, Bool_t skipZeroWeights=kFALSE) ;
253 virtual void resetCache() ;
254 virtual void setArgStatus(
const RooArgSet& set, Bool_t active) ;
255 virtual void attachCache(
const RooAbsArg* newOwner,
const RooArgSet& cachedVars) ;
257 virtual RooAbsData* cacheClone(
const RooAbsArg* newCacheOwner,
const RooArgSet* newCacheVars,
const char* newName=0) = 0 ;
258 virtual RooAbsData* reduceEng(
const RooArgSet& varSubset,
const RooFormulaVar* cutVar,
const char* cutRange=0,
259 Int_t nStart=0, Int_t nStop=2000000000, Bool_t copyCache=kTRUE) = 0 ;
261 RooRealVar* dataRealVar(
const char* methodname, RooRealVar& extVar)
const ;
265 RooArgSet _cachedVars ;
267 RooAbsDataStore* _dstore ;
269 std::map<std::string,RooAbsData*> _ownedComponents ;
272 ClassDef(RooAbsData, 5)