CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
LHECOMWeightProducer Class Reference
Inheritance diagram for LHECOMWeightProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 LHECOMWeightProducer (const edm::ParameterSet &)
 
 ~LHECOMWeightProducer () override
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () 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
 
std::vector< bool > const & recordProvenanceList () 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)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~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 &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
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::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void beginJob () override
 
void beginRun (edm::Run const &run, const edm::EventSetup &es) override
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

std::string _label
 
double _newECMS
 
double _origECMS
 
int _pdfmember
 
int _pdfset
 
edm::InputTag lheTag_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer 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::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsInputProcessBlocks ()
 
static bool wantsProcessBlocks ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
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...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Definition at line 24 of file LHECOMWeightProducer.cc.

Constructor & Destructor Documentation

◆ LHECOMWeightProducer()

LHECOMWeightProducer::LHECOMWeightProducer ( const edm::ParameterSet pset)
explicit

Definition at line 56 of file LHECOMWeightProducer.cc.

57  : lheTag_(pset.getParameter<edm::InputTag>("lheSrc")), _newECMS(pset.getParameter<double>("NewECMS")) {
58  std::stringstream labelStr;
59  labelStr << "com"
60  << "To" << _newECMS;
61  _label = labelStr.str();
62  produces<GenEventInfoProduct>(_label);
63 }

References _label, and _newECMS.

◆ ~LHECOMWeightProducer()

LHECOMWeightProducer::~LHECOMWeightProducer ( )
override

Definition at line 66 of file LHECOMWeightProducer.cc.

66 {}

Member Function Documentation

◆ beginJob()

void LHECOMWeightProducer::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDProducer.

Definition at line 85 of file LHECOMWeightProducer.cc.

85  {
86  //LHAPDF::initPDFSet(1,pdfSetName_);
87 }

◆ beginRun()

void LHECOMWeightProducer::beginRun ( edm::Run const &  run,
const edm::EventSetup es 
)
overrideprivatevirtual

Reimplemented from edm::EDProducer.

Definition at line 69 of file LHECOMWeightProducer.cc.

69  {
70  using namespace edm;
72  run.getByLabel(lheTag_, lheRun);
73  //assumes the same pdf is used for both beams
74  _pdfset = lheRun->heprup().PDFSUP.first;
75  _pdfmember = lheRun->heprup().PDFGUP.first;
76  _origECMS = lheRun->heprup().EBMUP.first + lheRun->heprup().EBMUP.second;
77  edm::LogInfo("LHECOMWeightProducer") << "PDFSET: " << _pdfset << "; member: " << _pdfmember
78  << "; COM energy: " << _origECMS;
79  if (_newECMS > _origECMS)
80  throw cms::Exception("LHECOMWeightProducer") << "You cannot reweight COM energy to a higher than original energy ";
82 }

References _newECMS, _origECMS, _pdfmember, _pdfset, lhef::HEPRUP::EBMUP, Exception, LHERunInfoProduct::heprup(), LHAPDF::initPDFSet(), lheTag_, lhef::HEPRUP::PDFGUP, lhef::HEPRUP::PDFSUP, and writedatasetfile::run.

◆ produce()

void LHECOMWeightProducer::produce ( edm::Event iEvent,
const edm::EventSetup  
)
overrideprivatevirtual

Implements edm::EDProducer.

Definition at line 90 of file LHECOMWeightProducer.cc.

90  {
91  using namespace std;
92  bool verbose = false;
93 
94  if (iEvent.isRealData())
95  return;
96 
98  iEvent.getByLabel(lheTag_, lheevent);
99 
100  float Q = lheevent->hepeup().SCALUP;
101 
102  int id1 = lheevent->hepeup().IDUP[0];
103  double x1 = fabs(lheevent->hepeup().PUP[0][2] / (_origECMS / 2));
104  double x1prime = fabs(lheevent->hepeup().PUP[0][2] / (_newECMS / 2));
105 
106  int id2 = lheevent->hepeup().IDUP[1];
107  double x2 = fabs(lheevent->hepeup().PUP[1][2] / (_origECMS / 2));
108  double x2prime = fabs(lheevent->hepeup().PUP[1][2] / (_newECMS / 2));
109 
110  LogTrace("LHECOMWeightProducer") << "*******LHECOMWeightProducer*******\n"
111  << " Q : " << Q << "\n"
112  << " id1: " << id1 << "\n"
113  << " x1 : " << x1 << "\n"
114  << " x1': " << x1prime << "\n"
115  << " id2: " << id2 << "\n"
116  << " x2 : " << x2 << "\n"
117  << " x2': " << x2prime;
118  //gluon is 0 in the LHAPDF numbering
119  if (id1 == 21)
120  id1 = 0;
121  if (id2 == 21)
122  id2 = 0;
123 
124  // Put PDF weights in the event
125  if (verbose)
126  cout << " Set : " << _pdfset << " member : " << _pdfmember << endl;
127 
129  double oldpdf1 = LHAPDF::xfx(1, x1, Q, id1) / x1;
130  double oldpdf2 = LHAPDF::xfx(1, x2, Q, id2) / x2;
131  double newpdf1 = LHAPDF::xfx(1, x1prime, Q, id1) / x1prime;
132  double newpdf2 = LHAPDF::xfx(1, x2prime, Q, id2) / x2prime;
133  LogTrace("LHECOMWeightProducer") << " xfx1 : " << oldpdf1 << "\n"
134  << " xfx2 : " << oldpdf2 << "\n"
135  << " xfx1': " << newpdf1 << "\n"
136  << " xfx2': " << newpdf2 << "\n"
137  << " weight:" << (newpdf1 / oldpdf1) * (newpdf2 / oldpdf2);
138  double weight = (newpdf1 / oldpdf1) * (newpdf2 / oldpdf2);
139  std::vector<double> weights;
140  weights.push_back(weight);
141  std::unique_ptr<GenEventInfoProduct> info(new GenEventInfoProduct());
142  info->setWeights(weights);
143  iEvent.put(std::move(info), _label);
144 }

