// @(#)root/mathcore:$Id$
// Author: David Gonzalez Maline Wed Aug 28 15:23:43 2009

/**********************************************************************
 *                                                                    *
 * Copyright (c) 2006  LCG ROOT Math Team, CERN/PH-SFT                *
 *                                                                    *
 *                                                                    *
 **********************************************************************/

// Header file for class SparseData

#ifndef ROOT_Fit_SparseData
#define ROOT_Fit_SparseData

#include <vector>

#ifndef ROOT_Fit_DataVector
#include "Fit/DataVector.h"
#endif
#ifndef ROOT_Fit_BinData
#include "Fit/BinData.h"
#endif

namespace ROOT {

   namespace Fit {

      // This is a proxy to a std::list<Box>
      class ProxyListBox;

      class SparseData : public FitData  {
      public:
         //Constructor with a vector
         SparseData(std::vector<double>& min, std::vector<double>& max);

         //Constructor with a dimension and two arrays
         SparseData(const unsigned int dim, double min[], double max[]);

         //Destructor
         ~SparseData();

         //Returns the number of points stored
         unsigned int NPoints() const;
         //Returns the dimension of the object (bins)
         unsigned int NDim() const;

         // Adds a new bin specified by the vectors
         void Add(std::vector<double>& min, std::vector<double>& max,
                  const double content, const double error = 1.0);

         void GetPoint(const unsigned int i,
                       std::vector<double>& min, std::vector<double>&max,
                       double& content, double& error);

         // Debug method to print the list of bins stored
         void PrintList() const;

         // Transforms the data into a ROOT::Fit::BinData structure
         void GetBinData(BinData&) const;
         // Same as before, but with integral format
         void GetBinDataIntegral(BinData&) const;
         // Same as before, but including zero content bins
         void GetBinDataNoZeros(BinData&) const;

      private :
         ProxyListBox *fList;
      };

   } // end namespace Fit

} // end namespace ROOT



#endif /* ROOT_Fit_SparseData */
 SparseData.h:1
 SparseData.h:2
 SparseData.h:3
 SparseData.h:4
 SparseData.h:5
 SparseData.h:6
 SparseData.h:7
 SparseData.h:8
 SparseData.h:9
 SparseData.h:10
 SparseData.h:11
 SparseData.h:12
 SparseData.h:13
 SparseData.h:14
 SparseData.h:15
 SparseData.h:16
 SparseData.h:17
 SparseData.h:18
 SparseData.h:19
 SparseData.h:20
 SparseData.h:21
 SparseData.h:22
 SparseData.h:23
 SparseData.h:24
 SparseData.h:25
 SparseData.h:26
 SparseData.h:27
 SparseData.h:28
 SparseData.h:29
 SparseData.h:30
 SparseData.h:31
 SparseData.h:32
 SparseData.h:33
 SparseData.h:34
 SparseData.h:35
 SparseData.h:36
 SparseData.h:37
 SparseData.h:38
 SparseData.h:39
 SparseData.h:40
 SparseData.h:41
 SparseData.h:42
 SparseData.h:43
 SparseData.h:44
 SparseData.h:45
 SparseData.h:46
 SparseData.h:47
 SparseData.h:48
 SparseData.h:49
 SparseData.h:50
 SparseData.h:51
 SparseData.h:52
 SparseData.h:53
 SparseData.h:54
 SparseData.h:55
 SparseData.h:56
 SparseData.h:57
 SparseData.h:58
 SparseData.h:59
 SparseData.h:60
 SparseData.h:61
 SparseData.h:62
 SparseData.h:63
 SparseData.h:64
 SparseData.h:65
 SparseData.h:66
 SparseData.h:67
 SparseData.h:68
 SparseData.h:69
 SparseData.h:70
 SparseData.h:71
 SparseData.h:72
 SparseData.h:73
 SparseData.h:74
 SparseData.h:75
 SparseData.h:76