CMS 3D CMS Logo

Public Member Functions | Private Attributes

HLTCSCRing2or3Filter Class Reference

#include <HLTCSCRing2or3Filter.h>

Inheritance diagram for HLTCSCRing2or3Filter:
HLTFilter edm::EDFilter edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

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

Private Attributes

edm::InputTag m_input
unsigned int m_minHits
double m_xWindow
double m_yWindow

Detailed Description

Definition at line 11 of file HLTCSCRing2or3Filter.h.


Constructor & Destructor Documentation

HLTCSCRing2or3Filter::HLTCSCRing2or3Filter ( const edm::ParameterSet iConfig) [explicit]

Definition at line 14 of file HLTCSCRing2or3Filter.cc.

   : m_input(iConfig.getParameter<edm::InputTag>("input"))
     , m_minHits(iConfig.getParameter<unsigned int>("minHits"))
     , m_xWindow(iConfig.getParameter<double>("xWindow"))
     , m_yWindow(iConfig.getParameter<double>("yWindow"))
{}
HLTCSCRing2or3Filter::~HLTCSCRing2or3Filter ( )

Definition at line 21 of file HLTCSCRing2or3Filter.cc.

{ }

Member Function Documentation

bool HLTCSCRing2or3Filter::filter ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [virtual]

Implements HLTFilter.

Definition at line 23 of file HLTCSCRing2or3Filter.cc.

References CSCDetId, Reference_intrackfit_cff::endcap, edm::EventSetup::get(), edm::Event::getByLabel(), m_input, m_minHits, m_xWindow, m_yWindow, python::multivaluedict::map(), relativeConstraints::ring, relativeConstraints::station, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

                                                                               {
   edm::Handle<CSCRecHit2DCollection> hits;
   iEvent.getByLabel(m_input, hits);

   edm::ESHandle<CSCGeometry> cscGeometry;
   bool got_cscGeometry = false;

   std::map<int, std::vector<const CSCRecHit2D*> > chamber_tohit;

   for (CSCRecHit2DCollection::const_iterator hit = hits->begin();  hit != hits->end();  ++hit) {
      CSCDetId id(hit->geographicalId());
      int chamber_id = CSCDetId(id.endcap(), id.station(), id.ring(), id.chamber(), 0).rawId();

      if (id.ring() == 2  ||  id.ring() == 3) {
         std::map<int, std::vector<const CSCRecHit2D*> >::const_iterator chamber_iter = chamber_tohit.find(chamber_id);
         if (chamber_iter == chamber_tohit.end()) {
            std::vector<const CSCRecHit2D*> newlist;
            newlist.push_back(&(*hit));
         }
         chamber_tohit[chamber_id].push_back(&(*hit));
      } // end if this ring is selected
   } // end loop over hits

   unsigned int minHitsAlmostSquared = (m_minHits-1) * (m_minHits-2);
   for (std::map<int, std::vector<const CSCRecHit2D*> >::const_iterator chamber_iter = chamber_tohit.begin();
        chamber_iter != chamber_tohit.end();
        ++chamber_iter) {

      if (chamber_iter->second.size() >= m_minHits) {
         if (!got_cscGeometry) {
            iSetup.get<MuonGeometryRecord>().get(cscGeometry);
            got_cscGeometry = true;
         }

         unsigned int pairs_in_window = 0;
         for (std::vector<const CSCRecHit2D*>::const_iterator hit1 = chamber_iter->second.begin();  hit1 != chamber_iter->second.end();  ++hit1) {
            for (std::vector<const CSCRecHit2D*>::const_iterator hit2 = chamber_iter->second.begin();  hit2 != hit1;  ++hit2) {
               GlobalPoint pos1 = cscGeometry->idToDet((*hit1)->geographicalId())->surface().toGlobal((*hit1)->localPosition());
               GlobalPoint pos2 = cscGeometry->idToDet((*hit2)->geographicalId())->surface().toGlobal((*hit2)->localPosition());

               if (fabs(pos1.x() - pos2.x()) < m_xWindow  &&  fabs(pos1.y() - pos2.y()) < m_yWindow) pairs_in_window++;

               if (pairs_in_window >= minHitsAlmostSquared) return true;
            } // end loop over hits
         } // end loop over hits

      } // end if chamber has enough hits
   } // end loop over chambers

   return false;
}

Member Data Documentation

Definition at line 19 of file HLTCSCRing2or3Filter.h.

Referenced by filter().

unsigned int HLTCSCRing2or3Filter::m_minHits [private]

Definition at line 20 of file HLTCSCRing2or3Filter.h.

Referenced by filter().

Definition at line 21 of file HLTCSCRing2or3Filter.h.

Referenced by filter().

Definition at line 21 of file HLTCSCRing2or3Filter.h.

Referenced by filter().