CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
EcalMixingModuleValidation Class Reference

#include <EcalMixingModuleValidation.h>

Inheritance diagram for EcalMixingModuleValidation:
DQMOneEDAnalyzer<> edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::Accumulator, Args...> edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

void bookHistograms (DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
 
 EcalMixingModuleValidation (const edm::ParameterSet &ps)
 Constructor. More...
 
 ~EcalMixingModuleValidation () override
 Destructor. More...
 
- Public Member Functions inherited from DQMOneEDAnalyzer<>
void accumulate (edm::Event const &event, edm::EventSetup const &setup) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
 DQMOneEDAnalyzer ()
 
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::Accumulator, Args...>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () 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
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex >
const & 
esGetTokenRecordIndicesVector (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::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void analyze (edm::Event const &e, edm::EventSetup const &c) override
 Analyze. More...
 
void dqmBeginRun (edm::Run const &, edm::EventSetup const &) override
 
void dqmEndRun (const edm::Run &r, const edm::EventSetup &c) override
 
- 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)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 

Private Types

typedef std::map< uint32_t,
float, std::less< uint32_t > > 
MapType
 

Private Member Functions

void bunchSumTest (std::vector< MonitorElement * > &theBunches, MonitorElement *&theTotal, MonitorElement *&theRatio, int nSample)
 
void checkCalibrations (edm::EventSetup const &c)
 
void checkPedestals (const edm::EventSetup &c)
 
void computeSDBunchDigi (const edm::EventSetup &eventSetup, const MixCollection< PCaloHit > &theHits, MapType &ebSignalSimMap, const EcalSubdetector &thisDet, const double &theSimThreshold, CLHEP::HepRandomEngine *)
 
void findPedestal (const DetId &detId, int gainId, double &ped) const
 
CLHEP::HepRandomEngine * randomEngine (edm::StreamID const &streamID)
 

Private Attributes

double barrelADCtoGeV_
 
edm::EDGetTokenT
< CrossingFrame< PCaloHit > > 
crossingFramePCaloHitEBToken_
 
edm::EDGetTokenT
< CrossingFrame< PCaloHit > > 
crossingFramePCaloHitEEToken_
 
edm::EDGetTokenT
< CrossingFrame< PCaloHit > > 
crossingFramePCaloHitESToken_
 
edm::ESGetToken< EcalPedestals,
EcalPedestalsRcd
dbPed
 
edm::EDGetTokenT
< EBDigiCollection
EBdigiCollectionToken_
 
edm::EDGetTokenT
< EEDigiCollection
EEdigiCollectionToken_
 
double endcapADCtoGeV_
 
double esADCtokeV_
 
double esBaseline_
 
edm::EDGetTokenT
< ESDigiCollection
ESdigiCollectionToken_
 
edm::ESGetToken< ESGain,
ESGainRcd
esgain_
 
edm::ESGetToken
< ESIntercalibConstants,
ESIntercalibConstantsRcd
esMIPs_
 
edm::ESGetToken
< ESMIPToGeVConstant,
ESMIPToGeVConstantRcd
esMIPToGeV_
 
edm::ESGetToken< ESPedestals,
ESPedestalsRcd
esPedestals_
 
double esThreshold_
 
std::map< int, double,
std::less< int > > 
gainConv_
 
edm::EDGetTokenT
< edm::HepMCProduct
HepMCToken_
 
edm::ESGetToken< CaloGeometry,
CaloGeometryRecord
hGeometry
 
double m_ESeffwei
 
int m_ESgain
 
const ESIntercalibConstantsm_ESmips
 
const ESPedestalsm_ESpeds
 
MonitorElementmeEBbunchCrossing_
 
MonitorElementmeEBBunchShape_ [nBunch]
 
MonitorElementmeEBDigiMixRatiogt100ADC_
 
MonitorElementmeEBDigiMixRatioOriggt50pc_
 
MonitorElementmeEBShape_
 
MonitorElementmeEBShapeRatio_
 
MonitorElementmeEEbunchCrossing_
 
MonitorElementmeEEBunchShape_ [nBunch]
 
MonitorElementmeEEDigiMixRatiogt100ADC_
 
MonitorElementmeEEDigiMixRatioOriggt40pc_
 
MonitorElementmeEEShape_
 
MonitorElementmeEEShapeRatio_
 
MonitorElementmeESbunchCrossing_
 
MonitorElementmeESBunchShape_ [nBunch]
 
MonitorElementmeESShape_
 
MonitorElementmeESShapeRatio_
 
std::string outputFile_
 
edm::ESGetToken
< EcalADCToGeVConstant,
EcalADCToGeVConstantRcd
pAgc
 
std::vector
< CLHEP::HepRandomEngine * > 
randomEngines_
 
std::unique_ptr< CaloHitResponsetheEBResponse
 
std::unique_ptr< EBShapetheEBShape
 
std::unique_ptr< CaloHitResponsetheEEResponse
 
std::unique_ptr< EEShapetheEEShape
 
std::unique_ptr< CaloHitResponsetheESResponse
 
std::unique_ptr< ESShapetheESShape
 
const CaloGeometrytheGeometry
 
int theMaxBunch
 
int theMinBunch
 
std::unique_ptr< const
EcalSimParameterMap
theParameterMap
 
const EcalPedestalsthePedestals
 
bool verbose_
 

Static Private Attributes

static const int nBunch = 21
 

Additional Inherited Members

- Public Types inherited from DQMOneEDAnalyzer<>
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
 
- 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 Attributes inherited from DQMOneEDAnalyzer<>
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 75 of file EcalMixingModuleValidation.h.

Member Typedef Documentation

typedef std::map<uint32_t, float, std::less<uint32_t> > EcalMixingModuleValidation::MapType
private

Definition at line 76 of file EcalMixingModuleValidation.h.

Constructor & Destructor Documentation

EcalMixingModuleValidation::EcalMixingModuleValidation ( const edm::ParameterSet ps)

Constructor.

Definition at line 19 of file EcalMixingModuleValidation.cc.

References barrelADCtoGeV_, ecalTPGAnalyzer_cfg::binOfMaximum, edm::EDConsumerBase::consumesCollector(), endcapADCtoGeV_, gainConv_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), mps_fire::i, meEBbunchCrossing_, meEBBunchShape_, meEBDigiMixRatiogt100ADC_, meEBDigiMixRatioOriggt50pc_, meEBShape_, meEBShapeRatio_, meEEbunchCrossing_, meEEBunchShape_, meEEDigiMixRatiogt100ADC_, meEEDigiMixRatioOriggt40pc_, meEEShape_, meEEShapeRatio_, meESbunchCrossing_, meESBunchShape_, meESShape_, meESShapeRatio_, nBunch, theEBResponse, theEBShape, theEEResponse, theEEShape, theESResponse, theESShape, theMaxBunch, theMinBunch, theParameterMap, and verbose_.

