CMS 3D CMS Logo

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

#include <CSCChamberMasker.cc>

Inheritance diagram for CSCChamberMasker:
edm::stream::EDProducer<>

Public Member Functions

 CSCChamberMasker (const edm::ParameterSet &)
 
 ~CSCChamberMasker () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &)
 

Private Member Functions

template<typename T , typename C = MuonDigiCollection<CSCDetId, T>>
void ageDigis (edm::Event &event, edm::EDGetTokenT< C > &digiToken, CLHEP::HepRandomEngine &randGen, std::unique_ptr< C > &filteredDigis)
 
void beginRun (edm::Run const &, edm::EventSetup const &) override
 
template<typename T , typename C = MuonDigiCollection<CSCDetId, T>>
void copyDigis (edm::Event &event, edm::EDGetTokenT< C > &digiToken, std::unique_ptr< C > &filteredDigis)
 
void createMaskedChamberCollection (edm::ESHandle< CSCGeometry > &)
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

edm::EDGetTokenT< CSCALCTDigiCollectionm_alctDigiToken
 
edm::EDGetTokenT< CSCCLCTDigiCollectionm_clctDigiToken
 
std::map< CSCDetId, std::pair< unsigned int, float > > m_CSCEffs
 
edm::EDGetTokenT< CSCStripDigiCollectionm_stripDigiToken
 
edm::EDGetTokenT< CSCWireDigiCollectionm_wireDigiToken
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

SimMuon/CSCDigitizer/plugins/CSCChamberMasker.cc

Description: Class to mask CSC digis on a chamber by chamber basis

Definition at line 68 of file CSCChamberMasker.cc.

Constructor & Destructor Documentation

◆ CSCChamberMasker()

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

Definition at line 111 of file CSCChamberMasker.cc.

112  : m_stripDigiToken(consumes<CSCStripDigiCollection>(iConfig.getParameter<edm::InputTag>("stripDigiTag"))),
113  m_wireDigiToken(consumes<CSCWireDigiCollection>(iConfig.getParameter<edm::InputTag>("wireDigiTag"))),
114  m_clctDigiToken(consumes<CSCCLCTDigiCollection>(iConfig.getParameter<edm::InputTag>("clctDigiTag"))),
115  m_alctDigiToken(consumes<CSCALCTDigiCollection>(iConfig.getParameter<edm::InputTag>("alctDigiTag"))) {
116  produces<CSCStripDigiCollection>("MuonCSCStripDigi");
117  produces<CSCWireDigiCollection>("MuonCSCWireDigi");
118  produces<CSCCLCTDigiCollection>("MuonCSCCLCTDigi");
119  produces<CSCALCTDigiCollection>("MuonCSCALCTDigi");
120 }

◆ ~CSCChamberMasker()

CSCChamberMasker::~CSCChamberMasker ( )
override

Definition at line 122 of file CSCChamberMasker.cc.

122 {}

Member Function Documentation

◆ ageDigis()

template<typename T , typename C >
void CSCChamberMasker::ageDigis ( edm::Event event,
edm::EDGetTokenT< C > &  digiToken,
CLHEP::HepRandomEngine &  randGen,
std::unique_ptr< C > &  filteredDigis 
)
private

Definition at line 173 of file CSCChamberMasker.cc.

176  {
177  if (!digiToken.isUninitialized()) {
178  edm::Handle<C> digis;
179  event.getByToken(digiToken, digis);
180 
181  for (const auto &j : (*digis)) {
182  auto digiItr = j.second.first;
183  auto last = j.second.second;
184 
185  CSCDetId const cscDetId = j.first;
186 
187  // Since lookups are chamber-centric, make new DetId with layer=0
188  CSCDetId chId = CSCDetId(cscDetId.endcap(), cscDetId.station(), cscDetId.ring(), cscDetId.chamber(), 0);
189 
190  for (; digiItr != last; ++digiItr) {
191  auto chEffIt = m_CSCEffs.find(chId);
192 
193  if (chEffIt != m_CSCEffs.end()) {
194  std::pair<unsigned int, float> typeEff = chEffIt->second;
195  int type = typeEff.first % 10; // second digit gives type of inefficiency
196  int layer = typeEff.first / 10; // first digit gives layer (0 = chamber level)
197 
198  bool doRandomize = false;
201  (layer == 0 || cscDetId.layer() == layer))
202  doRandomize = true;
203 
204  if (!doRandomize || (randGen.flat() <= typeEff.second)) {
205  filteredDigis->insertDigi(cscDetId, *digiItr);
206  }
207  }
208  }
209  }
210  }
211 }

References CSCDetId::chamber(), EFF_CHAMBER, EFF_STRIPS, EFF_WIRES, CSCDetId::endcap(), edm::EDGetTokenT< T >::isUninitialized(), dqmiolumiharvest::j, dqmdumpme::last, CSCDetId::layer(), m_CSCEffs, CSCDetId::ring(), CSCDetId::station(), and relativeConstraints::value.

◆ beginRun()

void CSCChamberMasker::beginRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
overrideprivate

Definition at line 214 of file CSCChamberMasker.cc.

