CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
GEMRecHitMatcher Class Reference

#include <GEMRecHitMatcher.h>

Public Member Functions

bool areGEMRecHitSame (const GEMRecHit &l, const GEMRecHit &r) const
 
std::set< unsigned int > chamberIds () const
 
std::set< unsigned int > detIds () const
 
std::shared_ptr< GEMDigiMatchergemDigiMatcher () const
 
 GEMRecHitMatcher (edm::ParameterSet const &iPS, edm::ConsumesCollector &&iC)
 
void init (const edm::Event &e, const edm::EventSetup &eventSetup)
 
bool isGEMRecHitMatched (const GEMRecHit &thisRh) const
 
void match (const SimTrack &t, const SimVertex &v)
 do the matching More...
 
int nGEMRecHits () const
 How many recHits in GEM did this simtrack get in total? More...
 
int nLayersWithRecHitsInSuperChamber (unsigned int) const
 
std::set< int > partitionNumbers () const
 
bool recHitInContainer (const GEMRecHit &rh, const GEMRecHitContainer &c) const
 
GlobalPoint recHitMeanPosition (const GEMRecHitContainer &rechits) const
 
GlobalPoint recHitPosition (const GEMRecHit &rechit) const
 
const GEMRecHitContainerrecHits () const
 
const GEMRecHitContainerrecHitsInChamber (unsigned int) const
 
const GEMRecHitContainerrecHitsInDetId (unsigned int) const
 
const GEMRecHitContainerrecHitsInSuperChamber (unsigned int) const
 
std::set< int > stripNumbersInDetId (unsigned int) const
 
std::set< unsigned int > superChamberIds () const
 
bool verbose () const
 
 ~GEMRecHitMatcher ()
 

Private Member Functions

void matchRecHitsToSimTrack (const GEMRecHitCollection &recHits)
 

Private Attributes

std::map< unsigned int, GEMRecHitContainerchamber_to_recHits_
 
std::map< unsigned int, GEMRecHitContainerdetid_to_recHits_
 
std::shared_ptr< GEMDigiMatchergemDigiMatcher_
 
const GEMGeometrygemGeometry_
 
edm::Handle< GEMRecHitCollectiongemRecHitH_
 
edm::EDGetTokenT< GEMRecHitCollectiongemRecHitToken_
 
edm::ESGetToken< GEMGeometry, MuonGeometryRecordgeomToken_
 
int maxBX_
 
int minBX_
 
const GEMRecHitContainer no_recHits_
 
GEMRecHitContainer recHits_
 
std::map< unsigned int, GEMRecHitContainersuperchamber_to_recHits_
 
bool verbose_
 

Detailed Description

Description: Matching of RecHits for SimTrack in GEM

Original Author : "Vadim Khotilovich" Contibuting Author : "Claudio Caputo"

Definition at line 30 of file GEMRecHitMatcher.h.

Constructor & Destructor Documentation

◆ GEMRecHitMatcher()

GEMRecHitMatcher::GEMRecHitMatcher ( edm::ParameterSet const &  iPS,
edm::ConsumesCollector &&  iC 
)

Definition at line 7 of file GEMRecHitMatcher.cc.

7  {
8  const auto& gemRecHit = pset.getParameterSet("gemRecHit");
9  minBX_ = gemRecHit.getParameter<int>("minBX");
10  maxBX_ = gemRecHit.getParameter<int>("maxBX");
11  verbose_ = gemRecHit.getParameter<int>("verbose");
12 
13  // make a new digi matcher
15 
16  gemRecHitToken_ = iC.consumes<GEMRecHitCollection>(gemRecHit.getParameter<edm::InputTag>("inputTag"));
18 }

References muonGEMRecHitPSet::gemRecHit, eostools::move(), and muonDTDigis_cfi::pset.

◆ ~GEMRecHitMatcher()

GEMRecHitMatcher::~GEMRecHitMatcher ( )
inline

Definition at line 36 of file GEMRecHitMatcher.h.

36 {}

Member Function Documentation

◆ areGEMRecHitSame()

bool GEMRecHitMatcher::areGEMRecHitSame ( const GEMRecHit l,
const GEMRecHit r 
) const

Definition at line 198 of file GEMRecHitMatcher.cc.

198  {
199  return l.localPosition() == r.localPosition() and l.BunchX() == r.BunchX();
200 }

References cmsLHEtoEOSManager::l, and alignCSCRings::r.

◆ chamberIds()

std::set< unsigned int > GEMRecHitMatcher::chamberIds ( ) const

Definition at line 96 of file GEMRecHitMatcher.cc.

