CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
EcalSelectiveReadoutProducer Class Reference
Inheritance diagram for EcalSelectiveReadoutProducer:
edm::stream::EDProducer< edm::GlobalCache< esrp::Cache > >

Public Member Functions

 EcalSelectiveReadoutProducer (const edm::ParameterSet &params, esrp::Cache const *)
 
void produce (edm::Event &event, const edm::EventSetup &eventSetup) override
 
 ~EcalSelectiveReadoutProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< esrp::Cache > >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &iDesc)
 
static void globalEndJob (esrp::Cache *)
 
static std::unique_ptr< esrp::CacheinitializeGlobalCache (const edm::ParameterSet &)
 
static void printSrFlags (std::ostream &os, const EBSrFlagCollection &ebSrFlags, const EESrFlagCollection &eeSrFlags, int iEvent=-1, bool withHeader=true)
 

Private Member Functions

void checkWeights (const edm::Event &evt, const edm::ProductID &noZSDigiId) const
 
bool getBinOfMax (const edm::Event &evt, const edm::ProductID &noZsDigiId, int &binOfMax) const
 
const EBDigiCollectiongetEBDigis (edm::Event &event)
 
const EEDigiCollectiongetEEDigis (edm::Event &event)
 
const EcalTrigPrimDigiCollectiongetTrigPrims (edm::Event &event) const
 
void printTTFlags (const EcalTrigPrimDigiCollection &tp, std::ostream &os) const
 
void checkGeometry (const edm::EventSetup &eventSetup)
 
void checkTriggerMap (const edm::EventSetup &eventSetup)
 
void checkElecMap (const edm::EventSetup &eventSetup)
 

Static Private Member Functions

static void checkValidity (const EcalSRSettings &settings)
 

Private Attributes

std::string digiProducer_
 
int dumpFlags_
 
edm::EDGetTokenT< EBDigiCollectionEB_token
 
std::string ebdigiCollection_
 
std::string ebSrFlagCollection_
 
std::string ebSRPdigiCollection_
 
edm::EDGetTokenT< EcalTrigPrimDigiCollectionEcTP_token
 
edm::EDGetTokenT< EEDigiCollectionEE_token
 
std::string eedigiCollection_
 
edm::ESGetToken< EcalElectronicsMapping, EcalMappingRcdeElecmap_token_
 
std::string eeSrFlagCollection_
 
std::string eeSRPdigiCollection_
 
edm::ESGetToken< EcalTrigTowerConstituentsMap, IdealGeometryRecordeTTmap_token_
 
bool firstCallEB_
 
bool firstCallEE_
 
edm::ESGetToken< CaloGeometry, CaloGeometryRecordgeom_token_
 
edm::ESGetToken< EcalSRSettings, EcalSRSettingsRcdhSr_token_
 
bool produceDigis_
 
const EcalSRSettingssettings_
 
std::unique_ptr< EcalSRSettingssettingsFromFile_
 
EcalSelectiveReadoutSuppressor suppressor_
 
bool suppressorSettingsSet_ = false
 
const EcalElectronicsMappingtheElecMap
 
const CaloGeometrytheGeometry
 
const EcalTrigTowerConstituentsMaptheTriggerTowerMap
 
bool trigPrimBypass_
 
int trigPrimBypassMode_
 
std::string trigPrimCollection_
 
std::string trigPrimProducer_
 
bool useCondDb_
 
bool useFullReadout_
 
bool writeSrFlags_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< esrp::Cache > >
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Definition at line 43 of file EcalSelectiveReadoutProducer.cc.

Constructor & Destructor Documentation

◆ EcalSelectiveReadoutProducer()

EcalSelectiveReadoutProducer::EcalSelectiveReadoutProducer ( const edm::ParameterSet params,
esrp::Cache const *   
)
explicit

Constructor

Parameters
paramsseletive readout parameters

Definition at line 195 of file EcalSelectiveReadoutProducer.cc.

References digiProducer_, dumpFlags_, EB_token, ebdigiCollection_, ebSrFlagCollection_, ebSRPdigiCollection_, EcTP_token, EE_token, eedigiCollection_, eElecmap_token_, eeSrFlagCollection_, eeSRPdigiCollection_, eTTmap_token_, geom_token_, hSr_token_, ecalsrcondtools::importParameterSet(), ProducerED_cfi::InputTag, submitPVValidationJobs::params, produceDigis_, settings_, settingsFromFile_, AlCaHLTBitMon_QueryRunRegistry::string, theElecMap, theGeometry, theTriggerTowerMap, trigPrimBypass_, trigPrimBypassMode_, trigPrimCollection_, trigPrimProducer_, useCondDb_, useFullReadout_, and writeSrFlags_.

