CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
RPCRecHitFilter Class Reference

#include <RPCRecHitFilter.h>

Inheritance diagram for RPCRecHitFilter:
edm::EDFilter edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

 RPCRecHitFilter (const edm::ParameterSet &)
 
 ~RPCRecHitFilter ()
 
- Public Member Functions inherited from edm::EDFilter
 EDFilter ()
 
virtual ~EDFilter ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Member Functions

virtual bool filter (edm::Event &, const edm::EventSetup &)
 

Private Attributes

bool Barrel_
 
int BXWindow_
 
int centralBX_
 
bool cosmicsVeto_
 
bool Debug_
 
bool EndcapNegative_
 
bool EndcapPositive_
 
int hitsInStations_
 
int minHits_
 
std::string RPCDataLabel
 
bool Verbose_
 

Additional Inherited Members

- Public Types inherited from edm::EDFilter
typedef EDFilter ModuleType
 
typedef WorkerT< EDFilterWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDFilter
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDFilter
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

Definition at line 62 of file RPCRecHitFilter.h.

Constructor & Destructor Documentation

RPCRecHitFilter::RPCRecHitFilter ( const edm::ParameterSet iConfig)
explicit

Definition at line 80 of file RPCRecHitFilter.cc.

References edm::ParameterSet::getUntrackedParameter(), and LogTrace.

81 {
82  LogTrace("RPCEffTrackExtrapolation") <<"Dentro Costruttore"<<std::endl;
83 
84  RPCDataLabel = iConfig.getUntrackedParameter<std::string>("rpcRecHitLabel");
85 
86  // RPCRecHits = iConfig.getParameter< edm::InputTag >("RPCRecHits");
87 
88 
89  centralBX_ = iConfig.getUntrackedParameter<int>("CentralBunchCrossing",0);
90  BXWindow_ = iConfig.getUntrackedParameter<int>("BunchCrossingWindow",9999);
91 
92  minHits_ = iConfig.getUntrackedParameter<int>("minimumNumberOfHits",0);
93  hitsInStations_ = iConfig.getUntrackedParameter<int>("HitsInStation",0);
94 
95 
96  Debug_ = iConfig.getUntrackedParameter<bool>("Debug",false);
97  Verbose_ = iConfig.getUntrackedParameter<bool>("Verbose",false);
98 
99 
100  Barrel_ = iConfig.getUntrackedParameter<bool>("UseBarrel",true);
101  EndcapPositive_ = iConfig.getUntrackedParameter<bool>("UseEndcapPositive",true);
102  EndcapNegative_ = iConfig.getUntrackedParameter<bool>("UseEndcapNegative",true);
103 
104  cosmicsVeto_ = iConfig.getUntrackedParameter<bool>("CosmicsVeto",false);
105 }
T getUntrackedParameter(std::string const &, T const &) const
std::string RPCDataLabel
#define LogTrace(id)
RPCRecHitFilter::~RPCRecHitFilter ( )
inline

Definition at line 67 of file RPCRecHitFilter.h.

67 { }

Member Function Documentation

bool RPCRecHitFilter::filter ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
privatevirtual

LOOP OVER THE RECHITS

Implements edm::EDFilter.

Definition at line 108 of file RPCRecHitFilter.cc.

References funct::false, edm::EventSetup::get(), edm::Event::getByLabel(), i, python.multivaluedict::map(), RPCDetId::region(), RPCDetId::ring(), RPCDetId::sector(), RPCDetId::station(), and lumiQTWidget::t.