96  {
97  std::set<unsigned int> result;
98  for (const auto& p : chamber_to_recHits_)
99  result.insert(p.first);
100  return result;
101 }

References AlCaHLTBitMon_ParallelJobs::p, and mps_fire::result.

◆ detIds()

std::set< unsigned int > GEMRecHitMatcher::detIds ( void  ) const

Definition at line 89 of file GEMRecHitMatcher.cc.

89  {
90  std::set<unsigned int> result;
91  for (const auto& p : detid_to_recHits_)
92  result.insert(p.first);
93  return result;
94 }

References AlCaHLTBitMon_ParallelJobs::p, and mps_fire::result.

◆ gemDigiMatcher()

std::shared_ptr<GEMDigiMatcher> GEMRecHitMatcher::gemDigiMatcher ( ) const
inline

Definition at line 79 of file GEMRecHitMatcher.h.

79 { return gemDigiMatcher_; }

References gemDigiMatcher_.

◆ init()

void GEMRecHitMatcher::init ( const edm::Event e,
const edm::EventSetup eventSetup 
)

Definition at line 20 of file GEMRecHitMatcher.cc.

20  {
21  gemDigiMatcher_->init(iEvent, iSetup);
22 
23  iEvent.getByToken(gemRecHitToken_, gemRecHitH_);
24 
25  gemGeometry_ = &iSetup.getData(geomToken_);
26 }

References edm::EventSetup::getData(), and iEvent.

◆ isGEMRecHitMatched()

bool GEMRecHitMatcher::isGEMRecHitMatched ( const GEMRecHit thisRh) const

Definition at line 194 of file GEMRecHitMatcher.cc.

194  {
195  return recHitInContainer(thisRh, recHits());
196 }

References FastTrackerRecHitMaskProducer_cfi::recHits.

◆ match()

void GEMRecHitMatcher::match ( const SimTrack t,
const SimVertex v 
)

do the matching

Definition at line 29 of file GEMRecHitMatcher.cc.

29  {
30  // match digis first
31  gemDigiMatcher_->match(t, v);
32 
33  // get the rechit collection
35 
36  // now match the rechits
38 }

References gemRecHits_cfi::gemRecHits, submitPVValidationJobs::t, and findQualityFiles::v.

◆ matchRecHitsToSimTrack()

void GEMRecHitMatcher::matchRecHitsToSimTrack ( const GEMRecHitCollection recHits)
private

Definition at line 40 of file GEMRecHitMatcher.cc.

40  {
41  // get the matched ids with digis
42  const auto& det_ids = gemDigiMatcher_->detIdsDigi();
43 
44  // loop on those ids
45  for (auto id : det_ids) {
46  // now check the digis in this detid
47  const auto& hit_digis = gemDigiMatcher_->stripNumbersInDetId(id);
48  if (verbose()) {
49  cout << "hit_digis_fat ";
50  copy(hit_digis.begin(), hit_digis.end(), ostream_iterator<int>(cout, " "));
51  cout << endl;
52  }
53 
54  GEMDetId p_id(id);
55  const auto& rechits_in_det = rechits.get(p_id);
56 
57  for (auto d = rechits_in_det.first; d != rechits_in_det.second; ++d) {
58  if (verbose())
59  edm::LogInfo("GEMDigiMatcher") << "recHit " << p_id << " " << *d << endl;
60 
61  // check that the rechit is within BX range
62  if (d->BunchX() < minBX_ || d->BunchX() > maxBX_)
63  continue;
64 
65  int firstStrip = d->firstClusterStrip();
66  int cls = d->clusterSize();
67  bool stripFound = false;
68 
69  // check that it matches a strip that was hit by digis from our track
70  for (int i = firstStrip; i < (firstStrip + cls); i++) {
71  if (hit_digis.find(i) != hit_digis.end())
72  stripFound = true;
73  }
74 
75  // this rechit did not correspond with any previously matched digi
76  if (!stripFound)
77  continue;
78  if (verbose())
79  edm::LogInfo("GEMDigiMatcher") << "oki" << endl;
80 
81  recHits_.push_back(*d);
82  detid_to_recHits_[id].push_back(*d);
83  chamber_to_recHits_[p_id.chamberId().rawId()].push_back(*d);
84  superchamber_to_recHits_[p_id.superChamberId().rawId()].push_back(*d);
85  }
86  }
87 }

References GEMDetId::chamberId(), filterCSVwithJSON::copy, gather_cfg::cout, ztail::d, mps_fire::i, triggerObjects_cff::id, DetId::rawId(), HI_PhotonSkim_cff::rechits, GEMDetId::superChamberId(), and verbose.

