CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

virtual void beginJob () override
 
virtual void beginRun (edm::Run const &run, const edm::EventSetup &es) override
 
virtual 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
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)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename 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)
 

Detailed Description

Definition at line 24 of file LHECOMWeightProducer.cc.

Constructor & Destructor Documentation

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

Definition at line 56 of file LHECOMWeightProducer.cc.

References _label, and _newECMS.

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

Definition at line 67 of file LHECOMWeightProducer.cc.

67 {}

Member Function Documentation

void LHECOMWeightProducer::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDProducer.

Definition at line 86 of file LHECOMWeightProducer.cc.

86  {
87  //LHAPDF::initPDFSet(1,pdfSetName_);
88 }
void LHECOMWeightProducer::beginRun ( edm::Run const &  run,
const edm::EventSetup es 
)
overrideprivatevirtual

Reimplemented from edm::EDProducer.

Definition at line 70 of file LHECOMWeightProducer.cc.

References _newECMS, _origECMS, _pdfmember, _pdfset, Exception, edm::Run::getByLabel(), LHAPDF::initPDFSet(), and lheTag_.

70  {
71  using namespace edm;
73  run.getByLabel(lheTag_, lheRun);
74  //assumes the same pdf is used for both beams
75  _pdfset = lheRun->heprup().PDFSUP.first;
76  _pdfmember = lheRun->heprup().PDFGUP.first;
77  _origECMS = lheRun->heprup().EBMUP.first + lheRun->heprup().EBMUP.second;
78  edm::LogInfo("LHECOMWeightProducer") << "PDFSET: " << _pdfset << "; member: " << _pdfmember << "; COM energy: " << _origECMS;
79  if ( _newECMS > _origECMS )
80  throw cms::Exception("LHECOMWeightProducer") << "You cannot reweight COM energy to a higher than original energy ";
82 }
void initPDFSet(int nset, const std::string &filename, int member=0)
void LHECOMWeightProducer::produce ( edm::Event iEvent,
const edm::EventSetup  
)
overrideprivatevirtual

Implements edm::EDProducer.

Definition at line 91 of file LHECOMWeightProducer.cc.

References _label, _newECMS, _origECMS, _pdfmember, _pdfset, gather_cfg::cout, edm::Event::getByLabel(), info(), edm::EventBase::isRealData(), lheTag_, LogTrace, edm::Event::put(), class-composition::Q, LHAPDF::usePDFMember(), puppiForMET_cff::weight, create_public_pileup_plots::weights, and LHAPDF::xfx().

91  {
92 
93  using namespace std;
94  bool verbose = false;
95 
96  if (iEvent.isRealData()) return;
97 
99  iEvent.getByLabel(lheTag_, lheevent);
100 
101  float Q = lheevent->hepeup().SCALUP;
102 
103  int id1 = lheevent->hepeup().IDUP[0];
104  double x1 = fabs(lheevent->hepeup().PUP[0][2]/(_origECMS/2));
105  double x1prime = fabs(lheevent->hepeup().PUP[0][2]/(_newECMS/2));
106 
107  int id2 = lheevent->hepeup().IDUP[1];
108  double x2 = fabs(lheevent->hepeup().PUP[1][2]/(_origECMS/2));
109  double x2prime = fabs(lheevent->hepeup().PUP[1][2]/(_newECMS/2));
110 
111  LogTrace("LHECOMWeightProducer") << "*******LHECOMWeightProducer*******\n" <<
112  " Q : " << Q << "\n" <<
113  " id1: " << id1 << "\n" <<
114  " x1 : " << x1 << "\n" <<
115  " x1': " << x1prime << "\n" <<
116  " id2: " << id2 << "\n" <<
117  " x2 : " << x2 << "\n" <<
118  " x2': " << x2prime ;
119  //gluon is 0 in the LHAPDF numbering
120  if (id1 == 21)
121  id1 = 0;
122  if (id2 == 21)
123  id2 = 0;
124 
125  // Put PDF weights in the event
126  if (verbose)
127  cout << " Set : " << _pdfset << " member : " << _pdfmember << endl;
128 
130  double oldpdf1 = LHAPDF::xfx(1, x1, Q, id1)/x1;
131  double oldpdf2 = LHAPDF::xfx(1, x2, Q, id2)/x2;
132  double newpdf1 = LHAPDF::xfx(1, x1prime, Q, id1)/x1prime;
133  double newpdf2 = LHAPDF::xfx(1, x2prime, Q, id2)/x2prime;
134  LogTrace("LHECOMWeightProducer") <<
135  " xfx1 : " << oldpdf1 << "\n" <<
136  " xfx2 : " << oldpdf2 << "\n" <<
137  " xfx1': " << newpdf1 << "\n" <<
138  " xfx2': " << newpdf2 << "\n" <<
139  " weight:" << (newpdf1/oldpdf1)*(newpdf2/oldpdf2);
140  double weight = (newpdf1/oldpdf1)*(newpdf2/oldpdf2);
141  std::vector<double> weights;
142  weights.push_back(weight);
143  std::auto_ptr<GenEventInfoProduct> info(new GenEventInfoProduct());
144  info->setWeights(weights);
145  iEvent.put(info, _label);
146 }
static const TGPicture * info(bool iBackgroundIsBlack)
bool isRealData() const
Definition: EventBase.h:64
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:120
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:420
#define LogTrace(id)
double xfx(int nset, double x, double Q, int fl)
tuple cout
Definition: gather_cfg.py:121
void usePDFMember(int nset, int member)

Member Data Documentation

std::string LHECOMWeightProducer::_label
private
double LHECOMWeightProducer::_newECMS
private

Definition at line 38 of file LHECOMWeightProducer.cc.

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

double LHECOMWeightProducer::_origECMS
private

Definition at line 37 of file LHECOMWeightProducer.cc.

Referenced by beginRun(), and produce().

int LHECOMWeightProducer::_pdfmember
private

Definition at line 36 of file LHECOMWeightProducer.cc.

Referenced by beginRun(), and produce().

int LHECOMWeightProducer::_pdfset
private

Definition at line 35 of file LHECOMWeightProducer.cc.

Referenced by beginRun(), and produce().

edm::InputTag LHECOMWeightProducer::lheTag_
private

Definition at line 34 of file LHECOMWeightProducer.cc.

Referenced by beginRun(), and produce().