Referenced by Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::filter(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::find(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::setDataAccessor(), and Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::switchCenterView().

109 {
110 
112  iSetup.get<MuonGeometryRecord>().get(rpcGeo);
113 
115  iEvent.getByLabel(RPCDataLabel,rpcHits);
116 
117 
118  ESHandle<GlobalTrackingGeometry> theTrackingGeometry;
119  iSetup.get<GlobalTrackingGeometryRecord>().get(theTrackingGeometry);
120 
121 
122  std::map <int , int > numberOfRecHitsBarrel;
123  std::map <int , int > numberOfDigisBarrel;
124  std::map <int , int > numberOfRecHitsEndcap;
125  std::map <int , int > numberOfDigisEndcap;
126 
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;
131 
132 
133  const std::vector< RPCRoll * > rls = rpcGeo->rolls();
134 
135  bool condition = true;
136 
137 
138  int nRecHits = 0;
139  int nBarrel = 0;
140  int nEndcap = 0;
141 
142 
144  for (int i = 0; i < (int) rls.size() ; ++i){
145 
146  RPCDetId did = rls[i]->id();
147 
148 
150  RPCRecHitCollection::range rpcRecHitRange = rpcHits->get(did);
152 
153 
154  for(RecHitsIt = rpcRecHitRange.first; RecHitsIt!=rpcRecHitRange.second; ++RecHitsIt){
155 
156  //std::cout<< " roll is "<< did << " bx recHit is " << RecHitsIt->BunchX()<< " event number " <<eventNumber <<std::endl;
157 
158  if(did.region()==0){
159 
160  if (cosmicsVeto_ ){
161 
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);
165  }
166  }
167  }
168 
169  else{
170  if( did.station()==1) {
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);
174  }
175  }
176  }
177  }
178 
179  ++numberOfRecHitsBarrel[did.ring()];
180  ++nBarrel;
181 
182  }
183 
184  else {
185  if(did.region()== -1) {
186  for(int t = -1;t<=1;++t){
187  numberOfHitsSameDiskSectorNegative[pair<int,int>(did.ring(),did.sector()+t)].push_back(did);
188  }
189  }
190 
191  if(did.region()== 1){
192  for(int t = -1;t<=1;++t){
193  numberOfHitsSameDiskSectorPositive[pair<int,int>(did.ring(),did.sector()+t)].push_back(did);
194  }
195  }
196  ++numberOfRecHitsEndcap[did.station()];
197 
198  ++nEndcap;
199  }
200 
201  ++nRecHits;
202 
203  break;
204  }
205 
206 
207  }
209 
210 
213  bool cond1 = false;
214  bool cond2 = false;
215  bool cond3 = false;
216 
217  std::map < int, bool >vectorBarrelCands;
218  std::map < int, bool >vectorEndcapCandsPositive;
219  std::map < int, bool >vectorEndcapCandsNegative;
220 
221  // barrel
222  for ( std::map <pair < int , int > , std::vector < RPCDetId> >::const_iterator iter = numberOfRecHitsSameWheelSameSector.begin();iter != numberOfRecHitsSameWheelSameSector.end();++iter){
223 
224  vectorBarrelCands[1] = false;
225  vectorBarrelCands[2] = false;
226 
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 ;
233  break;
234  }
235  }
236  }
237 
238  if(( vectorBarrelCands[0] && vectorBarrelCands[1])) {
239  cond1 = true;
240  break;
241  }
242  }
243 
244 
245  // endcap positive
246  for ( std::map <pair < int ,int >, std::vector < RPCDetId> >::const_iterator iter = numberOfHitsSameDiskSectorPositive.begin(); iter != numberOfHitsSameDiskSectorPositive.end(); ++iter){
247 
248  vectorEndcapCandsPositive[1] = false;
249  vectorEndcapCandsPositive[2] = false;
250  vectorEndcapCandsPositive[3] = false;
251 
252 
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;
258  }
259  }
260 
261  if(( (vectorEndcapCandsPositive[1] && vectorEndcapCandsPositive[2]) ||
262  (vectorEndcapCandsPositive[1] && vectorEndcapCandsPositive[3]) ||
263  (vectorEndcapCandsPositive[2] && vectorEndcapCandsPositive[3]) )) {
264  cond2 = true;
265  break;
266  }
267 
268  }
269 
270  // endcap negative
271  for ( std::map <pair < int ,int >, std::vector < RPCDetId> >::const_iterator iter = numberOfHitsSameDiskSectorNegative.begin(); iter != numberOfHitsSameDiskSectorNegative.end(); ++iter){
272 
273  vectorEndcapCandsNegative[1] = false;
274  vectorEndcapCandsNegative[2] = false;
275  vectorEndcapCandsNegative[3] = false;
276 
277 
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;
283  }
284  }
285 
286  if(( (vectorEndcapCandsNegative[1] && vectorEndcapCandsNegative[2]) ||
287  (vectorEndcapCandsNegative[1] && vectorEndcapCandsNegative[3]) ||
288  (vectorEndcapCandsNegative[2] && vectorEndcapCandsNegative[3]) )) {
289  cond3 = true;
290  break;
291  }
292 
293  }
294 
295 
296  condition = condition && ( nBarrel + nEndcap >= minHits_ );
297 
298 
299  cond1 = Barrel_ && cond1;
300  cond2 = EndcapPositive_ && cond2;
301  cond3 = EndcapNegative_ && cond3;
302 
303  bool condition2 = (cond1 || cond2 || cond3);
304  if(Barrel_ || EndcapPositive_ || EndcapNegative_)condition = condition && condition2;
305 
306 
307 
308  return condition;
309 
310 }
int i
Definition: DBlmapReader.cc:9
std::pair< const_iterator, const_iterator > range
iterator range
Definition: RangeMap.h:52
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:45
int ring() const
Definition: RPCDetId.h:76
std::string RPCDataLabel
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
const T & get() const
Definition: EventSetup.h:55
int sector() const
Sector id: the group of chambers at same phi (and increasing r)
Definition: RPCDetId.h:106
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.
Definition: RPCDetId.h:67
int station() const
Definition: RPCDetId.h:100

Member Data Documentation

bool RPCRecHitFilter::Barrel_
private

Definition at line 77 of file RPCRecHitFilter.h.

int RPCRecHitFilter::BXWindow_
private

Definition at line 75 of file RPCRecHitFilter.h.

int RPCRecHitFilter::centralBX_
private

Definition at line 75 of file RPCRecHitFilter.h.

bool RPCRecHitFilter::cosmicsVeto_
private

Definition at line 77 of file RPCRecHitFilter.h.

bool RPCRecHitFilter::Debug_
private

Definition at line 77 of file RPCRecHitFilter.h.

bool RPCRecHitFilter::EndcapNegative_
private

Definition at line 77 of file RPCRecHitFilter.h.

bool RPCRecHitFilter::EndcapPositive_
private

Definition at line 77 of file RPCRecHitFilter.h.

int RPCRecHitFilter::hitsInStations_
private

Definition at line 75 of file RPCRecHitFilter.h.

int RPCRecHitFilter::minHits_
private

Definition at line 75 of file RPCRecHitFilter.h.

std::string RPCRecHitFilter::RPCDataLabel
private

Definition at line 73 of file RPCRecHitFilter.h.

bool RPCRecHitFilter::Verbose_
private

Definition at line 77 of file RPCRecHitFilter.h.