CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoLocalMuon/GEMRecHit/src/GEMClusterizer.cc

Go to the documentation of this file.
00001 #include "GEMClusterizer.h"
00002 #include "GEMCluster.h"
00003 #include "GEMClusterContainer.h"
00004 
00005 
00006 GEMClusterizer::GEMClusterizer()
00007 {
00008 }
00009 
00010 GEMClusterizer::~GEMClusterizer()
00011 {
00012 }
00013  
00014 GEMClusterContainer
00015 GEMClusterizer::doAction(const GEMDigiCollection::Range& digiRange){
00016   GEMClusterContainer cls;
00017   for (GEMDigiCollection::const_iterator digi = digiRange.first;
00018        digi != digiRange.second;
00019        digi++) {
00020     GEMCluster cl(digi->strip(),digi->strip(),digi->bx());
00021     cls.insert(cl);
00022   }
00023   GEMClusterContainer clsNew =this->doActualAction(cls);
00024   return clsNew;
00025 }
00026 
00027 GEMClusterContainer
00028 GEMClusterizer::doActualAction(GEMClusterContainer& initialclusters){
00029   
00030   GEMClusterContainer finalCluster;
00031   GEMCluster prev;
00032 
00033   unsigned int j = 0;
00034   for(GEMClusterContainer::const_iterator i=initialclusters.begin();
00035       i != initialclusters.end(); i++){
00036     GEMCluster 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