CMS 3D CMS Logo

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

#include <CSCStubMatcher.h>

Public Member Functions

std::map< unsigned int, CSCALCTDigiContaineralcts () const
 
const CSCALCTDigiContaineralctsInChamber (unsigned int) const
 
const CSCALCTDigiContainerallALCTsInChamber (unsigned int) const
 
const CSCCLCTDigiContainerallCLCTsInChamber (unsigned int) const
 all stubs (not necessarily matching) from a particular crossed chamber More...
 
const CSCCorrelatedLCTDigiContainerallLCTsInChamber (unsigned int) const
 
const CSCCorrelatedLCTDigiContainerallMPLCTsInChamber (unsigned int) const
 
CSCALCTDigi bestAlctInChamber (unsigned int) const
 
CSCCLCTDigi bestClctInChamber (unsigned int) const
 best matching from a particular crossed chamber More...
 
CSCCorrelatedLCTDigi bestLctInChamber (unsigned int) const
 
CSCCorrelatedLCTDigi bestMplctInChamber (unsigned int) const
 
std::set< unsigned int > chamberIdsALCT (int csc_type=MuonHitHelper::CSC_ALL) const
 
std::set< unsigned int > chamberIdsAllALCT (int csc_type=MuonHitHelper::CSC_ALL) const
 
std::set< unsigned int > chamberIdsAllCLCT (int csc_type=MuonHitHelper::CSC_ALL) const
 crossed chamber detIds with not necessarily matching stubs More...
 
std::set< unsigned int > chamberIdsAllLCT (int csc_type=MuonHitHelper::CSC_ALL) const
 
std::set< unsigned int > chamberIdsAllMPLCT (int csc_type=MuonHitHelper::CSC_ALL) const
 
std::set< unsigned int > chamberIdsCLCT (int csc_type=MuonHitHelper::CSC_ALL) const
 chamber detIds with matching stubs More...
 
std::set< unsigned int > chamberIdsLCT (int csc_type=MuonHitHelper::CSC_ALL) const
 
std::set< unsigned int > chamberIdsMPLCT (int csc_type=MuonHitHelper::CSC_ALL) const
 
std::map< unsigned int, CSCCLCTDigiContainerclcts () const
 all matching lcts More...
 
const CSCCLCTDigiContainerclctsInChamber (unsigned int) const
 all matching from a particular crossed chamber More...
 
std::shared_ptr< CSCDigiMatchercscDigiMatcher ()
 
 CSCStubMatcher (edm::ParameterSet const &iPS, edm::ConsumesCollector &&iC)
 
std::shared_ptr< GEMDigiMatchergemDigiMatcher ()
 
GlobalPoint getGlobalPosition (unsigned int rawId, const CSCCorrelatedLCTDigi &lct) const
 
void init (const edm::Event &e, const edm::EventSetup &eventSetup)
 initialize the event More...
 
bool lctInChamber (const CSCDetId &id, const CSCCorrelatedLCTDigi &lct) const
 
std::map< unsigned int, CSCCorrelatedLCTDigiContainerlcts () const
 
const CSCCorrelatedLCTDigiContainerlctsInChamber (unsigned int) const
 
void match (const SimTrack &t, const SimVertex &v)
 do the matching More...
 
std::map< unsigned int, CSCCorrelatedLCTDigiContainermplcts () const
 
const CSCCorrelatedLCTDigiContainermplctsInChamber (unsigned int) const
 
int nChambersWithALCT (int min_quality=0) const
 
int nChambersWithCLCT (int min_quality=0) const
 How many CSC chambers with matching stubs of some minimal quality did this SimTrack hit? More...
 
int nChambersWithLCT (int min_quality=0) const
 
int nChambersWithMPLCT (int min_quality=0) const
 
float zpositionOfLayer (unsigned int detid, int layer) const
 
 ~CSCStubMatcher ()
 

Private Member Functions

void addGhostLCTs (const CSCCorrelatedLCTDigi &lct11, const CSCCorrelatedLCTDigi &lct22, CSCCorrelatedLCTDigiContainer &lctcontainer) const
 
void clear ()
 
void matchALCTsToSimTrack (const CSCALCTDigiCollection &)
 
void matchCLCTsToSimTrack (const CSCCLCTDigiCollection &)
 
void matchLCTsToSimTrack (const CSCCorrelatedLCTDigiCollection &)
 
void matchMPLCTsToSimTrack (const CSCCorrelatedLCTDigiCollection &)
 
template<class D >
std::set< unsigned int > selectDetIds (D &, int) const
 

Private Attributes

bool addGhostLCTs_
 
edm::InputTag alctInputTag_
 
edm::Handle< CSCALCTDigiCollectionalctsH_
 
edm::EDGetTokenT< CSCALCTDigiCollectionalctToken_
 
std::map< unsigned int, CSCALCTDigiContainerchamber_to_alcts_
 
std::map< unsigned int, CSCALCTDigiContainerchamber_to_alcts_all_
 
std::map< unsigned int, CSCCLCTDigiContainerchamber_to_clcts_
 
std::map< unsigned int, CSCCLCTDigiContainerchamber_to_clcts_all_
 
std::map< unsigned int, CSCCorrelatedLCTDigiContainerchamber_to_lcts_
 
std::map< unsigned int, CSCCorrelatedLCTDigiContainerchamber_to_lcts_all_
 
std::map< unsigned int, CSCCorrelatedLCTDigiContainerchamber_to_mplcts_
 
std::map< unsigned int, CSCCorrelatedLCTDigiContainerchamber_to_mplcts_all_
 
edm::InputTag clctInputTag_
 
edm::Handle< CSCCLCTDigiCollectionclctsH_
 
edm::EDGetTokenT< CSCCLCTDigiCollectionclctToken_
 
std::shared_ptr< CSCDigiMatchercscDigiMatcher_
 
const CSCGeometrycscGeometry_
 
std::shared_ptr< GEMDigiMatchergemDigiMatcher_
 
edm::ESGetToken< CSCGeometry, MuonGeometryRecordgeomToken_
 
edm::InputTag lctInputTag_
 
edm::Handle< CSCCorrelatedLCTDigiCollectionlctsH_
 
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollectionlctToken_
 
bool matchTypeTightLCT_
 
int maxBXALCT_
 
int maxBXCLCT_
 
int maxBXLCT_
 
int maxBXMPLCT_
 
int minBXALCT_
 
int minBXCLCT_
 
int minBXLCT_
 
int minBXMPLCT_
 
int minNHitsChamber_
 
int minNHitsChamberALCT_
 
int minNHitsChamberCLCT_
 
int minNHitsChamberLCT_
 
int minNHitsChamberMPLCT_
 
edm::InputTag mplctInputTag_
 
edm::Handle< CSCCorrelatedLCTDigiCollectionmplctsH_
 
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollectionmplctToken_
 
CSCALCTDigiContainer no_alcts_
 
CSCCLCTDigiContainer no_clcts_
 
CSCCorrelatedLCTDigiContainer no_lcts_
 
CSCCorrelatedLCTDigiContainer no_mplcts_
 
bool useGEMs_
 
bool verboseALCT_
 
bool verboseCLCT_
 
bool verboseLCT_
 
bool verboseMPLCT_
 

Detailed Description

Description: Matching of CSC L1 trigger stubs to SimTrack

Author: Sven Dildick (TAMU), Tao Huang (TAMU)

Definition at line 23 of file CSCStubMatcher.h.

Constructor & Destructor Documentation

◆ CSCStubMatcher()

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

Definition at line 7 of file CSCStubMatcher.cc.

References muonCSCStubPSet::cscALCT, muonCSCStubPSet::cscCLCT, muonCSCStubPSet::cscLCT, muonCSCStubPSet::cscMPLCT, edm::ParameterSet::getParameter(), and eostools::move().

