66 #include "TDirectory.h" 82 LogTrace(
"RPCEffTrackExtrapolation") <<
"Dentro Costruttore"<<std::endl;
122 std::map <int , int > numberOfRecHitsBarrel;
123 std::map <int , int > numberOfDigisBarrel;
124 std::map <int , int > numberOfRecHitsEndcap;
125 std::map <int , int > numberOfDigisEndcap;
127 std::map <pair < int , int > , std::vector<RPCDetId> > numberOfRecHitsSameWheelSameSector;
128 std::map <pair < int , int > , std::vector<RPCDetId> > numberOfDigisSameWheelSameSector;
129 std::map <pair < int , int > , std::vector<RPCDetId> > numberOfHitsSameDiskSectorPositive;
130 std::map <pair < int , int > , std::vector<RPCDetId> > numberOfHitsSameDiskSectorNegative;
133 const std::vector< const RPCRoll * > rls = rpcGeo->
rolls();
135 bool condition =
true;
144 for (
int i = 0;
i < (
int) rls.size() ; ++
i){
154 for(RecHitsIt = rpcRecHitRange.first; RecHitsIt!=rpcRecHitRange.second; ++RecHitsIt){
162 for(
int u = -1;u<=1;++u){
163 for(
int t = -1;
t<=1;++
t){
164 numberOfRecHitsSameWheelSameSector[pair< int, int >( did.
ring()+u,did.
sector()+
t)].push_back(did);
171 for(
int u = -1;u<=1;++u){
172 for(
int t = -1;
t<=1;++
t){
173 numberOfRecHitsSameWheelSameSector[pair< int, int >(did.
ring()+u,did.
sector()+
t)].push_back(did);
179 ++numberOfRecHitsBarrel[did.
ring()];
186 for(
int t = -1;
t<=1;++
t){
187 numberOfHitsSameDiskSectorNegative[pair<int,int>(did.
ring(),did.
sector()+
t)].push_back(did);
192 for(
int t = -1;
t<=1;++
t){
193 numberOfHitsSameDiskSectorPositive[pair<int,int>(did.
ring(),did.
sector()+
t)].push_back(did);
196 ++numberOfRecHitsEndcap[did.
station()];
217 std::map < int, bool >vectorBarrelCands;
218 std::map < int, bool >vectorEndcapCandsPositive;
219 std::map < int, bool >vectorEndcapCandsNegative;
222 for (
std::map <pair < int , int > , std::vector < RPCDetId> >::const_iterator iter = numberOfRecHitsSameWheelSameSector.begin();iter != numberOfRecHitsSameWheelSameSector.end();++iter){
224 vectorBarrelCands[1] =
false;
225 vectorBarrelCands[2] =
false;
227 if(iter->second.size()>1){
228 for(
size_t i = 0;
i < iter->second.size(); ++
i){
229 if(iter->second[
i].layer()==1 && iter->second[
i].station() == 1)vectorBarrelCands[0] =
true;
230 if(iter->second[
i].layer()==2 && iter->second[
i].station() == 1)vectorBarrelCands[1] =
true;
231 if(cosmicsVeto_)
if(iter->second[
i].station() > 2){
232 vectorBarrelCands[1] =
false;vectorBarrelCands[2] =
false ;
238 if(( vectorBarrelCands[0] && vectorBarrelCands[1])) {
246 for (
std::map <pair < int ,int >, std::vector < RPCDetId> >::const_iterator iter = numberOfHitsSameDiskSectorPositive.begin(); iter != numberOfHitsSameDiskSectorPositive.end(); ++iter){
248 vectorEndcapCandsPositive[1] =
false;
249 vectorEndcapCandsPositive[2] =
false;
250 vectorEndcapCandsPositive[3] =
false;
253 if(iter->second.size()>1){
254 for(
size_t i = 0;
i < iter->second.size(); ++
i){
255 if(iter->second[
i].station()==1)vectorEndcapCandsPositive[1] =
true;
256 if(iter->second[
i].station()==2)vectorEndcapCandsPositive[2] =
true;
257 if(iter->second[
i].station()==3)vectorEndcapCandsPositive[3] =
true;
261 if(( (vectorEndcapCandsPositive[1] && vectorEndcapCandsPositive[2]) ||
262 (vectorEndcapCandsPositive[1] && vectorEndcapCandsPositive[3]) ||
263 (vectorEndcapCandsPositive[2] && vectorEndcapCandsPositive[3]) )) {
271 for (
std::map <pair < int ,int >, std::vector < RPCDetId> >::const_iterator iter = numberOfHitsSameDiskSectorNegative.begin(); iter != numberOfHitsSameDiskSectorNegative.end(); ++iter){
273 vectorEndcapCandsNegative[1] =
false;
274 vectorEndcapCandsNegative[2] =
false;
275 vectorEndcapCandsNegative[3] =
false;
278 if(iter->second.size()>1){
279 for(
size_t i = 0;
i < iter->second.size(); ++
i){
280 if(iter->second[
i].station()==1)vectorEndcapCandsNegative[1] =
true;
281 if(iter->second[
i].station()==2)vectorEndcapCandsNegative[2] =
true;
282 if(iter->second[
i].station()==3)vectorEndcapCandsNegative[3] =
true;
286 if(( (vectorEndcapCandsNegative[1] && vectorEndcapCandsNegative[2]) ||
287 (vectorEndcapCandsNegative[1] && vectorEndcapCandsNegative[3]) ||
288 (vectorEndcapCandsNegative[2] && vectorEndcapCandsNegative[3]) )) {
296 condition = condition && ( nBarrel + nEndcap >= minHits_ );
299 cond1 = Barrel_ && cond1;
300 cond2 = EndcapPositive_ && cond2;
301 cond3 = EndcapNegative_ && cond3;
303 bool condition2 = (cond1 || cond2 || cond3);
304 if(Barrel_ || EndcapPositive_ || EndcapNegative_)condition = condition && condition2;
T getUntrackedParameter(std::string const &, T const &) const
std::pair< const_iterator, const_iterator > range
iterator range
const std::vector< const RPCRoll * > & rolls() const
Return a vector of all RPC rolls.
C::const_iterator const_iterator
constant access iterator type
bool filter(edm::Event &, const edm::EventSetup &) override
#define DEFINE_FWK_MODULE(type)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
std::vector< L1MuRegionalCand > L1MuRegionalCandCollection
RPCRecHitFilter(const edm::ParameterSet &)
int sector() const
Sector id: the group of chambers at same phi (and increasing r)
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.