57using std::endl, std::ostream;
 
   90  _paramSet(
"paramSet",
"Set of parameters",
this),
 
   94  _rangeName(cfg.rangeName),
 
   95  _addCoefRangeName(cfg.addCoefRangeName),
 
   96  _splitRange(cfg.splitCutRange),
 
   97  _verbose(cfg.verbose),
 
  100  _nEvents{
data.numEntries()},
 
  101  _nCPU(cfg.nCPU != -1 ? cfg.nCPU : 1),
 
  102  _mpinterl(cfg.interleave),
 
  103  _takeGlobalObservablesFromData{cfg.takeGlobalObservablesFromData}
 
 
  116  _paramSet(
"paramSet",
"Set of parameters",
this),
 
  120  _rangeName(
other._rangeName),
 
  121  _addCoefRangeName(
other._addCoefRangeName),
 
  122  _splitRange(
other._splitRange),
 
  123  _verbose(
other._verbose),
 
  126  _nEvents{_data->numEntries()},
 
  128  _mpinterl(
other._mpinterl),
 
  129  _doOffset(
other._doOffset),
 
  130  _takeGlobalObservablesFromData{
other._takeGlobalObservablesFromData},
 
  131  _offset(
other._offset),
 
  132  _evalCarry(
other._evalCarry)
 
 
  181          double y = 
gof->getValV();
 
  182          carry += 
gof->getCarry();
 
  184          const double t = 
sum + 
y;
 
  185          carry = (t - 
sum) - 
y;
 
  214      const double t = 
sum + 
y;
 
  215      carry = (t - 
sum) - 
y;
 
  255      throw std::logic_error(
"this should never happen");
 
 
  282  if (
_init) 
return false;
 
 
  327    os << 
