CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
HGCalDigiValidation Class Reference
Inheritance diagram for HGCalDigiValidation:
DQMEDAnalyzer edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Classes

struct  digiInfo
 

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginRun (const edm::Run &, const edm::EventSetup &) override
 
 HGCalDigiValidation (const edm::ParameterSet &)
 
 ~HGCalDigiValidation () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
virtual void dqmEndLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &)
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &, edm::EventSetup const &) final
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () 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 () noexcept(false) 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
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
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)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
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)
 

Private Member Functions

template<class T1 , class T2 >
void digiValidation (const T1 &detId, const T2 *geom, int layer, uint16_t adc, double charge, bool mode, bool threshold)
 
void fillDigiInfo (digiInfo &hinfo)
 
void fillDigiInfo ()
 
void fillOccupancyMap (std::map< int, int > &OccupancyMap, int layer)
 

Private Attributes

std::vector< MonitorElement * > ADC_
 
std::vector< MonitorElement * > DigiOccupancy_Minus_
 
std::vector< MonitorElement * > DigiOccupancy_Plus_
 
std::vector< MonitorElement * > DigiOccupancy_XY_
 
edm::EDGetToken digiSource_
 
int firstLayer_
 
bool ifHCAL_
 
bool ifNose_
 
int layers_
 
MonitorElementMeanDigiOccupancy_Minus_
 
MonitorElementMeanDigiOccupancy_Plus_
 
std::string nameDetector_
 
std::map< int, int > OccupancyMap_minus_
 
std::map< int, int > OccupancyMap_plus_
 
int SampleIndx_
 
std::vector< MonitorElement * > TOA_
 
std::vector< MonitorElement * > TOT_
 
int verbosity_
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- 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 Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 
- 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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
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)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 54 of file HGCalDigiValidation.cc.

Constructor & Destructor Documentation

HGCalDigiValidation::HGCalDigiValidation ( const edm::ParameterSet iConfig)
explicit

Definition at line 103 of file HGCalDigiValidation.cc.

References digiSource_, Exception, edm::ParameterSet::getParameter(), ifHCAL_, nameDetector_, and groupFilesInBlocks::temp.