196  : suppressor_(params, consumesCollector()), firstCallEB_(true), firstCallEE_(true) {
197  //settings:
198  // settings which are only in python config files:
199  digiProducer_ = params.getParameter<string>("digiProducer");
200  ebdigiCollection_ = params.getParameter<std::string>("EBdigiCollection");
201  eedigiCollection_ = params.getParameter<std::string>("EEdigiCollection");
202  ebSRPdigiCollection_ = params.getParameter<std::string>("EBSRPdigiCollection");
203  eeSRPdigiCollection_ = params.getParameter<std::string>("EESRPdigiCollection");
204  ebSrFlagCollection_ = params.getParameter<std::string>("EBSrFlagCollection");
205  eeSrFlagCollection_ = params.getParameter<std::string>("EESrFlagCollection");
206  trigPrimProducer_ = params.getParameter<string>("trigPrimProducer");
207  trigPrimCollection_ = params.getParameter<string>("trigPrimCollection");
208  trigPrimBypass_ = params.getParameter<bool>("trigPrimBypass");
209  trigPrimBypassMode_ = params.getParameter<int>("trigPrimBypassMode");
210  dumpFlags_ = params.getUntrackedParameter<int>("dumpFlags");
211  writeSrFlags_ = params.getUntrackedParameter<bool>("writeSrFlags");
212  produceDigis_ = params.getUntrackedParameter<bool>("produceDigis");
213  // settings which can come from either condition database or python configuration file:
214  useCondDb_ = params.getParameter<bool>("configFromCondDB");
215  if (!useCondDb_) {
216  settingsFromFile_ = std::make_unique<EcalSRSettings>();
219  }
220 
221  //declares the products made by this producer:
222  if (produceDigis_) {
223  produces<EBDigiCollection>(ebSRPdigiCollection_);
224  produces<EEDigiCollection>(eeSRPdigiCollection_);
225  }
226 
227  if (writeSrFlags_) {
228  produces<EBSrFlagCollection>(ebSrFlagCollection_);
229  produces<EESrFlagCollection>(eeSrFlagCollection_);
230  }
231 
232  useFullReadout_ = params.getParameter<bool>("UseFullReadout");
233 
234  theGeometry = nullptr;
235  theTriggerTowerMap = nullptr;
236  theElecMap = nullptr;
237 
238  EB_token = consumes<EBDigiCollection>(edm::InputTag(digiProducer_, ebdigiCollection_));
239  EE_token = consumes<EEDigiCollection>(edm::InputTag(digiProducer_, eedigiCollection_));
240  ;
241  EcTP_token = consumes<EcalTrigPrimDigiCollection>(edm::InputTag(trigPrimProducer_, trigPrimCollection_));
242  if (useFullReadout_) {
243  hSr_token_ = esConsumes<EcalSRSettings, EcalSRSettingsRcd>(edm::ESInputTag("", "fullReadout"));
244  } else {
245  hSr_token_ = esConsumes<EcalSRSettings, EcalSRSettingsRcd>();
246  }
247  geom_token_ = esConsumes<CaloGeometry, CaloGeometryRecord>();
248  eTTmap_token_ = esConsumes<EcalTrigTowerConstituentsMap, IdealGeometryRecord>();
249  eElecmap_token_ = esConsumes<EcalElectronicsMapping, EcalMappingRcd>();
250  ;
251 }
edm::ESGetToken< EcalSRSettings, EcalSRSettingsRcd > hSr_token_
edm::ESGetToken< EcalTrigTowerConstituentsMap, IdealGeometryRecord > eTTmap_token_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > geom_token_
edm::EDGetTokenT< EBDigiCollection > EB_token
edm::ESGetToken< EcalElectronicsMapping, EcalMappingRcd > eElecmap_token_
const EcalTrigTowerConstituentsMap * theTriggerTowerMap
const EcalElectronicsMapping * theElecMap
std::unique_ptr< EcalSRSettings > settingsFromFile_
edm::EDGetTokenT< EcalTrigPrimDigiCollection > EcTP_token
edm::EDGetTokenT< EEDigiCollection > EE_token
void importParameterSet(EcalSRSettings &sr, const edm::ParameterSet &ps)
EcalSelectiveReadoutSuppressor suppressor_

◆ ~EcalSelectiveReadoutProducer()

EcalSelectiveReadoutProducer::~EcalSelectiveReadoutProducer ( )
override

Destructor

Definition at line 295 of file EcalSelectiveReadoutProducer.cc.

295 {}

Member Function Documentation

◆ checkElecMap()

void EcalSelectiveReadoutProducer::checkElecMap ( const edm::EventSetup eventSetup)
private

Definition at line 449 of file EcalSelectiveReadoutProducer.cc.

References eElecmap_token_, options_cfi::eventSetup, EcalSelectiveReadoutSuppressor::setElecMap(), suppressor_, and theElecMap.

Referenced by produce().

449  {
451 
452  const EcalElectronicsMapping* pMap = &*eElecmap;
453 
454  // see if we need to update
455  if (pMap != theElecMap) {
456  theElecMap = pMap;
458  }
459 }
edm::ESGetToken< EcalElectronicsMapping, EcalMappingRcd > eElecmap_token_
const EcalElectronicsMapping * theElecMap
void setElecMap(const EcalElectronicsMapping *map)
EcalSelectiveReadoutSuppressor suppressor_

◆ checkGeometry()

void EcalSelectiveReadoutProducer::checkGeometry ( const edm::EventSetup eventSetup)
private

call these once an event, to make sure everything is up-to-date

Definition at line 425 of file EcalSelectiveReadoutProducer.cc.

References options_cfi::eventSetup, geom_token_, EcalSelectiveReadoutSuppressor::setGeometry(), suppressor_, and theGeometry.

Referenced by produce().

425  {
426  edm::ESHandle<CaloGeometry> hGeometry = eventSetup.getHandle(geom_token_);
427 
428  const CaloGeometry* pGeometry = &*hGeometry;
429 
430  // see if we need to update
431  if (pGeometry != theGeometry) {
432  theGeometry = pGeometry;
434  }
435 }
void setGeometry(const CaloGeometry *caloGeometry)
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > geom_token_
EcalSelectiveReadoutSuppressor suppressor_

◆ checkTriggerMap()

void EcalSelectiveReadoutProducer::checkTriggerMap ( const edm::EventSetup eventSetup)
private

Definition at line 437 of file EcalSelectiveReadoutProducer.cc.

References eTTmap_token_, options_cfi::eventSetup, EcalSelectiveReadoutSuppressor::setTriggerMap(), suppressor_, and theTriggerTowerMap.

Referenced by produce().

437  {
439 
440  const EcalTrigTowerConstituentsMap* pMap = &*eTTmap;
441 
442  // see if we need to update
443  if (pMap != theTriggerTowerMap) {
444  theTriggerTowerMap = pMap;
446  }
447 }
edm::ESGetToken< EcalTrigTowerConstituentsMap, IdealGeometryRecord > eTTmap_token_
void setTriggerMap(const EcalTrigTowerConstituentsMap *map)
const EcalTrigTowerConstituentsMap * theTriggerTowerMap
EcalSelectiveReadoutSuppressor suppressor_

◆ checkValidity()