7  {
8  useGEMs_ = pSet.getParameter<bool>("useGEMs");
9 
10  const auto& cscCLCT = pSet.getParameter<edm::ParameterSet>("cscCLCT");
11  minBXCLCT_ = cscCLCT.getParameter<int>("minBX");
12  maxBXCLCT_ = cscCLCT.getParameter<int>("maxBX");
13  verboseCLCT_ = cscCLCT.getParameter<int>("verbose");
14  minNHitsChamberCLCT_ = cscCLCT.getParameter<int>("minNHitsChamber");
15 
16  const auto& cscALCT = pSet.getParameter<edm::ParameterSet>("cscALCT");
17  minBXALCT_ = cscALCT.getParameter<int>("minBX");
18  maxBXALCT_ = cscALCT.getParameter<int>("maxBX");
19  verboseALCT_ = cscALCT.getParameter<int>("verbose");
20  minNHitsChamberALCT_ = cscALCT.getParameter<int>("minNHitsChamber");
21 
22  const auto& cscLCT = pSet.getParameter<edm::ParameterSet>("cscLCT");
23  minBXLCT_ = cscLCT.getParameter<int>("minBX");
24  maxBXLCT_ = cscLCT.getParameter<int>("maxBX");
25  matchTypeTightLCT_ = cscLCT.getParameter<bool>("matchTypeTight");
26  verboseLCT_ = cscLCT.getParameter<int>("verbose");
27  minNHitsChamberLCT_ = cscLCT.getParameter<int>("minNHitsChamber");
28  addGhostLCTs_ = cscLCT.getParameter<bool>("addGhosts");
29 
30  const auto& cscMPLCT = pSet.getParameter<edm::ParameterSet>("cscMPLCT");
31  minBXMPLCT_ = cscMPLCT.getParameter<int>("minBX");
32  maxBXMPLCT_ = cscMPLCT.getParameter<int>("maxBX");
33  verboseMPLCT_ = cscMPLCT.getParameter<int>("verbose");
34  minNHitsChamberMPLCT_ = cscMPLCT.getParameter<int>("minNHitsChamber");
35 
36  if (useGEMs_)
37  gemDigiMatcher_.reset(new GEMDigiMatcher(pSet, std::move(iC)));
38  cscDigiMatcher_.reset(new CSCDigiMatcher(pSet, std::move(iC)));
39 
40  clctInputTag_ = cscCLCT.getParameter<edm::InputTag>("inputTag");
41  alctInputTag_ = cscALCT.getParameter<edm::InputTag>("inputTag");
42  lctInputTag_ = cscLCT.getParameter<edm::InputTag>("inputTag");
43  mplctInputTag_ = cscMPLCT.getParameter<edm::InputTag>("inputTag");
44 
49 
51 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::InputTag clctInputTag_
edm::EDGetTokenT< CSCCLCTDigiCollection > clctToken_
std::shared_ptr< CSCDigiMatcher > cscDigiMatcher_
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollection > mplctToken_
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollection > lctToken_
edm::EDGetTokenT< CSCALCTDigiCollection > alctToken_
edm::InputTag mplctInputTag_
edm::ESGetToken< CSCGeometry, MuonGeometryRecord > geomToken_
std::shared_ptr< GEMDigiMatcher > gemDigiMatcher_
edm::InputTag alctInputTag_
edm::InputTag lctInputTag_
def move(src, dest)
Definition: eostools.py:511

◆ ~CSCStubMatcher()

CSCStubMatcher::~CSCStubMatcher ( )
inline

Definition at line 27 of file CSCStubMatcher.h.

27 {}

Member Function Documentation

◆ addGhostLCTs()

void CSCStubMatcher::addGhostLCTs ( const CSCCorrelatedLCTDigi lct11,
const CSCCorrelatedLCTDigi lct22,
CSCCorrelatedLCTDigiContainer lctcontainer 
) const
private

Definition at line 677 of file CSCStubMatcher.cc.

References CSCCorrelatedLCTDigi::getALCT(), CSCCorrelatedLCTDigi::getCLCT(), CSCCorrelatedLCTDigi::getKeyWG(), CSCCorrelatedLCTDigi::getStrip(), CSCCorrelatedLCTDigi::setALCT(), CSCCorrelatedLCTDigi::setCLCT(), and CSCCorrelatedLCTDigi::setWireGroup().

679  {
680  int wg1 = lct11.getKeyWG();
681  int wg2 = lct22.getKeyWG();
682  int hs1 = lct11.getStrip();
683  int hs2 = lct22.getStrip();
684 
685  if (!(wg1 == wg2 || hs1 == hs2)) {
686  // flip the ALCTs
687  CSCCorrelatedLCTDigi lct12 = lct11;
688  lct12.setWireGroup(wg2);
689  lct12.setALCT(lct22.getALCT());
690  lct12.setCLCT(lct11.getCLCT());
691  lcts_tmp.push_back(lct12);
692 
693  CSCCorrelatedLCTDigi lct21 = lct22;
694  lct21.setWireGroup(wg1);
695  lct21.setALCT(lct11.getALCT());
696  lct21.setCLCT(lct22.getCLCT());
697  lcts_tmp.push_back(lct21);
698  }
699 }
void setALCT(const CSCALCTDigi &alct)
void setWireGroup(const uint16_t wiregroup)
set wiregroup number
uint16_t getStrip(uint16_t n=2) const
return the key halfstrip from 0,159
const CSCCLCTDigi & getCLCT() const
uint16_t getKeyWG() const
return the key wire group. counts from 0.
void setCLCT(const CSCCLCTDigi &clct)
const CSCALCTDigi & getALCT() const

◆ alcts()

std::map<unsigned int, CSCALCTDigiContainer> CSCStubMatcher::alcts ( ) const
inline

Definition at line 61 of file CSCStubMatcher.h.

References chamber_to_alcts_.

61 { return chamber_to_alcts_; }
std::map< unsigned int, CSCALCTDigiContainer > chamber_to_alcts_

◆ alctsInChamber()

const CSCALCTDigiContainer & CSCStubMatcher::alctsInChamber ( unsigned int  detid) const

Definition at line 478 of file CSCStubMatcher.cc.

478  {
479  if (chamber_to_alcts_.find(detid) == chamber_to_alcts_.end())
480  return no_alcts_;
481  return chamber_to_alcts_.at(detid);
482 }
std::map< unsigned int, CSCALCTDigiContainer > chamber_to_alcts_
CSCALCTDigiContainer no_alcts_

◆ allALCTsInChamber()

const CSCALCTDigiContainer & CSCStubMatcher::allALCTsInChamber ( unsigned int  detid) const

Definition at line 454 of file CSCStubMatcher.cc.

454  {
455  if (chamber_to_alcts_all_.find(detid) == chamber_to_alcts_all_.end())
456  return no_alcts_;
457  return chamber_to_alcts_all_.at(detid);
458 }
CSCALCTDigiContainer no_alcts_
std::map< unsigned int, CSCALCTDigiContainer > chamber_to_alcts_all_

◆ allCLCTsInChamber()

const CSCCLCTDigiContainer & CSCStubMatcher::allCLCTsInChamber ( unsigned int  detid) const

all stubs (not necessarily matching) from a particular crossed chamber

Definition at line 448 of file CSCStubMatcher.cc.

448  {
449  if (chamber_to_clcts_all_.find(detid) == chamber_to_clcts_all_.end())
450  return no_clcts_;
451  return chamber_to_clcts_all_.at(detid);
452 }
std::map< unsigned int, CSCCLCTDigiContainer > chamber_to_clcts_all_
CSCCLCTDigiContainer no_clcts_

◆ allLCTsInChamber()

const CSCCorrelatedLCTDigiContainer & CSCStubMatcher::allLCTsInChamber ( unsigned int  detid) const

Definition at line 460 of file CSCStubMatcher.cc.

460  {
461  if (chamber_to_lcts_all_.find(detid) == chamber_to_lcts_all_.end())
462  return no_lcts_;
463  return chamber_to_lcts_all_.at(detid);
464 }
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_lcts_all_
CSCCorrelatedLCTDigiContainer no_lcts_

◆ allMPLCTsInChamber()

const CSCCorrelatedLCTDigiContainer & CSCStubMatcher::allMPLCTsInChamber ( unsigned int  detid) const

Definition at line 466 of file CSCStubMatcher.cc.

466  {
467  if (chamber_to_mplcts_all_.find(detid) == chamber_to_mplcts_all_.end())
468  return no_mplcts_;
469  return chamber_to_mplcts_all_.at(detid);
470 }
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_mplcts_all_
CSCCorrelatedLCTDigiContainer no_mplcts_

◆ bestAlctInChamber()

CSCALCTDigi CSCStubMatcher::bestAlctInChamber ( unsigned int  detid) const

Definition at line 513 of file CSCStubMatcher.cc.

References mps_fire::i, input, and quality.

513  {
514  //sort stubs based on quality
515  const auto& input(alctsInChamber(detid));
516  int bestQ = 0;
517  int index = -1;
518  for (unsigned int i = 0; i < input.size(); ++i) {
519  int quality = input[i].getQuality();
520  if (quality > bestQ) {
521  bestQ = quality;
522  index = i;
523  }
524  }
525  if (index != -1)
526  return input[index];
527  return CSCALCTDigi();
528 }
static std::string const input
Definition: EdmProvDump.cc:50
string quality
const CSCALCTDigiContainer & alctsInChamber(unsigned int) const

◆ bestClctInChamber()

CSCCLCTDigi CSCStubMatcher::bestClctInChamber ( unsigned int  detid) const

best matching from a particular crossed chamber

Definition at line 496 of file CSCStubMatcher.cc.

References mps_fire::i, input, and quality.

496  {
497  //sort stubs based on quality
498  const auto& input(clctsInChamber(detid));
499  int bestQ = 0;
500  int index = -1;
501  for (unsigned int i = 0; i < input.size(); ++i) {
502  int quality = input[i].getQuality();
503  if (quality > bestQ) {
504  bestQ = quality;
505  index = i;
506  }
507  }
508  if (index != -1)
509  return input[index];
510  return CSCCLCTDigi();
511 }
static std::string const input
Definition: EdmProvDump.cc:50
string quality
const CSCCLCTDigiContainer & clctsInChamber(unsigned int) const
all matching from a particular crossed chamber

◆ bestLctInChamber()

CSCCorrelatedLCTDigi CSCStubMatcher::bestLctInChamber ( unsigned int  detid) const

Definition at line 530 of file CSCStubMatcher.cc.

References mps_fire::i, input, and quality.

530  {
531  //sort stubs based on quality
532  const auto& input(lctsInChamber(detid));
533  int bestQ = 0;
534  int index = -1;
535  for (unsigned int i = 0; i < input.size(); ++i) {
536  int quality = input[i].getQuality();
537  if (quality > bestQ) {
538  bestQ = quality;
539  index = i;
540  }
541  }
542  if (index != -1)
543  return input[index];
544  return CSCCorrelatedLCTDigi();
545 }
static std::string const input
Definition: EdmProvDump.cc:50
string quality
const CSCCorrelatedLCTDigiContainer & lctsInChamber(unsigned int) const

◆ bestMplctInChamber()

CSCCorrelatedLCTDigi CSCStubMatcher::bestMplctInChamber ( unsigned  int) const

◆ chamberIdsALCT()

std::set< unsigned int > CSCStubMatcher::chamberIdsALCT ( int  csc_type = MuonHitHelper::CSC_ALL) const

Definition at line 436 of file CSCStubMatcher.cc.

436  {
437  return selectDetIds(chamber_to_alcts_, csc_type);
438 }
std::set< unsigned int > selectDetIds(D &, int) const
std::map< unsigned int, CSCALCTDigiContainer > chamber_to_alcts_

◆ chamberIdsAllALCT()

std::set< unsigned int > CSCStubMatcher::chamberIdsAllALCT ( int  csc_type = MuonHitHelper::CSC_ALL) const

Definition at line 420 of file CSCStubMatcher.cc.

420  {
421  return selectDetIds(chamber_to_alcts_all_, csc_type);
422 }
std::set< unsigned int > selectDetIds(D &, int) const
std::map< unsigned int, CSCALCTDigiContainer > chamber_to_alcts_all_

◆ chamberIdsAllCLCT()

std::set< unsigned int > CSCStubMatcher::chamberIdsAllCLCT ( int  csc_type = MuonHitHelper::CSC_ALL) const

crossed chamber detIds with not necessarily matching stubs

Definition at line 416 of file CSCStubMatcher.cc.

416  {
417  return selectDetIds(chamber_to_clcts_all_, csc_type);
418 }
std::set< unsigned int > selectDetIds(D &, int) const
std::map< unsigned int, CSCCLCTDigiContainer > chamber_to_clcts_all_

◆ chamberIdsAllLCT()

std::set< unsigned int > CSCStubMatcher::chamberIdsAllLCT ( int  csc_type = MuonHitHelper::CSC_ALL) const

Definition at line 424 of file CSCStubMatcher.cc.

424  {
425  return selectDetIds(chamber_to_lcts_all_, csc_type);
426 }
std::set< unsigned int > selectDetIds(D &, int) const
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_lcts_all_

◆ chamberIdsAllMPLCT()

std::set< unsigned int > CSCStubMatcher::chamberIdsAllMPLCT ( int  csc_type = MuonHitHelper::CSC_ALL) const

Definition at line 428 of file CSCStubMatcher.cc.

428  {
429  return selectDetIds(chamber_to_mplcts_all_, csc_type);
430 }
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_mplcts_all_
std::set< unsigned int > selectDetIds(D &, int) const

◆ chamberIdsCLCT()

std::set< unsigned int > CSCStubMatcher::chamberIdsCLCT ( int  csc_type = MuonHitHelper::CSC_ALL) const

chamber detIds with matching stubs

Definition at line 432 of file CSCStubMatcher.cc.

432  {
433  return selectDetIds(chamber_to_clcts_, csc_type);
434 }
std::set< unsigned int > selectDetIds(D &, int) const
std::map< unsigned int, CSCCLCTDigiContainer > chamber_to_clcts_

◆ chamberIdsLCT()

std::set< unsigned int > CSCStubMatcher::chamberIdsLCT ( int  csc_type = MuonHitHelper::CSC_ALL) const

Definition at line 440 of file CSCStubMatcher.cc.

440  {
441  return selectDetIds(chamber_to_lcts_, csc_type);
442 }
std::set< unsigned int > selectDetIds(D &, int) const
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_lcts_

◆ chamberIdsMPLCT()

std::set< unsigned int > CSCStubMatcher::chamberIdsMPLCT ( int  csc_type = MuonHitHelper::CSC_ALL) const

Definition at line 444 of file CSCStubMatcher.cc.

444  {
445  return selectDetIds(chamber_to_mplcts_, csc_type);
446 }
std::set< unsigned int > selectDetIds(D &, int) const
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_mplcts_

◆ clcts()

std::map<unsigned int, CSCCLCTDigiContainer> CSCStubMatcher::clcts ( ) const
inline

all matching lcts

Definition at line 60 of file CSCStubMatcher.h.

References chamber_to_clcts_.

60 { return chamber_to_clcts_; }
std::map< unsigned int, CSCCLCTDigiContainer > chamber_to_clcts_

◆ clctsInChamber()

const CSCCLCTDigiContainer & CSCStubMatcher::clctsInChamber ( unsigned int  detid) const

all matching from a particular crossed chamber

Definition at line 472 of file CSCStubMatcher.cc.

472  {
473  if (chamber_to_clcts_.find(detid) == chamber_to_clcts_.end())
474  return no_clcts_;
475  return chamber_to_clcts_.at(detid);
476 }
std::map< unsigned int, CSCCLCTDigiContainer > chamber_to_clcts_
CSCCLCTDigiContainer no_clcts_

◆ clear()

void CSCStubMatcher::clear ( void  )
private

Definition at line 665 of file CSCStubMatcher.cc.

665  {
666  chamber_to_clcts_all_.clear();
667  chamber_to_alcts_all_.clear();
668  chamber_to_lcts_all_.clear();
669  chamber_to_mplcts_all_.clear();
670 
671  chamber_to_clcts_.clear();
672  chamber_to_alcts_.clear();
673  chamber_to_lcts_.clear();
674  chamber_to_mplcts_.clear();
675 }
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_mplcts_all_
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_lcts_
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_mplcts_
std::map< unsigned int, CSCALCTDigiContainer > chamber_to_alcts_
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_lcts_all_
std::map< unsigned int, CSCCLCTDigiContainer > chamber_to_clcts_all_
std::map< unsigned int, CSCCLCTDigiContainer > chamber_to_clcts_
std::map< unsigned int, CSCALCTDigiContainer > chamber_to_alcts_all_

◆ cscDigiMatcher()

std::shared_ptr<CSCDigiMatcher> CSCStubMatcher::cscDigiMatcher ( )
inline

Definition at line 85 of file CSCStubMatcher.h.

References cscDigiMatcher_.

85 { return cscDigiMatcher_; }
std::shared_ptr< CSCDigiMatcher > cscDigiMatcher_

◆ gemDigiMatcher()

std::shared_ptr<GEMDigiMatcher> CSCStubMatcher::gemDigiMatcher ( )
inline

Definition at line 86 of file CSCStubMatcher.h.

References gemDigiMatcher_.

86 { return gemDigiMatcher_; }
std::shared_ptr< GEMDigiMatcher > gemDigiMatcher_

◆ getGlobalPosition()

GlobalPoint CSCStubMatcher::getGlobalPosition ( unsigned int  rawId,
const CSCCorrelatedLCTDigi lct 
) const

Definition at line 641 of file CSCStubMatcher.cc.

References relativeConstraints::chamber, CSCDetId::chamber(), CSCDetId::endcap(), CSCCorrelatedLCTDigi::getFractionalStrip(), CSCCorrelatedLCTDigi::getKeyWG(), CSCCorrelatedLCTDigi::getStrip(), CSCConstants::KEY_CLCT_LAYER, CSCDetId::layer(), CSCConstants::MAX_HALF_STRIP_ME1B, CSCConstants::NUM_STRIPS_ME1B, nano_mu_digi_cff::rawId, CSCDetId::ring(), relativeConstraints::ring, CSCDetId::station(), and nano_mu_digi_cff::wire.

641  {
642  CSCDetId cscId(rawId);
643  CSCDetId keyId(cscId.endcap(), cscId.station(), cscId.ring(), cscId.chamber(), CSCConstants::KEY_CLCT_LAYER);
644  float fractional_strip = lct.getFractionalStrip();
645  // case ME1/1
646  if (cscId.station() == 1 and (cscId.ring() == 4 || cscId.ring() == 1)) {
647  int ring = 1; // Default to ME1/b
649  ring = 4; // Change to ME1/a if the HalfStrip Number exceeds the range of ME1/b
650  fractional_strip -= CSCConstants::NUM_STRIPS_ME1B;
651  }
652  CSCDetId cscId_(cscId.endcap(), cscId.station(), ring, cscId.chamber(), cscId.layer());
653  cscId = cscId_;
654  }
655  // regular cases
656  const auto& chamber = cscGeometry_->chamber(cscId);
657  const auto& layer_geo = chamber->layer(CSCConstants::KEY_CLCT_LAYER)->geometry();
658  // LCT::getKeyWG() also starts from 0
659  float wire = layer_geo->middleWireOfGroup(lct.getKeyWG() + 1);
660  const LocalPoint& csc_intersect = layer_geo->intersectionOfStripAndWire(fractional_strip, wire);
661  const GlobalPoint& csc_gp = cscGeometry_->idToDet(keyId)->surface().toGlobal(csc_intersect);
662  return csc_gp;
663 }
const CSCChamber * chamber(CSCDetId id) const
Return the chamber corresponding to given DetId.
Definition: CSCGeometry.cc:100
const CSCGeometry * cscGeometry_
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
static constexpr int NUM_STRIPS_ME1B
Definition: CSCConstants.h:78
uint16_t getStrip(uint16_t n=2) const
return the key halfstrip from 0,159
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
float getFractionalStrip(uint16_t n=2) const
return the fractional strip
static constexpr int MAX_HALF_STRIP_ME1B
Definition: CSCConstants.h:88
uint16_t getKeyWG() const
return the key wire group. counts from 0.
const GeomDet * idToDet(DetId) const override
Definition: CSCGeometry.cc:91