104  : nameDetector_(iConfig.getParameter<std::string>("DetectorName")),
105  ifNose_(iConfig.getParameter<bool>("ifNose")),
106  ifHCAL_(iConfig.getParameter<bool>("ifHCAL")),
107  verbosity_(iConfig.getUntrackedParameter<int>("Verbosity", 0)),
108  SampleIndx_(iConfig.getUntrackedParameter<int>("SampleIndx", 0)),
109  firstLayer_(1) {
110  auto temp = iConfig.getParameter<edm::InputTag>("DigiSource");
111  if ((nameDetector_ == "HGCalEESensitive") || (nameDetector_ == "HGCalHESiliconSensitive") ||
112  (nameDetector_ == "HGCalHEScintillatorSensitive") || (nameDetector_ == "HGCalHFNoseSensitive")) {
113  digiSource_ = consumes<HGCalDigiCollection>(temp);
114  } else if (nameDetector_ == "HCal") {
115  if (ifHCAL_)
116  digiSource_ = consumes<QIE11DigiCollection>(temp);
117  else
118  digiSource_ = consumes<HGCalDigiCollection>(temp);
119  } else {
120  throw cms::Exception("BadHGCDigiSource") << "HGCal DetectorName given as " << nameDetector_ << " must be: "
121  << "\"HGCalEESensitive\", \"HGCalHESiliconSensitive\", "
122  << "\"HGCalHEScintillatorSensitive\", \"HGCalHFNoseSensitive\", "
123  << "or \"HCal\"!";
124  }
125 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetToken digiSource_
HGCalDigiValidation::~HGCalDigiValidation ( )
inlineoverride

Member Function Documentation

void HGCalDigiValidation::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 138 of file HGCalDigiValidation.cc.

References ecalMGPA::adc(), HcalCoderDb::adc2fC(), AlignmentProducer_cff::calibrations, ALCARECOTkAlJpsiMuMu_cff::charge, HGCSample::data(), HcalDetId::depth(), digiSource_, digiValidation(), edm::EventID::event(), fillDigiInfo(), PedestalClient_cfi::gain, relativeConstraints::geom, motionPolicyChamber::geom0, geometryDiff::geom1, HGCalTopology::geomMode(), edm::EventSetup::get(), edm::Event::getByToken(), HcalDbService::getHcalCalibrations(), HcalDbService::getHcalCoder(), HcalDbService::getHcalShape(), HcalEndcap, HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, edm::EventBase::id(), QIE11DataFrame::id(), ifHCAL_, edm::ESHandleBase::isValid(), edm::HandleBase::isValid(), HGCalDetId::layer(), HGCScintillatorDetId::layer(), HFNoseDetId::layer(), HGCSiliconDetId::layer(), HGCSample::mode(), ALCARECOPromptCalibProdSiPixelAli0T_cff::mode, nameDetector_, OccupancyMap_minus_, OccupancyMap_plus_, HcalCalibrations::pedestal(), edm::Handle< T >::product(), edm::ESHandle< T >::product(), SampleIndx_, edm::SortedCollection< T, SORT >::size(), edm::DataFrameContainer::size(), HcalDetId::subdet(), HGCSample::threshold(), HGCSample::toa(), HGCalGeometry::topology(), HGCalGeometryMode::Trapezoid, and verbosity_.

Referenced by ~HGCalDigiValidation().

138  {
139  OccupancyMap_plus_.clear();
140  OccupancyMap_minus_.clear();
141 
142  const HGCalGeometry* geom0(nullptr);
143  const CaloGeometry* geom1(nullptr);
144  int geomType(0);
145  if (nameDetector_ == "HCal") {
147  iSetup.get<CaloGeometryRecord>().get(geom);
148  if (!geom.isValid())
149  edm::LogVerbatim("HGCalValidation") << "HGCalDigiValidation: Cannot get "
150  << "valid Geometry Object for " << nameDetector_;
151  geom1 = geom.product();
152  } else {
154  iSetup.get<IdealGeometryRecord>().get(nameDetector_, geom);
155  if (!geom.isValid())
156  edm::LogVerbatim("HGCalValidation") << "HGCalDigiValidation: Cannot get "
157  << "valid Geometry Object for " << nameDetector_;
158  geom0 = geom.product();
159  HGCalGeometryMode::GeometryMode mode = geom0->topology().geomMode();
161  geomType = 1;
162  else if (mode == HGCalGeometryMode::Trapezoid)
163  geomType = 2;
164  if (nameDetector_ == "HGCalHFNoseSensitive")
165  geomType = 3;
166  }
167 
168  unsigned int ntot(0), nused(0);
169  if ((nameDetector_ == "HGCalEESensitive") || (nameDetector_ == "HGCalHFNoseSensitive")) {
170  //HGCalEE
171  edm::Handle<HGCalDigiCollection> theHGCEEDigiContainers;
172  iEvent.getByToken(digiSource_, theHGCEEDigiContainers);
173  if (theHGCEEDigiContainers.isValid()) {
174  if (verbosity_ > 0)
175  edm::LogVerbatim("HGCalValidation")
176  << nameDetector_ << " with " << theHGCEEDigiContainers->size() << " element(s)";
177  for (const auto& it : *(theHGCEEDigiContainers.product())) {
178  ntot++;
179  nused++;
180  DetId detId = it.id();
181  int layer = ((geomType == 0) ? HGCalDetId(detId).layer()
182  : (geomType == 1) ? HGCSiliconDetId(detId).layer() : HFNoseDetId(detId).layer());
183  const HGCSample& hgcSample = it.sample(SampleIndx_);
184  uint16_t gain = hgcSample.toa();
185  uint16_t adc = hgcSample.data();
186  double charge = gain;
187  bool totmode = hgcSample.mode();
188  bool zerothreshold = hgcSample.threshold();
189  digiValidation(detId, geom0, layer, adc, charge, totmode, zerothreshold);
190  }
191  fillDigiInfo();
192  } else {
193  edm::LogVerbatim("HGCalValidation") << "DigiCollection handle does not "
194  << "exist for " << nameDetector_;
195  }
196  } else if ((nameDetector_ == "HGCalHESiliconSensitive") || (nameDetector_ == "HGCalHEScintillatorSensitive")) {
197  //HGCalHE
198  edm::Handle<HGCalDigiCollection> theHGCHEDigiContainers;
199  iEvent.getByToken(digiSource_, theHGCHEDigiContainers);
200  if (theHGCHEDigiContainers.isValid()) {
201  if (verbosity_ > 0)
202  edm::LogVerbatim("HGCalValidation")
203  << nameDetector_ << " with " << theHGCHEDigiContainers->size() << " element(s)";
204  for (const auto& it : *(theHGCHEDigiContainers.product())) {
205  ntot++;
206  nused++;
207  DetId detId = it.id();
208  int layer = ((geomType == 0)
209  ? HGCalDetId(detId).layer()
210  : ((geomType == 1) ? HGCSiliconDetId(detId).layer() : HGCScintillatorDetId(detId).layer()));
211  const HGCSample& hgcSample = it.sample(SampleIndx_);
212  uint16_t gain = hgcSample.toa();
213  uint16_t adc = hgcSample.data();
214  double charge = gain;
215  bool totmode = hgcSample.mode();
216  bool zerothreshold = hgcSample.threshold();
217  digiValidation(detId, geom0, layer, adc, charge, totmode, zerothreshold);
218  }
219  fillDigiInfo();
220  } else {
221  edm::LogVerbatim("HGCalValidation") << "DigiCollection handle does not "
222  << "exist for " << nameDetector_;
223  }
224  } else if ((nameDetector_ == "HCal") && (!ifHCAL_)) {
225  //HGCalBH
226  edm::Handle<HGCalDigiCollection> theHGCBHDigiContainers;
227  iEvent.getByToken(digiSource_, theHGCBHDigiContainers);
228  if (theHGCBHDigiContainers.isValid()) {
229  if (verbosity_ > 0)
230  edm::LogVerbatim("HGCalValidation")
231  << nameDetector_ << " with " << theHGCBHDigiContainers->size() << " element(s)";
232  for (const auto& it : *(theHGCBHDigiContainers.product())) {
233  ntot++;
234  nused++;
235  HcalDetId detId = it.id();
236  int layer = detId.depth();
237  const HGCSample& hgcSample = it.sample(SampleIndx_);
238  uint16_t gain = hgcSample.toa();
239  uint16_t adc = hgcSample.data();
240  double charge = gain;
241  bool totmode = hgcSample.mode();
242  bool zerothreshold = hgcSample.threshold();
243  digiValidation(detId, geom1, layer, adc, charge, totmode, zerothreshold);
244  }
245  fillDigiInfo();
246  } else {
247  edm::LogWarning("HGCalValidation") << "DigiCollection handle does not "
248  << "exist for " << nameDetector_;
249  }
250  } else if (nameDetector_ == "HCal") {
251  //HE
252  edm::Handle<QIE11DigiCollection> theHEDigiContainers;
253  iEvent.getByToken(digiSource_, theHEDigiContainers);
254  if (theHEDigiContainers.isValid()) {
255  if (verbosity_ > 0)
256  edm::LogVerbatim("HGCalValidation")
257  << nameDetector_ << " with " << theHEDigiContainers->size() << " element(s)";
258  edm::ESHandle<HcalDbService> conditions;
259  iSetup.get<HcalDbRecord>().get(conditions);
260 
261  for (const auto& it : *(theHEDigiContainers.product())) {
262  QIE11DataFrame df(it);
263  HcalDetId detId = (df.id());
264  ntot++;
265  if (detId.subdet() == HcalEndcap) {
266  nused++;
268  const HcalQIECoder* channelCoder = conditions->getHcalCoder(detId);
269  const HcalQIEShape* shape = conditions->getHcalShape(channelCoder);
270  HcalCoderDb coder(*channelCoder, *shape);
271  CaloSamples tool;
272  coder.adc2fC(df, tool);
273  int layer = detId.depth();
274  uint16_t adc = (df)[SampleIndx_].adc();
275  int capid = (df)[SampleIndx_].capid();
276  double charge = (tool[SampleIndx_] - calibrations.pedestal(capid));
277  bool totmode = false;
278  bool zerothreshold = false;
279  digiValidation(detId, geom1, layer, adc, charge, totmode, zerothreshold);
280  }
281  }
282  fillDigiInfo();
283  } else {
284  edm::LogWarning("HGCalValidation") << "DigiCollection handle does not "
285  << "exist for " << nameDetector_;
286  }
287  } else {
288  edm::LogWarning("HGCalValidation") << "invalid detector name !! " << nameDetector_;
289  }
290  if (verbosity_ > 0)
291  edm::LogVerbatim("HGCalValidation") << "Event " << iEvent.id().event() << " with " << ntot << " total and " << nused
292  << " used digis";
293 }
EventNumber_t event() const
Definition: EventID.h:40
bool mode() const
Definition: HGCSample.h:67
uint16_t toa() const
Definition: HGCSample.h:69
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:138
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
wrapper for a data word
Definition: HGCSample.h:13
int depth() const
get the tower depth
Definition: HcalDetId.h:164
bool threshold() const
Definition: HGCSample.h:66
int layer() const
get the layer #
Definition: HFNoseDetId.h:55
int layer() const
get the layer #
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
bool isValid() const
Definition: HandleBase.h:70
Definition: DetId.h:17
constexpr double pedestal(int fCapId) const
get pedestal for capid=0..3
T const * product() const
Definition: Handle.h:69
const HcalQIECoder * getHcalCoder(const HcalGenericDetId &fId) const
void digiValidation(const T1 &detId, const T2 *geom, int layer, uint16_t adc, double charge, bool mode, bool threshold)
edm::EDGetToken digiSource_
const HcalQIEShape * getHcalShape(const HcalGenericDetId &fId) const
std::map< int, int > OccupancyMap_minus_
int layer() const
get the layer #
std::map< int, int > OccupancyMap_plus_
edm::EventID id() const
Definition: EventBase.h:59
size_type size() const
T get() const
Definition: EventSetup.h:73
bool isValid() const
Definition: ESHandle.h:44
const HcalCalibrations & getHcalCalibrations(const HcalGenericDetId &fId) const
uint16_t data() const
Definition: HGCSample.h:70
T const * product() const
Definition: ESHandle.h:86
int layer() const
get the layer #
Definition: HGCalDetId.h:46
void HGCalDigiValidation::bookHistograms ( DQMStore::IBooker iB,
edm::Run const &  ,
edm::EventSetup const &   
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 381 of file HGCalDigiValidation.cc.

References ADC_, dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), dqm::dqmstoreimpl::DQMStore::IBooker::book2D(), DEFINE_FWK_MODULE, DigiOccupancy_Minus_, DigiOccupancy_Plus_, DigiOccupancy_XY_, firstLayer_, layers_, MeanDigiOccupancy_Minus_, MeanDigiOccupancy_Plus_, nameDetector_, dqm::dqmstoreimpl::DQMStore::IBooker::setCurrentFolder(), TOA_, and TOT_.

Referenced by ~HGCalDigiValidation().

381  {
382  iB.setCurrentFolder("HGCAL/HGCalDigisV/" + nameDetector_);
383 
384  std::ostringstream histoname;
385  for (int il = 0; il < layers_; ++il) {
386  int ilayer = firstLayer_ + il;
387  auto istr1 = std::to_string(ilayer);
388  while (istr1.size() < 2) {
389  istr1.insert(0, "0");
390  }
391  histoname.str("");
392  histoname << "TOA_"
393  << "layer_" << istr1;
394  TOA_.push_back(iB.book1D(histoname.str().c_str(), "toa_", 1024, 0, 1024));
395 
396  histoname.str("");
397  histoname << "ADC_"
398  << "layer_" << istr1;
399  ADC_.push_back(iB.book1D(histoname.str().c_str(), "ADCDigiOccupancy", 1024, 0, 1024));
400 
401  histoname.str("");
402  histoname << "TOT_"
403  << "layer_" << istr1;
404  TOT_.push_back(iB.book1D(histoname.str().c_str(), "TOTDigiOccupancy", 4096, 0, 4096));
405 
406  histoname.str("");
407  histoname << "DigiOccupancy_XY_"
408  << "layer_" << istr1;
409  DigiOccupancy_XY_.push_back(iB.book2D(histoname.str().c_str(), "DigiOccupancy", 50, -500, 500, 50, -500, 500));
410 
411  histoname.str("");
412  histoname << "DigiOccupancy_Plus_"
413  << "layer_" << istr1;
414  DigiOccupancy_Plus_.push_back(iB.book1D(histoname.str().c_str(), "DigiOccupancy +z", 100, 0, 1000));
415  histoname.str("");
416  histoname << "DigiOccupancy_Minus_"
417  << "layer_" << istr1;
418  DigiOccupancy_Minus_.push_back(iB.book1D(histoname.str().c_str(), "DigiOccupancy -z", 100, 0, 1000));
419  }
420 
421  histoname.str("");
422  histoname << "SUMOfDigiOccupancy_Plus";
423  MeanDigiOccupancy_Plus_ = iB.book1D(histoname.str().c_str(), "SUMOfDigiOccupancy_Plus", layers_, -0.5, layers_ - 0.5);
424  histoname.str("");
425  histoname << "SUMOfRecDigiOccupancy_Minus";
427  iB.book1D(histoname.str().c_str(), "SUMOfDigiOccupancy_Minus", layers_, -0.5, layers_ - 0.5);
428 }
std::vector< MonitorElement * > TOA_
std::vector< MonitorElement * > DigiOccupancy_XY_
std::vector< MonitorElement * > TOT_
std::vector< MonitorElement * > DigiOccupancy_Minus_
MonitorElement * MeanDigiOccupancy_Minus_
std::vector< MonitorElement * > ADC_
MonitorElement * MeanDigiOccupancy_Plus_
std::vector< MonitorElement * > DigiOccupancy_Plus_
template<class T1 , class T2 >
void HGCalDigiValidation::digiValidation ( const T1 &  detId,
const T2 *  geom,
int  layer,
uint16_t  adc,
double  charge,
bool  mode,
bool  threshold 
)
private

Definition at line 296 of file HGCalDigiValidation.cc.

References ecalMGPA::adc(), HGCalDigiValidation::digiInfo::adc, ALCARECOTkAlJpsiMuMu_cff::charge, HGCalDigiValidation::digiInfo::charge, TauDecayModes::dec, fillDigiInfo(), fillOccupancyMap(), firstLayer_, globals_cff::id1, HGCalDigiValidation::digiInfo::layer, HGCalDigiValidation::digiInfo::mode, ALCARECOPromptCalibProdSiPixelAli0T_cff::mode, OccupancyMap_minus_, OccupancyMap_plus_, MessageLogger_cff::threshold, HGCalDigiValidation::digiInfo::threshold, verbosity_, HGCalDigiValidation::digiInfo::x, HGCalDigiValidation::digiInfo::y, and HGCalDigiValidation::digiInfo::z.

Referenced by analyze(), and ~HGCalDigiValidation().

297  {
298  if (verbosity_ > 1)
299  edm::LogVerbatim("HGCalValidation") << std::hex << detId.rawId() << std::dec << " " << detId.rawId();
300  DetId id1 = DetId(detId.rawId());
301  const GlobalPoint& global1 = geom->getPosition(id1);
302 
303  if (verbosity_ > 1)
304  edm::LogVerbatim("HGCalValidation") << " adc = " << adc << " toa = " << charge;
305 
306  digiInfo hinfo;
307  hinfo.x = global1.x();
308  hinfo.y = global1.y();
309  hinfo.z = global1.z();
310  hinfo.adc = adc;
311  hinfo.charge = charge;
312  hinfo.layer = layer - firstLayer_;
313  hinfo.mode = mode;
314  hinfo.threshold = threshold;
315 
316  if (verbosity_ > 1)
317  edm::LogVerbatim("HGCalValidation") << "gx = " << hinfo.x << " gy = " << hinfo.y << " gz = " << hinfo.z;
318 
319  if (global1.eta() > 0)
320  fillOccupancyMap(OccupancyMap_plus_, hinfo.layer);
321  else
323 
324  fillDigiInfo(hinfo);
325 }
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
Definition: DetId.h:17
std::map< int, int > OccupancyMap_minus_
std::map< int, int > OccupancyMap_plus_
void fillOccupancyMap(std::map< int, int > &OccupancyMap, int layer)
void HGCalDigiValidation::dqmBeginRun ( const edm::Run ,
const edm::EventSetup iSetup 
)
override

Definition at line 361 of file HGCalDigiValidation.cc.

References HGCalDDDConstants::firstLayer(), firstLayer_, edm::EventSetup::get(), HcalDDDRecConstants::getMaxDepth(), HGCalDDDConstants::layers(), layers_, nameDetector_, and verbosity_.

Referenced by ~HGCalDigiValidation().

361  {
362  if (nameDetector_ == "HCal") {
364  iSetup.get<HcalRecNumberingRecord>().get(pHRNDC);
365  const HcalDDDRecConstants* hcons = &(*pHRNDC);
366  layers_ = hcons->getMaxDepth(1);
367  } else {
369  iSetup.get<IdealGeometryRecord>().get(nameDetector_, pHGDC);
370  const HGCalDDDConstants& hgcons_ = (*pHGDC);
371  layers_ = hgcons_.layers(true);
372  firstLayer_ = hgcons_.firstLayer();
373  }
374 
375  if (verbosity_ > 0)
376  edm::LogVerbatim("HGCalValidation") << "current DQM directory: "
377  << "HGCAL/HGCalDigisV/" << nameDetector_ << " layer = " << layers_
378  << " with the first one at " << firstLayer_;
379 }
unsigned int layers(bool reco) const
int getMaxDepth(const int &type) const
T get() const
Definition: EventSetup.h:73
int firstLayer() const
void HGCalDigiValidation::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 127 of file HGCalDigiValidation.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addUntracked(), HLT_2018_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by ~HGCalDigiValidation().

127  {
129  desc.add<std::string>("DetectorName", "HGCalEESensitive");
130  desc.add<edm::InputTag>("DigiSource", edm::InputTag("hgcalDigis", "EE"));
131  desc.add<bool>("ifNose", false);
132  desc.add<bool>("ifHCAL", false);
133  desc.addUntracked<int>("Verbosity", 0);
134  desc.addUntracked<int>("SampleIndx", 2); // central bx
135  descriptions.add("hgcalDigiValidationEEDefault", desc);
136 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void HGCalDigiValidation::fillDigiInfo ( digiInfo hinfo)
private

Definition at line 334 of file HGCalDigiValidation.cc.

References HGCalDigiValidation::digiInfo::adc, ADC_, HGCalDigiValidation::digiInfo::charge, DigiOccupancy_XY_, HGCalDigiValidation::digiInfo::layer, HGCalDigiValidation::digiInfo::mode, HGCalDigiValidation::digiInfo::threshold, TOA_, TOT_, HGCalDigiValidation::digiInfo::x, and HGCalDigiValidation::digiInfo::y.

334  {
335  int ilayer = hinfo.layer;
336  TOA_.at(ilayer)->Fill(hinfo.charge);
337 
338  if (hinfo.mode) {
339  TOT_.at(ilayer)->Fill(hinfo.adc);
340  }
341 
342  if (!hinfo.mode && hinfo.threshold) {
343  ADC_.at(ilayer)->Fill(hinfo.adc);
344  DigiOccupancy_XY_.at(ilayer)->Fill(hinfo.x, hinfo.y);
345  }
346 }
std::vector< MonitorElement * > TOA_
std::vector< MonitorElement * > DigiOccupancy_XY_
std::vector< MonitorElement * > TOT_
std::vector< MonitorElement * > ADC_
void HGCalDigiValidation::fillDigiInfo ( )
private

Definition at line 348 of file HGCalDigiValidation.cc.

References DigiOccupancy_Minus_, DigiOccupancy_Plus_, OccupancyMap_minus_, and OccupancyMap_plus_.

Referenced by analyze(), digiValidation(), and ~HGCalDigiValidation().

348  {
349  for (const auto& itr : OccupancyMap_plus_) {
350  int layer = itr.first;
351  int occupancy = itr.second;
352  DigiOccupancy_Plus_.at(layer)->Fill(occupancy);
353  }
354  for (const auto& itr : OccupancyMap_minus_) {
355  int layer = itr.first;
356  int occupancy = itr.second;
357  DigiOccupancy_Minus_.at(layer)->Fill(occupancy);
358  }
359 }
std::vector< MonitorElement * > DigiOccupancy_Minus_
std::map< int, int > OccupancyMap_minus_
std::map< int, int > OccupancyMap_plus_
std::vector< MonitorElement * > DigiOccupancy_Plus_
void HGCalDigiValidation::fillOccupancyMap ( std::map< int, int > &  OccupancyMap,
int  layer 
)
private

Definition at line 327 of file HGCalDigiValidation.cc.

Referenced by digiValidation(), and ~HGCalDigiValidation().

327  {
328  if (OccupancyMap.find(layer) != OccupancyMap.end())
329  OccupancyMap[layer]++;
330  else
331  OccupancyMap[layer] = 1;
332 }

Member Data Documentation

std::vector<MonitorElement*> HGCalDigiValidation::ADC_
private

Definition at line 95 of file HGCalDigiValidation.cc.

Referenced by bookHistograms(), and fillDigiInfo().

std::vector<MonitorElement*> HGCalDigiValidation::DigiOccupancy_Minus_
private

Definition at line 98 of file HGCalDigiValidation.cc.

Referenced by bookHistograms(), and fillDigiInfo().

std::vector<MonitorElement*> HGCalDigiValidation::DigiOccupancy_Plus_
private

Definition at line 97 of file HGCalDigiValidation.cc.

Referenced by bookHistograms(), and fillDigiInfo().

std::vector<MonitorElement*> HGCalDigiValidation::DigiOccupancy_XY_
private

Definition at line 94 of file HGCalDigiValidation.cc.

Referenced by bookHistograms(), and fillDigiInfo().

edm::EDGetToken HGCalDigiValidation::digiSource_
private

Definition at line 85 of file HGCalDigiValidation.cc.

Referenced by analyze(), and HGCalDigiValidation().

int HGCalDigiValidation::firstLayer_
private

Definition at line 88 of file HGCalDigiValidation.cc.

Referenced by bookHistograms(), digiValidation(), and dqmBeginRun().

bool HGCalDigiValidation::ifHCAL_
private

Definition at line 86 of file HGCalDigiValidation.cc.

Referenced by analyze(), and HGCalDigiValidation().

bool HGCalDigiValidation::ifNose_
private

Definition at line 86 of file HGCalDigiValidation.cc.

int HGCalDigiValidation::layers_
private

Definition at line 88 of file HGCalDigiValidation.cc.

Referenced by bookHistograms(), and dqmBeginRun().

MonitorElement* HGCalDigiValidation::MeanDigiOccupancy_Minus_
private

Definition at line 100 of file HGCalDigiValidation.cc.

Referenced by bookHistograms().

MonitorElement* HGCalDigiValidation::MeanDigiOccupancy_Plus_
private

Definition at line 99 of file HGCalDigiValidation.cc.

Referenced by bookHistograms().

std::string HGCalDigiValidation::nameDetector_
private

Definition at line 84 of file HGCalDigiValidation.cc.

Referenced by analyze(), bookHistograms(), dqmBeginRun(), and HGCalDigiValidation().

std::map<int, int> HGCalDigiValidation::OccupancyMap_minus_
private

Definition at line 91 of file HGCalDigiValidation.cc.

Referenced by analyze(), digiValidation(), and fillDigiInfo().

std::map<int, int> HGCalDigiValidation::OccupancyMap_plus_
private

Definition at line 90 of file HGCalDigiValidation.cc.

Referenced by analyze(), digiValidation(), and fillDigiInfo().

int HGCalDigiValidation::SampleIndx_
private

Definition at line 87 of file HGCalDigiValidation.cc.

Referenced by analyze().

std::vector<MonitorElement*> HGCalDigiValidation::TOA_
private

Definition at line 93 of file HGCalDigiValidation.cc.

Referenced by bookHistograms(), and fillDigiInfo().

std::vector<MonitorElement*> HGCalDigiValidation::TOT_
private

Definition at line 96 of file HGCalDigiValidation.cc.

Referenced by bookHistograms(), and fillDigiInfo().

int HGCalDigiValidation::verbosity_
private

Definition at line 87 of file HGCalDigiValidation.cc.

Referenced by analyze(), digiValidation(), and dqmBeginRun().