void EcalSelectiveReadoutProducer::checkValidity ( const EcalSRSettings settings)
staticprivate

Checks validity of selective setting object is valid to be used for MC, especially checks the number of elements in the vectors

Parameters
forEmulatorif true check the restriction that applies for EcalSelectiveReadoutProducer
Exceptions
cms::Exceptionif the setting is not valid.

Definition at line 710 of file EcalSelectiveReadoutProducer.cc.

References EcalSRSettings::dccNormalizedWeights_, EcalSRSettings::ecalDccZs1stSample_, and Exception.

Referenced by produce().

710  {
711  if (settings.dccNormalizedWeights_.size() != 1) {
712  throw cms::Exception("Configuration")
713  << "Selective readout emulator, EcalSelectiveReadout, supports only single set of ZS weights. "
714  "while the configuration contains "
715  << settings.dccNormalizedWeights_.size() << " set(s)\n";
716  }
717 
718  // if(settings.dccNormalizedWeights_.size() != 1
719  // && settings.dccNormalizedWeights_.size() != 2
720  // && settings.dccNormalizedWeights_.size() != 54
721  // && settings.dccNormalizedWeights_.size() != 75848){
722  // throw cms::Exception("Configuration") << "Invalid number of DCC weight set (" << settings.dccNormalizedWeights_.size()
723  // << ") in condition object EcalSRSetting::dccNormalizedWeights_. "
724  // << "Valid counts are: 1 (single set), 2 (EB and EE), 54 (one per DCC) and 75848 "
725  // "(one per crystal)\n";
726  // }
727 
728  if (settings.dccNormalizedWeights_.size() != settings.ecalDccZs1stSample_.size()) {
729  throw cms::Exception("Configuration")
730  << "Inconsistency between number of weigth sets (" << settings.dccNormalizedWeights_.size() << ") and "
731  << "number of ecalDccZs1Sample values (" << settings.ecalDccZs1stSample_.size() << ").";
732  }
733 }
std::vector< std::vector< float > > dccNormalizedWeights_
std::vector< int > ecalDccZs1stSample_

◆ checkWeights()

void EcalSelectiveReadoutProducer::checkWeights ( const edm::Event evt,
const edm::ProductID noZSDigiId 
) const
private

Sanity check on the DCC FIR filter weights. Log warning or error message if an unexpected weight set is found. In principle it is checked that the maximum weight is applied to the expected maximum sample.

Definition at line 506 of file EcalSelectiveReadoutProducer.cc.

References EcalSRSettings::dccNormalizedWeights_, EcalSRSettings::ecalDccZs1stSample_, getBinOfMax(), EcalSelectiveReadoutSuppressor::getFIRTapCount(), mps_fire::i, settings_, and hltDeepSecondaryVertexTagInfosPFPuppi_cfi::weights.

Referenced by getEBDigis(), and getEEDigis().

506  {
507  const vector<float>& weights =
508  settings_->dccNormalizedWeights_[0]; //params_.getParameter<vector<double> >("dccNormalizedWeights");
510  static std::atomic<bool> warnWeightCnt{true};
511  bool expected = true;
512  if ((int)weights.size() > nFIRTaps &&
513  warnWeightCnt.compare_exchange_strong(expected, false, std::memory_order_acq_rel)) {
514  edm::LogWarning("Configuration") << "The list of DCC zero suppression FIR "
515  "weights given in parameter dccNormalizedWeights is longer "
516  "than the expected depth of the FIR filter :("
517  << nFIRTaps
518  << "). "
519  "The last weights will be discarded.";
520  }
521 
522  if (!weights.empty()) {
523  int iMaxWeight = 0;
524  double maxWeight = weights[iMaxWeight];
525  //looks for index of maximum weight
526  for (unsigned i = 0; i < weights.size(); ++i) {
527  if (weights[i] > maxWeight) {
528  iMaxWeight = i;
529  maxWeight = weights[iMaxWeight];
530  }
531  }
532 
533  //position of time sample whose maximum weight is applied:
534  int maxWeightBin = settings_->ecalDccZs1stSample_[0] //params_.getParameter<int>("ecalDccZs1stSample")
535  + iMaxWeight;
536 
537  //gets the bin of maximum (in case of raw data it will not exist)
538  int binOfMax = 0;
539  bool rc = getBinOfMax(evt, noZsDigiId, binOfMax);
540 
541  if (rc && maxWeightBin != binOfMax) {
542  edm::LogWarning("Configuration") << "The maximum weight of DCC zero suppression FIR filter is not "
543  "applied to the expected maximum sample("
544  << binOfMax
545  << (binOfMax == 1 ? "st"
546  : (binOfMax == 2 ? "nd" : (binOfMax == 3 ? "rd" : "th")))
547  << " time sample). This may indicate faulty 'dccNormalizedWeights' "
548  "or 'ecalDccZs1sSample' parameters.";
549  }
550  }
551 }
std::vector< std::vector< float > > dccNormalizedWeights_
std::vector< int > ecalDccZs1stSample_
bool getBinOfMax(const edm::Event &evt, const edm::ProductID &noZsDigiId, int &binOfMax) const
Log< level::Warning, false > LogWarning

◆ fillDescriptions()

void EcalSelectiveReadoutProducer::fillDescriptions ( edm::ConfigurationDescriptions iDesc)
static

Definition at line 253 of file EcalSelectiveReadoutProducer.cc.

References edm::ParameterSetDescription::add(), edm::ConfigurationDescriptions::addDefault(), edm::ParameterSetDescription::addOptional(), edm::ParameterSetDescription::addUntracked(), and AlCaHLTBitMon_QueryRunRegistry::string.

