Complete:
Event content definition
RECO Data Formats
GeneratorInterface collections (in RECOSIM and AODSIM) |
generator |
LHEEventProduct |
General characteristics of a generated event (only present if the event starts from LHE events) |
generator |
GenEventInfoProduct |
General characteristics of a generated event. |
generator |
GenRunInfoProduct |
Run-specific parameters that define event generation, such as cross-sections, etc. |
GeneratorInterface collections (in RECOSIM only) |
generator |
edm::HepMCProduct |
A tree of final-state particles that form a generated event. |
generator |
LHEEventProduct |
General characteristics of a generated event (only present if the event starts from LHE events) |
generator |
GenEventInfoProduct |
General characteristics of a generated event. |
generator |
GenRunInfoProduct |
Run-specific parameters that define event generation, such as cross-sections, etc. |
How to use the table
In the header of your analyzer you should have the header(s) of the data format(s) you will access. Generator data formats belong to the
in the
SimDataFormats/GeneratorProducts
; the headers are located in the
/interface
subdirectory.
Thus, your
EDAnalyzer should contain all or one of the following:
#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
#include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h"
#include "SimDataFormats/GeneratorProducts/interface/GenRunInfoProduct.h"
Using the HepMCProduct directly (only works with GEN/GENSIM)
Note that
edm::HepMCProduct
is a wrapper on top of
HepMC::GenEvent
class of the standard LCG package
HepMC
.
For details about features and access methods of the
HepMC::GenEvent
class please refer to the
HepMC documentation
for details.
Here we would like to show how to access the generated event particle tree and to use 2 of the
GenEvent::HepMC
access methods.
In the
analyze(const Event& e, const EventSetup& )
method of your
EDAnalyzer you can do something like the following:
edm::Handle<edm:: HepMCProduct > genEvtHandle;
e.getByLabel( "generator", genEvtHandle) ;
const HepMC::GenEvent* Evt = genEvtHandle->GetEvent() ;
//
// this is an example loop over the hierarchy of vertices
//
for ( HepMC::GenEvent::vertex_const_iterator
itVtx=Evt->vertices_begin(); itVtx!=Evt->vertices_end(); ++itVtx )
{
//
// this is an example loop over particles coming out of each vertex in the loop
//
for ( HepMC::GenVertex::particles_out_const_iterator
itPartOut=(*itVtx)->particles_out_const_begin();
itPartOut!=(*itVtx)->particles_out_const_end(); ++itPartOut )
{
// and more of your code...
}
}
Out of the event size consideration, in the AOD event content the
edm::HepMCProduct
format of the is generated event is replaced by the "lighter" record called
reco::GenParticleCollection
. Formally, it is outside the
GeneratorInterface domain, and belongs to the
CMS.PhysicsTools
of CMSSW. For more details, please visit
WorkBookGenParticleCandidate and related materials.
Using other products (AODSIM)
If you wish to analyze general characteristics of an event rather than specific generated particles, in the
analyze(const Event& e, const EventSetup& )
of your
EDAnalyzer do the following:
edm::Handle<GenEventInfoProduct> genEvtInfo;
e.getByLabel( "generator", genEvtInfo );
double qScale = genEvtInfo->qScale(); // in case of Pythia6, this will be pypars/pari(23)
const std::vector<double>& binningValues = genEvtInfo->binningValues(); // in case of Pythia6, this will be pypars/pari(17)
Particularly important is the use of weights, which must
always be activated otherwise events with generators like Madgraph5_aMCatNLO will give wrong results.
std::vector<double>& evtWeights = genEvtInfo->weights();
double theWeight = genEvtInfo->weight();
// and some more of your code again...
Please note that the
weights()
return the container of the associated event weights, where there may be 1 or more elements. For example, in the case of running Pythia6 generators there'll be 2 elements; please see
SWGuidePythia6Interface#Example_8_CSA_mode_with_Event_Re for more details.
The
weight()
method returns the value which is a result of multiplication of all elements in the weights container and is normally the one to be used.
If you wish to access run-specific information about event generation, you can do so via
GenRunInfoProduct
.
Please be advised that this product
- belongs to
edm::Run
rather than edm::Event
- is not finalized until the end of run
Thus you may want to implement
endRun(const Run& r, const EventSetup& )
method in your
EDAnalyzer and analyze
GenRunInfoProduct there:
edm::Handle<GenRunInfoProduct> genRunInfo;
r.getByLabel( "generator", genRunInfo );
Retrieving information on LHE event (AODSIM)
Only in case the generation started from LHE events the
GenEventInfo will contain information on matching like the number of original partons before hadronization:
int nAllPartons = genEvtInfo->nMEPartons();
int nPartonsEnteringMatching = genEvtInfo->nMEPartonsFiltered();
// and some more of your code again...
Also, if the LHE was produced by Madgraph5_aMCatNLO or POWHEG in official production weights from scale variations, PDFs etc. are stored in the relative product. Notice that to be used they need to be renormalized to the central event weight
at LHE level which may be different from
genEvtInfo->weight()
.
edm::Handle<LHEEventProduct> EvtHandle ;
e.getByLabel( theSrc , EvtHandle ) ;
int whichWeight = XXX;
theWeight *= EvtHandle->weights()[whichWeight].wgt/EvtHandle->originalXWGTUP();
Some commonly used weights for LO samples:
- XXX = 0,...,8 : QCD scales variations (all combinations of mu_R x2 - x0.5 and muF x2 - x0.5)
- XXX = 9,...,109: Members of NNPDF3.0LO (default PDF, central + 100 variations, alpha_s = 0.130). These numbers are instead 110,...,210 if the sample uses the 4-flavor version of PDFs.
- XXX = 211: NNPDF3.0LO with alpha_s varied to 0.118
- XXX = 313: NNPDF3.0LO with alpha_s varied to 0.119
- XXX = 314: CTEQ6L1 (alternative PDF)
- XXX = 315,...,365: Members of MMHT14lo68cl (alternative PDF, central + 50 variations)
- XXX = 369,...,389: Members of HERAPDF15LO (alternative PDF, central + 20 variations)
Some commonly used weights for NLO samples:
Review status
Responsible:
Last reviewed by: