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 | Private Member Functions | Private Attributes
LheWeightValidation Class Reference

#include <LheWeightValidation.h>

Inheritance diagram for LheWeightValidation:
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 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
 
void dqmEndRun (const edm::Run &, const edm::EventSetup &) override
 
 LheWeightValidation (const edm::ParameterSet &)
 
 ~LheWeightValidation () override=default
 
- 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)
 

Private Member Functions

void bookTemplates (DQMHelper &aDqmHelper, std::vector< std::unique_ptr< TH1F >> &scaleVar, std::vector< std::unique_ptr< TH1F >> &pdfVar, std::vector< MonitorElement * > &tmps, const std::string &name, const std::string &title, int nbin, float low, float high, const std::string &xtitle, const std::string &ytitle)
 
void envelop (const std::vector< std::unique_ptr< TH1F >> &var, std::vector< MonitorElement * > &tmps)
 
void fillTemplates (std::vector< std::unique_ptr< TH1F >> &scaleVar, std::vector< std::unique_ptr< TH1F >> &pdfVar, std::vector< MonitorElement * > &tmps, float obs)
 
void pdfRMS (const std::vector< std::unique_ptr< TH1F >> &var, std::vector< MonitorElement * > &tmps)
 

Private Attributes

const bool dumpLHEheader_
 
const edm::EDGetTokenT
< reco::GenJetCollection
genJetToken_
 
const edm::EDGetTokenT
< reco::GenParticleCollection
genParticleToken_
 
const int idxPdfEnd_
 
const int idxPdfStart_
 
const double jetEtaCut_
 
std::vector< std::unique_ptr
< TH1F > > 
jetMultPdfVar_
 
std::vector< std::unique_ptr
< TH1F > > 
jetMultScaleVar_
 
std::vector< MonitorElement * > jetMultTemp_
 
const double jetPtCut_
 
const int jetPtNbin_
 
const double jetPtRange_
 
std::vector< std::unique_ptr
< TH1F > > 
leadJetEtaPdfVar_
 
std::vector< std::unique_ptr
< TH1F > > 
leadJetEtaScaleVar_
 
std::vector< MonitorElement * > leadJetEtaTemp_
 
std::vector< std::unique_ptr
< TH1F > > 
leadJetPtPdfVar_
 
std::vector< std::unique_ptr
< TH1F > > 
leadJetPtScaleVar_
 
std::vector< MonitorElement * > leadJetPtTemp_
 
std::vector< std::unique_ptr
< TH1F > > 
leadLepEtaPdfVar_
 
std::vector< std::unique_ptr
< TH1F > > 
leadLepEtaScaleVar_
 
std::vector< MonitorElement * > leadLepEtaTemp_
 
const double leadLepPtCut_
 
const int leadLepPtNbin_
 
std::vector< std::unique_ptr
< TH1F > > 
leadLepPtPdfVar_
 
const double leadLepPtRange_
 
std::vector< std::unique_ptr
< TH1F > > 
leadLepPtScaleVar_
 
std::vector< MonitorElement * > leadLepPtTemp_
 
const double lepEtaCut_
 
const edm::EDGetTokenT
< LHEEventProduct
lheEvtToken_
 
const edm::InputTag lheLabel_
 
const edm::EDGetTokenT
< LHERunInfoProduct
lheRunToken_
 
MonitorElementnEvt_
 
const int nJetsNbin_
 
MonitorElementnlogWgt_
 
const int nPdfVar_
 
const int nScaleVar_
 
double orgWgt_
 
const int rapidityNbin_
 
const double rapidityRange_
 
double weight_
 
std::vector< LHEEventProduct::WGTweights_
 
MonitorElementwgtVal_
 

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 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< Bconsumes (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 ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
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)
 
- Protected Attributes inherited from DQMOneEDAnalyzer<>
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 30 of file LheWeightValidation.h.

Constructor & Destructor Documentation

LheWeightValidation::LheWeightValidation ( const edm::ParameterSet iPSet)
explicit

Definition at line 8 of file LheWeightValidation.cc.

