CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
L1TMP7ZeroSupp Class Reference

#include <L1TMP7ZeroSupp.h>

Inheritance diagram for L1TMP7ZeroSupp:
DQMEDAnalyzer edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 L1TMP7ZeroSupp (const edm::ParameterSet &ps)
 
 ~L1TMP7ZeroSupp () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void bookHistograms (DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &)=0
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
 DQMEDAnalyzer (DQMEDAnalyzer const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer &&)=delete
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) override
 
 ~DQMEDAnalyzer () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c) override
 
void beginLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
 
void dqmBeginRun (const edm::Run &r, const edm::EventSetup &c) override
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Private Types

enum  binlabels {
  EVTS =0, EVTSGOOD, EVTSBAD, BLOCKS,
  ZSBLKSGOOD, ZSBLKSBAD, ZSBLKSBADFALSEPOS, ZSBLKSBADFALSENEG,
  BXBLOCKS, ZSBXBLKSGOOD, ZSBXBLKSBAD, ZSBXBLKSBADFALSEPOS,
  ZSBXBLKSBADFALSENEG, NBINLABELS
}
 
enum  ratioBinlabels {
  REVTS =0, RBLKS, RBLKSFALSEPOS, RBLKSFALSENEG,
  RBXBLKS, RBXBLKSFALSEPOS, RBXBLKSFALSENEG, RNBINLABELS
}
 

Private Member Functions

void bookCapIdHistograms (DQMStore::IBooker &ibooker, const unsigned int &id)
 

Private Attributes

int amc13HeaderSize_
 
int amc13TrailerSize_
 
int amcHeaderSize_
 
int amcTrailerSize_
 
MonitorElementcapIds_
 
bool checkOnlyCapIdsWithMasks_
 
int dataInvFlagMask_
 
std::vector< unsigned int > definedMaskCapIds_
 
std::map< unsigned int, MonitorElement * > errorSummaryDenMap_
 
std::map< unsigned int, MonitorElement * > errorSummaryNumMap_
 
edm::EDGetTokenT< FEDRawDataCollectionfedDataToken_
 
std::vector< int > fedIds_
 
std::vector< std::vector< int > > masks_
 
int maxFedReadoutSize_
 
std::string monitorDir_
 
int newZsFlagMask_
 
std::map< unsigned int, MonitorElement * > readoutSizeNoZSMap_
 
std::map< unsigned int, MonitorElement * > readoutSizeZSExpectedMap_
 
std::map< unsigned int, MonitorElement * > readoutSizeZSMap_
 
int slinkHeaderSize_
 
int slinkTrailerSize_
 
bool verbose_
 
std::map< unsigned int, MonitorElement * > zeroSuppValMap_
 
bool zsEnabled_
 
int zsFlagMask_
 

Static Private Attributes

static const unsigned int maxMasks_ = 16
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 22 of file L1TMP7ZeroSupp.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

L1TMP7ZeroSupp::L1TMP7ZeroSupp ( const edm::ParameterSet ps)

Definition at line 5 of file L1TMP7ZeroSupp.cc.

References gather_cfg::cout, TauDecayModes::dec, definedMaskCapIds_, edm::ParameterSet::exists(), edm::ParameterSet::getUntrackedParameter(), mps_fire::i, masks_, maxMasks_, AlCaHLTBitMon_QueryRunRegistry::string, verbose_, and ~L1TMP7ZeroSupp().