◆ init()

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

initialize the event

Definition at line 53 of file CSCStubMatcher.cc.

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

53  {
54  if (useGEMs_)
55  gemDigiMatcher_->init(iEvent, iSetup);
56  cscDigiMatcher_->init(iEvent, iSetup);
57 
58  iEvent.getByToken(clctToken_, clctsH_);
59  iEvent.getByToken(alctToken_, alctsH_);
60  iEvent.getByToken(lctToken_, lctsH_);
61  iEvent.getByToken(mplctToken_, mplctsH_);
62 
63  cscGeometry_ = &iSetup.getData(geomToken_);
64 }
edm::EDGetTokenT< CSCCLCTDigiCollection > clctToken_
edm::Handle< CSCCorrelatedLCTDigiCollection > lctsH_
std::shared_ptr< CSCDigiMatcher > cscDigiMatcher_
const CSCGeometry * cscGeometry_
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollection > mplctToken_
edm::Handle< CSCCLCTDigiCollection > clctsH_
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollection > lctToken_
edm::EDGetTokenT< CSCALCTDigiCollection > alctToken_
edm::Handle< CSCALCTDigiCollection > alctsH_
edm::ESGetToken< CSCGeometry, MuonGeometryRecord > geomToken_
std::shared_ptr< GEMDigiMatcher > gemDigiMatcher_
edm::Handle< CSCCorrelatedLCTDigiCollection > mplctsH_

