CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/DetectorDescription/Core/interface/DDsvalues.h

Go to the documentation of this file.
00001 #ifndef DD_DDsvalues_type_h
00002 #define DD_DDsvalues_type_h
00003 
00004 //#include "DetectorDescription/Core/interface/DDAlgoPar.h"
00005 #include <ostream>
00006 #include <map>
00007 #include <vector>
00008 #include <algorithm>
00009 
00010 #include "DetectorDescription/Core/interface/DDValue.h"
00011 
00012 //typedef parS_type svalues_type;
00013 
00015 
00016 // typedef std::map< unsigned int, DDValue> DDsvalues_type;
00017 
00018 // vin test
00019 typedef std::vector< std::pair<unsigned int, DDValue> > DDsvalues_type;   
00020 typedef DDsvalues_type::value_type  DDsvalues_Content_type;
00021 
00022 //typedef std::map< unsigned int, DDValue*> DDsvalues_type;
00023 
00024 typedef DDsvalues_type::value_type  DDsvalues_Content_type;
00025 
00026 inline bool operator<(const DDsvalues_Content_type & lh, const DDsvalues_Content_type & rh){
00027    return lh.first < rh.first;
00028 }
00029 
00030 inline DDsvalues_type::const_iterator find( DDsvalues_type::const_iterator begin, DDsvalues_type::const_iterator end, unsigned int id) {
00031    static DDValue dummy;
00032    DDsvalues_Content_type v(id,dummy);
00033    DDsvalues_type::const_iterator it = std::lower_bound(begin,end,v);
00034    if (it!=end && (*it).first==id) return it;
00035    return end; 
00036 }
00037 
00038 inline DDsvalues_type::const_iterator find(DDsvalues_type const & sv, unsigned int id) {
00039   return find(sv.begin(),sv.end(),id);
00040 }
00041 
00042 
00043 
00044 void merge(DDsvalues_type & target, DDsvalues_type const & sv, bool sortit=true );
00045 
00046 
00048 bool DDfetch(const DDsvalues_type *,  DDValue &);
00049 
00051 unsigned int DDfetch(const std::vector<const DDsvalues_type *> & sp, 
00052                                   DDValue & toFetch, 
00053                                       std::vector<DDValue> & result);
00054 /*
00055 class DDsvalues_type : public std::map< unsigned int, DDValue>
00056 {
00057 public:
00058   DDValue operator[](const unsigned int& i) const;
00059 };
00060 */
00061 
00062 std::ostream & operator<<(std::ostream & , const DDsvalues_type &);
00063 std::ostream & operator<<(std::ostream & , const std::vector<const DDsvalues_type*> &);
00064 
00065 #endif