253  {
255 
256  ps.add<string>("digiProducer");
257  ps.add<std::string>("EBdigiCollection");
258  ps.add<std::string>("EEdigiCollection");
259  ps.add<std::string>("EBSRPdigiCollection");
260  ps.add<std::string>("EESRPdigiCollection");
261  ps.add<std::string>("EBSrFlagCollection");
262  ps.add<std::string>("EESrFlagCollection");
263  ps.add<string>("trigPrimProducer");
264  ps.add<string>("trigPrimCollection");
265  ps.add<bool>("trigPrimBypass"); //also used by suppressor
266  ps.add<int>("trigPrimBypassMode"); // also used by suppressor
267  ps.addUntracked<int>("dumpFlags", 0);
268  ps.addUntracked<bool>("writeSrFlags", false);
269  ps.addUntracked<bool>("produceDigis", true);
270  ps.add<bool>("configFromCondDB", false);
271  ps.add<bool>("UseFullReadout");
272 
273  //from suppressor_
274  ps.add<int>("defaultTtf");
275  ps.add<bool>("trigPrimBypassWithPeakFinder");
276  ps.add<double>("trigPrimBypassLTH");
277  ps.add<double>("trigPrimBypassHTH");
278 
279  //from importParameterSet
280  ps.addOptional<int>("deltaPhi");
281  ps.addOptional<int>("deltaEta");
282  ps.addOptional<int>("ecalDccZs1stSample");
283  ps.addOptional<double>("ebDccAdcToGeV");
284  ps.addOptional<double>("eeDccAdcToGeV");
285  ps.addOptional<std::vector<double>>("dccNormalizedWeights");
286  ps.addOptional<bool>("symetricZS");
287  ps.addOptional<double>("srpBarrelLowInterestChannelZS");
288  ps.addOptional<double>("srpEndcapLowInterestChannelZS");
289  ps.addOptional<double>("srpBarrelHighInterestChannelZS");
290  ps.addOptional<double>("srpEndcapHighInterestChannelZS");
291 
292  iDesc.addDefault(ps);
293 }
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void addDefault(ParameterSetDescription const &psetDescription)
ParameterDescriptionBase * add(U const &iLabel, T const &value)

◆ getBinOfMax()

bool EcalSelectiveReadoutProducer::getBinOfMax ( const edm::Event evt,
const edm::ProductID noZsDigiId,
int &  binOfMax 
) const
private

Gets the value of the digitizer binOfMaximum parameter.

Parameters
noZsDigiIdproduct ID of the non-suppressed digis
binOfMax[out] set the parameter value if found
Returns
true on success, false otherwise

Definition at line 553 of file EcalSelectiveReadoutProducer.cc.

References spr::find(), edm::Event::getStableProvenance(), AlCaHLTBitMon_ParallelJobs::p, edm::parameterSet(), edm::Event::processHistory(), and mps_fire::result.

Referenced by checkWeights().

555  {
556  bool rc;
557  const edm::StableProvenance& p = evt.getStableProvenance(noZsDigiId);
559  vector<string> ebDigiParamList = result.getParameterNames();
560  string bofm("binOfMaximum");
561  if (find(ebDigiParamList.begin(), ebDigiParamList.end(), bofm) != ebDigiParamList.end()) { //bofm found
562  binOfMax = result.getParameter<int>("binOfMaximum");
563  rc = true;
564  } else {
565  rc = false;
566  }
567  return rc;
568 }
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
ParameterSet const & parameterSet(StableProvenance const &provenance, ProcessHistory const &history)
Definition: Provenance.cc:11
ProcessHistory const & processHistory() const override
Definition: Event.cc:250
StableProvenance const & getStableProvenance(BranchID const &theID) const
Definition: Event.cc:124

◆ getEBDigis()

const EBDigiCollection * EcalSelectiveReadoutProducer::getEBDigis ( edm::Event event)
private

Definition at line 393 of file EcalSelectiveReadoutProducer.cc.

References checkWeights(), EB_token, firstCallEB_, edm::HandleBase::id(), edm::Handle< T >::product(), and mps_fire::result.

Referenced by produce().

393  {
395  event.getByToken(EB_token, hEBDigis);
396  //product() method is called before id() in order to get an exception
397  //if the handle is not available (check not done by id() method).
398  const EBDigiCollection* result = hEBDigis.product();
399  if (firstCallEB_) {
400  checkWeights(event, hEBDigis.id());
401  firstCallEB_ = false;
402  }
403  return result;
404 }
ProductID id() const
Definition: HandleBase.cc:29
T const * product() const
Definition: Handle.h:70
edm::EDGetTokenT< EBDigiCollection > EB_token
void checkWeights(const edm::Event &evt, const edm::ProductID &noZSDigiId) const
Definition: event.py:1

◆ getEEDigis()

const EEDigiCollection * EcalSelectiveReadoutProducer::getEEDigis ( edm::Event event)
private

Definition at line 406 of file EcalSelectiveReadoutProducer.cc.

References checkWeights(), EE_token, firstCallEE_, edm::HandleBase::id(), edm::Handle< T >::product(), and mps_fire::result.

Referenced by produce().

406  {
408  event.getByToken(EE_token, hEEDigis);
409  //product() method is called before id() in order to get an exception
410  //if the handle is not available (check not done by id() method).
411  const EEDigiCollection* result = hEEDigis.product();
412  if (firstCallEE_) {
413  checkWeights(event, hEEDigis.id());
414  firstCallEE_ = false;
415  }
416  return result;
417 }
ProductID id() const
Definition: HandleBase.cc:29
T const * product() const
Definition: Handle.h:70
void checkWeights(const edm::Event &evt, const edm::ProductID &noZSDigiId) const
edm::EDGetTokenT< EEDigiCollection > EE_token
Definition: event.py:1

◆ getTrigPrims()

const EcalTrigPrimDigiCollection * EcalSelectiveReadoutProducer::getTrigPrims ( edm::Event event) const
private

Definition at line 419 of file EcalSelectiveReadoutProducer.cc.

References EcTP_token, and edm::Handle< T >::product().

Referenced by produce().

419  {
421  event.getByToken(EcTP_token, hTPDigis);
422  return hTPDigis.product();
423 }
T const * product() const
Definition: Handle.h:70
edm::EDGetTokenT< EcalTrigPrimDigiCollection > EcTP_token