20  : HepMCToken_(consumes<edm::HepMCProduct>(edm::InputTag(ps.getParameter<std::string>("moduleLabelMC")))),
21  EBdigiCollectionToken_(consumes<EBDigiCollection>(ps.getParameter<edm::InputTag>("EBdigiCollection"))),
22  EEdigiCollectionToken_(consumes<EEDigiCollection>(ps.getParameter<edm::InputTag>("EEdigiCollection"))),
23  ESdigiCollectionToken_(consumes<ESDigiCollection>(ps.getParameter<edm::InputTag>("ESdigiCollection"))),
25  edm::InputTag(std::string("mix"), ps.getParameter<std::string>("hitsProducer") + std::string("EcalHitsEB")))),
27  edm::InputTag(std::string("mix"), ps.getParameter<std::string>("hitsProducer") + std::string("EcalHitsEE")))),
29  edm::InputTag(std::string("mix"), ps.getParameter<std::string>("hitsProducer") + std::string("EcalHitsES")))),
30  pAgc(esConsumes<edm::Transition::BeginRun>()),
31  esgain_(esConsumes<edm::Transition::BeginRun>()),
32  esMIPToGeV_(esConsumes<edm::Transition::BeginRun>()),
33  esPedestals_(esConsumes<edm::Transition::BeginRun>()),
34  esMIPs_(esConsumes<edm::Transition::BeginRun>()),
35  dbPed(esConsumes()),
37  // needed for MixingModule checks
38 
39  double simHitToPhotoelectronsBarrel = ps.getParameter<double>("simHitToPhotoelectronsBarrel");
40  double simHitToPhotoelectronsEndcap = ps.getParameter<double>("simHitToPhotoelectronsEndcap");
41  double photoelectronsToAnalogBarrel = ps.getParameter<double>("photoelectronsToAnalogBarrel");
42  double photoelectronsToAnalogEndcap = ps.getParameter<double>("photoelectronsToAnalogEndcap");
43  double samplingFactor = ps.getParameter<double>("samplingFactor");
44  double timePhase = ps.getParameter<double>("timePhase");
45  int readoutFrameSize = ps.getParameter<int>("readoutFrameSize");
46  int binOfMaximum = ps.getParameter<int>("binOfMaximum");
47  bool doPhotostatistics = ps.getParameter<bool>("doPhotostatistics");
48  bool syncPhase = ps.getParameter<bool>("syncPhase");
49 
50  doPhotostatistics = false;
51 
52  theParameterMap = std::make_unique<EcalSimParameterMap>(simHitToPhotoelectronsBarrel,
53  simHitToPhotoelectronsEndcap,
54  photoelectronsToAnalogBarrel,
55  photoelectronsToAnalogEndcap,
56  samplingFactor,
57  timePhase,
58  readoutFrameSize,
60  doPhotostatistics,
61  syncPhase);
62  //theEcalShape = new EcalShape(timePhase);
63 
64  //theEcalResponse = new CaloHitResponse(theParameterMap, theEcalShape);
65 
66  /*
67  int ESGain = ps.getParameter<int>("ESGain");
68  double ESNoiseSigma = ps.getParameter<double> ("ESNoiseSigma");
69  int ESBaseline = ps.getParameter<int>("ESBaseline");
70  double ESMIPADC = ps.getParameter<double>("ESMIPADC");
71  double ESMIPkeV = ps.getParameter<double>("ESMIPkeV");
72 */
73 
74  theESShape = std::make_unique<ESShape>();
75  theEBShape = std::make_unique<EBShape>(consumesCollector());
76  theEEShape = std::make_unique<EEShape>(consumesCollector());
77 
78  theESResponse = std::make_unique<CaloHitResponse>(theParameterMap.get(), theESShape.get());
79  theEBResponse = std::make_unique<CaloHitResponse>(theParameterMap.get(), theEBShape.get());
80  theEEResponse = std::make_unique<CaloHitResponse>(theParameterMap.get(), theEEShape.get());
81 
82  // double effwei = 1.;
83 
84  /*
85  if (ESGain == 0)
86  effwei = 1.45;
87  else if (ESGain == 1)
88  effwei = 0.9066;
89  else if (ESGain == 2)
90  effwei = 0.8815;
91 
92  esBaseline_ = (double)ESBaseline;
93  esADCtokeV_ = 1000000.*ESMIPADC/ESMIPkeV;
94  esThreshold_ = 3.*effwei*ESNoiseSigma/esADCtokeV_;
95 */
96  theMinBunch = -10;
97  theMaxBunch = 10;
98 
99  // verbosity switch
100  verbose_ = ps.getUntrackedParameter<bool>("verbose", false);
101 
102  gainConv_[1] = 1.;
103  gainConv_[2] = 2.;
104  gainConv_[3] = 12.;
105  gainConv_[0] = 12.;
106  barrelADCtoGeV_ = 0.035;
107  endcapADCtoGeV_ = 0.06;
108 
109  meEBDigiMixRatiogt100ADC_ = nullptr;
110  meEEDigiMixRatiogt100ADC_ = nullptr;
111 
112  meEBDigiMixRatioOriggt50pc_ = nullptr;
113  meEEDigiMixRatioOriggt40pc_ = nullptr;
114 
115  meEBbunchCrossing_ = nullptr;
116  meEEbunchCrossing_ = nullptr;
117  meESbunchCrossing_ = nullptr;
118 
119  for (int i = 0; i < nBunch; i++) {
120  meEBBunchShape_[i] = nullptr;
121  meEEBunchShape_[i] = nullptr;
122  meESBunchShape_[i] = nullptr;
123  }
124 
125  meEBShape_ = nullptr;
126  meEEShape_ = nullptr;
127  meESShape_ = nullptr;
128 
129  meEBShapeRatio_ = nullptr;
130  meEEShapeRatio_ = nullptr;
131  meESShapeRatio_ = nullptr;
132 }
edm::ESGetToken< EcalPedestals, EcalPedestalsRcd > dbPed
T getUntrackedParameter(std::string const &, T const &) const
std::unique_ptr< EEShape > theEEShape
edm::EDGetTokenT< edm::HepMCProduct > HepMCToken_
MonitorElement * meEEBunchShape_[nBunch]
edm::EDGetTokenT< EBDigiCollection > EBdigiCollectionToken_
std::unique_ptr< const EcalSimParameterMap > theParameterMap
MonitorElement * meEBBunchShape_[nBunch]
edm::EDGetTokenT< CrossingFrame< PCaloHit > > crossingFramePCaloHitEEToken_
edm::ESGetToken< ESMIPToGeVConstant, ESMIPToGeVConstantRcd > esMIPToGeV_
std::unique_ptr< CaloHitResponse > theEBResponse
edm::ESGetToken< ESGain, ESGainRcd > esgain_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
std::unique_ptr< CaloHitResponse > theESResponse
MonitorElement * meESBunchShape_[nBunch]
std::unique_ptr< CaloHitResponse > theEEResponse
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
std::unique_ptr< ESShape > theESShape
edm::EDGetTokenT< CrossingFrame< PCaloHit > > crossingFramePCaloHitEBToken_
std::map< int, double, std::less< int > > gainConv_
std::unique_ptr< EBShape > theEBShape
edm::EDGetTokenT< ESDigiCollection > ESdigiCollectionToken_
edm::ESGetToken< ESPedestals, ESPedestalsRcd > esPedestals_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::ESGetToken< EcalADCToGeVConstant, EcalADCToGeVConstantRcd > pAgc
edm::EDGetTokenT< CrossingFrame< PCaloHit > > crossingFramePCaloHitESToken_
edm::ESGetToken< ESIntercalibConstants, ESIntercalibConstantsRcd > esMIPs_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > hGeometry
edm::EDGetTokenT< EEDigiCollection > EEdigiCollectionToken_
EcalMixingModuleValidation::~EcalMixingModuleValidation ( )
override

Destructor.

Definition at line 134 of file EcalMixingModuleValidation.cc.

134 {}

Member Function Documentation

void EcalMixingModuleValidation::analyze ( edm::Event const &  e,
edm::EventSetup const &  c 
)
overrideprotectedvirtual

Analyze.

Reimplemented from DQMOneEDAnalyzer<>.

Definition at line 277 of file EcalMixingModuleValidation.cc.

References ESSample::adc(), EcalMGPASample::adc(), barrelADCtoGeV_, HLT_FULL_cff::barrelHits, checkPedestals(), computeSDBunchDigi(), crossingFramePCaloHitEBToken_, crossingFramePCaloHitEEToken_, crossingFramePCaloHitESToken_, EBdigiCollectionToken_, EcalBarrel, EcalEndcap, EcalPreshower, EEdigiCollectionToken_, edm::DataFrameContainer::empty(), endcapADCtoGeV_, HLT_FULL_cff::endcapHits, esADCtokeV_, esBaseline_, ESdigiCollectionToken_, esThreshold_, dqm::impl::MonitorElement::Fill(), ESCondObjectContainer< T >::find(), findPedestal(), gainConv_, EcalMGPASample::gainId(), edm::Event::getByToken(), ESCondObjectContainer< T >::getMap(), HepMCToken_, mps_fire::i, ESDataFrame::id(), EEDataFrame::id(), EBDataFrame::id(), EBDetId::ieta(), EBDetId::iphi(), PixelPluginsPhase0_cfi::isBarrel, GeomDetEnumerators::isEndcap(), edm::HandleBase::isValid(), EEDetId::ix(), EEDetId::iy(), LogDebug, m_ESeffwei, m_ESmips, m_ESpeds, ESDataFrame::MAXSAMPLES, EcalDataFrame::MAXSAMPLES, meEBbunchCrossing_, meEBDigiMixRatiogt100ADC_, meEBDigiMixRatioOriggt50pc_, meEBShape_, meEEbunchCrossing_, meEEDigiMixRatiogt100ADC_, meEEDigiMixRatioOriggt40pc_, meEEShape_, meESbunchCrossing_, meESShape_, ecalTB2006H4_GenSimDigiReco_cfg::mySample, AlCaHLTBitMon_ParallelJobs::p, ESDetId::plane(), ootPhotons_cff::preshowerHits, edm::Handle< T >::product(), randomEngine(), DetId::rawId(), compare_using_db::sample, ESDetId::six(), ESDetId::siy(), ESDataFrame::size(), EcalDataFrame::size(), edm::DataFrameContainer::size(), edm::Event::streamID(), ESDetId::strip(), ESDetId::zside(), and EEDetId::zside().

