CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10_patch2/src/RecoLocalMuon/RPCRecHit/src/RPCClusterizer.cc

Go to the documentation of this file.
00001 #include "RPCClusterizer.h"
00002 #include "RPCCluster.h"
00003 #include "RPCClusterContainer.h"
00004 
00005 
00006 RPCClusterizer::RPCClusterizer()
00007 {
00008 }
00009 
00010 RPCClusterizer::~RPCClusterizer()
00011 {
00012 }
00013  
00014 RPCClusterContainer
00015 RPCClusterizer::doAction(const RPCDigiCollection::Range& digiRange){
00016   RPCClusterContainer cls;
00017   for (RPCDigiCollection::const_iterator digi = digiRange.first;
00018        digi != digiRange.second;
00019        digi++) {
00020     RPCCluster cl(digi->strip(),digi->strip(),digi->bx());
00021     cls.insert(cl);
00022   }
00023   RPCClusterContainer clsNew =this->doActualAction(cls);
00024   return clsNew;
00025 }
00026 
00027 RPCClusterContainer
00028 RPCClusterizer::doActualAction(RPCClusterContainer& initialclusters){
00029   
00030   RPCClusterContainer finalCluster;
00031   RPCCluster prev;
00032 
00033   unsigned int j = 0;
00034   for(RPCClusterContainer::const_iterator i=initialclusters.begin();
00035       i != initialclusters.end(); i++){
00036     RPCCluster cl = *i;
00037 
00038     if(i==initialclusters.begin()){
00039       prev = cl;
00040       j++;
00041       if(j == initialclusters.size()){
00042         finalCluster.insert(prev);
00043       }
00044       else if(j < initialclusters.size()){
00045         continue;
00046       }
00047     }
00048 
00049     if(prev.isAdjacent(cl)) {
00050       prev.merge(cl);
00051       j++;
00052       if(j == initialclusters.size()){
00053         finalCluster.insert(prev);
00054       }
00055     }
00056     else {
00057       j++;
00058       if(j < initialclusters.size()){
00059         finalCluster.insert(prev);
00060         prev = cl;
00061       }
00062       if(j == initialclusters.size()){
00063         finalCluster.insert(prev);
00064         finalCluster.insert(cl);
00065       }
00066     }
00067   }
00068 
00069   return finalCluster;
00070 } 
00071  
00072