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)