277  {
278  //LogInfo("EventInfo") << " Run = " << e.id().run() << " Event = " << e.id().event();
279 
280  checkPedestals(c);
281 
282  std::vector<SimTrack> theSimTracks;
283  std::vector<SimVertex> theSimVertexes;
284 
286  edm::Handle<CrossingFrame<PCaloHit> > crossingFrame;
290 
291  bool skipMC = false;
292  e.getByToken(HepMCToken_, MCEvt);
293  if (!MCEvt.isValid()) {
294  skipMC = true;
295  }
296 
297  const EBDigiCollection* EBdigis = nullptr;
298  const EEDigiCollection* EEdigis = nullptr;
299  const ESDigiCollection* ESdigis = nullptr;
300 
301  bool isBarrel = true;
302  e.getByToken(EBdigiCollectionToken_, EcalDigiEB);
303  if (EcalDigiEB.isValid()) {
304  EBdigis = EcalDigiEB.product();
305  LogDebug("DigiInfo") << "total # EBdigis: " << EBdigis->size();
306  if (EBdigis->empty())
307  isBarrel = false;
308  } else {
309  isBarrel = false;
310  }
311 
312  bool isEndcap = true;
313  e.getByToken(EEdigiCollectionToken_, EcalDigiEE);
314  if (EcalDigiEE.isValid()) {
315  EEdigis = EcalDigiEE.product();
316  LogDebug("DigiInfo") << "total # EEdigis: " << EEdigis->size();
317  if (EEdigis->empty())
318  isEndcap = false;
319  } else {
320  isEndcap = false;
321  }
322 
323  bool isPreshower = true;
324  e.getByToken(ESdigiCollectionToken_, EcalDigiES);
325  if (EcalDigiES.isValid()) {
326  ESdigis = EcalDigiES.product();
327  LogDebug("DigiInfo") << "total # ESdigis: " << ESdigis->size();
328  if (ESdigis->empty())
329  isPreshower = false;
330  } else {
331  isPreshower = false;
332  }
333 
334  double theGunEnergy = 0.;
335  if (!skipMC) {
336  for (HepMC::GenEvent::particle_const_iterator p = MCEvt->GetEvent()->particles_begin();
337  p != MCEvt->GetEvent()->particles_end();
338  ++p) {
339  theGunEnergy = (*p)->momentum().e();
340  }
341  }
342  // in case no HepMC available, assume an arbitrary average energy for an interesting "gun"
343  else {
344  edm::LogWarning("DigiInfo") << "No HepMC available, using 30 GeV as giun energy";
345  theGunEnergy = 30.;
346  }
347 
348  // BARREL
349 
350  // loop over simHits
351 
352  if (isBarrel) {
353  e.getByToken(crossingFramePCaloHitEBToken_, crossingFrame);
354  const MixCollection<PCaloHit> barrelHits(crossingFrame.product());
355 
356  MapType ebSignalSimMap;
357 
358  double ebSimThreshold = 0.5 * theGunEnergy;
359 
360  for (auto const& iHit : barrelHits) {
361  EBDetId ebid = EBDetId(iHit.id());
362 
363  LogDebug("HitInfo") << " CaloHit " << iHit.getName() << "\n"
364  << " DetID = " << iHit.id() << " EBDetId = " << ebid.ieta() << " " << ebid.iphi() << "\n"
365  << " Time = " << iHit.time() << " Event id. = " << iHit.eventId().rawId() << "\n"
366  << " Track Id = " << iHit.geantTrackId() << "\n"
367  << " Energy = " << iHit.energy();
368 
369  uint32_t crystid = ebid.rawId();
370 
371  if (iHit.eventId().rawId() == 0)
372  ebSignalSimMap[crystid] += iHit.energy();
373 
374  if (meEBbunchCrossing_)
375  meEBbunchCrossing_->Fill(iHit.eventId().bunchCrossing());
376  }
377 
378  // loop over Digis
379 
380  const EBDigiCollection* barrelDigi = EcalDigiEB.product();
381 
382  std::vector<double> ebAnalogSignal;
383  std::vector<double> ebADCCounts;
384  std::vector<double> ebADCGains;
385  ebAnalogSignal.reserve(EBDataFrame::MAXSAMPLES);
386  ebADCCounts.reserve(EBDataFrame::MAXSAMPLES);
387  ebADCGains.reserve(EBDataFrame::MAXSAMPLES);
388 
389  for (unsigned int digis = 0; digis < EcalDigiEB->size(); ++digis) {
390  EBDataFrame ebdf = (*barrelDigi)[digis];
391  int nrSamples = ebdf.size();
392 
393  EBDetId ebid = ebdf.id();
394 
395  double Emax = 0.;
396  int Pmax = 0;
397 
398  for (int sample = 0; sample < nrSamples; ++sample) {
399  ebAnalogSignal[sample] = 0.;
400  ebADCCounts[sample] = 0.;
401  ebADCGains[sample] = -1.;
402  }
403 
404  for (int sample = 0; sample < nrSamples; ++sample) {
406 
407  ebADCCounts[sample] = (mySample.adc());
408  ebADCGains[sample] = (mySample.gainId());
409  ebAnalogSignal[sample] = (ebADCCounts[sample] * gainConv_[(int)ebADCGains[sample]] * barrelADCtoGeV_);
410  if (Emax < ebAnalogSignal[sample]) {
411  Emax = ebAnalogSignal[sample];
412  Pmax = sample;
413  }
414  LogDebug("DigiInfo") << "EB sample " << sample << " ADC counts = " << ebADCCounts[sample]
415  << " Gain Id = " << ebADCGains[sample] << " Analog eq = " << ebAnalogSignal[sample];
416  }
417  double pedestalPreSampleAnalog = 0.;
418  findPedestal(ebid, (int)ebADCGains[Pmax], pedestalPreSampleAnalog);
419  pedestalPreSampleAnalog *= gainConv_[(int)ebADCGains[Pmax]] * barrelADCtoGeV_;
420  double Erec = Emax - pedestalPreSampleAnalog;
421 
422  if (ebSignalSimMap[ebid.rawId()] != 0.) {
423  LogDebug("DigiInfo") << " Digi / Signal Hit = " << Erec << " / " << ebSignalSimMap[ebid.rawId()] << " gainConv "
424  << gainConv_[(int)ebADCGains[Pmax]];
425  if (Erec > 100. * barrelADCtoGeV_ && meEBDigiMixRatiogt100ADC_)
426  meEBDigiMixRatiogt100ADC_->Fill(Erec / ebSignalSimMap[ebid.rawId()]);
427  if (ebSignalSimMap[ebid.rawId()] > ebSimThreshold && meEBDigiMixRatioOriggt50pc_)
428  meEBDigiMixRatioOriggt50pc_->Fill(Erec / ebSignalSimMap[ebid.rawId()]);
429  if (ebSignalSimMap[ebid.rawId()] > ebSimThreshold && meEBShape_) {
430  for (int i = 0; i < 10; i++) {
431  pedestalPreSampleAnalog = 0.;
432  findPedestal(ebid, (int)ebADCGains[i], pedestalPreSampleAnalog);
433  pedestalPreSampleAnalog *= gainConv_[(int)ebADCGains[i]] * barrelADCtoGeV_;
434  meEBShape_->Fill(i, ebAnalogSignal[i] - pedestalPreSampleAnalog);
435  }
436  }
437  }
438  }
439 
440  EcalSubdetector thisDet = EcalBarrel;
441  computeSDBunchDigi(c, barrelHits, ebSignalSimMap, thisDet, ebSimThreshold, randomEngine(e.streamID()));
442  }
443 
444  // ENDCAP
445 
446  // loop over simHits
447 
448  if (isEndcap) {
449  e.getByToken(crossingFramePCaloHitEEToken_, crossingFrame);
450  const MixCollection<PCaloHit> endcapHits(crossingFrame.product());
451  MapType eeSignalSimMap;
452 
453  double eeSimThreshold = 0.4 * theGunEnergy;
454 
455  for (auto const& iHit : endcapHits) {
456  EEDetId eeid = EEDetId(iHit.id());
457 
458  LogDebug("HitInfo") << " CaloHit " << iHit.getName() << "\n"
459  << " DetID = " << iHit.id() << " EEDetId side = " << eeid.zside() << " = " << eeid.ix() << " "
460  << eeid.iy() << "\n"
461  << " Time = " << iHit.time() << " Event id. = " << iHit.eventId().rawId() << "\n"
462  << " Track Id = " << iHit.geantTrackId() << "\n"
463  << " Energy = " << iHit.energy();
464 
465  uint32_t crystid = eeid.rawId();
466 
467  if (iHit.eventId().rawId() == 0)
468  eeSignalSimMap[crystid] += iHit.energy();
469 
470  if (meEEbunchCrossing_)
471  meEEbunchCrossing_->Fill(iHit.eventId().bunchCrossing());
472  }
473 
474  // loop over Digis
475 
476  const EEDigiCollection* endcapDigi = EcalDigiEE.product();
477 
478  std::vector<double> eeAnalogSignal;
479  std::vector<double> eeADCCounts;
480  std::vector<double> eeADCGains;
481  eeAnalogSignal.reserve(EEDataFrame::MAXSAMPLES);
482  eeADCCounts.reserve(EEDataFrame::MAXSAMPLES);
483  eeADCGains.reserve(EEDataFrame::MAXSAMPLES);
484 
485  for (unsigned int digis = 0; digis < EcalDigiEE->size(); ++digis) {
486  EEDataFrame eedf = (*endcapDigi)[digis];
487  int nrSamples = eedf.size();
488 
489  EEDetId eeid = eedf.id();
490 
491  double Emax = 0.;
492  int Pmax = 0;
493 
494  for (int sample = 0; sample < nrSamples; ++sample) {
495  eeAnalogSignal[sample] = 0.;
496  eeADCCounts[sample] = 0.;
497  eeADCGains[sample] = -1.;
498  }
499 
500  for (int sample = 0; sample < nrSamples; ++sample) {
501  EcalMGPASample mySample = eedf[sample];
502 
503  eeADCCounts[sample] = (mySample.adc());
504  eeADCGains[sample] = (mySample.gainId());
505  eeAnalogSignal[sample] = (eeADCCounts[sample] * gainConv_[(int)eeADCGains[sample]] * endcapADCtoGeV_);
506  if (Emax < eeAnalogSignal[sample]) {
507  Emax = eeAnalogSignal[sample];
508  Pmax = sample;
509  }
510  LogDebug("DigiInfo") << "EE sample " << sample << " ADC counts = " << eeADCCounts[sample]
511  << " Gain Id = " << eeADCGains[sample] << " Analog eq = " << eeAnalogSignal[sample];
512  }
513  double pedestalPreSampleAnalog = 0.;
514  findPedestal(eeid, (int)eeADCGains[Pmax], pedestalPreSampleAnalog);
515  pedestalPreSampleAnalog *= gainConv_[(int)eeADCGains[Pmax]] * endcapADCtoGeV_;
516  double Erec = Emax - pedestalPreSampleAnalog;
517 
518  if (eeSignalSimMap[eeid.rawId()] != 0.) {
519  LogDebug("DigiInfo") << " Digi / Signal Hit = " << Erec << " / " << eeSignalSimMap[eeid.rawId()] << " gainConv "
520  << gainConv_[(int)eeADCGains[Pmax]];
521  if (Erec > 100. * endcapADCtoGeV_ && meEEDigiMixRatiogt100ADC_)
522  meEEDigiMixRatiogt100ADC_->Fill(Erec / eeSignalSimMap[eeid.rawId()]);
523  if (eeSignalSimMap[eeid.rawId()] > eeSimThreshold && meEEDigiMixRatioOriggt40pc_)
524  meEEDigiMixRatioOriggt40pc_->Fill(Erec / eeSignalSimMap[eeid.rawId()]);
525  if (eeSignalSimMap[eeid.rawId()] > eeSimThreshold && meEBShape_) {
526  for (int i = 0; i < 10; i++) {
527  pedestalPreSampleAnalog = 0.;
528  findPedestal(eeid, (int)eeADCGains[i], pedestalPreSampleAnalog);
529  pedestalPreSampleAnalog *= gainConv_[(int)eeADCGains[i]] * endcapADCtoGeV_;
530  meEEShape_->Fill(i, eeAnalogSignal[i] - pedestalPreSampleAnalog);
531  }
532  }
533  }
534  }
535 
536  EcalSubdetector thisDet = EcalEndcap;
537  computeSDBunchDigi(c, endcapHits, eeSignalSimMap, thisDet, eeSimThreshold, randomEngine(e.streamID()));
538  }
539 
540  if (isPreshower) {
541  e.getByToken(crossingFramePCaloHitESToken_, crossingFrame);
542  const MixCollection<PCaloHit> preshowerHits(crossingFrame.product());
543 
544  MapType esSignalSimMap;
545 
546  for (auto const& iHit : preshowerHits) {
547  ESDetId esid = ESDetId(iHit.id());
548 
549  LogDebug("HitInfo") << " CaloHit " << iHit.getName() << "\n"
550  << " DetID = " << iHit.id() << "ESDetId: z side " << esid.zside() << " plane "
551  << esid.plane() << esid.six() << ',' << esid.siy() << ':' << esid.strip() << "\n"
552  << " Time = " << iHit.time() << " Event id. = " << iHit.eventId().rawId() << "\n"
553  << " Track Id = " << iHit.geantTrackId() << "\n"
554  << " Energy = " << iHit.energy();
555 
556  uint32_t stripid = esid.rawId();
557 
558  if (iHit.eventId().rawId() == 0)
559  esSignalSimMap[stripid] += iHit.energy();
560 
561  if (meESbunchCrossing_)
562  meESbunchCrossing_->Fill(iHit.eventId().bunchCrossing());
563 
564  // loop over Digis
565 
566  const ESDigiCollection* preshowerDigi = EcalDigiES.product();
567 
568  std::vector<double> esADCCounts;
569  std::vector<double> esADCAnalogSignal;
570  esADCCounts.reserve(ESDataFrame::MAXSAMPLES);
571  esADCAnalogSignal.reserve(ESDataFrame::MAXSAMPLES);
572 
573  for (unsigned int digis = 0; digis < EcalDigiES->size(); ++digis) {
574  ESDataFrame esdf = (*preshowerDigi)[digis];
575  int nrSamples = esdf.size();
576 
577  ESDetId esid = esdf.id();
578 
579  for (int sample = 0; sample < nrSamples; ++sample) {
580  esADCCounts[sample] = 0.;
581  esADCAnalogSignal[sample] = 0.;
582  }
583 
584  for (int sample = 0; sample < nrSamples; ++sample) {
585  ESSample mySample = esdf[sample];
586 
587  esADCCounts[sample] = (mySample.adc());
588  esBaseline_ = m_ESpeds->find(esid)->getMean();
589  const double factor(esADCtokeV_ / (*(m_ESmips->getMap().find(esid))));
590  esThreshold_ = 3. * m_ESeffwei * ((*m_ESpeds->find(esid)).getRms()) / factor;
591  esADCAnalogSignal[sample] = (esADCCounts[sample] - esBaseline_) / factor;
592  }
593  LogDebug("DigiInfo") << "Preshower Digi for ESDetId: z side " << esid.zside() << " plane " << esid.plane()
594  << esid.six() << ',' << esid.siy() << ':' << esid.strip();
595  for (int i = 0; i < 3; i++) {
596  LogDebug("DigiInfo") << "sample " << i << " ADC = " << esADCCounts[i]
597  << " Analog eq = " << esADCAnalogSignal[i];
598  }
599 
600  if (esSignalSimMap[esid.rawId()] > esThreshold_ && meESShape_) {
601  for (int i = 0; i < 3; i++) {
602  meESShape_->Fill(i, esADCAnalogSignal[i]);
603  }
604  }
605  }
606  }
607 
608  EcalSubdetector thisDet = EcalPreshower;
609  computeSDBunchDigi(c, preshowerHits, esSignalSimMap, thisDet, esThreshold_, randomEngine(e.streamID()));
610  }
611 }
void checkPedestals(const edm::EventSetup &c)
int strip() const
Definition: ESDetId.h:47
const edm::EventSetup & c
const ESIntercalibConstants * m_ESmips
int ix() const
Definition: EEDetId.h:77
key_type id() const
Definition: EBDataFrame.h:28
void findPedestal(const DetId &detId, int gainId, double &ped) const
std::map< uint32_t, float, std::less< uint32_t > > MapType
edm::EDGetTokenT< edm::HepMCProduct > HepMCToken_
const ESDetId & id() const
Definition: ESDataFrame.h:19
const self & getMap() const
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
edm::EDGetTokenT< EBDigiCollection > EBdigiCollectionToken_
int six() const
Definition: ESDetId.h:43
int size() const
Definition: ESDataFrame.h:21
edm::EDGetTokenT< CrossingFrame< PCaloHit > > crossingFramePCaloHitEEToken_
int gainId() const
get the gainId (2 bits)
int size() const
Definition: EcalDataFrame.h:26
int iphi() const
get the crystal iphi
Definition: EBDetId.h:51
void Fill(long long x)
int siy() const
Definition: ESDetId.h:45
static const int MAXSAMPLES
Definition: ESDataFrame.h:30
CLHEP::HepRandomEngine * randomEngine(edm::StreamID const &streamID)
const_iterator find(uint32_t rawId) const
int zside() const
Definition: EEDetId.h:71
int iy() const
Definition: EEDetId.h:83
string preshowerHits
int ieta() const
get the crystal ieta
Definition: EBDetId.h:49
int zside() const
Definition: ESDetId.h:39
bool isValid() const
Definition: HandleBase.h:70
bool isEndcap(GeomDetEnumerators::SubDetector m)
void computeSDBunchDigi(const edm::EventSetup &eventSetup, const MixCollection< PCaloHit > &theHits, MapType &ebSignalSimMap, const EcalSubdetector &thisDet, const double &theSimThreshold, CLHEP::HepRandomEngine *)
edm::EDGetTokenT< CrossingFrame< PCaloHit > > crossingFramePCaloHitEBToken_
key_type id() const
Definition: EEDataFrame.h:24
std::map< int, double, std::less< int > > gainConv_
edm::EDGetTokenT< ESDigiCollection > ESdigiCollectionToken_
T const * product() const
Definition: Handle.h:70
edm::EDGetTokenT< CrossingFrame< PCaloHit > > crossingFramePCaloHitESToken_
int plane() const
Definition: ESDetId.h:41
int adc() const
get the ADC sample (singed 16 bits)
Definition: ESSample.h:16
static constexpr int MAXSAMPLES
Definition: EcalDataFrame.h:48
Log< level::Warning, false > LogWarning
EcalSubdetector
edm::EDGetTokenT< EEDigiCollection > EEdigiCollectionToken_
int adc() const
get the ADC sample (12 bits)
#define LogDebug(id)
void EcalMixingModuleValidation::bookHistograms ( DQMStore::IBooker i,
edm::Run const &  ,
edm::EventSetup const &   
)
overridevirtual

Implements DQMOneEDAnalyzer<>.

Definition at line 142 of file EcalMixingModuleValidation.cc.

References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::bookProfile(), timingPdfMaker::histo, mps_fire::i, meEBbunchCrossing_, meEBBunchShape_, meEBDigiMixRatiogt100ADC_, meEBDigiMixRatioOriggt50pc_, meEBShape_, meEBShapeRatio_, meEEbunchCrossing_, meEEBunchShape_, meEEDigiMixRatiogt100ADC_, meEEDigiMixRatioOriggt40pc_, meEEShape_, meEEShapeRatio_, meESbunchCrossing_, meESBunchShape_, meESShape_, meESShapeRatio_, nBunch, and dqm::implementation::NavigatorBase::setCurrentFolder().

142  {
143  Char_t histo[200];
144 
145  ibooker.setCurrentFolder("EcalDigisV/EcalDigiTask");
146 
147  sprintf(histo, "EcalDigiTask Barrel maximum Digi over sim signal ratio gt 100 ADC");
148  meEBDigiMixRatiogt100ADC_ = ibooker.book1D(histo, histo, 200, 0., 100.);
149 
150  sprintf(histo, "EcalDigiTask Endcap maximum Digi over sim signal ratio gt 100 ADC");
151  meEEDigiMixRatiogt100ADC_ = ibooker.book1D(histo, histo, 200, 0., 100.);
152 
153  sprintf(histo, "EcalDigiTask Barrel maximum Digi over sim signal ratio signal gt 50pc gun");
154  meEBDigiMixRatioOriggt50pc_ = ibooker.book1D(histo, histo, 200, 0., 100.);
155 
156  sprintf(histo, "EcalDigiTask Endcap maximum Digi over sim signal ratio signal gt 40pc gun");
157  meEEDigiMixRatioOriggt40pc_ = ibooker.book1D(histo, histo, 200, 0., 100.);
158 
159  sprintf(histo, "EcalDigiTask Barrel bunch crossing");
160  meEBbunchCrossing_ = ibooker.book1D(histo, histo, 20, -10., 10.);
161 
162  sprintf(histo, "EcalDigiTask Endcap bunch crossing");
163  meEEbunchCrossing_ = ibooker.book1D(histo, histo, 20, -10., 10.);
164 
165  sprintf(histo, "EcalDigiTask Preshower bunch crossing");
166  meESbunchCrossing_ = ibooker.book1D(histo, histo, 20, -10., 10.);
167 
168  for (int i = 0; i < nBunch; i++) {
169  sprintf(histo, "EcalDigiTask Barrel shape bunch crossing %02d", i - 10);
170  meEBBunchShape_[i] = ibooker.bookProfile(histo, histo, 10, 0, 10, 4000, 0., 400.);
171 
172  sprintf(histo, "EcalDigiTask Endcap shape bunch crossing %02d", i - 10);
173  meEEBunchShape_[i] = ibooker.bookProfile(histo, histo, 10, 0, 10, 4000, 0., 400.);
174 
175  sprintf(histo, "EcalDigiTask Preshower shape bunch crossing %02d", i - 10);
176  meESBunchShape_[i] = ibooker.bookProfile(histo, histo, 3, 0, 3, 4000, 0., 400.);
177  }
178 
179  sprintf(histo, "EcalDigiTask Barrel shape digi");
180  meEBShape_ = ibooker.bookProfile(histo, histo, 10, 0, 10, 4000, 0., 2000.);
181 
182  sprintf(histo, "EcalDigiTask Endcap shape digi");
183  meEEShape_ = ibooker.bookProfile(histo, histo, 10, 0, 10, 4000, 0., 2000.);
184 
185  sprintf(histo, "EcalDigiTask Preshower shape digi");
186  meESShape_ = ibooker.bookProfile(histo, histo, 3, 0, 3, 4000, 0., 2000.);
187 
188  sprintf(histo, "EcalDigiTask Barrel shape digi ratio");
189  meEBShapeRatio_ = ibooker.book1D(histo, histo, 10, 0, 10.);
190 
191  sprintf(histo, "EcalDigiTask Endcap shape digi ratio");
192  meEEShapeRatio_ = ibooker.book1D(histo, histo, 10, 0, 10.);
193 
194  sprintf(histo, "EcalDigiTask Preshower shape digi ratio");
195  meESShapeRatio_ = ibooker.book1D(histo, histo, 3, 0, 3.);
196 }
MonitorElement * meEEBunchShape_[nBunch]
MonitorElement * meEBBunchShape_[nBunch]
MonitorElement * meESBunchShape_[nBunch]
void EcalMixingModuleValidation::bunchSumTest ( std::vector< MonitorElement * > &  theBunches,
MonitorElement *&  theTotal,
MonitorElement *&  theRatio,
int  nSample 
)
private