9  : lheLabel_(iPSet.getParameter<edm::InputTag>("lheProduct")),
10  genParticleToken_(consumes<reco::GenParticleCollection>(iPSet.getParameter<edm::InputTag>("genParticles"))),
11  lheEvtToken_(consumes<LHEEventProduct>(lheLabel_)),
12  lheRunToken_(consumes<LHERunInfoProduct, edm::InRun>(lheLabel_)),
13  genJetToken_(consumes<reco::GenJetCollection>(iPSet.getParameter<edm::InputTag>("genJets"))),
14  dumpLHEheader_(iPSet.getParameter<bool>("dumpLHEheader")),
15  leadLepPtNbin_(iPSet.getParameter<int>("leadLepPtNbin")),
16  rapidityNbin_(iPSet.getParameter<int>("rapidityNbin")),
17  leadLepPtRange_(iPSet.getParameter<double>("leadLepPtRange")),
18  leadLepPtCut_(iPSet.getParameter<double>("leadLepPtCut")),
19  lepEtaCut_(iPSet.getParameter<double>("lepEtaCut")),
20  rapidityRange_(iPSet.getParameter<double>("rapidityRange")),
21  nJetsNbin_(iPSet.getParameter<int>("nJetsNbin")),
22  jetPtNbin_(iPSet.getParameter<int>("jetPtNbin")),
23  jetPtCut_(iPSet.getParameter<double>("jetPtCut")),
24  jetEtaCut_(iPSet.getParameter<double>("jetEtaCut")),
25  jetPtRange_(iPSet.getParameter<double>("jetPtRange")),
26  nScaleVar_(iPSet.getParameter<int>("nScaleVar")),
27  idxPdfStart_(iPSet.getParameter<int>("idxPdfStart")),
28  idxPdfEnd_(iPSet.getParameter<int>("idxPdfEnd")),
const edm::InputTag lheLabel_
const edm::EDGetTokenT< reco::GenParticleCollection > genParticleToken_
const edm::EDGetTokenT< LHEEventProduct > lheEvtToken_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const double leadLepPtRange_
const edm::EDGetTokenT< reco::GenJetCollection > genJetToken_
const edm::EDGetTokenT< LHERunInfoProduct > lheRunToken_
LheWeightValidation::~LheWeightValidation ( )
overridedefault

Member Function Documentation

void LheWeightValidation::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overridevirtual

Reimplemented from DQMOneEDAnalyzer<>.

Definition at line 164 of file LheWeightValidation.cc.

References funct::abs(), dqm::impl::MonitorElement::Fill(), fillTemplates(), genJetToken_, genParticleToken_, edm::Event::getByToken(), edm::EDGetTokenT< T >::isUninitialized(), edm::HandleBase::isValid(), jetEtaCut_, jetMultPdfVar_, jetMultScaleVar_, jetMultTemp_, jetPtCut_, leadJetEtaPdfVar_, leadJetEtaScaleVar_, leadJetEtaTemp_, leadJetPtPdfVar_, leadJetPtScaleVar_, leadJetPtTemp_, leadLepEtaPdfVar_, leadLepEtaScaleVar_, leadLepEtaTemp_, leadLepPtCut_, leadLepPtPdfVar_, leadLepPtScaleVar_, leadLepPtTemp_, lepEtaCut_, HLT_FULL_cff::leptons, lheEvtToken_, nEvt_, nlogWgt_, orgWgt_, weight_, weights_, and wgtVal_.

