27#ifdef ROOFIT_MULTIPROCESS
32namespace TestStatistics {
53 std::shared_ptr<WrapperCalculationCleanFlags> calculation_is_clean,
55 : likelihood_(std::move(likelihood)),
56 calculation_is_clean_(std::move(calculation_is_clean)),
57 shared_offset_(std::move(
offset))
69 throw std::logic_error(
"in LikelihoodWrapper constructor: _likelihood is not of a valid subclass!");
76 const std::vector<ROOT::Fit::ParameterSettings> & )
107 <<
"LikelihoodWrapper::setOffsettingMode(" <<
GetName()
108 <<
"): changed offsetting mode while offsetting was enabled; resetting offset values" << std::endl;
142 assert(sum_likelihood !=
nullptr);
143 for (std::size_t comp_ix = 0; comp_ix <
likelihood_->getNComponents(); ++comp_ix) {
144 auto component_subsidiary_cast =
145 dynamic_cast<RooSubsidiaryL *
>(sum_likelihood->GetComponents()[comp_ix].get());
152 <<
"LikelihoodSerial::evaluate(" <<
GetName() <<
"): Likelihood offset now set to "
170 std::vector<std::size_t> comp_was_changed;
174 assert(unbinned_likelihood !=
nullptr);
175 if (unbinned_likelihood->setApplyWeightSquared(flag))
176 comp_was_changed.emplace_back(0);
181 assert(sum_likelihood !=
nullptr);
182 for (std::size_t comp_ix = 0; comp_ix <
likelihood_->getNComponents(); ++comp_ix) {
183 auto component_unbinned_cast =
dynamic_cast<RooUnbinnedL *
>(sum_likelihood->GetComponents()[comp_ix].get());
184 if (component_unbinned_cast !=
nullptr) {
185 if (component_unbinned_cast->setApplyWeightSquared(flag))
186 comp_was_changed.emplace_back(comp_ix);
192 throw std::logic_error(
"LikelihoodWrapper::setApplyWeightSquared can only be used on unbinned likelihoods, but "
193 "the wrapped likelihood_ member is not a RooUnbinnedL nor a RooSumL containing an unbinned"
197 if (!comp_was_changed.empty()) {
206std::unique_ptr<LikelihoodWrapper>
208 std::shared_ptr<WrapperCalculationCleanFlags> calculationIsClean,
SharedOffset offset)
210 switch (likelihoodMode) {
212 return std::make_unique<LikelihoodSerial>(std::move(likelihood), std::move(calculationIsClean),
216#ifdef ROOFIT_MULTIPROCESS
217 return std::make_unique<LikelihoodJob>(std::move(likelihood), std::move(calculationIsClean), std::move(
offset));
219 throw std::runtime_error(
"MinuitFcnGrad ctor with LikelihoodMode::multiprocess is not available in this build "
220 "without RooFit::Multiprocess!");
224 throw std::logic_error(
"In MinuitFcnGrad constructor: likelihoodMode has an unsupported value!");
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char mode
virtual bool isOffsetting() const
virtual void synchronizeParameterSettings(const std::vector< ROOT::Fit::ParameterSettings > ¶meter_settings)
std::shared_ptr< RooAbsL > likelihood_
SharedOffset shared_offset_
virtual std::string GetTitle() const
void setOffsettingMode(OffsettingMode mode)
virtual std::string GetName() const
virtual void enableOffsetting(bool flag)
OffsettingMode offsetting_mode_
double defaultErrorLevel() const
virtual void updateMinuitExternalParameterValues(const std::vector< double > &minuit_external_x)
virtual void updateMinuitInternalParameterValues(const std::vector< double > &minuit_internal_x)
Minuit passes in parameter values that may not conform to RooFit internal standards (like applying ra...
void calculate_offsets()
(Re)calculate (on each worker) all component offsets.
static std::unique_ptr< LikelihoodWrapper > create(LikelihoodMode likelihoodMode, std::shared_ptr< RooAbsL > likelihood, std::shared_ptr< WrapperCalculationCleanFlags > calculationIsClean, SharedOffset offset)
Factory method.
LikelihoodWrapper(std::shared_ptr< RooAbsL > likelihood, std::shared_ptr< WrapperCalculationCleanFlags > calculation_is_clean, SharedOffset offset)
virtual void synchronizeWithMinimizer(const ROOT::Math::MinimizerOptions &options)
Synchronize minimizer settings with calculators in child classes.
void setApplyWeightSquared(bool flag)
LikelihoodType likelihood_type_
Likelihood class that sums over multiple -log components.
void swap(const std::vector< std::size_t > &component_keys)
When calculating an unbinned likelihood with square weights applied, a different offset is necessary.
OffsetVec & offsets_save()
OffsettingMode
Previously, offsetting was only implemented for RooNLLVar components of a likelihood,...
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...