◆ nGEMRecHits()

int GEMRecHitMatcher::nGEMRecHits ( ) const

How many recHits in GEM did this simtrack get in total?

◆ nLayersWithRecHitsInSuperChamber()

int GEMRecHitMatcher::nLayersWithRecHitsInSuperChamber ( unsigned int  detid) const

Definition at line 128 of file GEMRecHitMatcher.cc.

128  {
129  set<int> layers;
130  for (const auto& d : recHitsInSuperChamber(detid)) {
131  layers.insert(d.gemId().layer());
132  }
133  return layers.size();
134 }

References ztail::d, and hgcalTopologyTester_cfi::layers.

◆ partitionNumbers()

std::set< int > GEMRecHitMatcher::partitionNumbers ( ) const

Definition at line 147 of file GEMRecHitMatcher.cc.

147  {
148  std::set<int> result;
149 
150  for (auto id : detIds()) {
151  GEMDetId idd(id);
152  result.insert(idd.roll());
153  }
154  return result;
155 }

References mps_fire::result, and GEMDetId::roll().

◆ recHitInContainer()

bool GEMRecHitMatcher::recHitInContainer ( const GEMRecHit rh,
const GEMRecHitContainer c 
) const

Definition at line 186 of file GEMRecHitMatcher.cc.

186  {
187  bool isSame = false;
188  for (const auto& thisRH : c)
189  if (areGEMRecHitSame(thisRH, rh))
190  isSame = true;
191  return isSame;
192 }

References HltBtagPostValidation_cff::c.

◆ recHitMeanPosition()

GlobalPoint GEMRecHitMatcher::recHitMeanPosition ( const GEMRecHitContainer rechits) const

Definition at line 163 of file GEMRecHitMatcher.cc.

163  {
164  GlobalPoint point_zero;
165  if (rechit.empty())
166  return point_zero; // point "zero"
167 
168  float sumx, sumy, sumz;
169  sumx = sumy = sumz = 0.f;
170  size_t n = 0;
171  for (const auto& d : rechit) {
173  if (gp == point_zero)
174  continue;
175 
176  sumx += gp.x();
177  sumy += gp.y();
178  sumz += gp.z();
179  ++n;
180  }
181  if (n == 0)
182  return GlobalPoint();
183  return GlobalPoint(sumx / n, sumy / n, sumz / n);
184 }

References ztail::d, runTauDisplay::gp, and dqmiodumpmetadata::n.

◆ recHitPosition()

GlobalPoint GEMRecHitMatcher::recHitPosition ( const GEMRecHit rechit) const

Definition at line 157 of file GEMRecHitMatcher.cc.

157  {
158  const GEMDetId& idd = rechit.gemId();
159  const LocalPoint& lp = rechit.localPosition();
160  return gemGeometry_->idToDet(idd)->surface().toGlobal(lp);
161 }

References GEMRecHit::gemId(), and GEMRecHit::localPosition().

◆ recHits()

const GEMRecHitContainer& GEMRecHitMatcher::recHits ( void  ) const
inline

Definition at line 54 of file GEMRecHitMatcher.h.

54 { return recHits_; }

References recHits_.

◆ recHitsInChamber()

const GEMRecHitContainer & GEMRecHitMatcher::recHitsInChamber ( unsigned int  detid) const

Definition at line 116 of file GEMRecHitMatcher.cc.

116  {
117  if (chamber_to_recHits_.find(detid) == chamber_to_recHits_.end())
118  return no_recHits_;
119  return chamber_to_recHits_.at(detid);
120 }

◆ recHitsInDetId()

const GEMRecHitContainer & GEMRecHitMatcher::recHitsInDetId ( unsigned int  detid) const

Definition at line 110 of file GEMRecHitMatcher.cc.

110  {
111  if (detid_to_recHits_.find(detid) == detid_to_recHits_.end())
112  return no_recHits_;
113  return detid_to_recHits_.at(detid);
114 }

◆ recHitsInSuperChamber()

const GEMRecHitContainer & GEMRecHitMatcher::recHitsInSuperChamber ( unsigned int  detid) const

Definition at line 122 of file GEMRecHitMatcher.cc.

122  {
123  if (superchamber_to_recHits_.find(detid) == superchamber_to_recHits_.end())
124  return no_recHits_;
125  return superchamber_to_recHits_.at(detid);
126 }

◆ stripNumbersInDetId()

std::set< int > GEMRecHitMatcher::stripNumbersInDetId ( unsigned int  detid) const

Definition at line 136 of file GEMRecHitMatcher.cc.

