28using std::cout, std::endl, std::vector, std::list, std::ostream, std::ostream_iterator;
42 const double value = 0.0,
const double error = 1.0):
93 vector<double>::const_iterator
boxit = b2.
fMin.begin();
94 vector<double>::const_iterator
bigit = b1.
fMax.begin();
153 const unsigned int size,
const unsigned int n,
154 list<Box>&
l,
const double val,
const double error)
199 fList = std::make_unique<ProxyListBox>();
211 fList = std::make_unique<ProxyListBox>();
218 fList = std::make_unique<ProxyListBox>(*
rhs.fList);
223 fList = std::make_unique<ProxyListBox>(*
rhs.fList);
232 return fList->GetList().size();
238 return fList->Begin()->GetMin().size();
242 const double content,
const double error)
250 list<Box>::iterator it;
254 if ( it !=
fList->End() )
258 cout <<
"SparseData::Add -> FAILED! box not found! " << endl;
271 it->GetMin().size(), it->GetMin().size() - 1,
279 std::vector<double>& min, std::vector<double>&max,
280 double&
content,
double& error)
285 unsigned int counter = 0;
286 list<Box>::iterator it =
fList->Begin();
287 while ( it !=
fList->End() && counter != i ) {
292 if ( (it ==
fList->End()) || (counter != i) )
293 throw std::out_of_range(
"SparseData::GetPoint");
298 error = it->GetError();
312 list<Box>::iterator it =
fList->Begin();
313 const unsigned int dim = it->GetMin().size();
315 bd.Initialize(
fList->GetList().size(), dim);
317 for ( ; it !=
fList->End(); ++it )
321 for (
unsigned int i = 0; i < dim; ++i)
323 mid[i] = ((it->GetMax()[i] - it->GetMin()[i]) /2) + it->GetMin()[i];
326 bd.Add(&
mid[0], it->GetVal(), it->GetError());
335 list<Box>::iterator it =
fList->Begin();
337 bd.Initialize(
fList->GetList().size(), it->GetMin().size());
339 for ( ; it !=
fList->End(); ++it )
342 bd.Add(&(it->GetMin()[0]), it->GetVal(), it->GetError());
344 bd.AddBinUpEdge(&(it->GetMax()[0]));
353 list<Box>::iterator it =
fList->Begin();
354 const unsigned int dim = it->GetMin().size();
356 bd.Initialize(
fList->GetList().size(), dim);
358 for ( ; it !=
fList->End(); ++it )
361 if ( it->GetVal() == 0 )
continue;
364 for (
unsigned int i = 0; i < dim; ++i)
366 mid[i] = ((it->GetMax()[i] - it->GetMin()[i]) /2) + it->GetMin()[i];
369 bd.Add(&
mid[0], it->GetVal(), it->GetError());
380 os <<
"val: " <<
b.GetVal();
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
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 value
void operator()(double value)
AreaComparer(vector< double >::iterator iter)
vector< double >::iterator fIter
Class describing the binned data sets : vectors of x coordinates, y values and optionally error on y ...
bool operator()(const Box &b1)
BoxContainer(const Box &b)
const vector< double > & GetMax() const
void AddVal(const double value)
friend ostream & operator<<(ostream &os, const Box &b)
bool operator==(const Box &b)
Box(const vector< double > &min, const vector< double > &max, const double value=0.0, const double error=1.0)
const vector< double > & GetMin() const
Base class for all the fit data types: Stores the coordinates and the DataOptions.
FitData & operator=(const FitData &rhs)
list< Box >::iterator Begin()
void Remove(list< Box >::iterator it)
list< Box >::iterator End()
SparseData class representing the data of a THNSparse histogram The data needs to be converted to a B...
std::unique_ptr< ProxyListBox > fList
void Add(std::vector< double > &min, std::vector< double > &max, const double content, const double error=1.0)
Adds a new bin specified by the vectors.
unsigned int NDim() const
Returns the dimension of the object (bins)
void GetPoint(const unsigned int i, std::vector< double > &min, std::vector< double > &max, double &content, double &error)
unsigned int NPoints() const
Returns the number of points stored.
void GetBinDataNoZeros(BinData &) const
Same as before, but including zero content bins.
SparseData & operator=(const SparseData &rhs)
Assignment operator.
void PrintList() const
Debug method to print the list of bins stored.
void GetBinData(BinData &) const
Transforms the data into a ROOT::Fit::BinData structure.
SparseData(std::vector< double > &min, std::vector< double > &max)
Constructor with a vector.
~SparseData() override
Destructor.
void GetBinDataIntegral(BinData &) const
Same as before, but returning a BinData with integral format (containing bin edges)
const_iterator begin() const
const_iterator end() const
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
TFitResultPtr Fit(FitObject *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
void DivideBox(const vector< double > &min, const vector< double > &max, const vector< double > &bmin, const vector< double > &bmax, const unsigned int size, const unsigned int n, list< Box > &l, const double val, const double error)
ostream & operator<<(ostream &os, const ROOT::Fit::Box &b)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...