164  {
166 
168  iEvent.getByToken(lheEvtToken_, lheEvt);
169 
170  if (!lheEvt.isValid())
171  return; // do nothing if there is no LHE product
172 
173  orgWgt_ = lheEvt->originalXWGTUP();
175  weights_ = lheEvt->weights();
176 
177  nEvt_->Fill(0.5, weight_);
178  nlogWgt_->Fill(std::log10(lheEvt->weights().size()), weight_);
179 
180  for (unsigned idx = 0; idx < lheEvt->weights().size(); idx++)
181  wgtVal_->Fill(weights_[idx].wgt / orgWgt_);
182 
184  iEvent.getByToken(genParticleToken_, ptcls);
186  iEvent.getByToken(genJetToken_, genjets);
187 
188  std::vector<reco::GenParticleRef> leptons;
189 
190  for (unsigned iptc = 0; iptc < ptcls->size(); iptc++) {
191  reco::GenParticleRef ptc(ptcls, iptc);
192  if (ptc->status() == 1 && (std::abs(ptc->pdgId()) == 11 || std::abs(ptc->pdgId()) == 13)) {
193  if (ptc->pt() > leadLepPtCut_ && std::abs(ptc->eta()) < lepEtaCut_)
194  leptons.push_back(ptc);
195  }
196  }
197 
198  std::sort(leptons.begin(), leptons.end(), HepMCValidationHelper::sortByPtRef<reco::GenParticleRef>);
199 
200  if (!leptons.empty()) {
201  reco::GenParticleRef leadLep = leptons.at(0);
204  }
205 
206  std::vector<reco::GenJetRef> genjetVec;
207 
208  for (unsigned igj = 0; igj < genjets->size(); igj++) {
209  reco::GenJetRef genjet(genjets, igj);
210 
211  if (genjet->pt() > jetPtCut_ && std::abs(genjet->eta()) < jetEtaCut_)
212  genjetVec.push_back(genjet);
213  }
214 
215  fillTemplates(jetMultScaleVar_, jetMultPdfVar_, jetMultTemp_, (float)genjetVec.size());
216 
217  if (!genjetVec.empty()) {
218  std::sort(genjetVec.begin(), genjetVec.end(), HepMCValidationHelper::sortByPtRef<reco::GenJetRef>);
219 
220  auto leadJet = genjetVec.at(0);
223  }
224 } //analyze
std::vector< MonitorElement * > leadLepPtTemp_
MonitorElement * wgtVal_
std::vector< LHEEventProduct::WGT > weights_
std::vector< MonitorElement * > leadJetPtTemp_
std::vector< std::unique_ptr< TH1F > > leadLepEtaScaleVar_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
constexpr bool isUninitialized() const noexcept
Definition: EDGetToken.h:99
std::vector< std::unique_ptr< TH1F > > jetMultScaleVar_
std::vector< std::unique_ptr< TH1F > > leadJetPtScaleVar_
std::vector< std::unique_ptr< TH1F > > leadJetEtaPdfVar_
std::vector< std::unique_ptr< TH1F > > leadLepPtScaleVar_
std::vector< std::unique_ptr< TH1F > > jetMultPdfVar_
void fillTemplates(std::vector< std::unique_ptr< TH1F >> &scaleVar, std::vector< std::unique_ptr< TH1F >> &pdfVar, std::vector< MonitorElement * > &tmps, float obs)
void Fill(long long x)
const edm::EDGetTokenT< reco::GenParticleCollection > genParticleToken_
MonitorElement * nlogWgt_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool isValid() const
Definition: HandleBase.h:70
std::vector< MonitorElement * > jetMultTemp_
const edm::EDGetTokenT< LHEEventProduct > lheEvtToken_
MonitorElement * nEvt_
std::vector< MonitorElement * > leadLepEtaTemp_
std::vector< std::unique_ptr< TH1F > > leadLepEtaPdfVar_
const edm::EDGetTokenT< reco::GenJetCollection > genJetToken_
std::vector< std::unique_ptr< TH1F > > leadJetEtaScaleVar_
std::vector< std::unique_ptr< TH1F > > leadJetPtPdfVar_
std::vector< MonitorElement * > leadJetEtaTemp_
std::vector< std::unique_ptr< TH1F > > leadLepPtPdfVar_
void LheWeightValidation::bookHistograms ( DQMStore::IBooker iBook,
edm::Run const &  iRun,
edm::EventSetup const &   
)
overridevirtual

Setting the DQM top directories

Implements DQMOneEDAnalyzer<>.

Definition at line 31 of file LheWeightValidation.cc.

References DQMHelper::book1dHisto(), bookTemplates(), edm::Run::getByLabel(), edm::HandleBase::isValid(), jetMultPdfVar_, jetMultScaleVar_, jetMultTemp_, jetPtNbin_, jetPtRange_, leadJetEtaPdfVar_, leadJetEtaScaleVar_, leadJetEtaTemp_, leadJetPtPdfVar_, leadJetPtScaleVar_, leadJetPtTemp_, leadLepEtaPdfVar_, leadLepEtaScaleVar_, leadLepEtaTemp_, leadLepPtNbin_, leadLepPtPdfVar_, leadLepPtRange_, leadLepPtScaleVar_, leadLepPtTemp_, lheLabel_, nEvt_, nJetsNbin_, nlogWgt_, rapidityNbin_, rapidityRange_, dqm::implementation::NavigatorBase::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, and wgtVal_.