136  {
137  set<int> result;
138  for (const auto& d : recHitsInDetId(detid)) {
139  // loop on all strips hit in this rechit
140  for (int iStrip = d.firstClusterStrip(); iStrip < d.firstClusterStrip() + d.clusterSize(); ++iStrip) {
141  result.insert(iStrip);
142  }
143  }
144  return result;
145 }

References ztail::d, and mps_fire::result.

◆ superChamberIds()

std::set< unsigned int > GEMRecHitMatcher::superChamberIds ( ) const

Definition at line 103 of file GEMRecHitMatcher.cc.

103  {
104  std::set<unsigned int> result;
105  for (const auto& p : superchamber_to_recHits_)
106  result.insert(p.first);
107  return result;
108 }

References AlCaHLTBitMon_ParallelJobs::p, and mps_fire::result.

◆ verbose()

bool GEMRecHitMatcher::verbose ( ) const
inline

Definition at line 71 of file GEMRecHitMatcher.h.

71 { return verbose_; }

References verbose_.

Member Data Documentation

◆ chamber_to_recHits_

std::map<unsigned int, GEMRecHitContainer> GEMRecHitMatcher::chamber_to_recHits_
private

Definition at line 100 of file GEMRecHitMatcher.h.

◆ detid_to_recHits_

std::map<unsigned int, GEMRecHitContainer> GEMRecHitMatcher::detid_to_recHits_
private

Definition at line 99 of file GEMRecHitMatcher.h.

◆ gemDigiMatcher_

std::shared_ptr<GEMDigiMatcher> GEMRecHitMatcher::gemDigiMatcher_
private

Definition at line 106 of file GEMRecHitMatcher.h.

Referenced by gemDigiMatcher().

◆ gemGeometry_

const GEMGeometry* GEMRecHitMatcher::gemGeometry_
private

Definition at line 94 of file GEMRecHitMatcher.h.

◆ gemRecHitH_

edm::Handle<GEMRecHitCollection> GEMRecHitMatcher::gemRecHitH_
private

Definition at line 91 of file GEMRecHitMatcher.h.

◆ gemRecHitToken_

edm::EDGetTokenT<GEMRecHitCollection> GEMRecHitMatcher::gemRecHitToken_
private

Definition at line 90 of file GEMRecHitMatcher.h.

◆ geomToken_

edm::ESGetToken<GEMGeometry, MuonGeometryRecord> GEMRecHitMatcher::geomToken_
private

Definition at line 93 of file GEMRecHitMatcher.h.

◆ maxBX_

int GEMRecHitMatcher::maxBX_
private

Definition at line 96 of file GEMRecHitMatcher.h.

◆ minBX_

int GEMRecHitMatcher::minBX_
private

Definition at line 96 of file GEMRecHitMatcher.h.

◆ no_recHits_

const GEMRecHitContainer GEMRecHitMatcher::no_recHits_
private

Definition at line 103 of file GEMRecHitMatcher.h.

◆ recHits_

GEMRecHitContainer GEMRecHitMatcher::recHits_
private

Definition at line 104 of file GEMRecHitMatcher.h.

Referenced by recHits().

◆ superchamber_to_recHits_

std::map<unsigned int, GEMRecHitContainer> GEMRecHitMatcher::superchamber_to_recHits_
private

Definition at line 101 of file GEMRecHitMatcher.h.

◆ verbose_

bool GEMRecHitMatcher::verbose_
private

Definition at line 97 of file GEMRecHitMatcher.h.

Referenced by verbose().