214  {
215  m_CSCEffs.clear();
216 
218  iSetup.get<MuonGeometryRecord>().get(cscGeom);
219 
221  iSetup.get<MuonSystemAgingRcd>().get(agingObj);
222 
223  const auto chambers = cscGeom->chambers();
224 
225  for (const auto *ch : chambers) {
226  CSCDetId chId = ch->id();
227  unsigned int rawId = chId.rawIdMaker(chId.endcap(), chId.station(), chId.ring(), chId.chamber(), 0);
228  float eff = 1.;
229  int type = 0;
230  for (auto &agingPair : agingObj->m_CSCChambEffs) {
231  if (agingPair.first != rawId)
232  continue;
233 
234  type = agingPair.second.first;
235  eff = agingPair.second.second;
236  m_CSCEffs[chId] = std::make_pair(type, eff);
237  break;
238  }
239  }
240 }

References CSCDetId::chamber(), CSCGeometry::chambers(), chambers, CSCDetId::endcap(), edm::EventSetup::get(), get, MuonSystemAging::m_CSCChambEffs, m_CSCEffs, CSCDetId::rawIdMaker(), CSCDetId::ring(), and CSCDetId::station().

◆ copyDigis()

template<typename T , typename C >
void CSCChamberMasker::copyDigis ( edm::Event event,
edm::EDGetTokenT< C > &  digiToken,
std::unique_ptr< C > &  filteredDigis 
)
private

Definition at line 154 of file CSCChamberMasker.cc.

154  {
155  if (!digiToken.isUninitialized()) {
156  edm::Handle<C> digis;
157  event.getByToken(digiToken, digis);
158  for (const auto &j : (*digis)) {
159  auto digiItr = j.second.first;
160  auto last = j.second.second;
161 
162  CSCDetId const cscDetId = j.first;
163 
164  for (; digiItr != last; ++digiItr) {
165  filteredDigis->insertDigi(cscDetId, *digiItr);
166  }
167  }
168  }
169 }

References edm::EDGetTokenT< T >::isUninitialized(), dqmiolumiharvest::j, and dqmdumpme::last.

◆ createMaskedChamberCollection()

void CSCChamberMasker::createMaskedChamberCollection ( edm::ESHandle< CSCGeometry > &  )
private

◆ fillDescriptions()

void CSCChamberMasker::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 244 of file CSCChamberMasker.cc.

244  {
246  desc.add<edm::InputTag>("stripDigiTag", edm::InputTag("simMuonCSCDigis:MuonCSCStripDigi"));
247  desc.add<edm::InputTag>("wireDigiTag", edm::InputTag("simMuonCSCDigis:MuonCSCWireDigi"));
248  desc.add<edm::InputTag>("comparatorDigiTag", edm::InputTag("simMuonCSCDigis:MuonCSCComparatorDigi"));
249  desc.add<edm::InputTag>("rpcDigiTag", edm::InputTag("simMuonCSCDigis:MuonCSCRPCDigi"));
250  desc.add<edm::InputTag>("alctDigiTag", edm::InputTag("simMuonCSCDigis:MuonCSCALCTDigi"));
251  desc.add<edm::InputTag>("clctDigiTag", edm::InputTag("simMuonCSCDigis:MuonCSCCLCTDigi"));
252  descriptions.add("cscChamberMasker", desc);
253 }

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and HLT_2018_cff::InputTag.

◆ produce()

void CSCChamberMasker::produce ( edm::Event event,
const edm::EventSetup conditions 
)
overrideprivate

Definition at line 129 of file CSCChamberMasker.cc.

129  {
131  CLHEP::HepRandomEngine &randGen = randGenService->getEngine(event.streamID());
132 
133  std::unique_ptr<CSCStripDigiCollection> filteredStripDigis(new CSCStripDigiCollection());
134  std::unique_ptr<CSCWireDigiCollection> filteredWireDigis(new CSCWireDigiCollection());
135  std::unique_ptr<CSCCLCTDigiCollection> filteredCLCTDigis(new CSCCLCTDigiCollection());
136  std::unique_ptr<CSCALCTDigiCollection> filteredALCTDigis(new CSCALCTDigiCollection());
137 
138  // Handle wire and strip digis
139  ageDigis<CSCStripDigi>(event, m_stripDigiToken, randGen, filteredStripDigis);
140  ageDigis<CSCWireDigi>(event, m_wireDigiToken, randGen, filteredWireDigis);
141 
142  // Don't touch CLCT or ALCT digis
143  copyDigis<CSCCLCTDigi>(event, m_clctDigiToken, filteredCLCTDigis);
144  copyDigis<CSCALCTDigi>(event, m_alctDigiToken, filteredALCTDigis);
145 
146  event.put(std::move(filteredStripDigis), "MuonCSCStripDigi");
147  event.put(std::move(filteredWireDigis), "MuonCSCWireDigi");
148  event.put(std::move(filteredCLCTDigis), "MuonCSCCLCTDigi");
149  event.put(std::move(filteredALCTDigis), "MuonCSCALCTDigi");
150 }