◆ globalEndJob()

static void EcalSelectiveReadoutProducer::globalEndJob ( esrp::Cache )
inlinestatic

Definition at line 76 of file EcalSelectiveReadoutProducer.cc.

76 {}

◆ initializeGlobalCache()

std::unique_ptr< esrp::Cache > EcalSelectiveReadoutProducer::initializeGlobalCache ( const edm::ParameterSet )
static

Definition at line 191 of file EcalSelectiveReadoutProducer.cc.

191  {
192  return std::make_unique<esrp::Cache>();
193 }

◆ printSrFlags()

void EcalSelectiveReadoutProducer::printSrFlags ( std::ostream &  os,
const EBSrFlagCollection ebSrFlags,
const EESrFlagCollection eeSrFlags,
int  iEvent = -1,
bool  withHeader = true 
)
static

Help function to print SR flags.

Parameters
ebSrFlagsthe action flags of EB
eeSrFlagthe action flags of EE
iEventevent number. Ignored if <0.
withHeader,iftrue an output description is written out as header.

Definition at line 570 of file EcalSelectiveReadoutProducer.cc.

References cms::cuda::assert(), edm::SortedCollection< T, SORT >::begin(), edm::SortedCollection< T, SORT >::end(), RemoveAddSevLevel::flag, mps_fire::i, l1tTowerCalibrationProducer_cfi::iEta, iEvent, nEndcaps, srpFlagMarker, submitPVValidationJobs::t, and hcalRecHitTable_cff::time.

Referenced by produce().

574  {
575  const char srpFlagMarker[] = {'.', 'z', 'Z', 'F', '4', '5', '6', '7'};
576  if (withHeader) {
577  time_t t;
578  time(&t);
579  const char* date = ctime(&t);
580  os << "#SRP flag map\n#\n"
581  "# Generatied on: "
582  << date
583  << "\n#\n"
584  "# +-->Phi/Y "
585  << srpFlagMarker[0]
586  << ": suppressed\n"
587  "# | "
588  << srpFlagMarker[1]
589  << ": ZS 1\n"
590  "# | "
591  << srpFlagMarker[2]
592  << ": ZS 2\n"
593  "# V Eta/X "
594  << srpFlagMarker[3]
595  << ": full readout\n"
596  "#\n";
597  }
598 
599  //EE-,EB,EE+ map wil be written onto file in following format:
600  //
601  // 72
602  // <-------------->
603  // 20
604  // <--->
605  // EEE A +-----> Y
606  // EEEEE | |
607  // EE EE | 20 EE- |
608  // EEEEE | |
609  // EEE V V X
610  // BBBBBBBBBBBBBBBBB A
611  // BBBBBBBBBBBBBBBBB | +-----> Phi
612  // BBBBBBBBBBBBBBBBB | |
613  // BBBBBBBBBBBBBBBBB | 34 EB |
614  // BBBBBBBBBBBBBBBBB | |
615  // BBBBBBBBBBBBBBBBB | V Eta
616  // BBBBBBBBBBBBBBBBB |
617  // BBBBBBBBBBBBBBBBB |
618  // BBBBBBBBBBBBBBBBB V
619  // EEE A +-----> Y
620  // EEEEE | |
621  // EE EE | 20 EE+ |
622  // EEEEE | |
623  // EEE V V X
624  //
625  //
626  //
627  //
628  //event header:
629  if (iEvent >= 0) {
630  os << "# Event " << iEvent << "\n";
631  }
632 
633  //retrieve flags:
634  const int nEndcaps = 2;
635  const int nScX = 20;
636  const int nScY = 20;
637  int eeSrf[nEndcaps][nScX][nScY];
638  for (size_t i = 0; i < sizeof(eeSrf) / sizeof(int); ((int*)eeSrf)[i++] = -1) {
639  };
640  for (EESrFlagCollection::const_iterator it = eeSrFlags.begin(); it != eeSrFlags.end(); ++it) {
641  const EESrFlag& flag = *it;
642  int iZ0 = flag.id().zside() > 0 ? 1 : 0;
643  int iX0 = flag.id().ix() - 1;
644  int iY0 = flag.id().iy() - 1;
645  assert(iZ0 >= 0 && iZ0 < nEndcaps);
646  assert(iX0 >= 0 && iX0 < nScX);
647  assert(iY0 >= 0 && iY0 < nScY);
648  eeSrf[iZ0][iX0][iY0] = flag.value();
649  }
650  const int nEbTtEta = 34;
651  const int nEeTtEta = 11;
652  const int nTtEta = nEeTtEta * 2 + nEbTtEta;
653  const int nTtPhi = 72;
654  int ebSrf[nEbTtEta][nTtPhi];
655  for (size_t i = 0; i < sizeof(ebSrf) / sizeof(int); ((int*)ebSrf)[i++] = -1) {
656  };
657  for (EBSrFlagCollection::const_iterator it = ebSrFlags.begin(); it != ebSrFlags.end(); ++it) {
658  const EBSrFlag& flag = *it;
659  int iEta = flag.id().ieta();
660  int iEta0 = iEta + nTtEta / 2 - (iEta >= 0 ? 1 : 0); //0->55 from eta=-3 to eta=3
661  int iEbEta0 = iEta0 - nEeTtEta; //0->33 from eta=-1.48 to eta=1.48
662  int iPhi0 = flag.id().iphi() - 1;
663  assert(iEbEta0 >= 0 && iEbEta0 < nEbTtEta);
664  assert(iPhi0 >= 0 && iPhi0 < nTtPhi);
665 
666  // cout << __FILE__ << ":" << __LINE__ << ": "
667  // << iEta << "\t" << flag.id().iphi() << " -> "
668  // << iEbEta0 << "\t" << iPhi0
669  // << "... Flag: " << flag.value() << "\n";
670 
671  ebSrf[iEbEta0][iPhi0] = flag.value();
672  }
673 
674  //print flags:
675 
676  //EE-
677  for (int iX0 = 0; iX0 < nScX; ++iX0) {
678  for (int iY0 = 0; iY0 < nScY; ++iY0) {
679  int srFlag = eeSrf[0][iX0][iY0];
680  assert(srFlag >= -1 && srFlag < (int)(sizeof(srpFlagMarker) / sizeof(srpFlagMarker[0])));
681  os << (srFlag == -1 ? ' ' : srpFlagMarker[srFlag]);
682  }
683  os << "\n"; //one Y supercystal column per line
684  } //next supercrystal X-index
685 
686  //EB
687  for (int iEta0 = 0; iEta0 < nEbTtEta; ++iEta0) {
688  for (int iPhi0 = 0; iPhi0 < nTtPhi; ++iPhi0) {
689  int srFlag = ebSrf[iEta0][iPhi0];
690  assert(srFlag >= -1 && srFlag < (int)(sizeof(srpFlagMarker) / sizeof(srpFlagMarker[0])));
691  os << (srFlag == -1 ? '?' : srpFlagMarker[srFlag]);
692  }
693  os << "\n"; //one phi per line
694  }
695 
696  //EE+
697  for (int iX0 = 0; iX0 < nScX; ++iX0) {
698  for (int iY0 = 0; iY0 < nScY; ++iY0) {
699  int srFlag = eeSrf[1][iX0][iY0];
700  assert(srFlag >= -1 && srFlag < (int)(sizeof(srpFlagMarker) / sizeof(srpFlagMarker[0])));
701  os << (srFlag == -1 ? ' ' : srpFlagMarker[srFlag]);
702  }
703  os << "\n"; //one Y supercystal column per line
704  } //next supercrystal X-index
705 
706  //event trailer:
707  os << "\n";
708 }
std::vector< T >::const_iterator const_iterator
assert(be >=bs)
int iEvent
Definition: GenABIO.cc:224
const_iterator begin() const
const_iterator end() const
static const int nEndcaps
Definition: GenABIO.cc:115
const char srpFlagMarker[]
Definition: GenABIO.cc:163