◆ lctInChamber()

bool CSCStubMatcher::lctInChamber ( const CSCDetId id,
const CSCCorrelatedLCTDigi lct 
) const

Definition at line 633 of file CSCStubMatcher.cc.

References nano_mu_digi_cff::rawId.

633  {
634  for (const auto& stub : lctsInChamber(id.rawId())) {
635  if (stub == lct)
636  return true;
637  }
638  return false;
639 }
const CSCCorrelatedLCTDigiContainer & lctsInChamber(unsigned int) const

◆ lcts()

std::map<unsigned int, CSCCorrelatedLCTDigiContainer> CSCStubMatcher::lcts ( ) const
inline

Definition at line 62 of file CSCStubMatcher.h.

References chamber_to_lcts_.

62 { return chamber_to_lcts_; }
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_lcts_

◆ lctsInChamber()

const CSCCorrelatedLCTDigiContainer & CSCStubMatcher::lctsInChamber ( unsigned int  detid) const

Definition at line 484 of file CSCStubMatcher.cc.

484  {
485  if (chamber_to_lcts_.find(detid) == chamber_to_lcts_.end())
486  return no_lcts_;
487  return chamber_to_lcts_.at(detid);
488 }
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_lcts_
CSCCorrelatedLCTDigiContainer no_lcts_

◆ match()

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

do the matching

Definition at line 67 of file CSCStubMatcher.cc.

References l1ct::clear(), submitPVValidationJobs::t, and findQualityFiles::v.

67  {
68  // match simhits first
69  if (useGEMs_)
70  gemDigiMatcher_->match(t, v);
71  cscDigiMatcher_->match(t, v);
72 
77 
78  // clear collections
79  clear();
80 
81  if (!alctsH_.isValid()) {
82  edm::LogError("CSCStubMatcher") << "Cannot get ALCTs with label " << alctInputTag_.encode();
83  } else {
85  }
86 
87  if (!clctsH_.isValid()) {
88  edm::LogError("CSCStubMatcher") << "Cannot get CLCTs with label " << clctInputTag_.encode();
89  } else {
91  }
92 
93  if (!lctsH_.isValid()) {
94  edm::LogError("CSCStubMatcher") << "Cannot get LCTs with label " << lctInputTag_.encode();
95  } else {
97  }
98 
99  if (!mplctsH_.isValid()) {
100  edm::LogError("CSCStubMatcher") << "Cannot get MPLCTs with label " << mplctInputTag_.encode();
101  } else {
103  }
104 }
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > mplcts() const
std::map< unsigned int, CSCALCTDigiContainer > alcts() const
edm::InputTag clctInputTag_
std::string encode() const
Definition: InputTag.cc:159
void matchMPLCTsToSimTrack(const CSCCorrelatedLCTDigiCollection &)
T const * product() const
Definition: Handle.h:70
edm::Handle< CSCCorrelatedLCTDigiCollection > lctsH_
std::shared_ptr< CSCDigiMatcher > cscDigiMatcher_
Log< level::Error, false > LogError
std::map< unsigned int, CSCCLCTDigiContainer > clcts() const
all matching lcts
edm::Handle< CSCCLCTDigiCollection > clctsH_
void matchLCTsToSimTrack(const CSCCorrelatedLCTDigiCollection &)
edm::InputTag mplctInputTag_
edm::Handle< CSCALCTDigiCollection > alctsH_
void matchALCTsToSimTrack(const CSCALCTDigiCollection &)
void matchCLCTsToSimTrack(const CSCCLCTDigiCollection &)
std::shared_ptr< GEMDigiMatcher > gemDigiMatcher_
edm::Handle< CSCCorrelatedLCTDigiCollection > mplctsH_
edm::InputTag alctInputTag_
bool isValid() const
Definition: HandleBase.h:70
edm::InputTag lctInputTag_
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > lcts() const

