CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoLocalMuon/RPCRecHit/src/RPCMaskReClusterizer.cc

Go to the documentation of this file.
00001 
00008 #include "RPCMaskReClusterizer.h"
00009 
00010 
00011 
00012 RPCMaskReClusterizer::RPCMaskReClusterizer()
00013 {
00014 
00015 }
00016 
00017 
00018 RPCMaskReClusterizer::~RPCMaskReClusterizer()
00019 {
00020 
00021 }
00022 
00023 
00024 RPCClusterContainer RPCMaskReClusterizer::doAction(const RPCDetId& id,
00025                                                     RPCClusterContainer& initClusters,
00026                                                     const RollMask& mask)
00027 {
00028 
00029   RPCClusterContainer finClusters;
00030   RPCCluster prev;
00031 
00032   unsigned int j = 0;
00033 
00034 
00035   for (RPCClusterContainer::const_iterator i = initClusters.begin(); i != initClusters.end(); i++ ) {
00036 
00037     RPCCluster cl = *i;
00038 
00039     if ( i == initClusters.begin() ) {
00040       prev = cl;
00041       j++;
00042       if ( j == initClusters.size() ) {
00043         finClusters.insert(prev);
00044       }
00045       else if ( j < initClusters.size() ) {
00046         continue;
00047       }
00048     }
00049 
00050 
00051     if ( ((prev.firstStrip()-cl.lastStrip()) == 2 && this->get(mask,(cl.lastStrip()+1)))
00052          && (cl.bx() == prev.bx()) ) {
00053 
00054       RPCCluster merged(cl.firstStrip(),prev.lastStrip(),cl.bx());
00055       prev = merged;
00056       j++;
00057       if ( j == initClusters.size() ) {
00058         finClusters.insert(prev);
00059       }
00060     }
00061 
00062     else {
00063 
00064       j++;
00065       if ( j < initClusters.size() ) {
00066         finClusters.insert(prev);
00067         prev = cl;
00068       }
00069       if ( j == initClusters.size() ) {
00070         finClusters.insert(prev);
00071         finClusters.insert(cl);
00072       }
00073     }
00074  
00075   }
00076 
00077   return finClusters;
00078 
00079 }
00080 
00081 
00082 
00083 int RPCMaskReClusterizer::get(const RollMask& mask, int strip)
00084 {
00085 
00086   if ( mask.test(strip-1) ) return 1;
00087   else return 0;
00088 
00089 }