◆ printTTFlags()

void EcalSelectiveReadoutProducer::printTTFlags ( const EcalTrigPrimDigiCollection tp,
std::ostream &  os 
) const
private

Definition at line 461 of file EcalSelectiveReadoutProducer.cc.

References EcalTriggerPrimitiveDigi::id(), EcalTrigTowerDetId::ieta(), l1tTowerCalibrationProducer_cfi::iEta, EcalTrigTowerDetId::iphi(), HLT_2023v12_cff::nEta, HLT_2023v12_cff::nPhi, EcalSelectiveReadout::nTriggerTowersInEta, EcalSelectiveReadout::nTriggerTowersInPhi, EcalTriggerPrimitiveDigi::size(), tccFlagMarker, cmsswSequenceInfo::tp, and EcalTriggerPrimitiveDigi::ttFlag().

461  {
462  const char tccFlagMarker[] = {'x', '.', 'S', '?', 'C', 'E', 'E', 'E', 'E'};
465 
466  //static bool firstCall=true;
467  // if(firstCall){
468  // firstCall=false;
469  os << "# TCC flag map\n#\n"
470  "# +-->Phi "
471  << tccFlagMarker[0 + 1]
472  << ": 000 (low interest)\n"
473  "# | "
474  << tccFlagMarker[1 + 1]
475  << ": 001 (mid interest)\n"
476  "# | "
477  << tccFlagMarker[2 + 1]
478  << ": 010 (not valid)\n"
479  "# V Eta "
480  << tccFlagMarker[3 + 1]
481  << ": 011 (high interest)\n"
482  "# "
483  << tccFlagMarker[4 + 1]
484  << ": 1xx forced readout (Hw error)\n"
485  "#\n";
486  //}
487 
488  vector<vector<int>> ttf(nEta, vector<int>(nPhi, -1));
489  for (EcalTrigPrimDigiCollection::const_iterator it = tp.begin(); it != tp.end(); ++it) {
490  const EcalTriggerPrimitiveDigi& trigPrim = *it;
491  if (trigPrim.size() > 0) {
492  int iEta = trigPrim.id().ieta();
493  int iEta0 = iEta < 0 ? iEta + nEta / 2 : iEta + nEta / 2 - 1;
494  int iPhi0 = trigPrim.id().iphi() - 1;
495  ttf[iEta0][iPhi0] = trigPrim.ttFlag();
496  }
497  }
498  for (int iEta = 0; iEta < nEta; ++iEta) {
499  for (int iPhi = 0; iPhi < nPhi; ++iPhi) {
500  os << tccFlagMarker[ttf[iEta][iPhi] + 1];
501  }
502  os << "\n";
503  }
504 }
int ieta() const
get the tower ieta
const EcalTrigTowerDetId & id() const
std::vector< T >::const_iterator const_iterator
const char tccFlagMarker[]
Definition: GenABIO.cc:164
static const size_t nTriggerTowersInEta
static const size_t nTriggerTowersInPhi
int ttFlag() const
get the Trigger tower Flag of interesting sample
int iphi() const
get the tower iphi

◆ produce()

void EcalSelectiveReadoutProducer::produce ( edm::Event event,
const edm::EventSetup eventSetup 
)
override

Produces the EDM products

Parameters
CMSevent
eventSetupevent conditions

Definition at line 297 of file EcalSelectiveReadoutProducer.cc.

References utilities::cache(), checkElecMap(), checkGeometry(), checkTriggerMap(), checkValidity(), dumpFlags_, ebSrFlagCollection_, ebSRPdigiCollection_, SimL1EmulatorDM_cff::eeDigis, eeSrFlagCollection_, eeSRPdigiCollection_, options_cfi::eventSetup, getEBDigis(), EcalSelectiveReadoutSuppressor::getEcalSelectiveReadout(), getEEDigis(), getTrigPrims(), hSr_token_, eostools::move(), EcalSelectiveReadout::print(), EcalSelectiveReadout::printHeader(), printSrFlags(), EcalSelectiveReadoutSuppressor::printTTFlags(), produceDigis_, edm::ESHandle< T >::product(), EcalSelectiveReadoutSuppressor::run(), EcalSelectiveReadoutSuppressor::setSettings(), settings_, suppressor_, suppressorSettingsSet_, trigPrimBypass_, trigPrimBypassMode_, pileupReCalc_HLTpaths::trunc, useCondDb_, and writeSrFlags_.