◆ matchALCTsToSimTrack()

void CSCStubMatcher::matchALCTsToSimTrack ( const CSCALCTDigiCollection alcts)
private

Definition at line 208 of file CSCStubMatcher.cc.

References a, CSCDetId::chamber(), filterCSVwithJSON::copy, gather_cfg::cout, CSCDetId::endcap(), spr::find(), globals_cff::id2, relativeConstraints::ring, CSCDetId::ring(), and CSCDetId::station().

208  {
209  const auto& anode_ids = cscDigiMatcher_->chamberIdsWire(0);
210  for (const auto& id : anode_ids) {
211  CSCDetId ch_id(id);
212 
213  // fill 1 WG wide gaps
214  const auto& digi_wgs = cscDigiMatcher_->wiregroupsInChamber(id, 1);
215  if (verboseALCT_) {
216  cout << "alct: digi_wgs " << ch_id << " ";
217  copy(digi_wgs.begin(), digi_wgs.end(), ostream_iterator<int>(cout, " "));
218  cout << endl;
219  }
220 
221  int ring = ch_id.ring();
222  if (ring == 4)
223  ring = 1; //use ME1b id to get ALCTs
224  CSCDetId ch_id2(ch_id.endcap(), ch_id.station(), ring, ch_id.chamber(), 0);
225  auto id2 = ch_id2.rawId(); // ALCTs should be sorted into the det of the ALCTs.
226 
227  const auto& alcts_in_det = alcts.get(ch_id2);
228  for (auto a = alcts_in_det.first; a != alcts_in_det.second; ++a) {
229  if (!a->isValid())
230  continue;
231 
232  if (verboseALCT_)
233  edm::LogInfo("CSCStubMatcher") << "alct " << ch_id << " " << *a;
234 
235  // check that the BX for stub wasn't too early or too late
236  if (a->getBX() < minBXALCT_ || a->getBX() > maxBXALCT_)
237  continue;
238 
239  int wg = a->getKeyWG() + 1; // as ALCT wiregroups numbers start from 0
240 
241  // store all ALCTs in this chamber
242  chamber_to_alcts_all_[id2].push_back(*a);
243 
244  // match by wiregroup with the digis
245  if (digi_wgs.find(wg) == digi_wgs.end()) {
246  continue;
247  }
248  if (verboseALCT_)
249  edm::LogInfo("CSCStubMatcher") << "alctGOOD";
250 
251  // store matching ALCTs in this chamber
253  chamber_to_alcts_[id2].push_back(*a);
254  }
255  }
256  if (chamber_to_alcts_[id2].size() > 2) {
257  edm::LogInfo("CSCStubMatcher") << "WARNING!!! too many ALCTs " << chamber_to_alcts_[id2].size() << " in "
258  << ch_id;
259  for (auto& a : chamber_to_alcts_[id2])
260  edm::LogInfo("CSCStubMatcher") << " " << a;
261  }
262  }
263 }
size
Write out results.
std::map< unsigned int, CSCALCTDigiContainer > alcts() const
std::shared_ptr< CSCDigiMatcher > cscDigiMatcher_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
std::map< unsigned int, CSCALCTDigiContainer > chamber_to_alcts_
Log< level::Info, false > LogInfo
double a
Definition: hdecay.h:121
std::map< unsigned int, CSCALCTDigiContainer > chamber_to_alcts_all_

◆ matchCLCTsToSimTrack()

void CSCStubMatcher::matchCLCTsToSimTrack ( const CSCCLCTDigiCollection clcts)
private

Definition at line 106 of file CSCStubMatcher.cc.

References DummyCfis::c, CSCDetId::chamber(), CSCDetId::endcap(), spr::find(), globals_cff::id2, CSCDetId::maxLayerId(), CSCDetId::minLayerId(), or, AlCaHLTBitMon_ParallelJobs::p, submitPVResolutionJobs::q, CSCDetId::ring(), relativeConstraints::ring, and CSCDetId::station().

106  {
107  const auto& cathode_ids = cscDigiMatcher_->chamberIdsStrip(0);
108 
109  for (const auto& id : cathode_ids) {
110  CSCDetId ch_id(id);
111  if (verboseCLCT_) {
112  edm::LogInfo("CSCStubMatcher") << "To check CSC chamber " << ch_id;
113  }
114 
115  int ring = ch_id.ring();
116 
117  // do not consider CSCs with too few hits
118  if (cscDigiMatcher_->nLayersWithStripInChamber(ch_id) < minNHitsChamberCLCT_)
119  continue;
120 
121  // get the comparator digis in this chamber
122  std::vector<CSCComparatorDigiContainer> comps;
123  for (int ilayer = CSCDetId::minLayerId(); ilayer <= CSCDetId::maxLayerId(); ilayer++) {
124  CSCDetId layerid(ch_id.endcap(), ch_id.station(), ring, ch_id.chamber(), ilayer);
125  comps.push_back(cscDigiMatcher_->comparatorDigisInDetId(layerid));
126  }
127 
128  // print out the digis
129  if (verboseCLCT_) {
130  edm::LogInfo("CSCStubMatcher") << "clct: comparators " << ch_id;
131  int layer = 0;
132  for (const auto& p : comps) {
133  layer++;
134  for (const auto& q : p) {
135  edm::LogInfo("CSCStubMatcher") << "L" << layer << " " << q << " " << q.getHalfStrip() << " ";
136  }
137  }
138  }
139 
140  //use ME1b id to get CLCTs
141  const bool isME1a(ch_id.station() == 1 and ch_id.ring() == 4);
142  if (isME1a)
143  ring = 1;
144  CSCDetId ch_id2(ch_id.endcap(), ch_id.station(), ring, ch_id.chamber(), 0);
145  auto id2 = ch_id2.rawId(); // CLCTs should be sorted into the det of the CLCTs.
146 
147  const auto& clcts_in_det = clcts.get(ch_id2);
148 
149  for (auto c = clcts_in_det.first; c != clcts_in_det.second; ++c) {
150  if (verboseCLCT_)
151  edm::LogInfo("CSCStubMatcher") << "clct " << ch_id2 << " " << *c;
152 
153  if (!c->isValid())
154  continue;
155 
156  // check that the BX for this stub wasn't too early or too late
157  if (c->getBX() < minBXCLCT_ || c->getBX() > maxBXCLCT_)
158  continue;
159 
160  // store all CLCTs in this chamber
161  chamber_to_clcts_all_[id2].push_back(*c);
162 
163  // check that at least 3 comparator digis were matched!
164  int nMatches = 0;
165  int layer = 0;
166  for (const auto& p : comps) {
167  layer++;
168  for (const auto& q : p) {
169  if (verboseCLCT_)
170  edm::LogInfo("CSCStubMatcher") << "L" << layer << " " << q << " " << q.getHalfStrip() << " " << std::endl;
171  for (const auto& clctComp : (*c).getHits()[layer - 1]) {
172  if (clctComp == 65535)
173  continue;
174  if (verboseCLCT_) {
175  edm::LogInfo("CSCStubMatcher") << "\t" << clctComp << " ";
176  }
177  if (q.getHalfStrip() == clctComp or (isME1a and q.getHalfStrip() + 128 == clctComp)) {
178  nMatches++;
179  if (verboseCLCT_) {
180  edm::LogInfo("CSCStubMatcher") << "\t\tnMatches " << nMatches << std::endl;
181  }
182  }
183  }
184  }
185  }
186 
187  // require at least 3 good matches
188  if (nMatches < 3)
189  continue;
190 
191  if (verboseCLCT_)
192  edm::LogInfo("CSCStubMatcher") << "clctGOOD";
193 
194  // store matching CLCTs in this chamber
196  chamber_to_clcts_[id2].push_back(*c);
197  }
198  }
199  if (chamber_to_clcts_[id2].size() > 2) {
200  edm::LogInfo("CSCStubMatcher") << "WARNING!!! too many CLCTs " << chamber_to_clcts_[id2].size() << " in "
201  << ch_id2;
202  for (auto& c : chamber_to_clcts_[id2])
203  edm::LogInfo("CSCStubMatcher") << " " << c;
204  }
205  }
206 }
size
Write out results.
std::shared_ptr< CSCDigiMatcher > cscDigiMatcher_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
std::map< unsigned int, CSCCLCTDigiContainer > clcts() const
all matching lcts
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::map< unsigned int, CSCCLCTDigiContainer > chamber_to_clcts_all_
Log< level::Info, false > LogInfo
static int minLayerId()
Definition: CSCDetId.h:242
std::map< unsigned int, CSCCLCTDigiContainer > chamber_to_clcts_
static int maxLayerId()
Definition: CSCDetId.h:243

