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

AIDA_Cloud1DIterator.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   *  * License along with this library (see file COPYING); if not, write  *
00017   * to the Free Software Foundation, Inc., 59 Temple Place, Suite      *
00018   * 330, Boston, MA 02111-1307 USA, or contact the author.             *
00019   *                                                                    *
00020   **********************************************************************/
00021 
00022 // Implementation file for class AIDA_Cloud1DIterator
00023 // 
00024 // Authors  : Lorenzo Moneta , Jakub Moscicki
00025 // Created  : Fri Oct  4 16:30:41 2002
00026 // 
00027 // Last update: Fri Oct  4 16:30:41 2002
00028 // 
00029 
00030 #include "AIDA_Cloud1DIterator.h"
00031 #include "AIDA_Function_FML/AIDA_RangeSet.h"
00032 
00033 # include "AIDA/ICloud1D.h"
00034 
00035 # include "FML/debug.h"
00036 
00037 
00038 namespace Anaphe  { 
00039   namespace AIDA_Fitter_FML { 
00040 
00041 
00042     AIDA_Cloud1DIterator::AIDA_Cloud1DIterator(const AIDA::ICloud1D& h) : m_hist(&h), m_dim(h.dimension())
00043     { 
00044     }
00045 
00046     AIDA_Cloud1DIterator::~AIDA_Cloud1DIterator() 
00047     {
00048     }
00049 
00050     AIDA_Cloud1DIterator::AIDA_Cloud1DIterator(const AIDA_Cloud1DIterator &) 
00051     {
00052     }
00053 
00054     AIDA_Cloud1DIterator & AIDA_Cloud1DIterator::operator = (const AIDA_Cloud1DIterator &rhs) 
00055     {
00056       if (this == &rhs) return *this;  // time saving self-test
00057       
00058       return *this;
00059     }
00060 
00061     // fill the data in the vector
00062 
00063     void AIDA_Cloud1DIterator::fillData(const std::vector<Anaphe::AIDA_Function_FML::AIDA_RangeSet * > & ranges) 
00064     { 
00065       int n = ranges.size();
00066       if (n != m_dim) {
00067         INFO_MSG(" AIDA_Cloud1DIterator::fillData  invalid dimension for rangeset - cannot feed data in FNL"); 
00068         return; 
00069       }
00070       if (!ranges[0]) { 
00071         INFO_MSG(" AIDA_Cloud1DIterator::fillData  invalid rangeset - cannot feed data in FNL"); 
00072         return; 
00073       }
00074         
00075       std::auto_ptr<FML::DataVector> vptr (new FML::DataVector());
00076 
00077       std::vector<double> x(m_dim);
00078 
00079       int nPoints = 0; 
00080       for(int i = 0; i<m_hist->entries(); ++i)
00081         {
00082           x[0] = m_hist->value(i);
00083           if (ranges[0]->isInRange(x[0]) ) { 
00084             vptr->push_back(x, m_hist->weight(i), 0, 0);
00085             //cout << " push in event " << x[0] << endl; 
00086             nPoints++; 
00087           }
00088               
00089         }
00090       // set the range (size is number of events !) - needed by FML
00091       vptr->setRange(FML::DataRange(nPoints) );
00092 
00093       setVector(vptr);
00094 
00095     }
00096   }     // end of namespace Anaphe::AIDA_Fitter_FML
00097 } 
00098 
00099 
00100 
00101 
00102 
00103 
00104 
00105 
00106 
00107 
00108 
00109 
00110 

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