References edm::RandomNumberGenerator::getEngine(), m_alctDigiToken, m_clctDigiToken, m_stripDigiToken, m_wireDigiToken, and eostools::move().

Member Data Documentation

◆ m_alctDigiToken

edm::EDGetTokenT<CSCALCTDigiCollection> CSCChamberMasker::m_alctDigiToken
private

Definition at line 96 of file CSCChamberMasker.cc.

Referenced by produce().

◆ m_clctDigiToken

edm::EDGetTokenT<CSCCLCTDigiCollection> CSCChamberMasker::m_clctDigiToken
private

Definition at line 95 of file CSCChamberMasker.cc.

Referenced by produce().

◆ m_CSCEffs

std::map<CSCDetId, std::pair<unsigned int, float> > CSCChamberMasker::m_CSCEffs
private

Definition at line 97 of file CSCChamberMasker.cc.

Referenced by ageDigis(), and beginRun().

◆ m_stripDigiToken

edm::EDGetTokenT<CSCStripDigiCollection> CSCChamberMasker::m_stripDigiToken
private

Definition at line 93 of file CSCChamberMasker.cc.

Referenced by produce().

◆ m_wireDigiToken

edm::EDGetTokenT<CSCWireDigiCollection> CSCChamberMasker::m_wireDigiToken
private

Definition at line 94 of file CSCChamberMasker.cc.

Referenced by produce().

EFF_STRIPS
Definition: MuonSystemAging.h:11
edm::RandomNumberGenerator::getEngine
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
MuonSystemAgingRcd
Definition: MuonSystemAgingRcd.h:20
CSCChamberMasker::m_CSCEffs
std::map< CSCDetId, std::pair< unsigned int, float > > m_CSCEffs
Definition: CSCChamberMasker.cc:97
EFF_WIRES
Definition: MuonSystemAging.h:11
CSCDetId::ring
int ring() const
Definition: CSCDetId.h:68
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
CSCDetId::rawIdMaker
static int rawIdMaker(int iendcap, int istation, int iring, int ichamber, int ilayer)
Definition: CSCDetId.h:131
CSCChamberMasker::m_wireDigiToken
edm::EDGetTokenT< CSCWireDigiCollection > m_wireDigiToken
Definition: CSCChamberMasker.cc:94
edm::Handle
Definition: AssociativeIterator.h:50
CSCStripDigiCollection
MuonDigiCollection< CSCDetId, CSCStripDigi > CSCStripDigiCollection
Definition: CSCStripDigiCollection.h:14
dqmdumpme.last
last
Definition: dqmdumpme.py:56
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
edm::EDGetTokenT::isUninitialized
bool isUninitialized() const
Definition: EDGetToken.h:70
CSCDetId::layer
int layer() const
Definition: CSCDetId.h:56
edm::ESHandle< CSCGeometry >
MuonSystemAging::m_CSCChambEffs
std::map< unsigned int, std::pair< unsigned int, float > > m_CSCChambEffs
Definition: MuonSystemAging.h:20
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
CSCChamberMasker::m_alctDigiToken
edm::EDGetTokenT< CSCALCTDigiCollection > m_alctDigiToken
Definition: CSCChamberMasker.cc:96
CSCDetId
Definition: CSCDetId.h:26
edm::Service< edm::RandomNumberGenerator >
CSCChamberMasker::m_clctDigiToken
edm::EDGetTokenT< CSCCLCTDigiCollection > m_clctDigiToken
Definition: CSCChamberMasker.cc:95
CSCALCTDigiCollection
MuonDigiCollection< CSCDetId, CSCALCTDigi > CSCALCTDigiCollection
Definition: CSCALCTDigiCollection.h:15
chambers
static char chambers[264][20]
Definition: ReadPGInfo.cc:243
CSCDetId::chamber
int chamber() const
Definition: CSCDetId.h:62
EFF_CHAMBER
Definition: MuonSystemAging.h:11
get
#define get
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
CSCWireDigiCollection
MuonDigiCollection< CSCDetId, CSCWireDigi > CSCWireDigiCollection
Definition: CSCWireDigiCollection.h:15
type
type
Definition: HCALResponse.h:21
eostools.move
def move(src, dest)
Definition: eostools.py:511
CSCCLCTDigiCollection
MuonDigiCollection< CSCDetId, CSCCLCTDigi > CSCCLCTDigiCollection
Definition: CSCCLCTDigiCollection.h:15
CSCDetId::endcap
int endcap() const
Definition: CSCDetId.h:85
relativeConstraints.value
value
Definition: relativeConstraints.py:53
CSCGeometry::chambers
const ChamberContainer & chambers() const
Return a vector of all chambers.
Definition: CSCGeometry.cc:96
CSCChamberMasker::m_stripDigiToken
edm::EDGetTokenT< CSCStripDigiCollection > m_stripDigiToken
Definition: CSCChamberMasker.cc:93
CSCDetId::station
int station() const
Definition: CSCDetId.h:79
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
event
Definition: event.py:1
MuonGeometryRecord
Definition: MuonGeometryRecord.h:34
edm::InputTag
Definition: InputTag.h:15