◆ matchLCTsToSimTrack()

void CSCStubMatcher::matchLCTsToSimTrack ( const CSCCorrelatedLCTDigiCollection lcts)
private

Definition at line 265 of file CSCStubMatcher.cc.

References nano_mu_digi_cff::bx, CSCDetId::chamber(), CSCDetId::endcap(), spr::find(), globals_cff::id2, or, AlCaHLTBitMon_ParallelJobs::p, CSCDetId::ring(), relativeConstraints::ring, CSCDetId::station(), and CSCDetId::zendcap().

265  {
266  // only look for stubs in chambers that already have CLCT and ALCT
267  const auto& cathode_ids = chamberIdsAllCLCT(0);
268  const auto& anode_ids = chamberIdsAllALCT(0);
269 
270  std::set<int> cathode_and_anode_ids;
271  std::set_union(cathode_ids.begin(),
272  cathode_ids.end(),
273  anode_ids.begin(),
274  anode_ids.end(),
275  std::inserter(cathode_and_anode_ids, cathode_and_anode_ids.end()));
276 
277  for (const auto& id : cathode_and_anode_ids) {
278  CSCDetId ch_id(id);
279 
280  //use ME1b id to get LCTs
281  int ring = ch_id.ring();
282  if (ring == 4)
283  ring = 1;
284  CSCDetId ch_id2(ch_id.endcap(), ch_id.station(), ring, ch_id.chamber(), 0);
285  auto id2 = ch_id2.rawId(); // LCTs should be sorted into the det of the LCTs.
286 
287  const auto& lcts_in_det = lcts.get(ch_id2);
288 
289  std::map<int, CSCCorrelatedLCTDigiContainer> bx_to_lcts;
290 
291  // collect all valid LCTs in a handy container
293  for (auto lct = lcts_in_det.first; lct != lcts_in_det.second; ++lct) {
294  if (!lct->isValid())
295  continue;
296  lcts_tmp.push_back(*lct);
297  int bx = lct->getBX();
298  bx_to_lcts[bx].push_back(*lct);
299 
300  // Add ghost LCTs when there are two in bx
301  // and the two don't share half-strip or wiregroup
302  if (bx_to_lcts[bx].size() == 2 and addGhostLCTs_) {
303  auto lct11 = bx_to_lcts[bx][0];
304  auto lct22 = bx_to_lcts[bx][1];
305  addGhostLCTs(lct11, lct22, lcts_tmp);
306  }
307  }
308 
309  for (const auto& lct : lcts_tmp) {
310  bool lct_clct_match(false);
311  bool lct_alct_match(false);
312  bool lct_gem1_match(false);
313  bool lct_gem2_match(false);
314 
315  if (verboseLCT_) {
316  edm::LogInfo("CSCStubMatcher") << ch_id << " " << ch_id2;
317  edm::LogInfo("CSCStubMatcher") << lct;
318  edm::LogInfo("CSCStubMatcher") << "getCLCT " << lct.getCLCT() << "\ngetALCT " << lct.getALCT() << "\ngetGEM1 "
319  << lct.getGEM1() << "\ngetGEM2 " << lct.getGEM2();
320  }
321  // Check if matched to an CLCT
322  for (const auto& p : clctsInChamber(id)) {
323  if (p == lct.getCLCT()) {
324  lct_clct_match = true;
325  if (verboseLCT_)
326  edm::LogInfo("CSCStubMatcher") << "\t...lct_clct_match";
327  break;
328  }
329  }
330 
331  // Check if matched to an ALCT
332  for (const auto& p : alctsInChamber(id)) {
333  if (p == lct.getALCT()) {
334  lct_alct_match = true;
335  if (verboseLCT_)
336  edm::LogInfo("CSCStubMatcher") << "\t...lct_alct_match";
337  break;
338  }
339  }
340 
341  if (useGEMs_) {
342  // fixME here: double check the timing of GEMPad
343  if (ch_id.ring() == 1 and (ch_id.station() == 1 or ch_id.station() == 2)) {
344  // Check if matched to an GEM pad L1
345  const GEMDetId gemDetIdL1(ch_id.zendcap(), 1, ch_id.station(), 1, ch_id.chamber(), 0);
346  for (const auto& p : gemDigiMatcher_->padsInChamber(gemDetIdL1.rawId())) {
347  if (p == lct.getGEM1()) {
348  lct_gem1_match = true;
349  if (verboseLCT_)
350  edm::LogInfo("CSCStubMatcher") << "\t...lct_gem1_match";
351  break;
352  }
353  }
354 
355  // Check if matched to an GEM pad L2
356  const GEMDetId gemDetIdL2(ch_id.zendcap(), 1, ch_id.station(), 2, ch_id.chamber(), 0);
357  for (const auto& p : gemDigiMatcher_->padsInChamber(gemDetIdL2.rawId())) {
358  if (p == lct.getGEM2()) {
359  lct_gem2_match = true;
360  if (verboseLCT_)
361  edm::LogInfo("CSCStubMatcher") << "\t...lct_gem2_match";
362  break;
363  }
364  }
365  }
366  }
367 
368  const bool alct_clct = lct_clct_match and lct_alct_match;
369  const bool alct_gem = lct_alct_match and lct_gem1_match and lct_gem2_match;
370  const bool clct_gem = lct_clct_match and lct_gem1_match and lct_gem2_match;
371 
372  bool lct_tight_matched = alct_clct or alct_gem or clct_gem;
373  bool lct_loose_matched = lct_clct_match or lct_alct_match;
374  bool lct_matched = matchTypeTightLCT_ ? lct_tight_matched : lct_loose_matched;
375 
376  if (lct_matched) {
377  if (verboseLCT_)
378  edm::LogInfo("CSCStubMatcher") << "...was matched";
380  chamber_to_lcts_[id2].emplace_back(lct);
381  }
382  }
383  } // lct loop over
384  }
385 }
size
Write out results.
std::set< unsigned int > chamberIdsAllALCT(int csc_type=MuonHitHelper::CSC_ALL) const
std::set< unsigned int > chamberIdsAllCLCT(int csc_type=MuonHitHelper::CSC_ALL) const
crossed chamber detIds with not necessarily matching stubs
std::vector< CSCCorrelatedLCTDigi > CSCCorrelatedLCTDigiContainer
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_lcts_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
const CSCCLCTDigiContainer & clctsInChamber(unsigned int) const
all matching from a particular crossed chamber
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
const CSCALCTDigiContainer & alctsInChamber(unsigned int) const
Log< level::Info, false > LogInfo
std::shared_ptr< GEMDigiMatcher > gemDigiMatcher_
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > lcts() const
void addGhostLCTs(const CSCCorrelatedLCTDigi &lct11, const CSCCorrelatedLCTDigi &lct22, CSCCorrelatedLCTDigiContainer &lctcontainer) const

