CMS 3D CMS Logo

RecoCollectionFP420.cc

Go to the documentation of this file.
00001 
00002 // File: RecoCollectionFP420.cc
00003 // Date: 11.2007
00004 // Description: RecoCollectionFP420 for FP420
00005 // Modifications: 
00007 #include "DataFormats/FP420Cluster/interface/RecoCollectionFP420.h"
00008 #include <iostream>
00009 using namespace std;
00010 //#define mydigidebug
00011 
00012 void RecoCollectionFP420::put(RecoCollectionFP420::Range input, unsigned int stationID) {
00013   // put in RecHits of stationID
00014 
00015   // store size of vector before put
00016   RecoCollectionFP420::IndexRange inputRange;
00017   
00018   // put in RecoFP420s from input
00019   bool first = true;
00020   
00021   // fill input in temporary vector for sorting
00022   std::vector<RecoFP420> temporary;
00023   RecoCollectionFP420::ContainerIterator sort_begin = input.first;
00024   RecoCollectionFP420::ContainerIterator sort_end = input.second;
00025 #ifdef mydigidebug
00026    std::cout <<"   !!!!!!!!!!!!!!!!    RecoCollectionFP420:: !!!!  put !!!!           start " << std::endl;
00027 #endif
00028   for ( ;sort_begin != sort_end; ++sort_begin ) {
00029 #ifdef mydigidebug
00030    std::cout <<"put: temporary.push_back " << std::endl;
00031 #endif
00032     temporary.push_back(*sort_begin);
00033   }
00034   std::sort(temporary.begin(),temporary.end());
00035 
00036   // iterators over input
00037   RecoCollectionFP420::ContainerIterator begin = temporary.begin();
00038   RecoCollectionFP420::ContainerIterator end = temporary.end();
00039   for ( ;begin != end; ++begin ) {
00040     container_.push_back(*begin);
00041     if ( first ) {
00042           inputRange.first = container_.size()-1;
00043  //     inputRange.first = container_.size();
00044       first = false;
00045     }
00046   }
00047   
00048   // since we start from 0, then the last element will be size-1
00049   if(container_.size() != 0) {
00050     inputRange.second = container_.size()-1;
00051   }
00052   else {
00053     inputRange.first = container_.size();
00054     inputRange.second = container_.size();
00055   }
00056 
00057 //  inputRange.second = container_.size()-1;
00058 //  //inputRange.second = container_.size();
00059 
00060 #ifdef mydigidebug
00061    std::cout <<"put: container_.size() = " << container_.size() << std::endl;
00062    std::cout <<"put:  inputRange.first = " << inputRange.first << std::endl;
00063    std::cout <<"put:  inputRange.second = " << inputRange.second << std::endl;
00064 #endif
00065   
00066   // fill map
00067   map_[stationID] = inputRange;
00068 
00069 }
00070 
00071 const RecoCollectionFP420::Range RecoCollectionFP420::get(unsigned int stationID) const {
00072   // get RecHits of stationID
00073 
00074 #ifdef mydigidebug
00075 std::cout <<"RecoCollectionFP420::get:stationID= " << stationID << std::endl;
00076 #endif
00077   RecoCollectionFP420::RegistryIterator returnIndex = map_.find(stationID);
00078   RecoCollectionFP420::IndexRange returnIndexRange = returnIndex->second;
00079 #ifdef mydigidebug
00080    std::cout <<"RecoCollectionFP420::get1: returnIndexRange.first= " << returnIndexRange.first << std::endl;
00081    std::cout <<"RecoCollectionFP420::get1: returnIndexRange.second= " << returnIndexRange.second << std::endl;
00082 #endif
00083 
00084   RecoCollectionFP420::Range returnRange;
00085   returnRange.first  = container_.begin()+returnIndexRange.first;
00086   if(returnIndexRange.second != 0 ) {
00087     returnRange.second = container_.begin()+returnIndexRange.second+1;
00088   }else{
00089     returnRange.second = container_.begin()+returnIndexRange.second;
00090   }
00091 #ifdef mydigidebug
00092    std::cout <<"RecoCollectionFP420::get2: container_.size() = " << container_.size() << std::endl;
00093    std::cout <<"RecoCollectionFP420::get2: returnIndexRange.first= " << returnIndexRange.first << std::endl;
00094    std::cout <<"RecoCollectionFP420::get2: returnIndexRange.second= " << returnIndexRange.second << std::endl;
00095 #endif
00096   return returnRange;
00097 }
00098 
00099 
00100 
00101 void RecoCollectionFP420::clear() {
00102 container_.clear();
00103 }
00104 void RecoCollectionFP420::putclear(RecoCollectionFP420::Range input, unsigned int stationID) {
00105 
00106   RecoCollectionFP420::IndexRange inputRange;
00107   
00108   std::vector<RecoFP420> temporary;
00109   RecoCollectionFP420::ContainerIterator sort_begin = input.first;
00110   RecoCollectionFP420::ContainerIterator sort_end = input.second;
00111   for ( ;sort_begin != sort_end; ++sort_begin ) {
00112     temporary.push_back(*sort_begin);
00113   }
00114   std::sort(temporary.begin(),temporary.end());
00115 
00116   //    temporary.clear();
00117   RecoCollectionFP420::ContainerIterator begin = temporary.begin();
00118   RecoCollectionFP420::ContainerIterator end = temporary.end();
00119   for ( ;begin != end; ++begin ) {
00120     container_.push_back(*begin);
00121   }
00122   //container_.clear();
00123           inputRange.first = container_.size()-container_.size();
00124           inputRange.second = container_.size()-container_.size();
00125 
00126 #ifdef mydigidebug
00127    std::cout <<"putclear: container_.size() = " << container_.size() << std::endl;
00128    std::cout <<"putclear:  inputRange.first = " << inputRange.first << std::endl;
00129    std::cout <<"putclear:  inputRange.second = " << inputRange.second << std::endl;
00130 #endif
00131 
00132 
00133           map_[stationID] = inputRange;
00134 }
00135 
00136 
00137 
00138 
00139 
00140 
00141 const std::vector<unsigned int> RecoCollectionFP420::stationIDs() const {
00142   // returns vector of stationIDs in map
00143 
00144 #ifdef mydigidebug
00145 std::cout <<"RecoCollectionFP420::stationIDs:start " << std::endl;
00146 #endif
00147   RecoCollectionFP420::RegistryIterator begin = map_.begin();
00148   RecoCollectionFP420::RegistryIterator end   = map_.end();
00149 
00150   std::vector<unsigned int> output;
00151 
00152   for (; begin != end; ++begin) {
00153     output.push_back(begin->first);
00154   }
00155 
00156   return output;
00157 
00158 }

Generated on Tue Jun 9 17:30:46 2009 for CMSSW by  doxygen 1.5.4