13 #ifndef ROOT_Fit_UnBinData 
   14 #define ROOT_Fit_UnBinData 
   42 class UnBinData : 
public FitData {
 
   50   explicit UnBinData( 
unsigned int maxpoints = 0, 
unsigned int dim = 1,
 
   51     bool isWeighted = 
false ) :
 
   52     FitData( maxpoints, isWeighted ? dim + 1 : dim ),
 
   56     assert( !fWeighted || dim >= 2 );
 
   63   explicit UnBinData ( 
const DataRange & range, 
unsigned int maxpoints = 0,
 
   64     unsigned int dim = 1, 
bool isWeighted = 
false ) :
 
   65     FitData( range, maxpoints, isWeighted ? dim + 1 : dim ),
 
   69     assert( !fWeighted || dim >= 2 );
 
   75   UnBinData (
const DataOptions & opt, 
const DataRange & range,
 
   76     unsigned int maxpoints = 0, 
unsigned int dim = 1, 
bool isWeighted = 
false ) :
 
   77     FitData( opt, range, maxpoints, isWeighted ? dim + 1 : dim ),
 
   81     assert( !fWeighted || dim >= 2 );
 
   87   UnBinData(
unsigned int n, 
const double * dataX ) :
 
   97   UnBinData(
unsigned int n, 
const double * dataX, 
const double * dataY,
 
   98     bool isWeighted = 
false ) :
 
   99     FitData( n, dataX, dataY ),
 
  100     fWeighted( isWeighted )
 
  108   UnBinData(
unsigned int n, 
const double * dataX, 
const double * dataY,
 
  109     const double * dataZ, 
bool isWeighted = 
false ) :
 
  110     FitData( n, dataX, dataY, dataZ ),
 
  111     fWeighted( isWeighted )
 
  122   template<
class Iterator>
 
  123   UnBinData(
unsigned int n, 
unsigned int dim, Iterator dataItr,
 
  124     bool isWeighted = 
false ) :
 
  125     FitData( n, isWeighted ? dim + 1 : dim, dataItr ),
 
  126     fWeighted( isWeighted )
 
  129     assert( !fWeighted || dim >= 2 );
 
  135   UnBinData(
unsigned int maxpoints, 
const double * dataX, 
const DataRange & range) :
 
  136     FitData( range, maxpoints, dataX ),
 
  146   UnBinData(
unsigned int maxpoints, 
const double * dataX, 
const double * dataY,
 
  147     const DataRange & range, 
bool isWeighted = 
false) :
 
  148     FitData( range, maxpoints, dataX, dataY ),
 
  149     fWeighted( isWeighted )
 
  157   UnBinData(
unsigned int maxpoints, 
const double * dataX, 
const double * dataY,
 
  158     const double * dataZ, 
const DataRange & range, 
bool isWeighted = 
false) :
 
  159     FitData( range, maxpoints, dataX, dataY, dataZ ),
 
  160     fWeighted( isWeighted )
 
  169   template<
class Iterator>
 
  170   UnBinData( 
unsigned int maxpoints, 
unsigned int dim, Iterator dataItr, 
const DataRange & range, 
bool isWeighted = 
false ) :
 
  171     FitData( range, maxpoints, dim, dataItr ),
 
  172     fWeighted( isWeighted )
 
  178   UnBinData(
const UnBinData &) : FitData() { assert(
false); }
 
  180   UnBinData & operator= (
const UnBinData &) { assert(
false); 
return *
this; }
 
  186   virtual ~UnBinData() {
 
  202     assert( !fWeighted );
 
  212   void Add(
double x, 
double y)
 
  215     double dataTmp[] = { x, y };
 
  217     FitData::Add( dataTmp );
 
  224   void Add(
double x, 
double y, 
double z)
 
  227     double dataTmp[] = { x, y, z };
 
  229     FitData::Add( dataTmp );
 
  235   void Add( 
const double* x )
 
  243   void Add(
const double *x, 
double w)
 
  247     std::vector<double> tmpVec(fDim);
 
  248     std::copy( x, x + fDim - 1, tmpVec.begin() );
 
  251     FitData::Add( &tmpVec.front() );
 
  257   double Weight( 
unsigned int ipoint )
 const 
  259     assert( ipoint < fNPoints );
 
  261     if ( !fWeighted ) 
return 1.0;
 
  262     return *GetCoordComponent(ipoint, fDim-1);
 
  265   const double * WeightsPtr( 
unsigned int ipoint )
 const 
  267     assert( ipoint < fNPoints );
 
  270        MATH_ERROR_MSG(
"UnBinData::WeightsPtr",
"The function is unweighted!");
 
  273     return GetCoordComponent(ipoint, fDim-1);
 
  280   unsigned int NDim()
 const 
  281   { 
return fWeighted ? fDim -1 : fDim; }
 
  283   bool IsWeighted()
 const 
  288   void Append( 
unsigned int newPoints, 
unsigned int dim = 1, 
bool isWeighted = 
false )
 
  292     fWeighted = isWeighted;
 
  294     FitData::Append( newPoints, dim );