Definition at line 223 of file EcalMixingModuleValidation.cc.

References gather_cfg::cout, dqm::impl::MonitorElement::getBinContent(), dqm::impl::MonitorElement::getBinError(), funct::pow(), dqm::impl::MonitorElement::setBinContent(), dqm::impl::MonitorElement::setBinError(), mathSSE::sqrt(), theMaxBunch, theMinBunch, and dqmMemoryStats::total.

Referenced by dqmEndRun().

226  {
227  std::vector<double> bunchSum;
228  bunchSum.reserve(nSample);
229  std::vector<double> bunchSumErro;
230  bunchSumErro.reserve(nSample);
231  std::vector<double> total;
232  total.reserve(nSample);
233  std::vector<double> totalErro;
234  totalErro.reserve(nSample);
235  std::vector<double> ratio;
236  ratio.reserve(nSample);
237  std::vector<double> ratioErro;
238  ratioErro.reserve(nSample);
239 
240  for (int iEl = 0; iEl < nSample; iEl++) {
241  bunchSum[iEl] = 0.;
242  bunchSumErro[iEl] = 0.;
243  total[iEl] = 0.;
244  totalErro[iEl] = 0.;
245  ratio[iEl] = 0.;
246  ratioErro[iEl] = 0.;
247  }
248 
249  for (int iSample = 0; iSample < nSample; iSample++) {
250  total[iSample] += theTotal->getBinContent(iSample + 1);
251  totalErro[iSample] += theTotal->getBinError(iSample + 1);
252 
253  for (int iBunch = theMinBunch; iBunch <= theMaxBunch; iBunch++) {
254  int iHisto = iBunch - theMinBunch;
255 
256  bunchSum[iSample] += theBunches[iHisto]->getBinContent(iSample + 1);
257  bunchSumErro[iSample] += pow(theBunches[iHisto]->getBinError(iSample + 1), 2);
258  }
259  bunchSumErro[iSample] = sqrt(bunchSumErro[iSample]);
260 
261  if (bunchSum[iSample] > 0.) {
262  ratio[iSample] = total[iSample] / bunchSum[iSample];
263  ratioErro[iSample] =
264  sqrt(pow(totalErro[iSample] / bunchSum[iSample], 2) +
265  pow((total[iSample] * bunchSumErro[iSample]) / (bunchSum[iSample] * bunchSum[iSample]), 2));
266  }
267 
268  std::cout << " Sample = " << iSample << " Total = " << total[iSample] << " +- " << totalErro[iSample] << "\n"
269  << " Sum = " << bunchSum[iSample] << " +- " << bunchSumErro[iSample] << "\n"
270  << " Ratio = " << ratio[iSample] << " +- " << ratioErro[iSample] << std::endl;
271 
272  theRatio->setBinContent(iSample + 1, (float)ratio[iSample]);
273  theRatio->setBinError(iSample + 1, (float)ratioErro[iSample]);
274  }
275 }
virtual double getBinError(int binx) const
get uncertainty on content of bin (1-D) - See TH1::GetBinError for details
T sqrt(T t)
Definition: SSEVec.h:19
virtual double getBinContent(int binx) const
get content of bin (1-D)
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
tuple cout
Definition: gather_cfg.py:144
virtual void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
void EcalMixingModuleValidation::checkCalibrations ( edm::EventSetup const &  c)
private