indent << 
"RooAbsTestStatistic begin GOF contents" << endl ;
 
  328    for (std::size_t i = 0; i < 
_gofArray.size(); ++i) {
 
  330      indent2 += 
"[" + std::to_string(i) + 
"] ";
 
  333    os << 
indent << 
"RooAbsTestStatistic end GOF contents" << endl;
 
 
  418    ccoutD(Eval) << 
"RooAbsTestStatistic::initMPMode: starting remote server process #" << i << endl;
 
  427  coutI(Eval) << 
"RooAbsTestStatistic::initMPMode: started " << 
_nCPU << 
" remote server process." << endl;
 
 
  442                                      std::string 
const& rangeName, std::string 
const& addCoefRangeName)
 
  456    if(!rangeName.empty()) {
 
  470      ccoutI(Fitting) << 
"RooAbsTestStatistic::initSimMode: creating slave calculator #" << 
_gofArray.size() << 
" for state " << 
catName 
  471          << 
" (" << 
dset->numEntries() << 
" dataset entries)" << endl;
 
  517  coutI(Fitting) << 
"RooAbsTestStatistic::initSimMode: created " << 
_gofArray.size() << 
" slave calculators." << endl;
 
 
  542    if (
indata.canSplitFast()) {
 
  547    } 
else if (0 == 
indata.numEntries()) {
 
  555        coutE(Fitting) << 
"RooAbsTestStatistic::initSimMode(" << 
GetName() << 
") ERROR: index category of simultaneous pdf is missing in dataset, aborting" << endl;
 
  556        throw std::runtime_error(
"RooAbsTestStatistic::initSimMode() ERROR, index category of simultaneous pdf is missing in dataset, aborting");
 
  563          coutE(DataHandling) << 
"RooAbsTestStatistic::setData(" << 
GetName() << 
") ERROR: Cannot find component data for state " << 
gof->GetName() << endl;
 
  570    coutF(DataHandling) << 
"RooAbsTestStatistic::setData(" << 
GetName() << 
") FATAL: setData() is not supported in multi-processor mode" << endl;
 
  571    throw std::runtime_error(
"RooAbsTestStatistic::setData is not supported in MPMaster mode");
 
 
static void indent(ostringstream &buf, int indent_level)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
The Kahan summation is a compensated summation algorithm, which significantly reduces numerical error...
bool recursiveRedirectServers(const RooAbsCollection &newServerList, bool mustReplaceAll=false, bool nameChange=false, bool recurseInNewSet=true)
Recursively replace all servers with the new servers in newSet.
R__DEPRECATED(6, 36, "Use getObservables().") RooFit R__DEPRECATED(6, 36, "Use getObservables().") RooFit R__DEPRECATED(6, 36, "Use getObservables().") RooFit const RooAbsArg &testArg const
bool addOwnedComponents(const RooAbsCollection &comps)
Take ownership of the contents of 'comps'.
void setValueDirty()
Mark the element dirty. This forces a re-evaluation when a value is requested.
Abstract base class for objects that represent a discrete value that can be set from the outside,...
Abstract container object that can hold multiple RooAbsArg objects.
Abstract base class for binned and unbinned datasets.
Abstract base class for test statistics objects that evaluate a function or PDF at each point of a gi...
Abstract interface for all probability density functions.
Abstract base class for objects that represent a real value and implements functionality common to al...
bool redirectServersHook(const RooAbsCollection &newServerList, bool mustReplaceAll, bool nameChange, bool isRecursiveStep) override
Function that is called at the end of redirectServers().
Abstract base class for all test statistics.
Int_t _setNum
Partition number of this instance in parallel calculation mode.
virtual RooAbsTestStatistic * create(const char *name, const char *title, RooAbsReal &real, RooAbsData &data, const RooArgSet &projDeps, Configuration const &cfg)=0
virtual bool processEmptyDataSets() const
double _evalCarry
! carry of Kahan sum in evaluatePartition
std::string _addCoefRangeName
Name of reference to be used for RooAddPdf components.
Int_t _nEvents
Total number of events in test statistic calculation.
GOFOpMode operMode() const
Int_t _nCPU
Number of processors to use in parallel calculation mode.
RooSetProxy _paramSet
Parameters of the test statistic (=parameters of the input function)
virtual double globalNormalization() const
RooAbsReal * _func
Pointer to original input function.
bool setData(RooAbsData &data, bool cloneData=true) override
Change dataset that is used to given one.
void printCompactTreeHook(std::ostream &os, const char *indent="") override
Add extra information on component test statistics when printing itself as part of a tree structure.
Int_t _numSets
Total number of partitions in parallel calculation mode.
RooFit::MPSplit _mpinterl
Use interleaving strategy rather than N-wise split for partitioning of dataset for multiprocessor-spl...
bool isOffsetting() const override
double evaluate() const override
Calculate and return value of test statistic.
GOFOpMode _gofOpMode
Operation mode of test statistic instance.
virtual bool setDataSlave(RooAbsData &, bool=true, bool=false)
void initMPMode(RooAbsReal *real, RooAbsData *data, const RooArgSet *projDeps, std::string const &rangeName, std::string const &addCoefRangeName)
Initialize multi-processor calculation mode.
std::string _rangeName
Name of range in which to calculate test statistic.
RooAbsTestStatistic(const char *name, const char *title, RooAbsReal &real, RooAbsData &data, const RooArgSet &projDeps, Configuration const &cfg)
Create a test statistic from the given function and the data.
void constOptimizeTestStatistic(ConstOpCode opcode, bool doAlsoTrackingOpt=true) override
Forward constant term optimization management calls to component test statistics.
bool _init
! Is object initialized
ROOT::Math::KahanSum< double > _offset
! Offset as KahanSum to avoid loss of precision
virtual void runRecalculateCache(std::size_t, std::size_t, std::size_t) const
Int_t _extSet
! Number of designated set to calculated extended term
std::vector< std::unique_ptr< RooAbsTestStatistic > > _gofArray
! Array of sub-contexts representing part of the combined test statistic
bool initialize()
One-time initialization of the test statistic.
const RooArgSet * _projDeps
Pointer to set with projected observables.
void initSimMode(RooSimultaneous *pdf, RooAbsData *data, const RooArgSet *projDeps, std::string const &rangeName, std::string const &addCoefRangeName)
Initialize simultaneous p.d.f processing mode.
~RooAbsTestStatistic() override
Destructor.
virtual double getCarry() const
bool _verbose
Verbose messaging if true.
void enableOffsetting(bool flag) override
virtual double evaluatePartition(std::size_t firstEvent, std::size_t lastEvent, std::size_t stepSize) const =0
bool _splitRange
Split rangeName in RooSimultaneous index labels if true.
virtual double combinedValue(RooAbsReal **gofArray, Int_t nVal) const =0
pRooRealMPFE * _mpfeArray
! Array of parallel execution frond ends
bool _doOffset
Apply interval value offset to control numeric precision?
RooAbsData * _data
Pointer to original input dataset.
const bool _takeGlobalObservablesFromData
If the global observable values are taken from data.
void setMPSet(Int_t setNum, Int_t numSets)
Set MultiProcessor set number identification of this instance.
bool redirectServersHook(const RooAbsCollection &newServerList, bool mustReplaceAll, bool nameChange, bool isRecursive) override
Forward server redirect calls to component test statistics.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooArgSet * selectCommon(const RooAbsCollection &refColl) const
Use RooAbsCollection::selecCommon(), but return as RooArgSet.
Object to represent discrete states.
bool add(const RooAbsArg &var, bool valueServer, bool shapeServer, bool silent)
Overloaded RooCollection_t::add() method insert object into set and registers object as server to own...
Multi-processor front-end for parallel calculation of RooAbsReal objects.
void initialize()
Initialize the remote process and message passing pipes between current process and remote process.
void constOptimizeTestStatistic(ConstOpCode opcode, bool doAlsoTracking=true) override
Intercept call to optimize constant term in test statistics and forward it to object on server side.
virtual double getCarry() const
void enableOffsetting(bool flag) override
Control verbose messaging related to inter process communication on both client and server side.
void followAsSlave(RooRealMPFE &master)
double getValV(const RooArgSet *nset=nullptr) const override
If value needs recalculation and calculation has not been started with a call to calculate() start it...
Facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
std::string getRangeNameForSimComponent(std::string const &rangeName, bool splitRange, std::string const &catName)
BinnedLOutput getBinnedL(RooAbsPdf const &pdf)
std::string rangeName
Stores the configuration parameters for RooAbsTestStatistic.
std::string addCoefRangeName
bool takeGlobalObservablesFromData
double integrateOverBinsPrecision
RooFit::MPSplit interleave
static uint64_t sum(uint64_t i)