◆ matchMPLCTsToSimTrack()

void CSCStubMatcher::matchMPLCTsToSimTrack ( const CSCCorrelatedLCTDigiCollection mplcts)
private

Definition at line 387 of file CSCStubMatcher.cc.

References spr::find(), and l1ctLayer2EG_cff::id.

387  {
388  // match simtrack to MPC LCT by looking only in chambers
389  // that already have LCTs matched to this simtrack
390  const auto& lcts_ids = chamberIdsLCT(0);
391 
392  // loop on the detids
393  for (const auto& id : lcts_ids) {
394  const auto& mplcts_in_det = mplcts.get(id);
395 
396  // loop on the MPC LCTs in this detid
397  for (auto lct = mplcts_in_det.first; lct != mplcts_in_det.second; ++lct) {
398  if (!lct->isValid())
399  continue;
400 
401  chamber_to_mplcts_all_[id].emplace_back(*lct);
402 
403  // check if this stub corresponds with a previously matched stub
404  for (const auto& sim_stub : lctsInChamber(id)) {
405  if (sim_stub == *lct) {
406  if (std::find(chamber_to_mplcts_[id].begin(), chamber_to_mplcts_[id].end(), *lct) ==
407  chamber_to_mplcts_[id].end()) {
408  chamber_to_mplcts_[id].emplace_back(*lct);
409  }
410  }
411  }
412  }
413  }
414 }
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > mplcts() const
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_mplcts_all_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_mplcts_
std::set< unsigned int > chamberIdsLCT(int csc_type=MuonHitHelper::CSC_ALL) const
const CSCCorrelatedLCTDigiContainer & lctsInChamber(unsigned int) const

◆ mplcts()

std::map<unsigned int, CSCCorrelatedLCTDigiContainer> CSCStubMatcher::mplcts ( ) const
inline

Definition at line 63 of file CSCStubMatcher.h.

References chamber_to_mplcts_.

63 { return chamber_to_mplcts_; }
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_mplcts_

◆ mplctsInChamber()

const CSCCorrelatedLCTDigiContainer & CSCStubMatcher::mplctsInChamber ( unsigned int  detid) const

Definition at line 490 of file CSCStubMatcher.cc.

490  {
491  if (chamber_to_mplcts_.find(detid) == chamber_to_mplcts_.end())
492  return no_mplcts_;
493  return chamber_to_mplcts_.at(detid);
494 }
CSCCorrelatedLCTDigiContainer no_mplcts_
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > chamber_to_mplcts_

◆ nChambersWithALCT()

int CSCStubMatcher::nChambersWithALCT ( int  min_quality = 0) const

Definition at line 573 of file CSCStubMatcher.cc.

References mps_fire::result.

573  {
574  int result = 0;
575  const auto& chamber_ids = chamberIdsALCT();
576  for (const auto& id : chamber_ids) {
577  int nStubChamber = 0;
578  const auto& alcts = alctsInChamber(id);
579  for (const auto& alct : alcts) {
580  if (!alct.isValid())
581  continue;
582  if (alct.getQuality() >= min_quality) {
583  nStubChamber++;
584  }
585  }
586  if (nStubChamber > 0) {
587  ++result;
588  }
589  }
590  return result;
591 }
std::map< unsigned int, CSCALCTDigiContainer > alcts() const
std::set< unsigned int > chamberIdsALCT(int csc_type=MuonHitHelper::CSC_ALL) const
const CSCALCTDigiContainer & alctsInChamber(unsigned int) const

◆ nChambersWithCLCT()

int CSCStubMatcher::nChambersWithCLCT ( int  min_quality = 0) const

How many CSC chambers with matching stubs of some minimal quality did this SimTrack hit?

Definition at line 553 of file CSCStubMatcher.cc.

References mps_fire::result.

553  {
554  int result = 0;
555  const auto& chamber_ids = chamberIdsCLCT();
556  for (const auto& id : chamber_ids) {
557  int nStubChamber = 0;
558  const auto& clcts = clctsInChamber(id);
559  for (const auto& clct : clcts) {
560  if (!clct.isValid())
561  continue;
562  if (clct.getQuality() >= min_quality) {
563  nStubChamber++;
564  }
565  }
566  if (nStubChamber > 0) {
567  ++result;
568  }
569  }
570  return result;
571 }
std::map< unsigned int, CSCCLCTDigiContainer > clcts() const
all matching lcts
const CSCCLCTDigiContainer & clctsInChamber(unsigned int) const
all matching from a particular crossed chamber
std::set< unsigned int > chamberIdsCLCT(int csc_type=MuonHitHelper::CSC_ALL) const
chamber detIds with matching stubs

◆ nChambersWithLCT()

int CSCStubMatcher::nChambersWithLCT ( int  min_quality = 0) const

Definition at line 593 of file CSCStubMatcher.cc.

References mps_fire::result.

593  {
594  int result = 0;
595  const auto& chamber_ids = chamberIdsLCT();
596  for (const auto& id : chamber_ids) {
597  int nStubChamber = 0;
598  const auto& lcts = lctsInChamber(id);
599  for (const auto& lct : lcts) {
600  if (!lct.isValid())
601  continue;
602  if (lct.getQuality() >= min_quality) {
603  nStubChamber++;
604  }
605  }
606  if (nStubChamber > 0) {
607  ++result;
608  }
609  }
610  return result;
611 }
std::set< unsigned int > chamberIdsLCT(int csc_type=MuonHitHelper::CSC_ALL) const
const CSCCorrelatedLCTDigiContainer & lctsInChamber(unsigned int) const
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > lcts() const

◆ nChambersWithMPLCT()

int CSCStubMatcher::nChambersWithMPLCT ( int  min_quality = 0) const

Definition at line 613 of file CSCStubMatcher.cc.

References mps_fire::result.

613  {
614  int result = 0;
615  const auto& chamber_ids = chamberIdsMPLCT();
616  for (const auto& id : chamber_ids) {
617  int nStubChamber = 0;
618  const auto& mplcts = mplctsInChamber(id);
619  for (const auto& mplct : mplcts) {
620  if (!mplct.isValid())
621  continue;
622  if (mplct.getQuality() >= min_quality) {
623  nStubChamber++;
624  }
625  }
626  if (nStubChamber > 0) {
627  ++result;
628  }
629  }
630  return result;
631 }
std::map< unsigned int, CSCCorrelatedLCTDigiContainer > mplcts() const
std::set< unsigned int > chamberIdsMPLCT(int csc_type=MuonHitHelper::CSC_ALL) const
const CSCCorrelatedLCTDigiContainer & mplctsInChamber(unsigned int) const

◆ selectDetIds()

template<class D >
std::set< unsigned int > CSCStubMatcher::selectDetIds ( D &  digis,
int  csc_type 
) const
private

Definition at line 164 of file CSCStubMatcher.h.

References hcalRecHitTable_cff::detId, AlCaHLTBitMon_ParallelJobs::p, mps_fire::result, and MuonHitHelper::toCSCType().

164  {
165  std::set<unsigned int> result;
166  for (auto& p : digis) {
167  auto id = p.first;
168  if (csc_type > 0) {
169  CSCDetId detId(id);
170  if (MuonHitHelper::toCSCType(detId.station(), detId.ring()) != csc_type)
171  continue;
172  }
173  result.insert(p.first);
174  }
175  return result;
176 }
static int toCSCType(int st, int ri)

◆ zpositionOfLayer()

float CSCStubMatcher::zpositionOfLayer ( unsigned int  detid,
int  layer 
) const

Definition at line 547 of file CSCStubMatcher.cc.

References relativeConstraints::chamber.

547  {
548  const auto& id = CSCDetId(detid);
549  const auto& chamber(cscGeometry_->chamber(id));
550  return fabs(chamber->layer(layer)->centerOfStrip(20).z());
551 }
const CSCChamber * chamber(CSCDetId id) const
Return the chamber corresponding to given DetId.
Definition: CSCGeometry.cc:100
const CSCGeometry * cscGeometry_

Member Data Documentation

◆ addGhostLCTs_

bool CSCStubMatcher::addGhostLCTs_
private

Definition at line 136 of file CSCStubMatcher.h.

◆ alctInputTag_