Definition at line 613 of file EcalMixingModuleValidation.cc.

References barrelADCtoGeV_, endcapADCtoGeV_, esADCtokeV_, esgain_, esMIPs_, esMIPToGeV_, esPedestals_, EcalMGPAGainRatio::gain12Over6(), EcalMGPAGainRatio::gain6Over1(), gainConv_, edm::EventSetup::getData(), EcalADCToGeVConstant::getEBValue(), EcalADCToGeVConstant::getEEValue(), ESGain::getESGain(), ESMIPToGeVConstant::getESValueHigh(), ESMIPToGeVConstant::getESValueLow(), LogDebug, m_ESeffwei, m_ESgain, m_ESmips, m_ESpeds, pAgc, and theESShape.

Referenced by dqmBeginRun().

613  {
614  // ADC -> GeV Scale
615  const EcalADCToGeVConstant* agc = &eventSetup.getData(pAgc);
616 
617  EcalMGPAGainRatio defaultRatios;
618 
619  gainConv_[1] = 1.;
620  gainConv_[2] = defaultRatios.gain12Over6();
621  gainConv_[3] = gainConv_[2] * (defaultRatios.gain6Over1());
622  gainConv_[0] = gainConv_[2] * (defaultRatios.gain6Over1());
623 
624  LogDebug("EcalDigi") << " Gains conversions: "
625  << "\n"
626  << " g1 = " << gainConv_[1] << "\n"
627  << " g2 = " << gainConv_[2] << "\n"
628  << " g3 = " << gainConv_[3];
629 
630  const double barrelADCtoGeV_ = agc->getEBValue();
631  LogDebug("EcalDigi") << " Barrel GeV/ADC = " << barrelADCtoGeV_;
632  const double endcapADCtoGeV_ = agc->getEEValue();
633  LogDebug("EcalDigi") << " Endcap GeV/ADC = " << endcapADCtoGeV_;
634 
635  // ES condition objects
636  const ESGain* esgain = &eventSetup.getData(esgain_);
637  m_ESpeds = &eventSetup.getData(esPedestals_);
638  m_ESmips = &eventSetup.getData(esMIPs_);
639  const ESMIPToGeVConstant* esMipToGeV = &eventSetup.getData(esMIPToGeV_);
640  m_ESgain = (int)esgain->getESGain();
641  const double valESMIPToGeV = (m_ESgain == 1) ? esMipToGeV->getESValueLow() : esMipToGeV->getESValueHigh();
642 
643  theESShape->setGain(m_ESgain);
644 
645  esADCtokeV_ = 1000000. * valESMIPToGeV;
646 
647  m_ESeffwei = (0 == m_ESgain ? 1.45 : (1 == m_ESgain ? 0.9066 : (2 == m_ESgain ? 0.8815 : 1.0)));
648 }
const ESIntercalibConstants * m_ESmips
Definition: ESGain.h:7
float getESValueLow() const
edm::ESGetToken< ESMIPToGeVConstant, ESMIPToGeVConstantRcd > esMIPToGeV_
edm::ESGetToken< ESGain, ESGainRcd > esgain_
float gain6Over1() const
std::unique_ptr< ESShape > theESShape
std::map< int, double, std::less< int > > gainConv_
float getESGain() const
Definition: ESGain.h:13
edm::ESGetToken< ESPedestals, ESPedestalsRcd > esPedestals_
float gain12Over6() const
edm::ESGetToken< EcalADCToGeVConstant, EcalADCToGeVConstantRcd > pAgc
edm::ESGetToken< ESIntercalibConstants, ESIntercalibConstantsRcd > esMIPs_
float getESValueHigh() const
#define LogDebug(id)
void EcalMixingModuleValidation::checkPedestals ( const edm::EventSetup c)
private

Definition at line 650 of file EcalMixingModuleValidation.cc.

References dbPed, edm::EventSetup::getData(), and thePedestals.

Referenced by analyze().

650  {
651  // Pedestals from event setup
652 
653  thePedestals = &eventSetup.getData(dbPed);
654 }
edm::ESGetToken< EcalPedestals, EcalPedestalsRcd > dbPed
void EcalMixingModuleValidation::computeSDBunchDigi ( const edm::EventSetup eventSetup,
const MixCollection< PCaloHit > &  theHits,
MapType ebSignalSimMap,
const EcalSubdetector thisDet,
const double &  theSimThreshold,
CLHEP::HepRandomEngine *  engine 
)
private

Definition at line 687 of file EcalMixingModuleValidation.cc.

References DetId::Ecal, EcalBarrel, EcalEndcap, EcalPreshower, dqm::impl::MonitorElement::Fill(), edm::EventSetup::getHandle(), CaloGeometry::getValidDetIds(), hGeometry, mps_fire::i, CaloSamples::id(), MessageLogger_cff::limit, ESDataFrame::MAXSAMPLES, CaloSamples::MAXSAMPLES, meEBBunchShape_, meEEBunchShape_, meESBunchShape_, theEBResponse, theEEResponse, theESResponse, theGeometry, theMaxBunch, theMinBunch, and theParameterMap.

Referenced by analyze().

