/data3/calcul/jacquem/working_dir/Micromegas/micromegasFrameWork/lcio/src/cpp/src/UTIL/CollectionParameterMap.cc

Go to the documentation of this file.
00001 #include "UTIL/CollectionParameterMap.h"
00002 #include "EVENT/LCParameters.h"
00003 #include<sstream>
00004 
00005 #include <iostream>
00006 
00007 
00008 namespace UTIL{
00009 
00010   CollectionParameterMap::CollectionParameterMap( const std::string& keyName ,  
00011                                                   const std::string& valueName,  
00012                                                   LCCollection* col ) :
00013     _keyName( keyName ) ,
00014     _valueName( valueName ) ,
00015     _col( col ) {
00016 
00017     init( col ) ;
00018 
00019   }
00020 
00021   CollectionParameterMap::CollectionParameterMap( const std::string& keyName ,  
00022                                                   const std::string& valueName,  
00023                                                   const LCCollection* col ) :
00024     _keyName( keyName ) ,
00025     _valueName( valueName ) ,
00026     _col( 0 ) { // if const we don't update
00027 
00028     init( col ) ;
00029   }
00030 
00031   void CollectionParameterMap::init( const LCCollection* col ){
00032     
00033     StringVec keys ;
00034     
00035     col->getParameters().getStringVals( _keyName , keys ) ;
00036     
00037     IntVec values ;
00038     
00039     col->getParameters().getIntVals( _valueName , values ) ;
00040     
00041     
00042     // ------ do some checks: -------------------------
00043     if( keys.size() != values.size() ) {
00044       
00045       std::stringstream sstr ;
00046       
00047       sstr << " CollectionParameterMap::init() - inconsistent parameter sizes for "
00048            <<  _keyName  << " [" << keys.size() << "] and " 
00049            <<  _valueName << " [" <<  values.size() << "] " ;
00050       
00051       throw Exception( sstr.str() ) ;
00052     }
00053     
00054     unsigned nKeys =  keys.size() ;
00055     for(unsigned i=0;i<nKeys;++i){
00056       
00057       _map.insert( std::make_pair( keys[i] , values[i] ) ) ;
00058     }
00059     
00060   }
00061 
00062 
00063   CollectionParameterMap::~CollectionParameterMap() {
00064 
00065 
00066     if( _col != 0 ){
00067       
00068       StringVec keys ;
00069       IntVec values ;
00070       
00071       for(map_type::iterator it= _map.begin() ; it!=_map.end() ;++it){
00072         
00073         keys.push_back( it->first ) ;
00074         values.push_back( it->second ) ;
00075         
00076         //       std::cout << "   CollectionParameterMap::~CollectionParameterMap  - " 
00077         //              <<    it->first << " mapped to : " << it->second
00078         //              << std::endl ;
00079       }
00080       
00081       _col->parameters().setValues( _keyName , keys ) ;
00082       _col->parameters().setValues( _valueName , values ) ;
00083       
00084       
00085       //       std::cout << "   CollectionParameterMap::~CollectionParameterMap  - " 
00086       //                << " setValues(  " <<  _keyName << " ,...) and " << keys.size()
00087       //                << " setValues(  " <<  _valueName << " ,...) "<< values.size()
00088       //                << std::endl ;
00089     }
00090     
00091   }
00092 
00093 
00094 
00095 
00096 }

Generated on Mon Jan 7 13:15:21 2013 for MicromegasFramework by  doxygen 1.4.7