edm::InputTag CSCStubMatcher::alctInputTag_
private

Definition at line 101 of file CSCStubMatcher.h.

◆ alctsH_

edm::Handle<CSCALCTDigiCollection> CSCStubMatcher::alctsH_
private

Definition at line 111 of file CSCStubMatcher.h.

◆ alctToken_

edm::EDGetTokenT<CSCALCTDigiCollection> CSCStubMatcher::alctToken_
private

Definition at line 106 of file CSCStubMatcher.h.

◆ chamber_to_alcts_

std::map<unsigned int, CSCALCTDigiContainer> CSCStubMatcher::chamber_to_alcts_
private

Definition at line 129 of file CSCStubMatcher.h.

Referenced by alcts().

◆ chamber_to_alcts_all_

std::map<unsigned int, CSCALCTDigiContainer> CSCStubMatcher::chamber_to_alcts_all_
private

Definition at line 123 of file CSCStubMatcher.h.

◆ chamber_to_clcts_

std::map<unsigned int, CSCCLCTDigiContainer> CSCStubMatcher::chamber_to_clcts_
private

Definition at line 128 of file CSCStubMatcher.h.

Referenced by clcts().

◆ chamber_to_clcts_all_

std::map<unsigned int, CSCCLCTDigiContainer> CSCStubMatcher::chamber_to_clcts_all_
private

Definition at line 122 of file CSCStubMatcher.h.

◆ chamber_to_lcts_

std::map<unsigned int, CSCCorrelatedLCTDigiContainer> CSCStubMatcher::chamber_to_lcts_
private

Definition at line 130 of file CSCStubMatcher.h.

Referenced by lcts().

◆ chamber_to_lcts_all_

std::map<unsigned int, CSCCorrelatedLCTDigiContainer> CSCStubMatcher::chamber_to_lcts_all_
private

Definition at line 124 of file CSCStubMatcher.h.

◆ chamber_to_mplcts_

std::map<unsigned int, CSCCorrelatedLCTDigiContainer> CSCStubMatcher::chamber_to_mplcts_
private

Definition at line 131 of file CSCStubMatcher.h.

Referenced by mplcts().

◆ chamber_to_mplcts_all_

std::map<unsigned int, CSCCorrelatedLCTDigiContainer> CSCStubMatcher::chamber_to_mplcts_all_
private

Definition at line 125 of file CSCStubMatcher.h.

◆ clctInputTag_

edm::InputTag CSCStubMatcher::clctInputTag_
private

Definition at line 100 of file CSCStubMatcher.h.

◆ clctsH_

edm::Handle<CSCCLCTDigiCollection> CSCStubMatcher::clctsH_
private

Definition at line 110 of file CSCStubMatcher.h.

◆ clctToken_

edm::EDGetTokenT<CSCCLCTDigiCollection> CSCStubMatcher::clctToken_
private

Definition at line 105 of file CSCStubMatcher.h.

◆ cscDigiMatcher_

std::shared_ptr<CSCDigiMatcher> CSCStubMatcher::cscDigiMatcher_
private

Definition at line 115 of file CSCStubMatcher.h.

Referenced by cscDigiMatcher().

◆ cscGeometry_

const CSCGeometry* CSCStubMatcher::cscGeometry_
private

Definition at line 119 of file CSCStubMatcher.h.

◆ gemDigiMatcher_

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

Definition at line 116 of file CSCStubMatcher.h.

Referenced by gemDigiMatcher().

◆ geomToken_

edm::ESGetToken<CSCGeometry, MuonGeometryRecord> CSCStubMatcher::geomToken_
private

Definition at line 118 of file CSCStubMatcher.h.

◆ lctInputTag_

edm::InputTag CSCStubMatcher::lctInputTag_
private

Definition at line 102 of file CSCStubMatcher.h.

◆ lctsH_

edm::Handle<CSCCorrelatedLCTDigiCollection> CSCStubMatcher::lctsH_
private

Definition at line 112 of file CSCStubMatcher.h.

◆ lctToken_

edm::EDGetTokenT<CSCCorrelatedLCTDigiCollection> CSCStubMatcher::lctToken_
private

Definition at line 107 of file CSCStubMatcher.h.

◆ matchTypeTightLCT_

bool CSCStubMatcher::matchTypeTightLCT_
private

Definition at line 139 of file CSCStubMatcher.h.

◆ maxBXALCT_

int CSCStubMatcher::maxBXALCT_
private

Definition at line 153 of file CSCStubMatcher.h.

◆ maxBXCLCT_

int CSCStubMatcher::maxBXCLCT_
private

Definition at line 152 of file CSCStubMatcher.h.

◆ maxBXLCT_

int CSCStubMatcher::maxBXLCT_
private

Definition at line 154 of file CSCStubMatcher.h.

◆ maxBXMPLCT_

int CSCStubMatcher::maxBXMPLCT_
private

Definition at line 155 of file CSCStubMatcher.h.

◆ minBXALCT_

int CSCStubMatcher::minBXALCT_
private

Definition at line 153 of file CSCStubMatcher.h.

◆ minBXCLCT_

int CSCStubMatcher::minBXCLCT_
private

Definition at line 152 of file CSCStubMatcher.h.

◆ minBXLCT_

int CSCStubMatcher::minBXLCT_
private

Definition at line 154 of file CSCStubMatcher.h.

◆ minBXMPLCT_

int CSCStubMatcher::minBXMPLCT_
private

Definition at line 155 of file CSCStubMatcher.h.

◆ minNHitsChamber_

int CSCStubMatcher::minNHitsChamber_
private

Definition at line 141 of file CSCStubMatcher.h.

◆ minNHitsChamberALCT_

int CSCStubMatcher::minNHitsChamberALCT_
private

Definition at line 142 of file CSCStubMatcher.h.

◆ minNHitsChamberCLCT_

int CSCStubMatcher::minNHitsChamberCLCT_
private

Definition at line 143 of file CSCStubMatcher.h.

◆ minNHitsChamberLCT_

int CSCStubMatcher::minNHitsChamberLCT_
private

Definition at line 144 of file CSCStubMatcher.h.

◆ minNHitsChamberMPLCT_

int CSCStubMatcher::minNHitsChamberMPLCT_
private

Definition at line 145 of file CSCStubMatcher.h.

◆ mplctInputTag_

edm::InputTag CSCStubMatcher::mplctInputTag_
private

Definition at line 103 of file CSCStubMatcher.h.

◆ mplctsH_

edm::Handle<CSCCorrelatedLCTDigiCollection> CSCStubMatcher::mplctsH_
private

Definition at line 113 of file CSCStubMatcher.h.

◆ mplctToken_

edm::EDGetTokenT<CSCCorrelatedLCTDigiCollection> CSCStubMatcher::mplctToken_
private

Definition at line 108 of file CSCStubMatcher.h.

◆ no_alcts_

CSCALCTDigiContainer CSCStubMatcher::no_alcts_
private

Definition at line 158 of file CSCStubMatcher.h.

◆ no_clcts_

CSCCLCTDigiContainer CSCStubMatcher::no_clcts_
private

Definition at line 157 of file CSCStubMatcher.h.

◆ no_lcts_

CSCCorrelatedLCTDigiContainer CSCStubMatcher::no_lcts_
private

Definition at line 159 of file CSCStubMatcher.h.

◆ no_mplcts_

CSCCorrelatedLCTDigiContainer CSCStubMatcher::no_mplcts_
private

Definition at line 160 of file CSCStubMatcher.h.

◆ useGEMs_

bool CSCStubMatcher::useGEMs_
private

Definition at line 137 of file CSCStubMatcher.h.

◆ verboseALCT_

bool CSCStubMatcher::verboseALCT_
private

Definition at line 147 of file CSCStubMatcher.h.

◆ verboseCLCT_

bool CSCStubMatcher::verboseCLCT_
private

Definition at line 148 of file CSCStubMatcher.h.

◆ verboseLCT_

bool CSCStubMatcher::verboseLCT_
private

Definition at line 149 of file CSCStubMatcher.h.

◆ verboseMPLCT_

bool CSCStubMatcher::verboseMPLCT_
private

Definition at line 150 of file CSCStubMatcher.h.