692  {
693  if (thisDet != EcalBarrel && thisDet != EcalEndcap && thisDet != EcalPreshower) {
694  edm::LogError("EcalMMValid") << "Invalid subdetector type";
695  return;
696  }
697  //bool isCrystal = true;
698  //if ( thisDet == EcalPreshower ) isCrystal = false;
699 
700  // load the geometry
701 
702  auto hGeomHandle = eventSetup.getHandle(hGeometry);
703  const CaloGeometry* pGeometry = &*hGeomHandle;
704 
705  // see if we need to update
706  if (pGeometry != theGeometry) {
707  theGeometry = pGeometry;
708  //theEcalResponse->setGeometry(theGeometry);
709  theESResponse->setGeometry(theGeometry);
710  theEEResponse->setGeometry(theGeometry);
711  theEBResponse->setGeometry(theGeometry);
712  }
713 
714  // vector of DetId with energy above a fraction of the gun's energy
715 
716  const std::vector<DetId>& theSDId = theGeometry->getValidDetIds(DetId::Ecal, thisDet);
717 
718  std::vector<DetId> theOverThresholdId;
719  for (unsigned int i = 0; i < theSDId.size(); i++) {
720  int sdId = theSDId[i].rawId();
721  if (SignalSimMap[sdId] > theSimThreshold)
722  theOverThresholdId.push_back(theSDId[i]);
723  }
724 
726  if (thisDet == EcalPreshower)
727  limit = ESDataFrame::MAXSAMPLES;
728 
729  for (int iBunch = theMinBunch; iBunch <= theMaxBunch; iBunch++) {
730  //if ( isCrystal ) {
731  if (thisDet == EcalBarrel) {
732  theEBResponse->setBunchRange(iBunch, iBunch);
733  theEBResponse->clear();
734  theEBResponse->run(theHits, engine);
735  } else if (thisDet == EcalEndcap) {
736  theEEResponse->setBunchRange(iBunch, iBunch);
737  theEEResponse->clear();
738  theEEResponse->run(theHits, engine);
739  } else {
740  theESResponse->setBunchRange(iBunch, iBunch);
741  theESResponse->clear();
742  theESResponse->run(theHits, engine);
743  }
744 
745  int iHisto = iBunch - theMinBunch;
746 
747  for (std::vector<DetId>::const_iterator idItr = theOverThresholdId.begin(); idItr != theOverThresholdId.end();
748  ++idItr) {
749  CaloSamples* analogSignal;
750  //if ( isCrystal )
751  if (thisDet == EcalBarrel) {
752  analogSignal = theEBResponse->findSignal(*idItr);
753  } else if (thisDet == EcalEndcap) {
754  analogSignal = theEEResponse->findSignal(*idItr);
755  } else {
756  analogSignal = theESResponse->findSignal(*idItr);
757  }
758 
759  if (analogSignal) {
760  (*analogSignal) *= theParameterMap->simParameters(analogSignal->id()).photoelectronsToAnalog();
761 
762  for (int i = 0; i < limit; i++) {
763  if (thisDet == EcalBarrel) {
764  meEBBunchShape_[iHisto]->Fill(i, (float)(*analogSignal)[i]);
765  } else if (thisDet == EcalEndcap) {
766  meEEBunchShape_[iHisto]->Fill(i, (float)(*analogSignal)[i]);
767  } else if (thisDet == EcalPreshower) {
768  meESBunchShape_[iHisto]->Fill(i, (float)(*analogSignal)[i]);
769  }
770  }
771  }
772  }
773  }
774 }
static const int MAXSAMPLES
Definition: CaloSamples.h:86
MonitorElement * meEEBunchShape_[nBunch]
std::unique_ptr< const EcalSimParameterMap > theParameterMap
MonitorElement * meEBBunchShape_[nBunch]
Log< level::Error, false > LogError
std::unique_ptr< CaloHitResponse > theEBResponse
void Fill(long long x)
std::unique_ptr< CaloHitResponse > theESResponse
MonitorElement * meESBunchShape_[nBunch]
std::unique_ptr< CaloHitResponse > theEEResponse
static const int MAXSAMPLES
Definition: ESDataFrame.h:30
std::vector< DetId > getValidDetIds() const
Get the list of all valid detector ids.
Definition: CaloGeometry.cc:75
DetId id() const
get the (generic) id
Definition: CaloSamples.h:21
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:157
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > hGeometry
void EcalMixingModuleValidation::dqmBeginRun ( edm::Run const &  ,
edm::EventSetup const &  c 
)
overrideprotectedvirtual

Reimplemented from DQMOneEDAnalyzer<>.

Definition at line 136 of file EcalMixingModuleValidation.cc.

References checkCalibrations(), theEBShape, and theEEShape.

136  {
138  theEBShape->setEventSetup(c);
139  theEEShape->setEventSetup(c);
140 }
const edm::EventSetup & c
std::unique_ptr< EEShape > theEEShape
void checkCalibrations(edm::EventSetup const &c)
std::unique_ptr< EBShape > theEBShape
void EcalMixingModuleValidation::dqmEndRun ( const edm::Run r,
const edm::EventSetup c 
)
overrideprotectedvirtual

Reimplemented from DQMOneEDAnalyzer<>.

Definition at line 198 of file EcalMixingModuleValidation.cc.

References bunchSumTest(), mps_fire::i, ESDataFrame::MAXSAMPLES, EcalDataFrame::MAXSAMPLES, meEBBunchShape_, meEBShape_, meEBShapeRatio_, meEEBunchShape_, meEEShape_, meEEShapeRatio_, meESBunchShape_, meESShape_, meESShapeRatio_, and nBunch.

198  {
199  // add shapes for each bunch crossing and divide the digi by the result
200 
201  std::vector<MonitorElement*> theBunches;
202  theBunches.reserve(nBunch);
203  for (int i = 0; i < nBunch; i++) {
204  theBunches.push_back(meEBBunchShape_[i]);
205  }
207 
208  theBunches.clear();
209 
210  for (int i = 0; i < nBunch; i++) {
211  theBunches.push_back(meEEBunchShape_[i]);
212  }
214 
215  theBunches.clear();
216 
217  for (int i = 0; i < nBunch; i++) {
218  theBunches.push_back(meESBunchShape_[i]);
219  }
221 }
MonitorElement * meEEBunchShape_[nBunch]
MonitorElement * meEBBunchShape_[nBunch]
void bunchSumTest(std::vector< MonitorElement * > &theBunches, MonitorElement *&theTotal, MonitorElement *&theRatio, int nSample)
MonitorElement * meESBunchShape_[nBunch]
static const int MAXSAMPLES
Definition: ESDataFrame.h:30
static constexpr int MAXSAMPLES
Definition: EcalDataFrame.h:48
void EcalMixingModuleValidation::findPedestal ( const DetId detId,
int  gainId,
double &  ped 
) const
private

Definition at line 656 of file EcalMixingModuleValidation.cc.

References EcalCondObjectContainer< T >::end(), EcalCondObjectContainer< T >::find(), ecalLiteDTU::gainId(), EcalCondObjectContainer< T >::getMap(), B2GTnPMonitor_cfi::item, LogDebug, DetId::rawId(), EcalCondObjectContainer< T >::size(), and thePedestals.

Referenced by analyze().

656  {
658  // should I care if it doesn't get found?
659  if (mapItr == thePedestals->getMap().end()) {
660  edm::LogError("EcalMMValid") << "Could not find pedestal for " << detId.rawId() << " among the "
661  << thePedestals->getMap().size();
662  } else {
663  EcalPedestals::Item item = (*mapItr);
664 
665  switch (gainId) {
666  case 0:
667  ped = item.mean_x1;
668  break;
669  case 1:
670  ped = item.mean_x12;
671  break;
672  case 2:
673  ped = item.mean_x6;
674  break;
675  case 3:
676  ped = item.mean_x1;
677  break;
678  default:
679  edm::LogError("EcalMMValid") << "Bad Pedestal " << gainId;
680  break;
681  }
682  LogDebug("EcalMMValid") << "Pedestals for " << detId.rawId() << " gain range " << gainId << " : \n"
683  << "Mean = " << ped;
684  }
685 }
const self & getMap() const
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
Log< level::Error, false > LogError
EcalPedestalsMap::const_iterator EcalPedestalsMapIterator
Definition: EcalPedestals.h:49
constexpr int gainId(sample_type sample)
get the gainId (2 bits)
const_iterator find(uint32_t rawId) const
const_iterator end() const
#define LogDebug(id)
CLHEP::HepRandomEngine * EcalMixingModuleValidation::randomEngine ( edm::StreamID const &  streamID)
private

Definition at line 776 of file EcalMixingModuleValidation.cc.

References edm::RandomNumberGenerator::getEngine(), randomEngines_, and edm::StreamID::value().

Referenced by analyze().

776  {
777  unsigned int index = streamID.value();
778  if (index >= randomEngines_.size()) {
779  randomEngines_.resize(index + 1, nullptr);
780  }
781  CLHEP::HepRandomEngine* ptr = randomEngines_[index];
782  if (!ptr) {
784  ptr = &rng->getEngine(streamID);
785  randomEngines_[index] = ptr;
786  }
787  return ptr;
788 }
std::vector< CLHEP::HepRandomEngine * > randomEngines_
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.

Member Data Documentation

double EcalMixingModuleValidation::barrelADCtoGeV_
private
edm::EDGetTokenT<CrossingFrame<PCaloHit> > EcalMixingModuleValidation::crossingFramePCaloHitEBToken_
private