297  {
298  if (useCondDb_) {
299  //getting selective readout configuration:
301 
302  settings_ = hSr.product();
303  }
304 
305  //gets the trigger primitives:
306  EcalTrigPrimDigiCollection emptyTPColl;
307  const EcalTrigPrimDigiCollection* trigPrims =
308  (trigPrimBypass_ && trigPrimBypassMode_ == 0) ? &emptyTPColl : getTrigPrims(event);
309 
310  //gets the digis from the events:
311  EBDigiCollection dummyEbDigiColl;
312  EEDigiCollection dummyEeDigiColl;
313 
314  const EBDigiCollection* ebDigis = produceDigis_ ? getEBDigis(event) : &dummyEbDigiColl;
315  const EEDigiCollection* eeDigis = produceDigis_ ? getEEDigis(event) : &dummyEeDigiColl;
316 
317  //runs the selective readout algorithm:
318  unique_ptr<EBDigiCollection> selectedEBDigis;
319  unique_ptr<EEDigiCollection> selectedEEDigis;
320  unique_ptr<EBSrFlagCollection> ebSrFlags;
321  unique_ptr<EESrFlagCollection> eeSrFlags;
322 
323  if (produceDigis_) {
324  selectedEBDigis = std::make_unique<EBDigiCollection>();
325  selectedEEDigis = std::make_unique<EEDigiCollection>();
326  }
327 
328  if (writeSrFlags_) {
329  ebSrFlags = std::make_unique<EBSrFlagCollection>();
330  eeSrFlags = std::make_unique<EESrFlagCollection>();
331  }
332 
333  if (not suppressorSettingsSet_) {
334  //Check the validity of EcalSRSettings
336 
338  suppressorSettingsSet_ = true;
339 
340  // check that everything is up-to-date
344  }
345 
347  *trigPrims,
348  *ebDigis,
349  *eeDigis,
350  selectedEBDigis.get(),
351  selectedEEDigis.get(),
352  ebSrFlags.get(),
353  eeSrFlags.get());
354 
355  if (dumpFlags_ > 0) {
356  auto* cache = globalCache();
357  std::lock_guard<std::mutex> guard(cache->mutex_);
358  auto iEvent_ = cache->iEvent_;
359  if (dumpFlags_ >= iEvent_) {
360  ofstream ttfFile("TTF.txt", (iEvent_ == 1 ? ios::trunc : ios::app));
361  suppressor_.printTTFlags(ttfFile, iEvent_, iEvent_ == 1 ? true : false);
362 
363  ofstream srfFile("SRF.txt", (iEvent_ == 1 ? ios::trunc : ios::app));
364  if (iEvent_ == 1) {
366  }
367  srfFile << "# Event " << iEvent_ << "\n";
369  srfFile << "\n";
370 
371  ofstream afFile("AF.txt", (iEvent_ == 1 ? ios::trunc : ios::app));
372  printSrFlags(afFile, *ebSrFlags, *eeSrFlags, iEvent_, iEvent_ == 1 ? true : false);
373  ++(cache->iEvent_);
374  } else {
375  //do not want to dump anymore, so can turn off
376  dumpFlags_ = 0;
377  }
378  }
379 
380  if (produceDigis_) {
381  //puts the selected digis into the event:
382  event.put(std::move(selectedEBDigis), ebSRPdigiCollection_);
383  event.put(std::move(selectedEEDigis), eeSRPdigiCollection_);
384  }
385 
386  //puts the SR flags into the event:
387  if (writeSrFlags_) {
388  event.put(std::move(ebSrFlags), ebSrFlagCollection_);
389  event.put(std::move(eeSrFlags), eeSrFlagCollection_);
390  }
391 }
void setSettings(const EcalSRSettings *settings)
edm::ESGetToken< EcalSRSettings, EcalSRSettingsRcd > hSr_token_
void printHeader(std::ostream &os) const
print out header for the map: see print(std::ostream&)
const EBDigiCollection * getEBDigis(edm::Event &event)
void checkTriggerMap(const edm::EventSetup &eventSetup)
EcalSelectiveReadout * getEcalSelectiveReadout()
void checkGeometry(const edm::EventSetup &eventSetup)
void checkElecMap(const edm::EventSetup &eventSetup)
void run(const edm::EventSetup &eventSetup, const EcalTrigPrimDigiCollection &trigPrims, EBDigiCollection &barrelDigis, EEDigiCollection &endcapDigis)
T const * product() const
Definition: ESHandle.h:86
const EEDigiCollection * getEEDigis(edm::Event &event)
const EcalTrigPrimDigiCollection * getTrigPrims(edm::Event &event) const
void print(std::ostream &os) const
print out the map
def cache(function)
Definition: utilities.py:3
static void printSrFlags(std::ostream &os, const EBSrFlagCollection &ebSrFlags, const EESrFlagCollection &eeSrFlags, int iEvent=-1, bool withHeader=true)
void printTTFlags(std::ostream &os, int iEvent=-1, bool withHeader=true) const
static void checkValidity(const EcalSRSettings &settings)
EcalSelectiveReadoutSuppressor suppressor_
def move(src, dest)
Definition: eostools.py:511
Definition: event.py:1

Member Data Documentation

◆ digiProducer_

std::string EcalSelectiveReadoutProducer::digiProducer_
private

Definition at line 119 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer().

◆ dumpFlags_

int EcalSelectiveReadoutProducer::dumpFlags_
private

Number of event whose TT and SR flags must be dumped into a file.

