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 hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () 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 ( 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 }
T getParameter(std::string const &) const
edm::EDGetTokenT< CSCWireDigiCollection > m_wireDigiToken
edm::EDGetTokenT< CSCStripDigiCollection > m_stripDigiToken
edm::EDGetTokenT< CSCCLCTDigiCollection > m_clctDigiToken
edm::EDGetTokenT< CSCALCTDigiCollection > m_alctDigiToken
CSCChamberMasker::~CSCChamberMasker ( )
override

Definition at line 122 of file CSCChamberMasker.cc.

122 {}

Member Function Documentation

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.

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

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 }
int chamber() const
Definition: CSCDetId.h:68
type
Definition: HCALResponse.h:21
int layer() const
Definition: CSCDetId.h:61
int endcap() const
Definition: CSCDetId.h:93
std::map< CSCDetId, std::pair< unsigned int, float > > m_CSCEffs
int ring() const
Definition: CSCDetId.h:75
bool isUninitialized() const
Definition: EDGetToken.h:70
int station() const
Definition: CSCDetId.h:86
void CSCChamberMasker::beginRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
overrideprivate

Definition at line 214 of file CSCChamberMasker.cc.

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

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 }
int chamber() const
Definition: CSCDetId.h:68
type
Definition: HCALResponse.h:21
static int rawIdMaker(int iendcap, int istation, int iring, int ichamber, int ilayer)
Definition: CSCDetId.h:144
const ChamberContainer & chambers() const
Return a vector of all chambers.
Definition: CSCGeometry.cc:121
int endcap() const
Definition: CSCDetId.h:93
std::map< CSCDetId, std::pair< unsigned int, float > > m_CSCEffs
std::map< unsigned int, std::pair< unsigned int, float > > m_CSCChambEffs
int ring() const
Definition: CSCDetId.h:75
int station() const
Definition: CSCDetId.h:86
static char chambers[264][20]
Definition: ReadPGInfo.cc:243
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.

References edm::EDGetTokenT< T >::isUninitialized(), and plotBeamSpotDB::last.

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 }
bool isUninitialized() const
Definition: EDGetToken.h:70
void CSCChamberMasker::createMaskedChamberCollection ( edm::ESHandle< CSCGeometry > &  )
private
void CSCChamberMasker::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 244 of file CSCChamberMasker.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and DEFINE_FWK_MODULE.

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 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void CSCChamberMasker::produce ( edm::Event event,
const edm::EventSetup conditions 
)
overrideprivate

Definition at line 129 of file CSCChamberMasker.cc.

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

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 }
edm::EDGetTokenT< CSCWireDigiCollection > m_wireDigiToken
MuonDigiCollection< CSCDetId, CSCStripDigi > CSCStripDigiCollection
edm::EDGetTokenT< CSCStripDigiCollection > m_stripDigiToken
MuonDigiCollection< CSCDetId, CSCCLCTDigi > CSCCLCTDigiCollection
edm::EDGetTokenT< CSCCLCTDigiCollection > m_clctDigiToken
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
edm::EDGetTokenT< CSCALCTDigiCollection > m_alctDigiToken
MuonDigiCollection< CSCDetId, CSCWireDigi > CSCWireDigiCollection
StreamID streamID() const
Definition: Event.h:95
MuonDigiCollection< CSCDetId, CSCALCTDigi > CSCALCTDigiCollection
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

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

Definition at line 96 of file CSCChamberMasker.cc.

Referenced by produce().

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

Definition at line 95 of file CSCChamberMasker.cc.

Referenced by produce().

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().

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

Definition at line 93 of file CSCChamberMasker.cc.

Referenced by produce().

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

Definition at line 94 of file CSCChamberMasker.cc.

Referenced by produce().