Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

AIDA_Histogram1DIterator.cpp

Go to the documentation of this file.
00001  /**********************************************************************
00002   *                                                                    *
00003   * Copyright (c) 2002 Lorenzo Moneta, CERN/IT                       *
00004   *                   <Lorenzo.Moneta.cern.ch>                       *
00005   *                                                                    *
00006   * This library is free software; you can redistribute it and/or      *
00007   * modify it under the terms of the GNU Lesser General Public         *
00008   * License as published by the Free Software Foundation; either       *
00009   * version 2.1 of the License, or (at your option) any later version. *
00010   *                                                                    *
00011   * This library is distributed in the hope that it will be useful,    *
00012   * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
00013   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   *
00014   * Lesser General Public License for more details.                    *
00015   *                                                                    *
00016   * You should have received a copy of the GNU Lesser General Public   *
00017   * License along with this library (see file COPYING); if not, write  *
00018   * to the Free Software Foundation, Inc., 59 Temple Place, Suite      *
00019   * 330, Boston, MA 02111-1307 USA, or contact the author.             *
00020   *                                                                    *
00021   **********************************************************************/
00022 
00023 // Implementation file for class AIDA_Histogram1DIterator
00024 // 
00025 // Authors  : Lorenzo Moneta , Jakub Moscicki
00026 // Created  : Fri Oct  4 16:30:41 2002
00027 // 
00028 // Last update: Fri Oct  4 16:30:41 2002
00029 // 
00030 
00031 #include "AIDA_Histogram1DIterator.h"
00032 #include "AIDA_Function_FML/AIDA_RangeSet.h"
00033 
00034 # include "AIDA/IAxis.h"
00035 # include "AIDA/IHistogram1D.h"
00036 
00037 # include "FML/debug.h"
00038 
00039 
00040 namespace Anaphe  { 
00041   namespace AIDA_Fitter_FML { 
00042 
00043 
00044     AIDA_Histogram1DIterator::AIDA_Histogram1DIterator(const AIDA::IHistogram1D& h) : m_hist(&h), m_dim(h.dimension())
00045     { 
00046     }
00047 
00048     AIDA_Histogram1DIterator::~AIDA_Histogram1DIterator() 
00049     {
00050     }
00051 
00052     AIDA_Histogram1DIterator::AIDA_Histogram1DIterator(const AIDA_Histogram1DIterator &) 
00053     {
00054     }
00055 
00056     AIDA_Histogram1DIterator & AIDA_Histogram1DIterator::operator = (const AIDA_Histogram1DIterator &rhs) 
00057     {
00058       if (this == &rhs) return *this;  // time saving self-test
00059       
00060       return *this;
00061     }
00062 
00063     // fill the data in the vector
00064 
00065     void AIDA_Histogram1DIterator::fillData(const std::vector<Anaphe::AIDA_Function_FML::AIDA_RangeSet * > & ranges) 
00066     { 
00067       int n = ranges.size();
00068       if (n != m_dim) {
00069         INFO_MSG(" AIDA_Histogram1DIterator::fillData  invalid dimension for rangeset - cannot feed data in FNL"); 
00070         return; 
00071       }
00072       if (!ranges[0]) { 
00073         INFO_MSG(" AIDA_Histogram1DIterator::fillData  invalid rangeset - cannot feed data in FNL"); 
00074         return; 
00075       }
00076         
00077       std::auto_ptr<FML::DataVector> vptr (new FML::DataVector());
00078 
00079       std::vector<double> x(1);
00080 
00081       int nPoints = 0; 
00082       for(int i = 0; i<m_hist->axis().bins(); ++i)
00083         {
00084           x[0] = m_hist->binMean(i);
00085           if (ranges[0]->isInRange(x[0]) ) { 
00086             vptr->push_back(x, m_hist->binHeight(i), m_hist->binError(i), m_hist->binError(i));
00087             nPoints++;
00088           }
00089               
00090         }
00091       // set the FML range (size is number of points in range) 
00092       vptr->setRange(FML::DataRange( nPoints ));
00093 
00094       setVector(vptr);
00095 
00096     }
00097   }     // end of namespace Anaphe::AIDA_Fitter_FML
00098 } 

Generated on Tue May 20 14:49:01 2003 for AIDA_Fitter_FML by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002