CMS 3D CMS Logo

SiStripSpyDisplayModule.cc
Go to the documentation of this file.
1 /* \file SiStripSpyDisplayModule.cc
2  * \brief File containing code for the SiStripMonitorFEDProcessing plugin module.
3  */
4 // -*- C++ -*-
5 //
6 // Package: SiStripMonitorHardware
7 // Class: SiStripSpyDisplayModule
8 //
9 // Standard
10 #include <memory>
11 #include <vector>
12 #include <iostream>
13 #include <string>
14 #include <sstream>
15 
16 // Framework include files
24 
25 // Needed for the SST cabling
29 
30 // Needed for the pedestal values
33 
34 // Needed for the noise values
37 
38 // For translating between FED key and det ID
40 
47 
48 // Needed for the FED raw data processing
51 
52 // #include "EventFilter/SiStripRawToDigi/interface/SiStripDigiToRaw.h"
53 
54 //for cabling
56 
57 // For plotting
60 #include "TH1S.h"
61 #include "TH1D.h"
62 
63 //
64 // constants, enums and typedefs
65 //
79 };
80 
81 //
82 // class declaration
83 //
84 
96 class SiStripSpyDisplayModule : public edm::one::EDAnalyzer<edm::one::SharedResources> {
97 public:
99  ~SiStripSpyDisplayModule() override;
100 
101 private:
102  void beginJob() override;
103  void analyze(const edm::Event&, const edm::EventSetup&) override;
104  void endJob() override;
105 
107  uint32_t specifier,
108  const TFileDirectory& dir,
110 
112  uint32_t specifier,
113  const TFileDirectory& dir,
115 
116  Bool_t MakeDigiHist_(const edm::Handle<edm::DetSetVector<SiStripDigi> >& digi_handle,
117  uint32_t detID,
118  const TFileDirectory& dir,
120 
121  // ----------member data ---------------------------
122  std::vector<uint32_t> detIDs_;
123  //now from utility class
124  // edm::ESHandle<SiStripDetCabling> cabling_; //!< The Strip Tracker cabling object.
128  void updateDetCabling(const SiStripDetCablingRcd& rcd);
129 
130  // Data input labels
131  //===================
145 
168  //
169  // Output information
170  //====================
172 
173 }; // end of SiStripSpyDisplayModule class
174 
175 //
176 // static data member definitions
177 //
178 
179 using namespace sistrip;
180 using namespace std;
181 
182 //
183 // constructors and destructor
184 //
186  : detIDs_(iConfig.getParameter<std::vector<uint32_t> >("detIDs")),
187  detCablingToken_(esConsumes<>()),
188  cablingWatcher_(this, &SiStripSpyDisplayModule::updateDetCabling),
189  inputScopeModeRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputScopeModeRawDigiLabel")),
190  inputPayloadRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputPayloadRawDigiLabel")),
191  inputReorderedPayloadRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputReorderedPayloadRawDigiLabel")),
192  inputReorderedModuleRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputReorderedModuleRawDigiLabel")),
193  inputPedestalsLabel_(iConfig.getParameter<edm::InputTag>("InputPedestalsLabel")),
194  inputNoisesLabel_(iConfig.getParameter<edm::InputTag>("InputNoisesLabel")),
195  inputPostPedestalRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputPostPedestalRawDigiLabel")),
196  inputPostCMRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputPostCMRawDigiLabel")),
197  inputZeroSuppressedRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputZeroSuppressedRawDigiLabel")),
198  inputZeroSuppressedDigiLabel_(iConfig.getParameter<edm::InputTag>("InputZeroSuppressedDigiLabel")),
199  inputCompVirginRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputCompVirginRawDigiLabel")),
200  inputCompZeroSuppressedDigiLabel_(iConfig.getParameter<edm::InputTag>("InputCompZeroSuppressedDigiLabel")),
201  outputFolderName_(iConfig.getParameter<std::string>("OutputFolderName")) {
202  //now do what ever initialization is needed
203  inputScopeModeRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputScopeModeRawDigiLabel_);
204  inputPayloadRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputPayloadRawDigiLabel_);
205  inputReorderedPayloadRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputReorderedPayloadRawDigiLabel_);
206  inputReorderedModuleRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputReorderedModuleRawDigiLabel_);
207  inputPedestalsToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputPedestalsLabel_);
208  inputNoisesToken_ = consumes<edm::DetSetVector<SiStripProcessedRawDigi> >(inputNoisesLabel_);
209  inputPostPedestalRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputPostPedestalRawDigiLabel_);
210  inputPostCMRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputPostCMRawDigiLabel_);
211  inputZeroSuppressedRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputZeroSuppressedRawDigiLabel_);
212  inputZeroSuppressedDigiToken_ = consumes<edm::DetSetVector<SiStripDigi> >(inputZeroSuppressedDigiLabel_);
213  inputCompVirginRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputCompVirginRawDigiLabel_);
214  inputCompZeroSuppressedDigiToken_ = consumes<edm::DetSetVector<SiStripDigi> >(inputCompZeroSuppressedDigiLabel_);
215 
216  usesResource(TFileService::kSharedResource);
217 }
218 
220  // do anything here that needs to be done at desctruction time
221  // (e.g. close files, deallocate resources etc.)
222 }
223 
224 //
225 // member functions
226 //
227 //
228 
231 }
232 
233 // ------------ method called once each job just before starting event loop ------------
235  // register to the TFileService
237  // Check that the TFileService has been configured
238  if (!fs.isAvailable()) {
239  throw cms::Exception("Configuration") << "TFileService not available: did you configure it ?";
240  }
241 } // end of beginJob method.
242 
243 // ------------ method called once each job just after ending the event loop ------------
245 
246 // ------------ method called to for each event ------------
248  using namespace edm;
249  using namespace std;
250 
251  cablingWatcher_.check(iSetup);
252 
253  // Set up the event-level histogram folder
254  //-----------------------------------------
255  // register to the TFileService
257 
258  // Make the EDAnalyzer instance name directory
259  TFileDirectory an_dir = fs->mkdir(outputFolderName_);
260 
261  // Make the event directory filename
262  stringstream ev_dir_name;
263  ev_dir_name << "run" << iEvent.id().run() << "_event" << iEvent.id().event();
264  TFileDirectory evdir = an_dir.mkdir(ev_dir_name.str());
265 
266  //if there are no detIds, get them from the comparison digis...
267  if (detIDs_.empty()) {
268  //get the detIds of the modules in the zero-suppressed comparison
269  if (!((inputCompZeroSuppressedDigiLabel_.label().empty()) &&
272  // iEvent.getByLabel( inputCompZeroSuppressedDigiLabel_, czs_digis );
273  iEvent.getByToken(inputCompZeroSuppressedDigiToken_, czs_digis);
274  std::vector<edm::DetSet<SiStripDigi> >::const_iterator digis_it = czs_digis->begin();
275  for (; digis_it != czs_digis->end(); ++digis_it) {
276  detIDs_.push_back(digis_it->detId());
277  }
278  } else if (!((inputCompVirginRawDigiLabel_.label().empty()) && (inputCompVirginRawDigiLabel_.instance().empty()))) {
280  // iEvent.getByLabel( inputCompVirginRawDigiLabel_, cvr_digis );
281  iEvent.getByToken(inputCompVirginRawDigiToken_, cvr_digis);
282  std::vector<edm::DetSet<SiStripRawDigi> >::const_iterator digis_it = cvr_digis->begin();
283  for (; digis_it != cvr_digis->end(); ++digis_it) {
284  detIDs_.push_back(digis_it->detId());
285  }
286  }
287  }
288 
289  // Loop over detIDs as obtained from the SpyChannelMonitor config file.
290  for (std::vector<uint32_t>::iterator d = detIDs_.begin(); d != detIDs_.end(); ++d) {
291  // TODO: Need some error checking here, probably...
292  const std::vector<const FedChannelConnection*>& conns = detCabling_->getConnections(*d);
293  //cout << "________________________________________________" << endl;
294  //cout << "FED channels found in detId " << *d << " is " << conns.size() << endl;
295  if (!(conns.size())) {
296  // TODO: Properly DEBUG/warning this...
297  //cout << "Skipping detID " << uint32_t(*d) << endl;
298  continue;
299  }
300 
301  // Create a histogram directory for each specified and available detID
302  stringstream sss;
303  sss << "detID_" << *d;
304  TFileDirectory detID_dir = evdir.mkdir(sss.str());
305 
306  // Loop over the channels found with the detID and add directories.
307  for (uint32_t ch = 0; ch < conns.size(); ch++) {
308  if (conns[ch] && conns[ch]->isConnected()) {
309  // Name of channel histogram directory
310  stringstream ssss;
311  ssss << sss.str() << "_APVpair_" << ch;
312  TFileDirectory chan_dir = detID_dir.mkdir(ssss.str());
313 
314  // Get the fed key from the detID and the channel
315  uint32_t fedkey = SiStripFedKey::fedIndex(conns[ch]->fedId(), conns[ch]->fedCh());
316 
317  // (Spy) Scope Mode (SM)
318  //=======================
319  // Get the fed key from the FED ID and the FED channel (from conns)
320  // This is because scope mode always stores in the collection by FED ID
321  if (!((inputScopeModeRawDigiLabel_.label().empty()) && (inputScopeModeRawDigiLabel_.instance().empty()))) {
322  // Use the SiStripFedKey object to return the FED key
323  //cout << "detID=" << *d << ", FED key looking for is " << fedkey << endl;
324  //cout << "Attempting to find scope mode raw digis" << endl;
325  //
327  // iEvent.getByLabel( inputScopeModeRawDigiLabel_, sm_rawdigis );
328  iEvent.getByToken(inputScopeModeRawDigiToken_, sm_rawdigis);
329  //
330  // Note that the fed key (also a uint32_t) is passed in this case.
331  // The method itself doesn't actually care, but it assumes whatever collection
332  // is stored in sm_rawdigis is indexed by FED key ;-)
333  // TODO: Make this, um, better.
334  if (!(MakeRawDigiHist_(sm_rawdigis, fedkey, chan_dir, SCOPE_MODE))) {
335  ;
336  }
337  }
338 
339  // Payload Unordered Raw (UR)
340  //============================
341  if (!((inputPayloadRawDigiLabel_.label().empty()) && (inputPayloadRawDigiLabel_.instance().empty()))) {
342  uint32_t fedindex = SiStripFedKey::fedIndex(conns[ch]->fedId(), conns[ch]->fedCh());
343  //cout << "Attempting to find payload mode raw digis" << endl;
345  // iEvent.getByLabel( inputPayloadRawDigiLabel_, ur_rawdigis );
346  iEvent.getByToken(inputPayloadRawDigiToken_, ur_rawdigis);
347  if (!(MakeRawDigiHist_(ur_rawdigis, fedindex, chan_dir, PAYLOAD_RAW))) {
348  ;
349  }
350  }
351  // Payload Reordered Raw
352  //=======================
353  if (!((inputReorderedPayloadRawDigiLabel_.label().empty()) &&
355  uint32_t fedkey = SiStripFedKey::fedIndex(conns[ch]->fedId(), conns[ch]->fedCh());
357  // iEvent.getByLabel( inputReorderedPayloadRawDigiLabel_, rrp_rawdigis );
358  iEvent.getByToken(inputReorderedPayloadRawDigiToken_, rrp_rawdigis);
359  if (!(MakeRawDigiHist_(rrp_rawdigis, fedkey, chan_dir, REORDERED_PAYLOAD_RAW))) {
360  ;
361  }
362  }
363  }
364  } // end of loop over channels
365  //
366  // Module Reordered Raw (RR)
367  //====================
368  if (!((inputReorderedModuleRawDigiLabel_.label().empty()) &&
371  // iEvent.getByLabel( inputReorderedModuleRawDigiLabel_, rr_rawdigis );
372  iEvent.getByToken(inputReorderedModuleRawDigiToken_, rr_rawdigis);
373  //cout << "Making Reordered module histogram for detID " << *d << endl;
374  if (!(MakeRawDigiHist_(rr_rawdigis, *d, detID_dir, REORDERED_MODULE_RAW))) {
375  ;
376  }
377  } // end of ReorderedModuleRaw check
378 
379  //
380  // Pedestal values
381  //========================
382  if (!((inputPedestalsLabel_.label().empty()) && (inputPedestalsLabel_.instance().empty()))) {
384  // iEvent.getByLabel( inputPedestalsLabel_, pd_rawdigis );
385  iEvent.getByToken(inputPedestalsToken_, pd_rawdigis);
386  //cout << "Making pedestal values module histogram for detID " << *d << endl;
387  if (!(MakeRawDigiHist_(pd_rawdigis, *d, detID_dir, PEDESTAL_VALUES))) {
388  ;
389  }
390  }
391  //
392  // Noise values
393  //========================
394  if (!((inputNoisesLabel_.label().empty()) && (inputNoisesLabel_.instance().empty()))) {
396  // iEvent.getByLabel( inputNoisesLabel_, pd_rawdigis );
397  iEvent.getByToken(inputNoisesToken_, pd_rawdigis);
398  //cout << "Making noise values module histogram for detID " << *d << endl;
399  if (!(MakeProcessedRawDigiHist_(pd_rawdigis, *d, detID_dir, NOISE_VALUES))) {
400  ;
401  }
402  }
403  //
404  // Post-Pedestal Raw (PP)
405  //========================
408  // iEvent.getByLabel( inputPostPedestalRawDigiLabel_, pp_rawdigis );
409  iEvent.getByToken(inputPostPedestalRawDigiToken_, pp_rawdigis);
410  //cout << "Making post-pedestal module histogram for detID " << *d << endl;
411  if (!(MakeRawDigiHist_(pp_rawdigis, *d, detID_dir, POST_PEDESTAL))) {
412  ;
413  }
414  }
415  //
416  // Post-Common Mode Subtraction Raw (PC)
417  //=======================================
418  if (!((inputPostCMRawDigiLabel_.label().empty()) && (inputPostCMRawDigiLabel_.instance().empty()))) {
420  // iEvent.getByLabel( inputPostCMRawDigiLabel_, pc_rawdigis );
421  iEvent.getByToken(inputPostCMRawDigiToken_, pc_rawdigis);
422  //cout << "Making post-CM module histogram for detID " << *d << endl;
423  if (!(MakeRawDigiHist_(pc_rawdigis, *d, detID_dir, POST_COMMON_MODE))) {
424  ;
425  }
426  }
427 
428  //
429  // Zero-Suppressed Digis
430  //=======================
431  //bool founddigispy = false, founddigimain = false;
433  //cout << "Making ZeroSuppressed histogram!" << endl;
435  // iEvent.getByLabel( inputZeroSuppressedDigiLabel_, zs_digis );
436  iEvent.getByToken(inputZeroSuppressedDigiToken_, zs_digis);
437  //founddigispy =
438  MakeDigiHist_(zs_digis, *d, detID_dir, ZERO_SUPPRESSED);
439  }
440  //comparison to mainline data
441  if (!((inputCompVirginRawDigiLabel_.label().empty()) && (inputCompVirginRawDigiLabel_.instance().empty()))) {
442  //cout << "Making Mainline VirginRaw histogram!" << endl;
444  // iEvent.getByLabel( inputCompVirginRawDigiLabel_, cvr_digis );
445  iEvent.getByToken(inputCompVirginRawDigiToken_, cvr_digis);
446  //founddigimain =
447  MakeRawDigiHist_(cvr_digis, *d, detID_dir, VR_COMP);
448  }
449  if (!((inputCompZeroSuppressedDigiLabel_.label().empty()) &&
451  //cout << "Making ZeroSuppressed histogram!" << endl;
453  // iEvent.getByLabel( inputCompZeroSuppressedDigiLabel_, czs_digis );
454  iEvent.getByToken(inputCompZeroSuppressedDigiToken_, czs_digis);
455  //founddigimain =
456  MakeDigiHist_(czs_digis, *d, detID_dir, ZERO_SUPPRESSED_COMP);
457  }
458  //if (founddigimain && founddigispy) cout << "Found digis for both in detid=" << *d << endl;
459 
460  } // end of loop over detIDs specified in the config.
461 
462 } // end of Analyze method.
463 
465  uint32_t specifier,
466  const TFileDirectory& dir,
468 //const std::string & name)
469 {
470  // TODO: Remove the hard-coded numbers(!).
471  TH1S* hist;
472  if (type == SCOPE_MODE)
473  hist = dir.make<TH1S>("ScopeMode", ";Sample number;ADC counts / strip", 298, 0, 298);
474  else if (type == PAYLOAD_RAW)
475  hist = dir.make<TH1S>("PayloadRaw", ";Sample number;ADC counts / strip", 256, 0, 256);
476  else if (type == REORDERED_PAYLOAD_RAW)
477  hist = dir.make<TH1S>("ReorderedPayloadRaw", ";Sample number;ADC counts / strip", 256, 0, 256);
478  else if (type == REORDERED_MODULE_RAW)
479  hist = dir.make<TH1S>("ReorderedModuleRaw", ";Sample number;ADC counts / strip", 768, 0, 768);
480  else if (type == PEDESTAL_VALUES)
481  hist = dir.make<TH1S>("PedestalValues", ";Strip number;Pedestal / strip", 768, 0, 768);
482  else if (type == POST_PEDESTAL)
483  hist = dir.make<TH1S>("PostPedestal", ";Strip number;ADC counts / strip", 768, 0, 768);
484  else if (type == POST_COMMON_MODE)
485  hist = dir.make<TH1S>("PostCommonMode", ";Strip number;ADC counts / strip", 768, 0, 768);
486  else if (type == ZERO_SUPPRESSED_PADDED)
487  hist = dir.make<TH1S>("ZeroSuppressedRaw", ";Strip number;ADC counts / strip", 768, 0, 768);
488  else if (type == VR_COMP)
489  hist = dir.make<TH1S>("VirginRawCom", ";Strip number;ADC counts / strip", 768, 0, 768);
490  else {
491  hist = nullptr;
492  return false;
493  }
494 
495  // TODO: May need to make this error checking independent when refactoring...
496  //std::cout << "| * digis for " << type << " and detID " << specifier;
497  std::vector<edm::DetSet<SiStripRawDigi> >::const_iterator digis_it = digi_handle->find(specifier);
498  if (digis_it == digi_handle->end()) {
499  //std::cout << " not found :( ";
500  return false;
501  }
502  //std::cout << std::endl;
503 
504  // Loop over the digis for the detID and APV pair.
505  edm::DetSet<SiStripRawDigi>::const_iterator idigi = digis_it->data.begin();
506  uint32_t count = 0;
507  for (; idigi != digis_it->data.end(); ++idigi) {
508  count++;
509  hist->SetBinContent(count, static_cast<int>((*idigi).adc()));
510  } // end of loop over the digis
511  return true; // Success! (Probably.)
512 }
513 
516  uint32_t specifier,
517  const TFileDirectory& dir,
519 //const std::string & name)
520 {
521  // TODO: Remove the hard-coded numbers(!).
522  TH1F* hist;
523  if (type == NOISE_VALUES)
524  hist = dir.make<TH1F>("NoiseValues", ";Strip number;Noise / strip", 768, 0, 768);
525  else {
526  hist = nullptr;
527  return false;
528  }
529 
530  // TODO: May need to make this error checking independent when refactoring...
531  //std::cout << "| * digis for " << type << " and detID " << specifier;
532  std::vector<edm::DetSet<SiStripProcessedRawDigi> >::const_iterator digis_it = digi_handle->find(specifier);
533  if (digis_it == digi_handle->end()) {
534  //std::cout << " not found :( ";
535  return false;
536  }
537  //std::cout << std::endl;
538 
539  // Loop over the digis for the detID and APV pair.
540  edm::DetSet<SiStripProcessedRawDigi>::const_iterator idigi = digis_it->data.begin();
541  uint32_t count = 0;
542  for (; idigi != digis_it->data.end(); ++idigi) {
543  count++;
544  hist->SetBinContent(count, static_cast<float>((*idigi).adc()));
545  } // end of loop over the digis
546  return true; // Success! (Probably.)
547 }
548 
550  uint32_t detID,
551  //uint32_t channel,
552  const TFileDirectory& dir,
554 //const std::string & name)
555 {
556  // TODO: Remove the hard-coded numbers.
557  TH1S* hist;
558  if (type == ZERO_SUPPRESSED)
559  hist = dir.make<TH1S>("ZeroSuppressedDigi", ";Strip number;ADC counts / strip", 768, 0, 768);
560  else if (type == ZERO_SUPPRESSED_COMP)
561  hist = dir.make<TH1S>("ZeroSuppressedDigiComp", ";Strip number;ADC counts / strip", 768, 0, 768);
562  else {
563  hist = nullptr;
564  return false;
565  }
566 
567  // TODO: May need to make this error checking independent when refactoring...
568  std::vector<edm::DetSet<SiStripDigi> >::const_iterator digis_it = digi_handle->find(detID);
569  if (digis_it == digi_handle->end()) {
570  return false;
571  } else {
572  //cout << "--* ZS digis found for detID " << detID << endl;
573  }
574 
575  // Loop over the digis for the detID and APV pair.
576  edm::DetSet<SiStripDigi>::const_iterator idigi = digis_it->data.begin();
577  bool founddigi = false;
578  for (; idigi != digis_it->data.end(); ++idigi) {
579  // Check strip number is within the channel limits
580  //if ( static_cast<uint16_t>( (*idigi).strip()/256. ) == channel ) {
581  // hist->SetBinContent( ((*idigi).strip())%256 + 1,(*idigi).adc());
582  //}
583  hist->SetBinContent(static_cast<int>(((*idigi).strip())) + 1, static_cast<int>((*idigi).adc()));
584  if ((*idigi).adc() > 0)
585  founddigi = true;
586  //cout << "----* ZS digi found at " << static_cast<int>(((*idigi).strip()))
587  // << ", " << static_cast<int>((*idigi).adc()) << endl;
588  } // end of loop over the digis
589 
590  return founddigi;
591 }
592 
593 // Define this as a plug-in
edm::EDGetTokenT< edm::DetSetVector< SiStripProcessedRawDigi > > inputNoisesToken_
Token for the noises.
edm::InputTag inputZeroSuppressedRawDigiLabel_
Label for the zero-suppressed, zero-padded RawDigi module input tag.
static const std::string kSharedResource
Definition: TFileService.h:76
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
edm::InputTag inputCompZeroSuppressedDigiLabel_
Zero-suppressed digis to compare (from mainline)
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputScopeModeRawDigiToken_
Token for the scope-mode RawDigi collection input tag.
edm::InputTag inputPayloadRawDigiLabel_
Label for the virgin raw RawDigi collection input tag.
const std::vector< const FedChannelConnection * > & getConnections(uint32_t det_id) const
edm::ESGetToken< SiStripDetCabling, SiStripDetCablingRcd > detCablingToken_
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputPayloadRawDigiToken_
Token for the virgin raw RawDigi collection input tag.
std::string const & instance() const
Definition: InputTag.h:37
const SiStripDetCabling * detCabling_
Bool_t MakeDigiHist_(const edm::Handle< edm::DetSetVector< SiStripDigi > > &digi_handle, uint32_t detID, const TFileDirectory &dir, FEDSpyHistogramType type)
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputZeroSuppressedRawDigiToken_
Token for the zero-suppressed, zero-padded RawDigi module input tag.
edm::ESWatcher< SiStripDetCablingRcd > cablingWatcher_
std::string const & label() const
Definition: InputTag.h:36
edm::InputTag inputReorderedPayloadRawDigiLabel_
Label for the re-ordered RawDigi module input tag.
static uint32_t fedIndex(const uint16_t &fed_id, const uint16_t &fed_ch)
sistrip classes
edm::InputTag inputPostCMRawDigiLabel_
Label for the post-common mode subtraction RawDigi module input tag.
std::string outputFolderName_
Name for the folder in the TFileService file output.
int iEvent
Definition: GenABIO.cc:224
void analyze(const edm::Event &, const edm::EventSetup &) override
SiStripSpyDisplayModule(const edm::ParameterSet &)
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputPostCMRawDigiToken_
Token for the post-common mode subtraction RawDigi module input tag.
edm::InputTag inputPostPedestalRawDigiLabel_
Label for the post-pedestal subtraction RawDigi module input tag.
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputPedestalsToken_
Token for the pedestals.
edm::InputTag inputCompVirginRawDigiLabel_
VR RawDigis to compare (from mainline)
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::EDGetTokenT< edm::DetSetVector< SiStripDigi > > inputCompZeroSuppressedDigiToken_
Zero-suppressed digis to compare (from mainline)
d
Definition: ztail.py:151
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputReorderedPayloadRawDigiToken_
Token for the re-ordered RawDigi module input tag.
__shared__ Hist hist
void updateDetCabling(const SiStripDetCablingRcd &rcd)
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
edm::EDGetTokenT< edm::DetSetVector< SiStripDigi > > inputZeroSuppressedDigiToken_
Guess what? It&#39;s the input label for the zero-suppressed digi.
edm::InputTag inputScopeModeRawDigiLabel_
Label for the scope-mode RawDigi collection input tag.
edm::InputTag inputNoisesLabel_
Label for the noises.
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputReorderedModuleRawDigiToken_
Token for the re-ordered RawDigi module input tag.
collection_type data
Definition: DetSet.h:80
HLT enums.
EDAnalyzer for the online monitoring of the FED using STT spy channel data.
edm::InputTag inputZeroSuppressedDigiLabel_
Guess what? It&#39;s the input label for the zero-suppressed digi.
Bool_t MakeRawDigiHist_(const edm::Handle< edm::DetSetVector< SiStripRawDigi > > &digi_handle, uint32_t specifier, const TFileDirectory &dir, FEDSpyHistogramType type)
edm::InputTag inputPedestalsLabel_
Label for the pedestals.
edm::InputTag inputReorderedModuleRawDigiLabel_
Label for the re-ordered RawDigi module input tag.
collection_type::const_iterator const_iterator
Definition: DetSet.h:31
ProductT const & get(ESGetToken< ProductT, DepRecordT > const &iToken) const
Bool_t MakeProcessedRawDigiHist_(const edm::Handle< edm::DetSetVector< SiStripProcessedRawDigi > > &digi_handle, uint32_t specifier, const TFileDirectory &dir, FEDSpyHistogramType type)
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputCompVirginRawDigiToken_
VR RawDigis to compare (from mainline)
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputPostPedestalRawDigiToken_
Token for the post-pedestal subtraction RawDigi module input tag.
std::vector< uint32_t > detIDs_
Vector of detIDs that are of interest (config-specified).