References _label, _newECMS, _origECMS, _pdfmember, _pdfset, gather_cfg::cout, LHEEventProduct::hepeup(), globals_cff::id1, globals_cff::id2, lhef::HEPEUP::IDUP, iEvent, info(), lheTag_, LogTrace, eostools::move(), lhef::HEPEUP::PUP, class-composition::Q, lhef::HEPEUP::SCALUP, LHAPDF::usePDFMember(), verbose, HLT_FULL_cff::weights, testProducerWithPsetDescEmpty_cfi::x1, testProducerWithPsetDescEmpty_cfi::x2, and LHAPDF::xfx().

Member Data Documentation

◆ _label

std::string LHECOMWeightProducer::_label
private

◆ _newECMS

double LHECOMWeightProducer::_newECMS
private

Definition at line 38 of file LHECOMWeightProducer.cc.

Referenced by beginRun(), LHECOMWeightProducer(), and produce().

◆ _origECMS

double LHECOMWeightProducer::_origECMS
private

Definition at line 37 of file LHECOMWeightProducer.cc.

Referenced by beginRun(), and produce().

◆ _pdfmember

int LHECOMWeightProducer::_pdfmember
private

Definition at line 36 of file LHECOMWeightProducer.cc.

Referenced by beginRun(), and produce().

◆ _pdfset

int LHECOMWeightProducer::_pdfset
private

Definition at line 35 of file LHECOMWeightProducer.cc.

Referenced by beginRun(), and produce().

◆ lheTag_

edm::InputTag LHECOMWeightProducer::lheTag_
private

Definition at line 34 of file LHECOMWeightProducer.cc.

Referenced by beginRun(), and produce().

GenEventInfoProduct
Definition: GenEventInfoProduct.h:17
LHECOMWeightProducer::_label
std::string _label
Definition: LHECOMWeightProducer.cc:39
LHECOMWeightProducer::_newECMS
double _newECMS
Definition: LHECOMWeightProducer.cc:38
edm
HLT enums.
Definition: AlignableModifier.h:19
testProducerWithPsetDescEmpty_cfi.x2
x2
Definition: testProducerWithPsetDescEmpty_cfi.py:28
LHECOMWeightProducer::_pdfset
int _pdfset
Definition: LHECOMWeightProducer.cc:35
globals_cff.id1
id1
Definition: globals_cff.py:33
gather_cfg.cout
cout
Definition: gather_cfg.py:144
LHERunInfoProduct::heprup
const lhef::HEPRUP & heprup() const
Definition: LHERunInfoProduct.h:55
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
edm::Handle
Definition: AssociativeIterator.h:50
class-composition.Q
Q
Definition: class-composition.py:82
lhef::HEPRUP::EBMUP
std::pair< double, double > EBMUP
Definition: LesHouches.h:82
LHAPDF::usePDFMember
void usePDFMember(int nset, int member)
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
LHAPDF::initPDFSet
void initPDFSet(int nset, const std::string &filename, int member=0)
HLT_FULL_cff.weights
weights
Definition: HLT_FULL_cff.py:99178
LHECOMWeightProducer::_origECMS
double _origECMS
Definition: LHECOMWeightProducer.cc:37
verbose
static constexpr int verbose
Definition: HLTExoticaSubAnalysis.cc:25
LHAPDF::xfx
double xfx(int nset, double x, double Q, int fl)
lhef::HEPRUP::PDFGUP
std::pair< int, int > PDFGUP
Definition: LesHouches.h:88
iEvent
int iEvent
Definition: GenABIO.cc:224
LHECOMWeightProducer::_pdfmember
int _pdfmember
Definition: LHECOMWeightProducer.cc:36
LHECOMWeightProducer::lheTag_
edm::InputTag lheTag_
Definition: LHECOMWeightProducer.cc:34
LHEEventProduct::hepeup
const lhef::HEPEUP & hepeup() const
Definition: LHEEventProduct.h:46
lhef::HEPRUP::PDFSUP
std::pair< int, int > PDFSUP
Definition: LesHouches.h:94
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
writedatasetfile.run
run
Definition: writedatasetfile.py:27
lhef::HEPEUP::IDUP
std::vector< int > IDUP
Definition: LesHouches.h:223
Exception
Definition: hltDiff.cc:246
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:224
globals_cff.id2
id2
Definition: globals_cff.py:34
lhef::HEPEUP::PUP
std::vector< FiveVector > PUP
Definition: LesHouches.h:246
edm::InputTag
Definition: InputTag.h:15
weight
Definition: weight.py:1
lhef::HEPEUP::SCALUP
double SCALUP
Definition: LesHouches.h:208
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27