Definition at line 142 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and produce().

◆ EB_token

edm::EDGetTokenT<EBDigiCollection> EcalSelectiveReadoutProducer::EB_token
private

Definition at line 179 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and getEBDigis().

◆ ebdigiCollection_

std::string EcalSelectiveReadoutProducer::ebdigiCollection_
private

Definition at line 120 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer().

◆ ebSrFlagCollection_

std::string EcalSelectiveReadoutProducer::ebSrFlagCollection_
private

Definition at line 124 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and produce().

◆ ebSRPdigiCollection_

std::string EcalSelectiveReadoutProducer::ebSRPdigiCollection_
private

Definition at line 122 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and produce().

◆ EcTP_token

edm::EDGetTokenT<EcalTrigPrimDigiCollection> EcalSelectiveReadoutProducer::EcTP_token
private

Definition at line 181 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and getTrigPrims().

◆ EE_token

edm::EDGetTokenT<EEDigiCollection> EcalSelectiveReadoutProducer::EE_token
private

Definition at line 180 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and getEEDigis().

◆ eedigiCollection_

std::string EcalSelectiveReadoutProducer::eedigiCollection_
private

Definition at line 121 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer().

◆ eElecmap_token_

edm::ESGetToken<EcalElectronicsMapping, EcalMappingRcd> EcalSelectiveReadoutProducer::eElecmap_token_
private

Definition at line 185 of file EcalSelectiveReadoutProducer.cc.

Referenced by checkElecMap(), and EcalSelectiveReadoutProducer().

◆ eeSrFlagCollection_

std::string EcalSelectiveReadoutProducer::eeSrFlagCollection_
private

Definition at line 125 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and produce().

◆ eeSRPdigiCollection_

std::string EcalSelectiveReadoutProducer::eeSRPdigiCollection_
private

Definition at line 123 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and produce().

◆ eTTmap_token_

edm::ESGetToken<EcalTrigTowerConstituentsMap, IdealGeometryRecord> EcalSelectiveReadoutProducer::eTTmap_token_
private

◆ firstCallEB_

bool EcalSelectiveReadoutProducer::firstCallEB_
private

keys

Definition at line 169 of file EcalSelectiveReadoutProducer.cc.

Referenced by getEBDigis().

◆ firstCallEE_

bool EcalSelectiveReadoutProducer::firstCallEE_
private

Definition at line 170 of file EcalSelectiveReadoutProducer.cc.

Referenced by getEEDigis().

◆ geom_token_

edm::ESGetToken<CaloGeometry, CaloGeometryRecord> EcalSelectiveReadoutProducer::geom_token_
private

Definition at line 183 of file EcalSelectiveReadoutProducer.cc.

Referenced by checkGeometry(), and EcalSelectiveReadoutProducer().

◆ hSr_token_

edm::ESGetToken<EcalSRSettings, EcalSRSettingsRcd> EcalSelectiveReadoutProducer::hSr_token_
private

Definition at line 182 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and produce().

◆ produceDigis_

bool EcalSelectiveReadoutProducer::produceDigis_
private

Switch for suppressed digi production If false SR flags are produced but selective readout is not applied on the crystal channel digis.

Definition at line 151 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and produce().

◆ settings_

const EcalSRSettings* EcalSelectiveReadoutProducer::settings_
private

SR settings

Definition at line 155 of file EcalSelectiveReadoutProducer.cc.

Referenced by checkWeights(), EcalSelectiveReadoutProducer(), and produce().

◆ settingsFromFile_

std::unique_ptr<EcalSRSettings> EcalSelectiveReadoutProducer::settingsFromFile_
private

Used when settings_ is imported from configuration file. Just used for memory management. Used settings_ to access to the object

Definition at line 175 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer().

◆ suppressor_

EcalSelectiveReadoutSuppressor EcalSelectiveReadoutProducer::suppressor_
private

◆ suppressorSettingsSet_

bool EcalSelectiveReadoutProducer::suppressorSettingsSet_ = false
private

Definition at line 134 of file EcalSelectiveReadoutProducer.cc.

Referenced by produce().

◆ theElecMap

const EcalElectronicsMapping* EcalSelectiveReadoutProducer::theElecMap
private

Definition at line 132 of file EcalSelectiveReadoutProducer.cc.

Referenced by checkElecMap(), and EcalSelectiveReadoutProducer().

◆ theGeometry

const CaloGeometry* EcalSelectiveReadoutProducer::theGeometry
private

Definition at line 130 of file EcalSelectiveReadoutProducer.cc.

Referenced by checkGeometry(), and EcalSelectiveReadoutProducer().

◆ theTriggerTowerMap

const EcalTrigTowerConstituentsMap* EcalSelectiveReadoutProducer::theTriggerTowerMap
private

◆ trigPrimBypass_

bool EcalSelectiveReadoutProducer::trigPrimBypass_
private

Definition at line 136 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and produce().

◆ trigPrimBypassMode_

int EcalSelectiveReadoutProducer::trigPrimBypassMode_
private

Definition at line 138 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and produce().

◆ trigPrimCollection_

std::string EcalSelectiveReadoutProducer::trigPrimCollection_
private

Definition at line 127 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer().

◆ trigPrimProducer_

std::string EcalSelectiveReadoutProducer::trigPrimProducer_
private

Definition at line 126 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer().

◆ useCondDb_

bool EcalSelectiveReadoutProducer::useCondDb_
private

Switch for retrieving SR settings from condition database instead of CMSSW python configuration file.

Definition at line 160 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and produce().

◆ useFullReadout_

bool EcalSelectiveReadoutProducer::useFullReadout_
private

Special switch to turn off SR entirely using special DB entries

Definition at line 165 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer().

◆ writeSrFlags_

bool EcalSelectiveReadoutProducer::writeSrFlags_
private

switch to write out the SrFlags collections in the event

Definition at line 146 of file EcalSelectiveReadoutProducer.cc.

Referenced by EcalSelectiveReadoutProducer(), and produce().