GEMRecHitCollection
GEMRecHitMatcher::recHits_
GEMRecHitContainer recHits_
Definition: GEMRecHitMatcher.h:104
mps_fire.i
i
Definition: mps_fire.py:428
muonGEMRecHitPSet.gemRecHit
gemRecHit
Definition: muonGEMRecHitPSet.py:3
GEMRecHitMatcher::verbose_
bool verbose_
Definition: GEMRecHitMatcher.h:97
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
edm::Handle::product
T const * product() const
Definition: Handle.h:70
filterCSVwithJSON.copy
copy
Definition: filterCSVwithJSON.py:36
GEMRecHitMatcher::gemDigiMatcher_
std::shared_ptr< GEMDigiMatcher > gemDigiMatcher_
Definition: GEMRecHitMatcher.h:106
GEMGeometry::idToDet
const GeomDet * idToDet(DetId) const override
Definition: GEMGeometry.cc:25
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
gather_cfg.cout
cout
Definition: gather_cfg.py:144
GEMDigiMatcher
Definition: GEMDigiMatcher.h:31
GEMRecHitMatcher::recHits
const GEMRecHitContainer & recHits() const
Definition: GEMRecHitMatcher.h:54
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
findQualityFiles.v
v
Definition: findQualityFiles.py:179
GEMRecHitMatcher::recHitInContainer
bool recHitInContainer(const GEMRecHit &rh, const GEMRecHitContainer &c) const
Definition: GEMRecHitMatcher.cc:186
edm::ConsumesCollector::esConsumes
auto esConsumes()
Definition: ConsumesCollector.h:97
GEMRecHitMatcher::gemRecHitToken_
edm::EDGetTokenT< GEMRecHitCollection > gemRecHitToken_
Definition: GEMRecHitMatcher.h:90
GEMRecHitMatcher::recHitPosition
GlobalPoint recHitPosition(const GEMRecHit &rechit) const
Definition: GEMRecHitMatcher.cc:157
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
GEMRecHitMatcher::chamber_to_recHits_
std::map< unsigned int, GEMRecHitContainer > chamber_to_recHits_
Definition: GEMRecHitMatcher.h:100
GEMRecHitMatcher::gemGeometry_
const GEMGeometry * gemGeometry_
Definition: GEMRecHitMatcher.h:94
GEMRecHitMatcher::areGEMRecHitSame
bool areGEMRecHitSame(const GEMRecHit &l, const GEMRecHit &r) const
Definition: GEMRecHitMatcher.cc:198
GEMRecHitMatcher::superchamber_to_recHits_
std::map< unsigned int, GEMRecHitContainer > superchamber_to_recHits_
Definition: GEMRecHitMatcher.h:101
Surface::toGlobal
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:55
HI_PhotonSkim_cff.rechits
rechits
Definition: HI_PhotonSkim_cff.py:76
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
Point3DBase< float, GlobalTag >
runTauDisplay.gp
gp
Definition: runTauDisplay.py:431
GEMRecHitMatcher::recHitsInSuperChamber
const GEMRecHitContainer & recHitsInSuperChamber(unsigned int) const
Definition: GEMRecHitMatcher.cc:122
GEMRecHitMatcher::detIds
std::set< unsigned int > detIds() const
Definition: GEMRecHitMatcher.cc:89
GEMDetId
Definition: GEMDetId.h:18
iEvent
int iEvent
Definition: GenABIO.cc:224
GEMRecHitMatcher::matchRecHitsToSimTrack
void matchRecHitsToSimTrack(const GEMRecHitCollection &recHits)
Definition: GEMRecHitMatcher.cc:40
GEMRecHitMatcher::minBX_
int minBX_
Definition: GEMRecHitMatcher.h:96
GEMRecHit::gemId
GEMDetId gemId() const
Return the gemId.
Definition: GEMRecHit.h:65
GEMRecHitMatcher::no_recHits_
const GEMRecHitContainer no_recHits_
Definition: GEMRecHitMatcher.h:103
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
GEMRecHitMatcher::geomToken_
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geomToken_
Definition: GEMRecHitMatcher.h:93
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:204
alignCSCRings.r
r
Definition: alignCSCRings.py:93
GEMRecHitMatcher::recHitsInDetId
const GEMRecHitContainer & recHitsInDetId(unsigned int) const
Definition: GEMRecHitMatcher.cc:110
eostools.move
def move(src, dest)
Definition: eostools.py:511
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
GEMRecHitMatcher::gemRecHitH_
edm::Handle< GEMRecHitCollection > gemRecHitH_
Definition: GEMRecHitMatcher.h:91
GEMRecHitMatcher::detid_to_recHits_
std::map< unsigned int, GEMRecHitContainer > detid_to_recHits_
Definition: GEMRecHitMatcher.h:99
GEMRecHitMatcher::maxBX_
int maxBX_
Definition: GEMRecHitMatcher.h:96
GEMGeometry
Definition: GEMGeometry.h:24
ztail.d
d
Definition: ztail.py:151
mps_fire.result
result
Definition: mps_fire.py:311
gemRecHits_cfi.gemRecHits
gemRecHits
Definition: gemRecHits_cfi.py:7
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
edm::Log
Definition: MessageLogger.h:70
MuonGeometryRecord
Definition: MuonGeometryRecord.h:34
edm::InputTag
Definition: InputTag.h:15
hgcalTopologyTester_cfi.layers
layers
Definition: hgcalTopologyTester_cfi.py:8
GEMRecHitMatcher::verbose
bool verbose() const
Definition: GEMRecHitMatcher.h:71
GEMRecHit::localPosition
LocalPoint localPosition() const override
Return the 3-dimensional local position.
Definition: GEMRecHit.h:37
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27