6  : fedDataToken_(consumes<FEDRawDataCollection>(ps.getParameter<edm::InputTag>("rawData"))),
7  zsEnabled_(ps.getUntrackedParameter<bool>("zsEnabled")),
8  fedIds_(ps.getParameter<std::vector<int>>("fedIds")),
9  slinkHeaderSize_(ps.getUntrackedParameter<int>("lenSlinkHeader")),
10  slinkTrailerSize_(ps.getUntrackedParameter<int>("lenSlinkTrailer")),
11  amc13HeaderSize_(ps.getUntrackedParameter<int>("lenAMC13Header")),
12  amc13TrailerSize_(ps.getUntrackedParameter<int>("lenAMC13Trailer")),
13  amcHeaderSize_(ps.getUntrackedParameter<int>("lenAMCHeader")),
14  amcTrailerSize_(ps.getUntrackedParameter<int>("lenAMCTrailer")),
15  newZsFlagMask_(ps.getUntrackedParameter<int>("newZsFlagMask")),
16  zsFlagMask_(ps.getUntrackedParameter<int>("zsFlagMask")),
17  dataInvFlagMask_(ps.getUntrackedParameter<int>("dataInvFlagMask")),
18  maxFedReadoutSize_(ps.getUntrackedParameter<int>("maxFEDReadoutSize")),
19  checkOnlyCapIdsWithMasks_(ps.getUntrackedParameter<bool>("checkOnlyCapIdsWithMasks")),
21  verbose_(ps.getUntrackedParameter<bool>("verbose"))
22 {
23  std::vector<int> onesMask(6, 0xffffffff);
24  masks_.reserve(maxMasks_);
25  for (unsigned int i = 0; i < maxMasks_; ++i) {
26  std::string maskCapIdStr{"maskCapId"+std::to_string(i)};
27  masks_.push_back(ps.getUntrackedParameter<std::vector<int>>(maskCapIdStr, onesMask));
28  // which masks are defined?
29  if (ps.exists(maskCapIdStr)) {
30  definedMaskCapIds_.push_back(i);
31  }
32  }
33  if (verbose_) {
34  // check masks
35  std::cout << "masks" << std::endl;
36  for (unsigned int i = 0; i < maxMasks_; ++i) {
37  std::cout << "caption ID" << i << ":" << std::endl;
38  for (const auto& maskIt: masks_.at(i)) {
39  std::cout << std::hex << std::setw(8) << std::setfill('0') << maskIt << std::dec << std::endl;
40  }
41  }
42  std::cout << "----------" << std::endl;
43  }
44 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< FEDRawDataCollection > fedDataToken_
bool exists(std::string const &parameterName) const
checks if a parameter exists
std::string monitorDir_
std::vector< unsigned int > definedMaskCapIds_
std::vector< std::vector< int > > masks_
static const unsigned int maxMasks_
std::vector< int > fedIds_
bool checkOnlyCapIdsWithMasks_
L1TMP7ZeroSupp::~L1TMP7ZeroSupp ( )
overridedefault

Referenced by L1TMP7ZeroSupp().

Member Function Documentation

void L1TMP7ZeroSupp::analyze ( const edm::Event e,
const edm::EventSetup c 
)
overrideprotected

Definition at line 146 of file L1TMP7ZeroSupp.cc.

References amc13HeaderSize_, amc13TrailerSize_, amcHeaderSize_, amcTrailerSize_, groupFilesInBlocks::block, BLOCKS, BXBLOCKS, FEDHeader::bxID(), capIds_, FEDHeader::check(), FEDTrailer::check(), checkOnlyCapIdsWithMasks_, gather_cfg::cout, FEDTrailer::crc(), FEDRawData::data(), data, dataInvFlagMask_, TauDecayModes::dec, definedMaskCapIds_, end, errorSummaryDenMap_, errorSummaryNumMap_, EVTS, EVTSBAD, EVTSGOOD, FEDTrailer::evtStatus(), FEDRawDataCollection::FEDData(), fedDataToken_, l1t::stage2::layer2::fedId, fedIds_, MonitorElement::Fill(), FEDTrailer::fragmentLength(), edm::Event::getByToken(), RecoTauValidation_cfi::header, triggerObjects_cff::id, edm::HandleBase::isValid(), FEDHeader::lvl1ID(), masks_, maxMasks_, newZsFlagMask_, amc13::Packet::parse(), amc13::Packet::payload(), jets_cff::payload, RBLKS, RBLKSFALSENEG, RBLKSFALSEPOS, RBXBLKS, RBXBLKSFALSENEG, RBXBLKSFALSEPOS, readoutSizeNoZSMap_, readoutSizeZSExpectedMap_, readoutSizeZSMap_, REVTS, FEDRawData::size(), slinkHeaderSize_, slinkTrailerSize_, FEDHeader::sourceID(), command_line::start, FEDHeader::triggerType(), FEDTrailer::ttsBits(), verbose_, FEDHeader::version(), zeroSuppValMap_, ZSBLKSBAD, ZSBLKSBADFALSENEG, ZSBLKSBADFALSEPOS, ZSBLKSGOOD, ZSBXBLKSBAD, ZSBXBLKSBADFALSENEG, ZSBXBLKSBADFALSEPOS, ZSBXBLKSGOOD, zsEnabled_, and zsFlagMask_.

146  {
147 
148  if (verbose_) edm::LogInfo("L1TDQM") << "L1TMP7ZeroSupp: analyze..." << std::endl;
149 
151  e.getByToken(fedDataToken_, feds);
152 
153  if (!feds.isValid()) {
154  edm::LogError("L1TDQM") << "Cannot analyse: no FEDRawDataCollection found";
155  return;
156  }
157 
160  for (const auto &id: definedMaskCapIds_) {
161  zeroSuppValMap_[id]->Fill(EVTS);
162  errorSummaryDenMap_[id]->Fill(REVTS);
163  }
164 
165  std::map<unsigned int, bool> evtGood;
166  evtGood[maxMasks_] = true;
167  for (const auto &id: definedMaskCapIds_) {
168  evtGood[id] = true;
169  }
170  unsigned valid_count = 0;
171  for (const auto& fedId: fedIds_) {
172  const FEDRawData& l1tRcd = feds->FEDData(fedId);
173 
174  unsigned int fedDataSize = l1tRcd.size();
175  std::map<unsigned int, unsigned int> readoutSizeNoZSMap;
176  std::map<unsigned int, unsigned int> readoutSizeZSMap;
177  std::map<unsigned int, unsigned int> readoutSizeZSExpectedMap;
178  readoutSizeNoZSMap[maxMasks_] = 0;
179  readoutSizeZSMap[maxMasks_] = 0;
180  readoutSizeZSExpectedMap[maxMasks_] = 0;
181  for (const auto &id: definedMaskCapIds_) {
182  readoutSizeNoZSMap[id] = 0;
183  readoutSizeZSMap[id] = 0;
184  readoutSizeZSExpectedMap[id] = 0;
185  }
186 
187  edm::LogInfo("L1TDQM") << "Found FEDRawDataCollection with ID " << fedId << " and size " << l1tRcd.size();
188 
190  if (l1tRcd.size() > 0) {
191  edm::LogError("L1TDQM") << "Cannot analyse: invalid L1T raw data (size = " << l1tRcd.size() << ") for ID " << fedId << ".";
192  }
193  continue;
194  } else {
195  valid_count++;
196  }
197 
198  const unsigned char *data = l1tRcd.data();
199  FEDHeader header(data);
200 
201  if (header.check()) {
202  edm::LogInfo("L1TDQM") << "Found SLink header:" << " Trigger type " << header.triggerType() << " L1 event ID " << header.lvl1ID() << " BX Number " << header.bxID() << " FED source " << header.sourceID() << " FED version " << header.version();
203  } else {
204  edm::LogWarning("L1TDQM") << "Did not find a SLink header!";
205  }
206 
207  FEDTrailer trailer(data + (l1tRcd.size() - slinkTrailerSize_));
208 
209  if (trailer.check()) {
210  edm::LogInfo("L1TDQM") << "Found SLink trailer:" << " Length " << trailer.fragmentLength() << " CRC " << trailer.crc() << " Status " << trailer.evtStatus() << " Throttling bits " << trailer.ttsBits();
211  } else {
212  edm::LogWarning("L1TDQM") << "Did not find a SLink trailer!";
213  }
214 
215  amc13::Packet packet;
216  if (!packet.parse(
217  (const uint64_t*) data,
218  (const uint64_t*) (data + slinkHeaderSize_),
219  (l1tRcd.size() - slinkHeaderSize_ - slinkTrailerSize_) / 8,
220  header.lvl1ID(),
221  header.bxID())) {
222  edm::LogError("L1TDQM") << "Could not extract AMC13 Packet.";
223  return;
224  }
225 
226  for (auto& amc: packet.payload()) {
227  if (amc.size() == 0)
228  continue;
229 
230  auto payload64 = amc.data();
231  auto start = (const uint32_t*) payload64.get();
232  // Want to have payload size in 32 bit words, but AMC measures
233  // it in 64 bit words -> factor 2.
234  const uint32_t * end = start + (amc.size() * 2);
235 
236  auto payload = std::make_unique<l1t::MP7Payload>(start, end, false);
237 
238  // getBlock() returns a non-null unique_ptr on success
239  std::unique_ptr<l1t::Block> block;
240  while ((block = payload->getBlock()) != nullptr) {
241  if (verbose_) {
242  std::cout << ">>> check zero suppression for block <<<" << std::endl
243  << "hdr: " << std::hex << std::setw(8) << std::setfill('0') << block->header().raw() << std::dec
244  << " (ID " << block->header().getID() << ", size " << block->header().getSize()
245  << ", CapID 0x" << std::hex << std::setw(2) << std::setfill('0') << block->header().getCapID()
246  << ", flags 0x" << std::hex << std::setw(2) << std::setfill('0') << block->header().getFlags()
247  << ")" << std::dec << std::endl;
248  for (const auto& word: block->payload()) {
249  std::cout << "data: " << std::hex << std::setw(8) << std::setfill('0') << word << std::dec << std::endl;
250  }
251  }
252 
253  unsigned int blockCapId = block->header().getCapID();
254  unsigned int blockSize = block->header().getSize() * 4; // times 4 to get the size in byte
255  unsigned int blockHeaderSize = sizeof(block->header().raw());
256  unsigned int blockHeaderFlags = block->header().getFlags();
257  bool newZsFlagSet = ((blockHeaderFlags & newZsFlagMask_) != 0); // use the per-BX ZS
258  bool blockZsFlagSet = newZsFlagSet ? true : ((blockHeaderFlags & zsFlagMask_) != 0); // ZS validation flag for whole block
259  bool dataInvertFlagSet = newZsFlagSet && ((blockHeaderFlags & dataInvFlagMask_) != 0); // invert the data before applying the mask
260 
261  capIds_->Fill(blockCapId);
262 
263  bool capIdDefined = false;
264  if (zeroSuppValMap_.find(blockCapId) != zeroSuppValMap_.end()) {
265  capIdDefined = true;
266  }
267 
268  // Only check blocks with a CapId that has a defined ZS mask.
269  if (checkOnlyCapIdsWithMasks_ and not capIdDefined) {
270  continue;
271  }
272 
273  // fill the denominator histograms
278  if (capIdDefined) {
279  zeroSuppValMap_[blockCapId]->Fill(BLOCKS);
280  errorSummaryDenMap_[blockCapId]->Fill(RBLKS);
281  errorSummaryDenMap_[blockCapId]->Fill(RBLKSFALSEPOS);
282  errorSummaryDenMap_[blockCapId]->Fill(RBLKSFALSENEG);
283  }
284 
285  auto totalBlockSize = blockHeaderSize;
286  if (!newZsFlagSet) {
287  totalBlockSize += blockSize;
288  }
289  auto totalBlockSizeExpected = totalBlockSize;
290  auto totalBlockSizeNoZS = blockHeaderSize + blockSize;
291 
292  auto bxBlocks = block->getBxBlocks(6, newZsFlagSet); // 6 32 bit MP7 payload words per BX
293 
294  // check all BX blocks
295  bool allToSuppress = true;
296  for (const auto& bxBlock: bxBlocks) {
297  bool toSuppress = false;
298  bool bxZsFlagSet = ((bxBlock.header().getFlags() & zsFlagMask_) != 0); // ZS validation flag
299 
300  // check if this bxblock should be suppressed
301  unsigned int wordcounter = 0;
302  unsigned int wordsum = 0;
303  for (const auto& word: bxBlock.payload()) {
304  if (dataInvertFlagSet) {
305  wordsum += masks_[blockCapId].at(wordcounter%6) & (~word);
306  } else {
307  wordsum += masks_[blockCapId].at(wordcounter%6) & word;
308  }
309  if (verbose_) {
310  std::cout << "word: " << std::hex << std::setw(8) << std::setfill('0') << word << std::dec
311  << ", maskword" << wordcounter%6 << ": " << std::hex << std::setw(8) << std::setfill('0')
312  << masks_[blockCapId].at(wordcounter%6) << std::dec << ", wordsum: " << wordsum << std::endl;
313  }
314  if (wordsum > 0) {
315  if (verbose_) {
316  std::cout << "wordsum not 0: this BX block should be kept" << std::endl;
317  }
318  break;
319  }
320  ++wordcounter;
321  }
322  // the sum of payload words must be 0 for correct ZS
323  if (wordsum == 0 && zsEnabled_) {
324  toSuppress = true;
325  if (verbose_) {
326  std::cout << "wordsum == 0: this BX block should be zero suppressed" << std::endl;
327  }
328  }
329  // update the overall block status
330  allToSuppress = allToSuppress && toSuppress;
331 
332  // only fill the BX related things for the per-BX ZS
333  if (newZsFlagSet) {
334  // the ZS flag of the block is the AND of all BX block ZS flags
335  blockZsFlagSet = blockZsFlagSet && bxZsFlagSet;
336 
337  // fill the BX related bins of the denominator histogram
342  if (capIdDefined) {
343  zeroSuppValMap_[blockCapId]->Fill(BXBLOCKS);
344  errorSummaryDenMap_[blockCapId]->Fill(RBXBLKS);
345  errorSummaryDenMap_[blockCapId]->Fill(RBXBLKSFALSEPOS);
346  errorSummaryDenMap_[blockCapId]->Fill(RBXBLKSFALSENEG);
347  }
348 
349  unsigned int totalBxBlockSize = bxBlock.getSize() * 4 + sizeof(bxBlock.header().raw()); // times 4 to get the size in byte
350  // check if zero suppression flag agrees for the BX block
351  if (toSuppress && bxZsFlagSet) {
352  if (verbose_) std::cout << "GOOD BX block with ZS flag true" << std::endl;
354  if (capIdDefined) {
355  zeroSuppValMap_[blockCapId]->Fill(ZSBXBLKSGOOD);
356  }
357  } else if (!toSuppress && !bxZsFlagSet) {
358  if (verbose_) std::cout << "GOOD BX block with ZS flag false" << std::endl;
359  totalBlockSize += totalBxBlockSize;
360  totalBlockSizeExpected += totalBxBlockSize;
362  if (capIdDefined) {
363  zeroSuppValMap_[blockCapId]->Fill(ZSBXBLKSGOOD);
364  }
365  } else if (!toSuppress && bxZsFlagSet) {
366  if (verbose_) std::cout << "BAD BX block with ZS flag true" << std::endl;
367  totalBlockSizeExpected += totalBxBlockSize;
372  evtGood[maxMasks_] = false;
373  if (capIdDefined) {
374  zeroSuppValMap_[blockCapId]->Fill(ZSBXBLKSBAD);
375  zeroSuppValMap_[blockCapId]->Fill(ZSBXBLKSBADFALSEPOS);
376  errorSummaryNumMap_[blockCapId]->Fill(RBXBLKS);
377  errorSummaryNumMap_[blockCapId]->Fill(RBXBLKSFALSEPOS);
378  evtGood[blockCapId] = false;
379  }
380  } else {
381  if (verbose_) std::cout << "BAD BX block with ZS flag false" << std::endl;
382  totalBlockSize += totalBxBlockSize;
387  evtGood[maxMasks_] = false;
388  if (capIdDefined) {
389  zeroSuppValMap_[blockCapId]->Fill(ZSBXBLKSBAD);
390  zeroSuppValMap_[blockCapId]->Fill(ZSBXBLKSBADFALSENEG);
391  errorSummaryNumMap_[blockCapId]->Fill(RBXBLKS);
392  errorSummaryNumMap_[blockCapId]->Fill(RBXBLKSFALSENEG);
393  evtGood[blockCapId] = false;
394  }
395  }
396  }
397  }
398 
399  readoutSizeNoZSMap[maxMasks_] += totalBlockSizeNoZS;
400  if (capIdDefined) {
401  readoutSizeNoZSMap[blockCapId] += totalBlockSizeNoZS;
402  }
403 
404  // check if zero suppression flag agrees for the whole block
405  if (allToSuppress && blockZsFlagSet) {
406  if (verbose_) std::cout << "GOOD block with ZS flag true" << std::endl;
408  if (capIdDefined) {
409  zeroSuppValMap_[blockCapId]->Fill(ZSBLKSGOOD);
410  }
411  } else if (!allToSuppress && !blockZsFlagSet) {
412  if (verbose_) std::cout << "GOOD block with ZS flag false" << std::endl;
414  readoutSizeZSMap[maxMasks_] += totalBlockSize;
415  readoutSizeZSExpectedMap[maxMasks_] += totalBlockSizeExpected;
416  if (capIdDefined) {
417  zeroSuppValMap_[blockCapId]->Fill(ZSBLKSGOOD);
418  readoutSizeZSMap[blockCapId] += totalBlockSize;
419  readoutSizeZSExpectedMap[blockCapId] += totalBlockSizeExpected;
420  }
421  } else if (!allToSuppress && blockZsFlagSet) {
422  if (verbose_) std::cout << "BAD block with ZS flag true" << std::endl;
427  readoutSizeZSExpectedMap[maxMasks_] += totalBlockSizeExpected;
428  evtGood[maxMasks_] = false;
429  if (capIdDefined) {
430  zeroSuppValMap_[blockCapId]->Fill(ZSBLKSBAD);
431  zeroSuppValMap_[blockCapId]->Fill(ZSBLKSBADFALSEPOS);
432  errorSummaryNumMap_[blockCapId]->Fill(RBLKS);
433  errorSummaryNumMap_[blockCapId]->Fill(RBLKSFALSEPOS);
434  readoutSizeZSExpectedMap[blockCapId] += totalBlockSizeExpected;
435  evtGood[blockCapId] = false;
436  }
437  } else {
438  if (verbose_) std::cout << "BAD block with ZS flag false" << std::endl;
443  readoutSizeZSMap[maxMasks_] += totalBlockSize;
444  evtGood[maxMasks_] = false;
445  if (capIdDefined) {
446  zeroSuppValMap_[blockCapId]->Fill(ZSBLKSBAD);
447  zeroSuppValMap_[blockCapId]->Fill(ZSBLKSBADFALSENEG);
448  errorSummaryNumMap_[blockCapId]->Fill(RBLKS);
449  errorSummaryNumMap_[blockCapId]->Fill(RBLKSFALSENEG);
450  readoutSizeZSMap[blockCapId] += totalBlockSize;
451  evtGood[blockCapId] = false;
452  }
453  }
454  }
455  }
456  if (verbose_) {
457  std::cout << "FED data size: " << fedDataSize << " bytes" << std::endl;
458  std::cout << "Payload size no ZS: " << readoutSizeNoZSMap[maxMasks_] << " bytes" << std::endl;
459  std::cout << "Payload size ZS: " << readoutSizeZSMap[maxMasks_] << " bytes" << std::endl;
460  std::cout << "Payload size expected ZS: " << readoutSizeZSExpectedMap[maxMasks_] << " bytes" << std::endl;
461  std::cout << "Filled readout size ZS with headers: " << readoutSizeZSMap[maxMasks_] + fedDataSize - readoutSizeNoZSMap[maxMasks_] << " bytes" << std::endl;
462  std::cout << "Filled expected readout size ZS with headers: " << readoutSizeZSExpectedMap[maxMasks_] + fedDataSize - readoutSizeNoZSMap[maxMasks_] << " bytes" << std::endl;
463  }
464  readoutSizeNoZSMap_[maxMasks_]->Fill(fedDataSize);
465  readoutSizeZSMap_[maxMasks_]->Fill(readoutSizeZSMap[maxMasks_] + fedDataSize - readoutSizeNoZSMap[maxMasks_]);
466  readoutSizeZSExpectedMap_[maxMasks_]->Fill(readoutSizeZSExpectedMap[maxMasks_] + fedDataSize - readoutSizeNoZSMap[maxMasks_]);
467  for (const auto &id: definedMaskCapIds_) {
468  readoutSizeNoZSMap_[id]->Fill(readoutSizeNoZSMap[id]);
469  readoutSizeZSMap_[id]->Fill(readoutSizeZSMap[id]);
470  readoutSizeZSExpectedMap_[id]->Fill(readoutSizeZSExpectedMap[id]);
471  }
472  }
473 
474  if (evtGood[maxMasks_]) {
476  } else {
479  }
480  for (const auto &id: definedMaskCapIds_) {
481  if (evtGood[id]) {
482  zeroSuppValMap_[id]->Fill(EVTSGOOD);
483  } else {
484  zeroSuppValMap_[id]->Fill(EVTSBAD);
485  errorSummaryNumMap_[id]->Fill(REVTS);
486  }
487  }
488 }
Definition: start.py:1
std::vector< amc::Packet > payload() const
Definition: AMC13Spec.h:80
std::map< unsigned int, MonitorElement * > readoutSizeZSExpectedMap_
std::map< unsigned int, MonitorElement * > zeroSuppValMap_
edm::EDGetTokenT< FEDRawDataCollection > fedDataToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
std::map< unsigned int, MonitorElement * > readoutSizeNoZSMap_
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
void Fill(long long x)
std::map< unsigned int, MonitorElement * > errorSummaryNumMap_
std::vector< unsigned int > definedMaskCapIds_
MonitorElement * capIds_
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
std::map< unsigned int, MonitorElement * > errorSummaryDenMap_
std::vector< std::vector< int > > masks_
#define end
Definition: vmac.h:39
static const unsigned int maxMasks_
bool isValid() const
Definition: HandleBase.h:74
unsigned long long uint64_t
Definition: Time.h:15
bool parse(const uint64_t *start, const uint64_t *data, unsigned int size, unsigned int lv1, unsigned int bx, bool legacy_mc=false, bool mtf7_mode=false)
Definition: AMC13Spec.cc:70
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
std::vector< int > fedIds_
Definition: AMCSpec.h:8
std::map< unsigned int, MonitorElement * > readoutSizeZSMap_
bool checkOnlyCapIdsWithMasks_
void L1TMP7ZeroSupp::beginLuminosityBlock ( const edm::LuminosityBlock ,
const edm::EventSetup  
)
overrideprotected

Definition at line 74 of file L1TMP7ZeroSupp.cc.

74 {}
void L1TMP7ZeroSupp::bookCapIdHistograms ( DQMStore::IBooker ibooker,
const unsigned int &  id 
)
private

Definition at line 90 of file L1TMP7ZeroSupp.cc.

References BLOCKS, DQMStore::IBooker::book1D(), BXBLOCKS, errorSummaryDenMap_, errorSummaryNumMap_, EVTS, EVTSBAD, EVTSGOOD, triggerObjects_cff::id, maxFedReadoutSize_, maxMasks_, NBINLABELS, RBLKS, RBLKSFALSENEG, RBLKSFALSEPOS, RBXBLKS, RBXBLKSFALSENEG, RBXBLKSFALSEPOS, readoutSizeNoZSMap_, readoutSizeZSExpectedMap_, readoutSizeZSMap_, REVTS, RNBINLABELS, AlCaHLTBitMon_QueryRunRegistry::string, zeroSuppValMap_, ZSBLKSBAD, ZSBLKSBADFALSENEG, ZSBLKSBADFALSEPOS, ZSBLKSGOOD, ZSBXBLKSBAD, ZSBXBLKSBADFALSENEG, ZSBXBLKSBADFALSEPOS, and ZSBXBLKSGOOD.

Referenced by bookHistograms().

90  {
91  std::string summaryTitleText = "Zero suppression validation summary";
92  std::string sizeTitleText;
93  if (id == maxMasks_) {
94  sizeTitleText = "FED readout ";
95  } else {
96  summaryTitleText = summaryTitleText+", caption id "+std::to_string(id);
97  sizeTitleText = "cumulated caption id "+std::to_string(id)+" block ";
98  }
99 
100  zeroSuppValMap_[id] = ibooker.book1D("zeroSuppVal", summaryTitleText, NBINLABELS, 0, NBINLABELS);
101  zeroSuppValMap_[id]->setAxisTitle("ZS status", 1);
102  zeroSuppValMap_[id]->setBinLabel(EVTS+1, "events", 1);
103  zeroSuppValMap_[id]->setBinLabel(EVTSGOOD+1, "good events", 1);
104  zeroSuppValMap_[id]->setBinLabel(EVTSBAD+1, "bad events", 1);
105  zeroSuppValMap_[id]->setBinLabel(BLOCKS+1, "blocks", 1);
106  zeroSuppValMap_[id]->setBinLabel(ZSBLKSGOOD+1, "good blocks", 1);
107  zeroSuppValMap_[id]->setBinLabel(ZSBLKSBAD+1, "bad blocks", 1);
108  zeroSuppValMap_[id]->setBinLabel(ZSBLKSBADFALSEPOS+1, "false pos.", 1);
109  zeroSuppValMap_[id]->setBinLabel(ZSBLKSBADFALSENEG+1, "false neg.", 1);
110  zeroSuppValMap_[id]->setBinLabel(BXBLOCKS+1, "BX blocks", 1);
111  zeroSuppValMap_[id]->setBinLabel(ZSBXBLKSGOOD+1, "good BX blocks", 1);
112  zeroSuppValMap_[id]->setBinLabel(ZSBXBLKSBAD+1, "bad BX blocks", 1);
113  zeroSuppValMap_[id]->setBinLabel(ZSBXBLKSBADFALSEPOS+1, "BX false pos.", 1);
114  zeroSuppValMap_[id]->setBinLabel(ZSBXBLKSBADFALSENEG+1, "BX false neg.", 1);
115 
116  errorSummaryNumMap_[id] = ibooker.book1D("errorSummaryNum", summaryTitleText, RNBINLABELS, 0, RNBINLABELS);
117  errorSummaryNumMap_[id]->setBinLabel(REVTS+1, "bad events", 1);
118  errorSummaryNumMap_[id]->setBinLabel(RBLKS+1, "bad blocks", 1);
119  errorSummaryNumMap_[id]->setBinLabel(RBLKSFALSEPOS+1, "false pos.", 1);
120  errorSummaryNumMap_[id]->setBinLabel(RBLKSFALSENEG+1, "false neg.", 1);
121  errorSummaryNumMap_[id]->setBinLabel(RBXBLKS+1, "bad BX blocks", 1);
122  errorSummaryNumMap_[id]->setBinLabel(RBXBLKSFALSEPOS+1, "BX false pos.", 1);
123  errorSummaryNumMap_[id]->setBinLabel(RBXBLKSFALSENEG+1, "BX false neg.", 1);
124 
125  errorSummaryDenMap_[id] = ibooker.book1D("errorSummaryDen", "denominators", RNBINLABELS, 0, RNBINLABELS);
126  errorSummaryDenMap_[id]->setBinLabel(REVTS+1, "# events", 1);
127  errorSummaryDenMap_[id]->setBinLabel(RBLKS+1, "# blocks", 1);
128  errorSummaryDenMap_[id]->setBinLabel(RBLKSFALSEPOS+1, "# blocks", 1);
129  errorSummaryDenMap_[id]->setBinLabel(RBLKSFALSENEG+1, "# blocks", 1);
130  errorSummaryDenMap_[id]->setBinLabel(RBXBLKS+1, "# BX blocks", 1);
131  errorSummaryDenMap_[id]->setBinLabel(RBXBLKSFALSEPOS+1, "# BX blocks", 1);
132  errorSummaryDenMap_[id]->setBinLabel(RBXBLKSFALSENEG+1, "# BX blocks", 1);
133  // Setting canExtend to false is needed to get the correct behaviour when running multithreaded.
134  // Otherwise, when merging the histgrams of the threads, TH1::Merge sums bins that have the same label in one bin.
135  // This needs to come after the calls to setBinLabel.
136  errorSummaryDenMap_[id]->getTH1F()->GetXaxis()->SetCanExtend(false);
137 
138  readoutSizeNoZSMap_[id] = ibooker.book1D("readoutSize", sizeTitleText + "size", 100, 0, maxFedReadoutSize_);
139  readoutSizeNoZSMap_[id]->setAxisTitle("size (byte)", 1);
140  readoutSizeZSMap_[id] = ibooker.book1D("readoutSizeZS", sizeTitleText + "size with zero suppression", 100, 0, maxFedReadoutSize_);
141  readoutSizeZSMap_[id]->setAxisTitle("size (byte)", 1);
142  readoutSizeZSExpectedMap_[id] = ibooker.book1D("readoutSizeZSExpected", "Expected " + sizeTitleText + "size with zero suppression", 100, 0, maxFedReadoutSize_);
143  readoutSizeZSExpectedMap_[id]->setAxisTitle("size (byte)", 1);
144 }
std::map< unsigned int, MonitorElement * > readoutSizeZSExpectedMap_
std::map< unsigned int, MonitorElement * > zeroSuppValMap_
std::map< unsigned int, MonitorElement * > readoutSizeNoZSMap_
std::map< unsigned int, MonitorElement * > errorSummaryNumMap_
std::map< unsigned int, MonitorElement * > errorSummaryDenMap_
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
static const unsigned int maxMasks_
std::map< unsigned int, MonitorElement * > readoutSizeZSMap_
void L1TMP7ZeroSupp::bookHistograms ( DQMStore::IBooker ibooker,
const edm::Run ,
const edm::EventSetup  
)
overrideprotected

Definition at line 76 of file L1TMP7ZeroSupp.cc.

References DQMStore::IBooker::book1D(), bookCapIdHistograms(), capIds_, definedMaskCapIds_, maxMasks_, monitorDir_, MonitorElement::setAxisTitle(), and DQMStore::IBooker::setCurrentFolder().

76  {
77  // overall summary
80  capIds_ = ibooker.book1D("capIds", "Caption ids found in data", maxMasks_, 0, maxMasks_);
81  capIds_->setAxisTitle("caption id", 1);
82 
83  // per caption id subdirectories
84  for (const auto &id: definedMaskCapIds_) {
85  ibooker.setCurrentFolder(monitorDir_+"/CapId"+std::to_string(id));
86  bookCapIdHistograms(ibooker, id);
87  }
88 }
std::string monitorDir_
void bookCapIdHistograms(DQMStore::IBooker &ibooker, const unsigned int &id)
std::vector< unsigned int > definedMaskCapIds_
MonitorElement * capIds_
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
static const unsigned int maxMasks_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void L1TMP7ZeroSupp::dqmBeginRun ( const edm::Run r,
const edm::EventSetup c 
)
overrideprotected

Definition at line 72 of file L1TMP7ZeroSupp.cc.

72 {}
void L1TMP7ZeroSupp::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 48 of file L1TMP7ZeroSupp.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addOptionalUntracked(), edm::ParameterSetDescription::addUntracked(), mps_fire::i, maxMasks_, and AlCaHLTBitMon_QueryRunRegistry::string.

48  {
50  desc.add<edm::InputTag>("rawData");
51  desc.add<std::vector<int>>("fedIds")->setComment("FED ids to analyze.");
52  desc.addUntracked<bool>("zsEnabled", true)->setComment("MP7 zero suppression is enabled.");
53  desc.addUntracked<int>("lenSlinkHeader", 8)->setComment("Number of Slink header bytes.");
54  desc.addUntracked<int>("lenSlinkTrailer", 8)->setComment("Number of Slink trailer bytes.");
55  desc.addUntracked<int>("lenAMC13Header", 8)->setComment("Number of AMC13 header bytes.");
56  desc.addUntracked<int>("lenAMC13Trailer", 8)->setComment("Number of AMC13 trailer bytes.");
57  desc.addUntracked<int>("lenAMCHeader", 8)->setComment("Number of AMC header bytes.");
58  desc.addUntracked<int>("lenAMCTrailer", 0)->setComment("Number of AMC trailer bytes.");
59  desc.addUntracked<int>("zsFlagMask", 0x1)->setComment("Zero suppression flag mask.");
60  desc.addUntracked<int>("newZsFlagMask", 0x2)->setComment("Per-BX zero suppression flag mask.");
61  desc.addUntracked<int>("dataInvFlagMask", 0x1)->setComment("Data inversion flag mask.");
62  desc.addUntracked<int>("maxFEDReadoutSize", 10000)->setComment("Maximal FED readout size histogram x-axis value.");
63  for (unsigned int i = 0; i < maxMasks_; ++i) {
64  desc.addOptionalUntracked<std::vector<int>>("maskCapId"+std::to_string(i))->setComment("ZS mask for caption id "+std::to_string(i)+".");
65  }
66  desc.addUntracked<bool>("checkOnlyCapIdsWithMasks", true)->setComment("Check only blocks that have a CapId for which a mask is defined.");
67  desc.addUntracked<std::string>("monitorDir", "")->setComment("Target directory in the DQM file. Will be created if not existing.");
68  desc.addUntracked<bool>("verbose", false);
69  descriptions.add("l1tMP7ZeroSupp", desc);
70 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
static const unsigned int maxMasks_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
ParameterDescriptionBase * addOptionalUntracked(U const &iLabel, T const &value)

Member Data Documentation

int L1TMP7ZeroSupp::amc13HeaderSize_
private

Definition at line 53 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

int L1TMP7ZeroSupp::amc13TrailerSize_
private

Definition at line 54 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

int L1TMP7ZeroSupp::amcHeaderSize_
private

Definition at line 55 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

int L1TMP7ZeroSupp::amcTrailerSize_
private

Definition at line 56 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

MonitorElement* L1TMP7ZeroSupp::capIds_
private

Definition at line 78 of file L1TMP7ZeroSupp.h.

Referenced by analyze(), and bookHistograms().

bool L1TMP7ZeroSupp::checkOnlyCapIdsWithMasks_
private

Definition at line 63 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

int L1TMP7ZeroSupp::dataInvFlagMask_
private

Definition at line 59 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

std::vector<unsigned int> L1TMP7ZeroSupp::definedMaskCapIds_
private

Definition at line 70 of file L1TMP7ZeroSupp.h.

Referenced by analyze(), bookHistograms(), and L1TMP7ZeroSupp().

std::map<unsigned int, MonitorElement*> L1TMP7ZeroSupp::errorSummaryDenMap_
private

Definition at line 74 of file L1TMP7ZeroSupp.h.

Referenced by analyze(), and bookCapIdHistograms().

std::map<unsigned int, MonitorElement*> L1TMP7ZeroSupp::errorSummaryNumMap_
private

Definition at line 73 of file L1TMP7ZeroSupp.h.

Referenced by analyze(), and bookCapIdHistograms().

edm::EDGetTokenT<FEDRawDataCollection> L1TMP7ZeroSupp::fedDataToken_
private

Definition at line 45 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

std::vector<int> L1TMP7ZeroSupp::fedIds_
private

Definition at line 47 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

std::vector<std::vector<int> > L1TMP7ZeroSupp::masks_
private

Definition at line 48 of file L1TMP7ZeroSupp.h.

Referenced by analyze(), and L1TMP7ZeroSupp().

int L1TMP7ZeroSupp::maxFedReadoutSize_
private

Definition at line 61 of file L1TMP7ZeroSupp.h.

Referenced by bookCapIdHistograms().

const unsigned int L1TMP7ZeroSupp::maxMasks_ = 16
staticprivate
std::string L1TMP7ZeroSupp::monitorDir_
private

Definition at line 65 of file L1TMP7ZeroSupp.h.

Referenced by bookHistograms().

int L1TMP7ZeroSupp::newZsFlagMask_
private

Definition at line 57 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

std::map<unsigned int, MonitorElement*> L1TMP7ZeroSupp::readoutSizeNoZSMap_
private

Definition at line 75 of file L1TMP7ZeroSupp.h.

Referenced by analyze(), and bookCapIdHistograms().

std::map<unsigned int, MonitorElement*> L1TMP7ZeroSupp::readoutSizeZSExpectedMap_
private

Definition at line 77 of file L1TMP7ZeroSupp.h.

Referenced by analyze(), and bookCapIdHistograms().

std::map<unsigned int, MonitorElement*> L1TMP7ZeroSupp::readoutSizeZSMap_
private

Definition at line 76 of file L1TMP7ZeroSupp.h.

Referenced by analyze(), and bookCapIdHistograms().

int L1TMP7ZeroSupp::slinkHeaderSize_
private

Definition at line 51 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

int L1TMP7ZeroSupp::slinkTrailerSize_
private

Definition at line 52 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

bool L1TMP7ZeroSupp::verbose_
private

Definition at line 66 of file L1TMP7ZeroSupp.h.

Referenced by analyze(), and L1TMP7ZeroSupp().

std::map<unsigned int, MonitorElement*> L1TMP7ZeroSupp::zeroSuppValMap_
private

Definition at line 72 of file L1TMP7ZeroSupp.h.

Referenced by analyze(), and bookCapIdHistograms().

bool L1TMP7ZeroSupp::zsEnabled_
private

Definition at line 46 of file L1TMP7ZeroSupp.h.

Referenced by analyze().

int L1TMP7ZeroSupp::zsFlagMask_
private

Definition at line 58 of file L1TMP7ZeroSupp.h.

Referenced by analyze().