31  {
32  // check LHE product exists
34  // getByToken throws an exception unless we're in the endRun (see https://github.com/cms-sw/cmssw/pull/18499)
35  iRun.getByLabel(lheLabel_, lheInfo);
36 
37  if (!lheInfo.isValid())
38  return;
39 
41  std::string folderName = "Generator/LHEWeight";
42  DQMHelper aDqmHelper(&iBook);
43  iBook.setCurrentFolder(folderName);
44 
45  // Number of analyzed events
46  nEvt_ = aDqmHelper.book1dHisto("nEvt", "n analyzed Events", 1, 0., 1., "bin", "Number of Events");
47  nlogWgt_ = aDqmHelper.book1dHisto("nlogWgt", "Log10(n weights)", 100, 0., 5., "log_{10}(nWgts)", "Number of Events");
48  wgtVal_ = aDqmHelper.book1dHisto("wgtVal", "weights", 100, -1.5, 3., "weight", "Number of Weights");
49 
50  bookTemplates(aDqmHelper,
54  "leadLepPt",
55  "leading lepton Pt",
57  0.,
59  "Pt_{l} (GeV)",
60  "Number of Events");
61  bookTemplates(aDqmHelper,
65  "leadLepEta",
66  "leading lepton #eta",
70  "#eta_{l}",
71  "Number of Events");
72  bookTemplates(aDqmHelper,
76  "JetMultiplicity",
77  "Gen jet multiplicity",
78  nJetsNbin_,
79  0,
80  nJetsNbin_,
81  "n",
82  "Number of Events");
83  bookTemplates(aDqmHelper,
87  "leadJetPt",
88  "leading Gen jet Pt",
89  jetPtNbin_,
90  0.,
92  "Pt_{j} (GeV)",
93  "Number of Events");
94  bookTemplates(aDqmHelper,
98  "leadJetEta",
99  "leading Gen jet #eta",
103  "#eta_{j}",
104  "Number of Events");
105 
106  return;
107 }
const edm::InputTag lheLabel_
std::vector< MonitorElement * > leadLepPtTemp_
MonitorElement * wgtVal_
std::vector< MonitorElement * > leadJetPtTemp_
std::vector< std::unique_ptr< TH1F > > leadLepEtaScaleVar_
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
std::vector< std::unique_ptr< TH1F > > jetMultScaleVar_
std::vector< std::unique_ptr< TH1F > > leadJetPtScaleVar_
std::vector< std::unique_ptr< TH1F > > leadJetEtaPdfVar_
std::vector< std::unique_ptr< TH1F > > leadLepPtScaleVar_
std::vector< std::unique_ptr< TH1F > > jetMultPdfVar_
MonitorElement * nlogWgt_
bool isValid() const
Definition: HandleBase.h:70
std::vector< MonitorElement * > jetMultTemp_
void bookTemplates(DQMHelper &aDqmHelper, std::vector< std::unique_ptr< TH1F >> &scaleVar, std::vector< std::unique_ptr< TH1F >> &pdfVar, std::vector< MonitorElement * > &tmps, const std::string &name, const std::string &title, int nbin, float low, float high, const std::string &xtitle, const std::string &ytitle)
MonitorElement * nEvt_
std::vector< MonitorElement * > leadLepEtaTemp_
const double leadLepPtRange_
std::vector< std::unique_ptr< TH1F > > leadLepEtaPdfVar_
std::vector< std::unique_ptr< TH1F > > leadJetEtaScaleVar_
std::vector< std::unique_ptr< TH1F > > leadJetPtPdfVar_
std::vector< MonitorElement * > leadJetEtaTemp_
std::vector< std::unique_ptr< TH1F > > leadLepPtPdfVar_
void LheWeightValidation::bookTemplates ( DQMHelper aDqmHelper,
std::vector< std::unique_ptr< TH1F >> &  scaleVar,
std::vector< std::unique_ptr< TH1F >> &  pdfVar,
std::vector< MonitorElement * > &  tmps,
const std::string &  name,
const std::string &  title,
int  nbin,
float  low,
float  high,
const std::string &  xtitle,
const std::string &  ytitle 
)
private

Definition at line 109 of file LheWeightValidation.cc.

References DQMHelper::book1dHisto(), nPdfVar_, nScaleVar_, AlCaHLTBitMon_QueryRunRegistry::string, and cond::impl::to_string().

Referenced by bookHistograms().

119  {
120  tmps.push_back(aDqmHelper.book1dHisto(name, title, nbin, low, high, xtitle, ytitle));
121  tmps.push_back(aDqmHelper.book1dHisto(name + "ScaleUp", title + " scale up", nbin, low, high, xtitle, ytitle));
122  tmps.at(1)->getTH1()->Sumw2(false);
123  tmps.push_back(aDqmHelper.book1dHisto(name + "ScaleDn", title + " scale down", nbin, low, high, xtitle, ytitle));
124  tmps.at(2)->getTH1()->Sumw2(false);
125  tmps.push_back(aDqmHelper.book1dHisto(
126  name + "ScaleUp_ratio", "Ratio of " + title + " scale upper envelop / Nominal", nbin, low, high, xtitle, ytitle));
127  tmps.at(3)->setEfficiencyFlag();
128  tmps.push_back(aDqmHelper.book1dHisto(
129  name + "ScaleDn_ratio", "Ratio of " + title + " scale lower envelop / Nominal", nbin, low, high, xtitle, ytitle));
130  tmps.at(4)->setEfficiencyFlag();
131  tmps.push_back(aDqmHelper.book1dHisto(name + "PdfUp", title + " PDF upper RMS", nbin, low, high, xtitle, ytitle));
132  tmps.at(5)->getTH1()->Sumw2(false);
133  tmps.push_back(aDqmHelper.book1dHisto(name + "PdfDn", title + " PDF lower RMS", nbin, low, high, xtitle, ytitle));
134  tmps.at(6)->getTH1()->Sumw2(false);
135  tmps.push_back(aDqmHelper.book1dHisto(
136  name + "PdfUp_ratio", "Ratio of " + title + " PDF upper RMS / Nominal", nbin, low, high, xtitle, ytitle));
137  tmps.at(7)->setEfficiencyFlag();
138  tmps.push_back(aDqmHelper.book1dHisto(
139  name + "PdfDn_ratio", "Ratio of " + title + " PDF lower RMS / Nominal", nbin, low, high, xtitle, ytitle));
140  tmps.at(8)->setEfficiencyFlag();
141 
142  for (int idx = 0; idx < nScaleVar_; idx++) {
143  scaleVar.push_back(
144  std::make_unique<TH1F>(std::string(name + "Scale" + std::to_string(idx)).c_str(),
145  std::string(";" + std::string(xtitle) + ";" + std::string(ytitle)).c_str(),
146  nbin,
147  low,
148  high));
149  scaleVar.at(idx)->Sumw2();
150  }
151 
152  for (int idx = 0; idx < nPdfVar_; idx++) {
153  pdfVar.push_back(std::make_unique<TH1F>(std::string(name + "Pdf" + std::to_string(idx)).c_str(),
154  std::string(";" + std::string(xtitle) + ";" + std::string(ytitle)).c_str(),
155  nbin,
156  low,
157  high));
158  pdfVar.at(idx)->Sumw2();
159  }
160 } // to get ratio plots correctly - need to modify PostProcessor_cff.py as well!
std::string to_string(const V &value)
Definition: OMSAccess.h:71
MonitorElement * book1dHisto(const std::string &name, const std::string &title, int n, double xmin, double xmax, const std::string &xaxis, const std::string &yaxis)
Definition: DQMHelper.cc:7
void LheWeightValidation::dqmBeginRun ( const edm::Run ,
const edm::EventSetup  
)
overridevirtual

Reimplemented from DQMOneEDAnalyzer<>.

Definition at line 162 of file LheWeightValidation.cc.

162 {}
void LheWeightValidation::dqmEndRun ( const edm::Run iRun,
const edm::EventSetup  
)
overridevirtual

Reimplemented from DQMOneEDAnalyzer<>.

Definition at line 243 of file LheWeightValidation.cc.

References gather_cfg::cout, dumpLHEheader_, envelop(), edm::Run::getByToken(), edm::EDGetTokenT< T >::isUninitialized(), edm::HandleBase::isValid(), jetMultPdfVar_, jetMultScaleVar_, jetMultTemp_, cmsLHEtoEOSManager::l, leadJetEtaPdfVar_, leadJetEtaScaleVar_, leadJetEtaTemp_, leadJetPtPdfVar_, leadJetPtScaleVar_, leadJetPtTemp_, leadLepEtaPdfVar_, leadLepEtaScaleVar_, leadLepEtaTemp_, leadLepPtPdfVar_, leadLepPtScaleVar_, leadLepPtTemp_, lheRunToken_, and pdfRMS().

243  {
245  return;
246 
248  iRun.getByToken(lheRunToken_, lheInfo);
249 
250  if (!lheInfo.isValid())
251  return;
252 
263 
264  if (dumpLHEheader_) {
265  for (auto it = lheInfo->headers_begin(); it != lheInfo->headers_end(); it++) {
266  std::cout << "Header start" << std::endl;
267  std::cout << "Tag: " << it->tag() << std::endl;
268  for (const auto& l : it->lines()) {
269  std::cout << l << std::endl;
270  }
271  std::cout << "Header end" << std::endl;
272  }
273  }
274 }
std::vector< MonitorElement * > leadLepPtTemp_
void pdfRMS(const std::vector< std::unique_ptr< TH1F >> &var, std::vector< MonitorElement * > &tmps)
std::vector< MonitorElement * > leadJetPtTemp_
std::vector< std::unique_ptr< TH1F > > leadLepEtaScaleVar_
constexpr bool isUninitialized() const noexcept
Definition: EDGetToken.h:99
std::vector< std::unique_ptr< TH1F > > jetMultScaleVar_
std::vector< std::unique_ptr< TH1F > > leadJetPtScaleVar_
std::vector< std::unique_ptr< TH1F > > leadJetEtaPdfVar_
std::vector< std::unique_ptr< TH1F > > leadLepPtScaleVar_
std::vector< std::unique_ptr< TH1F > > jetMultPdfVar_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Run.h:318
bool isValid() const
Definition: HandleBase.h:70
std::vector< MonitorElement * > jetMultTemp_
std::vector< MonitorElement * > leadLepEtaTemp_
std::vector< std::unique_ptr< TH1F > > leadLepEtaPdfVar_
void envelop(const std::vector< std::unique_ptr< TH1F >> &var, std::vector< MonitorElement * > &tmps)
const edm::EDGetTokenT< LHERunInfoProduct > lheRunToken_
tuple cout
Definition: gather_cfg.py:144
std::vector< std::unique_ptr< TH1F > > leadJetEtaScaleVar_
std::vector< std::unique_ptr< TH1F > > leadJetPtPdfVar_
std::vector< MonitorElement * > leadJetEtaTemp_
std::vector< std::unique_ptr< TH1F > > leadLepPtPdfVar_
void LheWeightValidation::envelop ( const std::vector< std::unique_ptr< TH1F >> &  var,
std::vector< MonitorElement * > &  tmps 
)
private

Definition at line 276 of file LheWeightValidation.cc.

References b, SiStripPI::max, SiStripPI::min, findQualityFiles::v, and ALCARECOEcalPhiSym_cff::var.

Referenced by dqmEndRun().

276  {
277  if (var.empty())
278  return;
279 
280  for (int b = 0; b < var.at(0)->GetNbinsX() + 2; b++) {
281  float valU = var.at(0)->GetBinContent(b);
282  float valD = valU;
283 
284  if (valU == 0.)
285  continue;
286 
287  for (unsigned v = 1; v < var.size(); v++) {
288  if (var.at(v)->GetEntries() == 0.)
289  continue;
290 
291  valU = std::max(valU, (float)var.at(v)->GetBinContent(b));
292  valD = std::min(valD, (float)var.at(v)->GetBinContent(b));
293  }
294  tmps.at(1)->setBinContent(b, valU);
295  tmps.at(2)->setBinContent(b, valD);
296  }
297 
298  tmps.at(1)->setEntries(var.at(0)->GetEntries());
299  tmps.at(2)->setEntries(var.at(0)->GetEntries());
300  tmps.at(1)->getTH1()->Sumw2(true);
301  tmps.at(2)->getTH1()->Sumw2(true);
302 
303  return;
304 }
double b
Definition: hdecay.h:118
void LheWeightValidation::fillTemplates ( std::vector< std::unique_ptr< TH1F >> &  scaleVar,
std::vector< std::unique_ptr< TH1F >> &  pdfVar,
std::vector< MonitorElement * > &  tmps,
float  obs 
)
private

Definition at line 226 of file LheWeightValidation.cc.

References idxPdfEnd_, idxPdfStart_, nPdfVar_, nScaleVar_, orgWgt_, weight_, and weights_.

Referenced by analyze().

229  {
230  tmps.at(0)->Fill(obs, weight_);
231 
232  if (static_cast<int>(weights_.size()) >= nScaleVar_) {
233  for (int iWgt = 0; iWgt < nScaleVar_; iWgt++)
234  scaleVar.at(iWgt)->Fill(obs, weights_[iWgt].wgt / orgWgt_);
235  }
236 
237  if (static_cast<int>(weights_.size()) >= idxPdfEnd_) {
238  for (int iWgt = 0; iWgt < nPdfVar_; iWgt++)
239  pdfVar.at(iWgt)->Fill(obs, weights_[idxPdfStart_ + iWgt].wgt / orgWgt_);
240  }
241 }
std::vector< LHEEventProduct::WGT > weights_
void LheWeightValidation::pdfRMS ( const std::vector< std::unique_ptr< TH1F >> &  var,
std::vector< MonitorElement * > &  tmps 
)
private

Definition at line 306 of file LheWeightValidation.cc.

References b, makePileupJSON::denom, SiStripPI::rms, mathSSE::sqrt(), findQualityFiles::v, and ALCARECOEcalPhiSym_cff::var.

Referenced by dqmEndRun().

306  {
307  if (var.empty())
308  return;
309 
310  float denom = var.size();
311  for (int b = 0; b < tmps.at(0)->getNbinsX() + 2; b++) {
312  float valNom = tmps.at(0)->getBinContent(b);
313  float rmsSq = 0.;
314  if (valNom == 0.)
315  continue;
316 
317  for (unsigned v = 0; v < var.size(); v++) {
318  if (var.at(v)->GetEntries() == 0.)
319  continue;
320 
321  float dev = (float)var.at(v)->GetBinContent(b) - valNom;
322  rmsSq += dev * dev;
323  }
324 
325  float rms = std::sqrt(rmsSq / denom);
326  float rmsup = valNom + rms;
327  float rmsdn = valNom - rms;
328  tmps.at(5)->setBinContent(b, rmsup);
329  tmps.at(6)->setBinContent(b, rmsdn);
330  }
331 
332  tmps.at(5)->setEntries(tmps.at(0)->getTH1F()->GetEntries());
333  tmps.at(6)->setEntries(tmps.at(0)->getTH1F()->GetEntries());
334  tmps.at(5)->getTH1()->Sumw2(true);
335  tmps.at(6)->getTH1()->Sumw2(true);
336 
337  return;
338 }
T sqrt(T t)
Definition: SSEVec.h:19
double b
Definition: hdecay.h:118

Member Data Documentation

const bool LheWeightValidation::dumpLHEheader_
private

Definition at line 89 of file LheWeightValidation.h.

Referenced by dqmEndRun().

const edm::EDGetTokenT<reco::GenJetCollection> LheWeightValidation::genJetToken_
private

Definition at line 87 of file LheWeightValidation.h.

Referenced by analyze().

const edm::EDGetTokenT<reco::GenParticleCollection> LheWeightValidation::genParticleToken_
private

Definition at line 84 of file LheWeightValidation.h.

Referenced by analyze().

const int LheWeightValidation::idxPdfEnd_
private

Definition at line 96 of file LheWeightValidation.h.

Referenced by fillTemplates().

const int LheWeightValidation::idxPdfStart_
private

Definition at line 96 of file LheWeightValidation.h.

Referenced by fillTemplates().

const double LheWeightValidation::jetEtaCut_
private

Definition at line 93 of file LheWeightValidation.h.

Referenced by analyze().

std::vector<std::unique_ptr<TH1F> > LheWeightValidation::jetMultPdfVar_
private

Definition at line 77 of file LheWeightValidation.h.

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

std::vector<std::unique_ptr<TH1F> > LheWeightValidation::jetMultScaleVar_
private

Definition at line 76 of file LheWeightValidation.h.

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

std::vector<MonitorElement*> LheWeightValidation::jetMultTemp_
private

Definition at line 68 of file LheWeightValidation.h.

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

const double LheWeightValidation::jetPtCut_
private

Definition at line 93 of file LheWeightValidation.h.

Referenced by analyze().

const int LheWeightValidation::jetPtNbin_
private

Definition at line 92 of file LheWeightValidation.h.

Referenced by bookHistograms().

const double LheWeightValidation::jetPtRange_
private

Definition at line 93 of file LheWeightValidation.h.

Referenced by bookHistograms().

std::vector<std::unique_ptr<TH1F> > LheWeightValidation::leadJetEtaPdfVar_
private

Definition at line 81 of file LheWeightValidation.h.

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

std::vector<std::unique_ptr<TH1F> > LheWeightValidation::leadJetEtaScaleVar_
private

Definition at line 80 of file LheWeightValidation.h.

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

std::vector<MonitorElement*> LheWeightValidation::leadJetEtaTemp_
private

Definition at line 70 of file LheWeightValidation.h.

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

std::vector<std::unique_ptr<TH1F> > LheWeightValidation::leadJetPtPdfVar_
private

Definition at line 79 of file LheWeightValidation.h.

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

std::vector<std::unique_ptr<TH1F> > LheWeightValidation::leadJetPtScaleVar_
private

Definition at line 78 of file LheWeightValidation.h.

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

std::vector<MonitorElement*> LheWeightValidation::leadJetPtTemp_
private

Definition at line 69 of file LheWeightValidation.h.

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

std::vector<std::unique_ptr<TH1F> > LheWeightValidation::leadLepEtaPdfVar_
private

Definition at line 75 of file LheWeightValidation.h.

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

std::vector<std::unique_ptr<TH1F> > LheWeightValidation::leadLepEtaScaleVar_
private

Definition at line 74 of file LheWeightValidation.h.

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

std::vector<MonitorElement*> LheWeightValidation::leadLepEtaTemp_
private

Definition at line 67 of file LheWeightValidation.h.

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

const double LheWeightValidation::leadLepPtCut_
private

Definition at line 91 of file LheWeightValidation.h.

Referenced by analyze().

const int LheWeightValidation::leadLepPtNbin_
private

Definition at line 90 of file LheWeightValidation.h.

Referenced by bookHistograms().

std::vector<std::unique_ptr<TH1F> > LheWeightValidation::leadLepPtPdfVar_
private

Definition at line 73 of file LheWeightValidation.h.

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

const double LheWeightValidation::leadLepPtRange_
private

Definition at line 91 of file LheWeightValidation.h.

Referenced by bookHistograms().

std::vector<std::unique_ptr<TH1F> > LheWeightValidation::leadLepPtScaleVar_
private

Definition at line 72 of file LheWeightValidation.h.

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

std::vector<MonitorElement*> LheWeightValidation::leadLepPtTemp_
private

Definition at line 66 of file LheWeightValidation.h.

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

const double LheWeightValidation::lepEtaCut_
private

Definition at line 91 of file LheWeightValidation.h.

Referenced by analyze().

const edm::EDGetTokenT<LHEEventProduct> LheWeightValidation::lheEvtToken_
private

Definition at line 85 of file LheWeightValidation.h.

Referenced by analyze().

const edm::InputTag LheWeightValidation::lheLabel_
private

Definition at line 83 of file LheWeightValidation.h.

Referenced by bookHistograms().

const edm::EDGetTokenT<LHERunInfoProduct> LheWeightValidation::lheRunToken_
private

Definition at line 86 of file LheWeightValidation.h.

Referenced by dqmEndRun().

MonitorElement* LheWeightValidation::nEvt_
private

Definition at line 63 of file LheWeightValidation.h.

Referenced by analyze(), and bookHistograms().

const int LheWeightValidation::nJetsNbin_
private

Definition at line 92 of file LheWeightValidation.h.

Referenced by bookHistograms().

MonitorElement* LheWeightValidation::nlogWgt_
private

Definition at line 64 of file LheWeightValidation.h.

Referenced by analyze(), and bookHistograms().

const int LheWeightValidation::nPdfVar_
private

Definition at line 96 of file LheWeightValidation.h.

Referenced by bookTemplates(), and fillTemplates().

const int LheWeightValidation::nScaleVar_
private

Definition at line 95 of file LheWeightValidation.h.

Referenced by bookTemplates(), and fillTemplates().

double LheWeightValidation::orgWgt_
private

Definition at line 60 of file LheWeightValidation.h.

Referenced by analyze(), and fillTemplates().

const int LheWeightValidation::rapidityNbin_
private

Definition at line 90 of file LheWeightValidation.h.

Referenced by bookHistograms().

const double LheWeightValidation::rapidityRange_
private

Definition at line 91 of file LheWeightValidation.h.

Referenced by bookHistograms().

double LheWeightValidation::weight_
private

Definition at line 60 of file LheWeightValidation.h.

Referenced by analyze(), and fillTemplates().

std::vector<LHEEventProduct::WGT> LheWeightValidation::weights_
private

Definition at line 61 of file LheWeightValidation.h.

Referenced by analyze(), and fillTemplates().

MonitorElement* LheWeightValidation::wgtVal_
private

Definition at line 65 of file LheWeightValidation.h.

Referenced by analyze(), and bookHistograms().