CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
97 public:
99  ~SiStripSpyDisplayModule() override;
100 
101 private:
102  void beginRun(const edm::Run&, const edm::EventSetup&) override;
103  void beginJob() override;
104  void analyze(const edm::Event&, const edm::EventSetup&) override;
105  void endJob() override;
106 
108  uint32_t specifier,
109  const TFileDirectory& dir,
111 
113  uint32_t specifier,
114  const TFileDirectory& dir,
115  FEDSpyHistogramType type);
116 
117  Bool_t MakeDigiHist_(const edm::Handle<edm::DetSetVector<SiStripDigi> >& digi_handle,
118  uint32_t detID,
119  const TFileDirectory& dir,
120  FEDSpyHistogramType type);
121 
122  // ----------member data ---------------------------
123  std::vector<uint32_t> detIDs_;
124  //now from utility class
125  // edm::ESHandle<SiStripDetCabling> cabling_; //!< The Strip Tracker cabling object.
129  void updateDetCabling(const SiStripDetCablingRcd& rcd);
130 
131  // Data input labels
132  //===================
146 
169  //
170  // Output information
171  //====================
173 
174 }; // end of SiStripSpyDisplayModule class
175 
176 //
177 // static data member definitions
178 //
179 
180 using namespace sistrip;
181 using namespace std;
182 
183 //
184 // constructors and destructor
185 //
187  : detIDs_(iConfig.getParameter<std::vector<uint32_t> >("detIDs")),
188  detCablingToken_(esConsumes<>()),
189  cablingWatcher_(this, &SiStripSpyDisplayModule::updateDetCabling),
190  inputScopeModeRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputScopeModeRawDigiLabel")),
191  inputPayloadRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputPayloadRawDigiLabel")),
192  inputReorderedPayloadRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputReorderedPayloadRawDigiLabel")),
193  inputReorderedModuleRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputReorderedModuleRawDigiLabel")),
194  inputPedestalsLabel_(iConfig.getParameter<edm::InputTag>("InputPedestalsLabel")),
195  inputNoisesLabel_(iConfig.getParameter<edm::InputTag>("InputNoisesLabel")),
196  inputPostPedestalRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputPostPedestalRawDigiLabel")),
197  inputPostCMRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputPostCMRawDigiLabel")),
198  inputZeroSuppressedRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputZeroSuppressedRawDigiLabel")),
199  inputZeroSuppressedDigiLabel_(iConfig.getParameter<edm::InputTag>("InputZeroSuppressedDigiLabel")),
200  inputCompVirginRawDigiLabel_(iConfig.getParameter<edm::InputTag>("InputCompVirginRawDigiLabel")),
201  inputCompZeroSuppressedDigiLabel_(iConfig.getParameter<edm::InputTag>("InputCompZeroSuppressedDigiLabel")),
202  outputFolderName_(iConfig.getParameter<std::string>("OutputFolderName")) {
203  //now do what ever initialization is needed
204  inputScopeModeRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputScopeModeRawDigiLabel_);
205  inputPayloadRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputPayloadRawDigiLabel_);
206  inputReorderedPayloadRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputReorderedPayloadRawDigiLabel_);
207  inputReorderedModuleRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputReorderedModuleRawDigiLabel_);
208  inputPedestalsToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputPedestalsLabel_);
209  inputNoisesToken_ = consumes<edm::DetSetVector<SiStripProcessedRawDigi> >(inputNoisesLabel_);
210  inputPostPedestalRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputPostPedestalRawDigiLabel_);
211  inputPostCMRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputPostCMRawDigiLabel_);
212  inputZeroSuppressedRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputZeroSuppressedRawDigiLabel_);
213  inputZeroSuppressedDigiToken_ = consumes<edm::DetSetVector<SiStripDigi> >(inputZeroSuppressedDigiLabel_);
214  inputCompVirginRawDigiToken_ = consumes<edm::DetSetVector<SiStripRawDigi> >(inputCompVirginRawDigiLabel_);
215  inputCompZeroSuppressedDigiToken_ = consumes<edm::DetSetVector<SiStripDigi> >(inputCompZeroSuppressedDigiLabel_);
216 }
217 
219  // do anything here that needs to be done at desctruction time
220  // (e.g. close files, deallocate resources etc.)
221 }
222 
223 //
224 // member functions
225 //
226 //
227 
230 }
231 
233  // Retrieve FED cabling object
234  //iSetup.get<SiStripDetCablingRcd>().get( cabling_ );
235  //std::stringstream ss;
236  //cabling_->print(ss);
237  //std::cout << ss.str() << std::endl;
238 
239 } // end of beginRun method.
240 
241 // ------------ method called once each job just before starting event loop ------------
243  // register to the TFileService
245  // Check that the TFileService has been configured
246  if (!fs.isAvailable()) {
247  throw cms::Exception("Configuration") << "TFileService not available: did you configure it ?";
248  }
249 } // end of beginJob method.
250 
251 // ------------ method called once each job just after ending the event loop ------------
253 
254 // ------------ method called to for each event ------------
256  using namespace edm;
257  using namespace std;
258 
259  cablingWatcher_.check(iSetup);
260 
261  // Set up the event-level histogram folder
262  //-----------------------------------------
263  // register to the TFileService
265 
266  // Make the EDAnalyzer instance name directory
267  TFileDirectory an_dir = fs->mkdir(outputFolderName_);
268 
269  // Make the event directory filename
270  stringstream ev_dir_name;
271  ev_dir_name << "run" << iEvent.id().run() << "_event" << iEvent.id().event();
272  TFileDirectory evdir = an_dir.mkdir(ev_dir_name.str());
273 
274  //if there are no detIds, get them from the comparison digis...
275  if (detIDs_.empty()) {
276  //get the detIds of the modules in the zero-suppressed comparison
277  if (!((inputCompZeroSuppressedDigiLabel_.label().empty()) &&
280  // iEvent.getByLabel( inputCompZeroSuppressedDigiLabel_, czs_digis );
282  std::vector<edm::DetSet<SiStripDigi> >::const_iterator digis_it = czs_digis->begin();
283  for (; digis_it != czs_digis->end(); ++digis_it) {
284  detIDs_.push_back(digis_it->detId());
285  }
286  } else if (!((inputCompVirginRawDigiLabel_.label().empty()) && (inputCompVirginRawDigiLabel_.instance().empty()))) {
288  // iEvent.getByLabel( inputCompVirginRawDigiLabel_, cvr_digis );
289  iEvent.getByToken(inputCompVirginRawDigiToken_, cvr_digis);
290  std::vector<edm::DetSet<SiStripRawDigi> >::const_iterator digis_it = cvr_digis->begin();
291  for (; digis_it != cvr_digis->end(); ++digis_it) {
292  detIDs_.push_back(digis_it->detId());
293  }
294  }
295  }
296 
297  // Loop over detIDs as obtained from the SpyChannelMonitor config file.
298  for (std::vector<uint32_t>::iterator d = detIDs_.begin(); d != detIDs_.end(); ++d) {
299  // TODO: Need some error checking here, probably...
300  const std::vector<const FedChannelConnection*>& conns = detCabling_->getConnections(*d);
301  //cout << "________________________________________________" << endl;
302  //cout << "FED channels found in detId " << *d << " is " << conns.size() << endl;
303  if (!(conns.size())) {
304  // TODO: Properly DEBUG/warning this...
305  //cout << "Skipping detID " << uint32_t(*d) << endl;
306  continue;
307  }
308 
309  // Create a histogram directory for each specified and available detID
310  stringstream sss;
311  sss << "detID_" << *d;
312  TFileDirectory detID_dir = evdir.mkdir(sss.str());
313 
314  // Loop over the channels found with the detID and add directories.
315  for (uint32_t ch = 0; ch < conns.size(); ch++) {
316  if (conns[ch] && conns[ch]->isConnected()) {
317  // Name of channel histogram directory
318  stringstream ssss;
319  ssss << sss.str() << "_APVpair_" << ch;
320  TFileDirectory chan_dir = detID_dir.mkdir(ssss.str());
321 
322  // Get the fed key from the detID and the channel
323  uint32_t fedkey = SiStripFedKey::fedIndex(conns[ch]->fedId(), conns[ch]->fedCh());
324 
325  // (Spy) Scope Mode (SM)
326  //=======================
327  // Get the fed key from the FED ID and the FED channel (from conns)
328  // This is because scope mode always stores in the collection by FED ID
329  if (!((inputScopeModeRawDigiLabel_.label().empty()) && (inputScopeModeRawDigiLabel_.instance().empty()))) {
330  // Use the SiStripFedKey object to return the FED key
331  //cout << "detID=" << *d << ", FED key looking for is " << fedkey << endl;
332  //cout << "Attempting to find scope mode raw digis" << endl;
333  //
335  // iEvent.getByLabel( inputScopeModeRawDigiLabel_, sm_rawdigis );
336  iEvent.getByToken(inputScopeModeRawDigiToken_, sm_rawdigis);
337  //
338  // Note that the fed key (also a uint32_t) is passed in this case.
339  // The method itself doesn't actually care, but it assumes whatever collection
340  // is stored in sm_rawdigis is indexed by FED key ;-)
341  // TODO: Make this, um, better.
342  if (!(MakeRawDigiHist_(sm_rawdigis, fedkey, chan_dir, SCOPE_MODE))) {
343  ;
344  }
345  }
346 
347  // Payload Unordered Raw (UR)
348  //============================
349  if (!((inputPayloadRawDigiLabel_.label().empty()) && (inputPayloadRawDigiLabel_.instance().empty()))) {
350  uint32_t fedindex = SiStripFedKey::fedIndex(conns[ch]->fedId(), conns[ch]->fedCh());
351  //cout << "Attempting to find payload mode raw digis" << endl;
353  // iEvent.getByLabel( inputPayloadRawDigiLabel_, ur_rawdigis );
354  iEvent.getByToken(inputPayloadRawDigiToken_, ur_rawdigis);
355  if (!(MakeRawDigiHist_(ur_rawdigis, fedindex, chan_dir, PAYLOAD_RAW))) {
356  ;
357  }
358  }
359  // Payload Reordered Raw
360  //=======================
361  if (!((inputReorderedPayloadRawDigiLabel_.label().empty()) &&
363  uint32_t fedkey = SiStripFedKey::fedIndex(conns[ch]->fedId(), conns[ch]->fedCh());
365  // iEvent.getByLabel( inputReorderedPayloadRawDigiLabel_, rrp_rawdigis );
366  iEvent.getByToken(inputReorderedPayloadRawDigiToken_, rrp_rawdigis);
367  if (!(MakeRawDigiHist_(rrp_rawdigis, fedkey, chan_dir, REORDERED_PAYLOAD_RAW))) {
368  ;
369  }
370  }
371  }
372  } // end of loop over channels
373  //
374  // Module Reordered Raw (RR)
375  //====================
376  if (!((inputReorderedModuleRawDigiLabel_.label().empty()) &&
379  // iEvent.getByLabel( inputReorderedModuleRawDigiLabel_, rr_rawdigis );
380  iEvent.getByToken(inputReorderedModuleRawDigiToken_, rr_rawdigis);
381  //cout << "Making Reordered module histogram for detID " << *d << endl;
382  if (!(MakeRawDigiHist_(rr_rawdigis, *d, detID_dir, REORDERED_MODULE_RAW))) {
383  ;
384  }
385  } // end of ReorderedModuleRaw check
386 
387  //
388  // Pedestal values
389  //========================
390  if (!((inputPedestalsLabel_.label().empty()) && (inputPedestalsLabel_.instance().empty()))) {
392  // iEvent.getByLabel( inputPedestalsLabel_, pd_rawdigis );
393  iEvent.getByToken(inputPedestalsToken_, pd_rawdigis);
394  //cout << "Making pedestal values module histogram for detID " << *d << endl;
395  if (!(MakeRawDigiHist_(pd_rawdigis, *d, detID_dir, PEDESTAL_VALUES))) {
396  ;
397  }
398  }
399  //
400  // Noise values
401  //========================
402  if (!((inputNoisesLabel_.label().empty()) && (inputNoisesLabel_.instance().empty()))) {
404  // iEvent.getByLabel( inputNoisesLabel_, pd_rawdigis );
405  iEvent.getByToken(inputNoisesToken_, pd_rawdigis);
406  //cout << "Making noise values module histogram for detID " << *d << endl;
407  if (!(MakeProcessedRawDigiHist_(pd_rawdigis, *d, detID_dir, NOISE_VALUES))) {
408  ;
409  }
410  }
411  //
412  // Post-Pedestal Raw (PP)
413  //========================
416  // iEvent.getByLabel( inputPostPedestalRawDigiLabel_, pp_rawdigis );
417  iEvent.getByToken(inputPostPedestalRawDigiToken_, pp_rawdigis);
418  //cout << "Making post-pedestal module histogram for detID " << *d << endl;
419  if (!(MakeRawDigiHist_(pp_rawdigis, *d, detID_dir, POST_PEDESTAL))) {
420  ;
421  }
422  }
423  //
424  // Post-Common Mode Subtraction Raw (PC)
425  //=======================================
426  if (!((inputPostCMRawDigiLabel_.label().empty()) && (inputPostCMRawDigiLabel_.instance().empty()))) {
428  // iEvent.getByLabel( inputPostCMRawDigiLabel_, pc_rawdigis );
429  iEvent.getByToken(inputPostCMRawDigiToken_, pc_rawdigis);
430  //cout << "Making post-CM module histogram for detID " << *d << endl;
431  if (!(MakeRawDigiHist_(pc_rawdigis, *d, detID_dir, POST_COMMON_MODE))) {
432  ;
433  }
434  }
435 
436  //
437  // Zero-Suppressed Digis
438  //=======================
439  //bool founddigispy = false, founddigimain = false;
441  //cout << "Making ZeroSuppressed histogram!" << endl;
443  // iEvent.getByLabel( inputZeroSuppressedDigiLabel_, zs_digis );
444  iEvent.getByToken(inputZeroSuppressedDigiToken_, zs_digis);
445  //founddigispy =
446  MakeDigiHist_(zs_digis, *d, detID_dir, ZERO_SUPPRESSED);
447  }
448  //comparison to mainline data
449  if (!((inputCompVirginRawDigiLabel_.label().empty()) && (inputCompVirginRawDigiLabel_.instance().empty()))) {
450  //cout << "Making Mainline VirginRaw histogram!" << endl;
452  // iEvent.getByLabel( inputCompVirginRawDigiLabel_, cvr_digis );
453  iEvent.getByToken(inputCompVirginRawDigiToken_, cvr_digis);
454  //founddigimain =
455  MakeRawDigiHist_(cvr_digis, *d, detID_dir, VR_COMP);
456  }
457  if (!((inputCompZeroSuppressedDigiLabel_.label().empty()) &&
459  //cout << "Making ZeroSuppressed histogram!" << endl;
461  // iEvent.getByLabel( inputCompZeroSuppressedDigiLabel_, czs_digis );
463  //founddigimain =
464  MakeDigiHist_(czs_digis, *d, detID_dir, ZERO_SUPPRESSED_COMP);
465  }
466  //if (founddigimain && founddigispy) cout << "Found digis for both in detid=" << *d << endl;
467 
468  } // end of loop over detIDs specified in the config.
469 
470 } // end of Analyze method.
471 
473  uint32_t specifier,
474  const TFileDirectory& dir,
476 //const std::string & name)
477 {
478  // TODO: Remove the hard-coded numbers(!).
479  TH1S* hist;
480  if (type == SCOPE_MODE)
481  hist = dir.make<TH1S>("ScopeMode", ";Sample number;ADC counts / strip", 298, 0, 298);
482  else if (type == PAYLOAD_RAW)
483  hist = dir.make<TH1S>("PayloadRaw", ";Sample number;ADC counts / strip", 256, 0, 256);
484  else if (type == REORDERED_PAYLOAD_RAW)
485  hist = dir.make<TH1S>("ReorderedPayloadRaw", ";Sample number;ADC counts / strip", 256, 0, 256);
486  else if (type == REORDERED_MODULE_RAW)
487  hist = dir.make<TH1S>("ReorderedModuleRaw", ";Sample number;ADC counts / strip", 768, 0, 768);
488  else if (type == PEDESTAL_VALUES)
489  hist = dir.make<TH1S>("PedestalValues", ";Strip number;Pedestal / strip", 768, 0, 768);
490  else if (type == POST_PEDESTAL)
491  hist = dir.make<TH1S>("PostPedestal", ";Strip number;ADC counts / strip", 768, 0, 768);
492  else if (type == POST_COMMON_MODE)
493  hist = dir.make<TH1S>("PostCommonMode", ";Strip number;ADC counts / strip", 768, 0, 768);
494  else if (type == ZERO_SUPPRESSED_PADDED)
495  hist = dir.make<TH1S>("ZeroSuppressedRaw", ";Strip number;ADC counts / strip", 768, 0, 768);
496  else if (type == VR_COMP)
497  hist = dir.make<TH1S>("VirginRawCom", ";Strip number;ADC counts / strip", 768, 0, 768);
498  else {
499  hist = nullptr;
500  return false;
501  }
502 
503  // TODO: May need to make this error checking independent when refactoring...
504  //std::cout << "| * digis for " << type << " and detID " << specifier;
505  std::vector<edm::DetSet<SiStripRawDigi> >::const_iterator digis_it = digi_handle->find(specifier);
506  if (digis_it == digi_handle->end()) {
507  //std::cout << " not found :( ";
508  return false;
509  }
510  //std::cout << std::endl;
511 
512  // Loop over the digis for the detID and APV pair.
513  edm::DetSet<SiStripRawDigi>::const_iterator idigi = digis_it->data.begin();
514  uint32_t count = 0;
515  for (; idigi != digis_it->data.end(); ++idigi) {
516  count++;
517  hist->SetBinContent(count, static_cast<int>((*idigi).adc()));
518  } // end of loop over the digis
519  return true; // Success! (Probably.)
520 }
521 
524  uint32_t specifier,
525  const TFileDirectory& dir,
527 //const std::string & name)
528 {
529  // TODO: Remove the hard-coded numbers(!).
530  TH1F* hist;
531  if (type == NOISE_VALUES)
532  hist = dir.make<TH1F>("NoiseValues", ";Strip number;Noise / strip", 768, 0, 768);
533  else {
534  hist = nullptr;
535  return false;
536  }
537 
538  // TODO: May need to make this error checking independent when refactoring...
539  //std::cout << "| * digis for " << type << " and detID " << specifier;
540  std::vector<edm::DetSet<SiStripProcessedRawDigi> >::const_iterator digis_it = digi_handle->find(specifier);
541  if (digis_it == digi_handle->end()) {
542  //std::cout << " not found :( ";
543  return false;
544  }
545  //std::cout << std::endl;
546 
547  // Loop over the digis for the detID and APV pair.
548  edm::DetSet<SiStripProcessedRawDigi>::const_iterator idigi = digis_it->data.begin();
549  uint32_t count = 0;
550  for (; idigi != digis_it->data.end(); ++idigi) {
551  count++;
552  hist->SetBinContent(count, static_cast<float>((*idigi).adc()));
553  } // end of loop over the digis
554  return true; // Success! (Probably.)
555 }
556 
558  uint32_t detID,
559  //uint32_t channel,
560  const TFileDirectory& dir,
562 //const std::string & name)
563 {
564  // TODO: Remove the hard-coded numbers.
565  TH1S* hist;
566  if (type == ZERO_SUPPRESSED)
567  hist = dir.make<TH1S>("ZeroSuppressedDigi", ";Strip number;ADC counts / strip", 768, 0, 768);
568  else if (type == ZERO_SUPPRESSED_COMP)
569  hist = dir.make<TH1S>("ZeroSuppressedDigiComp", ";Strip number;ADC counts / strip", 768, 0, 768);
570  else {
571  hist = nullptr;
572  return false;
573  }
574 
575  // TODO: May need to make this error checking independent when refactoring...
576  std::vector<edm::DetSet<SiStripDigi> >::const_iterator digis_it = digi_handle->find(detID);
577  if (digis_it == digi_handle->end()) {
578  return false;
579  } else {
580  //cout << "--* ZS digis found for detID " << detID << endl;
581  }
582 
583  // Loop over the digis for the detID and APV pair.
584  edm::DetSet<SiStripDigi>::const_iterator idigi = digis_it->data.begin();
585  bool founddigi = false;
586  for (; idigi != digis_it->data.end(); ++idigi) {
587  // Check strip number is within the channel limits
588  //if ( static_cast<uint16_t>( (*idigi).strip()/256. ) == channel ) {
589  // hist->SetBinContent( ((*idigi).strip())%256 + 1,(*idigi).adc());
590  //}
591  hist->SetBinContent(static_cast<int>(((*idigi).strip())) + 1, static_cast<int>((*idigi).adc()));
592  if ((*idigi).adc() > 0)
593  founddigi = true;
594  //cout << "----* ZS digi found at " << static_cast<int>(((*idigi).strip()))
595  // << ", " << static_cast<int>((*idigi).adc()) << endl;
596  } // end of loop over the digis
597 
598  return founddigi;
599 }
600 
601 // Define this as a plug-in
RunNumber_t run() const
Definition: EventID.h:38
edm::EDGetTokenT< edm::DetSetVector< SiStripProcessedRawDigi > > inputNoisesToken_
Token for the noises.
edm::InputTag inputZeroSuppressedRawDigiLabel_
Label for the zero-suppressed, zero-padded RawDigi module input tag.
EventNumber_t event() const
Definition: EventID.h:40
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.
edm::ESGetToken< SiStripDetCabling, SiStripDetCablingRcd > detCablingToken_
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputPayloadRawDigiToken_
Token for the virgin raw RawDigi collection input tag.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
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_
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)
const std::vector< const FedChannelConnection * > & getConnections(uint32_t det_id) const
tuple d
Definition: ztail.py:151
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
ProductT const & get(ESGetToken< ProductT, DepRecordT > const &iToken) const
SiStripSpyDisplayModule(const edm::ParameterSet &)
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputPostCMRawDigiToken_
Token for the post-common mode subtraction RawDigi module input tag.
bool isAvailable() const
Definition: Service.h:40
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)
edm::EDGetTokenT< edm::DetSetVector< SiStripDigi > > inputCompZeroSuppressedDigiToken_
Zero-suppressed digis to compare (from mainline)
T * make(const Args &...args) const
make new ROOT object
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
void beginRun(const edm::Run &, const edm::EventSetup &) override
std::string const & label() const
Definition: InputTag.h:36
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputReorderedModuleRawDigiToken_
Token for the re-ordered RawDigi module input tag.
edm::EventID id() const
Definition: EventBase.h:59
collection_type data
Definition: DetSet.h:80
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
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)
std::string const & instance() const
Definition: InputTag.h:37
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > inputPostPedestalRawDigiToken_
Token for the post-pedestal subtraction RawDigi module input tag.
Definition: Run.h:45
std::vector< uint32_t > detIDs_
Vector of detIDs that are of interest (config-specified).