Definition at line 112 of file EcalMixingModuleValidation.h.

Referenced by analyze().

edm::EDGetTokenT<CrossingFrame<PCaloHit> > EcalMixingModuleValidation::crossingFramePCaloHitEEToken_
private

Definition at line 112 of file EcalMixingModuleValidation.h.

Referenced by analyze().

edm::EDGetTokenT<CrossingFrame<PCaloHit> > EcalMixingModuleValidation::crossingFramePCaloHitESToken_
private

Definition at line 112 of file EcalMixingModuleValidation.h.

Referenced by analyze().

edm::ESGetToken<EcalPedestals, EcalPedestalsRcd> EcalMixingModuleValidation::dbPed
private

Definition at line 120 of file EcalMixingModuleValidation.h.

Referenced by checkPedestals().

edm::EDGetTokenT<EBDigiCollection> EcalMixingModuleValidation::EBdigiCollectionToken_
private

Definition at line 109 of file EcalMixingModuleValidation.h.

Referenced by analyze().

edm::EDGetTokenT<EEDigiCollection> EcalMixingModuleValidation::EEdigiCollectionToken_
private

Definition at line 110 of file EcalMixingModuleValidation.h.

Referenced by analyze().

double EcalMixingModuleValidation::endcapADCtoGeV_
private
double EcalMixingModuleValidation::esADCtokeV_
private

Definition at line 178 of file EcalMixingModuleValidation.h.

Referenced by analyze(), and checkCalibrations().

double EcalMixingModuleValidation::esBaseline_
private

Definition at line 177 of file EcalMixingModuleValidation.h.

Referenced by analyze().

edm::EDGetTokenT<ESDigiCollection> EcalMixingModuleValidation::ESdigiCollectionToken_
private

Definition at line 111 of file EcalMixingModuleValidation.h.

Referenced by analyze().

edm::ESGetToken<ESGain, ESGainRcd> EcalMixingModuleValidation::esgain_
private

Definition at line 116 of file EcalMixingModuleValidation.h.

Referenced by checkCalibrations().

edm::ESGetToken<ESIntercalibConstants, ESIntercalibConstantsRcd> EcalMixingModuleValidation::esMIPs_
private

Definition at line 119 of file EcalMixingModuleValidation.h.

Referenced by checkCalibrations().

edm::ESGetToken<ESMIPToGeVConstant, ESMIPToGeVConstantRcd> EcalMixingModuleValidation::esMIPToGeV_
private

Definition at line 117 of file EcalMixingModuleValidation.h.

Referenced by checkCalibrations().

edm::ESGetToken<ESPedestals, ESPedestalsRcd> EcalMixingModuleValidation::esPedestals_
private

Definition at line 118 of file EcalMixingModuleValidation.h.

Referenced by checkCalibrations().

double EcalMixingModuleValidation::esThreshold_
private

Definition at line 179 of file EcalMixingModuleValidation.h.

Referenced by analyze().

std::map<int, double, std::less<int> > EcalMixingModuleValidation::gainConv_
private
edm::EDGetTokenT<edm::HepMCProduct> EcalMixingModuleValidation::HepMCToken_
private

Definition at line 107 of file EcalMixingModuleValidation.h.

Referenced by analyze().

edm::ESGetToken<CaloGeometry, CaloGeometryRecord> EcalMixingModuleValidation::hGeometry
private

Definition at line 121 of file EcalMixingModuleValidation.h.

Referenced by computeSDBunchDigi().

double EcalMixingModuleValidation::m_ESeffwei
private

Definition at line 192 of file EcalMixingModuleValidation.h.

Referenced by analyze(), and checkCalibrations().

int EcalMixingModuleValidation::m_ESgain
private

Definition at line 189 of file EcalMixingModuleValidation.h.

Referenced by checkCalibrations().

const ESIntercalibConstants* EcalMixingModuleValidation::m_ESmips
private

Definition at line 191 of file EcalMixingModuleValidation.h.

Referenced by analyze(), and checkCalibrations().

const ESPedestals* EcalMixingModuleValidation::m_ESpeds
private

Definition at line 190 of file EcalMixingModuleValidation.h.

Referenced by analyze(), and checkCalibrations().

MonitorElement* EcalMixingModuleValidation::meEBbunchCrossing_
private
MonitorElement* EcalMixingModuleValidation::meEBBunchShape_[nBunch]
private
MonitorElement* EcalMixingModuleValidation::meEBDigiMixRatiogt100ADC_
private
MonitorElement* EcalMixingModuleValidation::meEBDigiMixRatioOriggt50pc_
private
MonitorElement* EcalMixingModuleValidation::meEBShape_
private
MonitorElement* EcalMixingModuleValidation::meEBShapeRatio_
private
MonitorElement* EcalMixingModuleValidation::meEEbunchCrossing_
private
MonitorElement* EcalMixingModuleValidation::meEEBunchShape_[nBunch]
private
MonitorElement* EcalMixingModuleValidation::meEEDigiMixRatiogt100ADC_
private
MonitorElement* EcalMixingModuleValidation::meEEDigiMixRatioOriggt40pc_
private
MonitorElement* EcalMixingModuleValidation::meEEShape_
private
MonitorElement* EcalMixingModuleValidation::meEEShapeRatio_
private
MonitorElement* EcalMixingModuleValidation::meESbunchCrossing_
private
MonitorElement* EcalMixingModuleValidation::meESBunchShape_[nBunch]
private
MonitorElement* EcalMixingModuleValidation::meESShape_
private
MonitorElement* EcalMixingModuleValidation::meESShapeRatio_
private
const int EcalMixingModuleValidation::nBunch = 21
staticprivate
std::string EcalMixingModuleValidation::outputFile_
private

Definition at line 105 of file EcalMixingModuleValidation.h.

edm::ESGetToken<EcalADCToGeVConstant, EcalADCToGeVConstantRcd> EcalMixingModuleValidation::pAgc
private

Definition at line 115 of file EcalMixingModuleValidation.h.

Referenced by checkCalibrations().

std::vector<CLHEP::HepRandomEngine*> EcalMixingModuleValidation::randomEngines_
private

Definition at line 194 of file EcalMixingModuleValidation.h.

Referenced by randomEngine().

std::unique_ptr<CaloHitResponse> EcalMixingModuleValidation::theEBResponse
private

Definition at line 160 of file EcalMixingModuleValidation.h.

Referenced by computeSDBunchDigi(), and EcalMixingModuleValidation().

std::unique_ptr<EBShape> EcalMixingModuleValidation::theEBShape
private

Definition at line 155 of file EcalMixingModuleValidation.h.

Referenced by dqmBeginRun(), and EcalMixingModuleValidation().

std::unique_ptr<CaloHitResponse> EcalMixingModuleValidation::theEEResponse
private

Definition at line 161 of file EcalMixingModuleValidation.h.

Referenced by computeSDBunchDigi(), and EcalMixingModuleValidation().

std::unique_ptr<EEShape> EcalMixingModuleValidation::theEEShape
private

Definition at line 156 of file EcalMixingModuleValidation.h.

Referenced by dqmBeginRun(), and EcalMixingModuleValidation().

std::unique_ptr<CaloHitResponse> EcalMixingModuleValidation::theESResponse
private

Definition at line 159 of file EcalMixingModuleValidation.h.

Referenced by computeSDBunchDigi(), and EcalMixingModuleValidation().

std::unique_ptr<ESShape> EcalMixingModuleValidation::theESShape
private

Definition at line 154 of file EcalMixingModuleValidation.h.

Referenced by checkCalibrations(), and EcalMixingModuleValidation().

const CaloGeometry* EcalMixingModuleValidation::theGeometry
private

Definition at line 184 of file EcalMixingModuleValidation.h.

Referenced by computeSDBunchDigi().

int EcalMixingModuleValidation::theMaxBunch
private
int EcalMixingModuleValidation::theMinBunch
private
std::unique_ptr<const EcalSimParameterMap> EcalMixingModuleValidation::theParameterMap
private

Definition at line 152 of file EcalMixingModuleValidation.h.

Referenced by computeSDBunchDigi(), and EcalMixingModuleValidation().

const EcalPedestals* EcalMixingModuleValidation::thePedestals
private

Definition at line 187 of file EcalMixingModuleValidation.h.

Referenced by checkPedestals(), and findPedestal().

bool EcalMixingModuleValidation::verbose_
private

Definition at line 103 of file EcalMixingModuleValidation.h.

Referenced by EcalMixingModuleValidation().