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 }