ROOT ntuples
From Wiki Les Houches 09
(Difference between revisions)
Current revision (08:05, 16 June 2009) (view source) (→ROOT ntuple content) |
|||
(5 intermediate revisions not shown.) | |||
Line 1: | Line 1: | ||
- | |||
- | |||
People interested: Joey Huston, Frank-Peter Schilling, Joanna Weng | People interested: Joey Huston, Frank-Peter Schilling, Joanna Weng | ||
+ | |||
+ | === Objectives === | ||
+ | |||
+ | * Define and implement a common ROOT ntuple output format for NLO programs | ||
+ | * It allows easy exchange of information between theorists and experimentalists | ||
+ | * the ntuples can be used to plot distributions, apply kinematic cuts etc. | ||
+ | * Reference ntuples could be provided for basic LHC cross sections, with well defined and tested content | ||
+ | * ntuples could be provided by NLO program authors, even if the program itself is not (yet) available for the public | ||
+ | |||
+ | === Relation with LHEF === | ||
+ | |||
+ | * The ROOT ntuples are NOT meant to replace or compete with the existing Les Houches Event file standard LHEF | ||
+ | * The ntuples are meant for plotting, not for interfacing with parton showers etc. | ||
+ | * The information stored in the ntuples is a subset of what is needed in LHEF | ||
+ | * A one-way '''converter''' could be implemented, which reads LHEF and writes out an ntuple | ||
=== ROOT ntuple content === | === ROOT ntuple content === | ||
- | Proposal for variables to be stored (the variables would appear in the ROOT tree | + | Proposal for variables to be stored (the variables would appear in the ROOT tree without the preceding 'm_' |
- | without the preceding 'm_' | + | |
// 4-vectors of incoming and outgoing partons | // 4-vectors of incoming and outgoing partons | ||
Line 27: | Line 39: | ||
// PDF reweights | // PDF reweights | ||
std::vector<float> m_pdf_weights; | std::vector<float> m_pdf_weights; | ||
+ | |||
+ | * One important feature of the ntuple format is the possibility to store relations between events, which is important in the context of NLO event generation: The links between real emission events and subtraction counterevents can be stored. This is achieved by storing for each event a unique event number (evt_no). In addition, a vector of event numbers can be stored as pointers to the related counterevents (vector<float> evt_pointers). | ||
=== Implementation === | === Implementation === | ||
Line 33: | Line 47: | ||
* The C++ implementation would be based on two helper classes, which would shield the technical details of creating the ROOT tree from the user | * The C++ implementation would be based on two helper classes, which would shield the technical details of creating the ROOT tree from the user | ||
- | ** class LhaNLOEvent: it contains as data members the variables listed above. For every event, the information is stored in the LhaNLOEvent via setter functions, e.g. event->setWeight(wgt); | + | ** '''class LhaNLOEvent''': it contains as data members the variables listed above. For every event, the information is stored in the LhaNLOEvent via setter functions, e.g. event->setWeight(wgt); |
- | ** class LhaNLOTreeWriter: it crates a ROOT output file (name given in constructor) and tree. An event is filled to the tree via writer->writeEvent(evt); Comments can be stored as text strings via writer->writeComment(string); | + | ** '''class LhaNLOTreeWriter''': it crates a ROOT output file (name given in constructor) and tree. An event is filled to the tree via writer->writeEvent(evt); Comments can be stored as text strings via writer->writeComment(string); |
+ | * This way, the user does not need to know any details about ROOT, only the ROOT libraries need to be linked to the NLO code | ||
* A first prototype of this interface is currently implemented and tested in the NLO calculation of ttbar+jet (Dittmaier, Uwer, Weinzierl) | * A first prototype of this interface is currently implemented and tested in the NLO calculation of ttbar+jet (Dittmaier, Uwer, Weinzierl) | ||
+ | ** http://arxiv.org/abs/0810.0452 | ||
+ | ** http://arxiv.org/abs/hep-ph/0703120 |
Current revision
People interested: Joey Huston, Frank-Peter Schilling, Joanna Weng
Contents |
Objectives
- Define and implement a common ROOT ntuple output format for NLO programs
- It allows easy exchange of information between theorists and experimentalists
- the ntuples can be used to plot distributions, apply kinematic cuts etc.
- Reference ntuples could be provided for basic LHC cross sections, with well defined and tested content
- ntuples could be provided by NLO program authors, even if the program itself is not (yet) available for the public
Relation with LHEF
- The ROOT ntuples are NOT meant to replace or compete with the existing Les Houches Event file standard LHEF
- The ntuples are meant for plotting, not for interfacing with parton showers etc.
- The information stored in the ntuples is a subset of what is needed in LHEF
- A one-way converter could be implemented, which reads LHEF and writes out an ntuple
ROOT ntuple content
Proposal for variables to be stored (the variables would appear in the ROOT tree without the preceding 'm_'
// 4-vectors of incoming and outgoing partons std::vector<float> m_px,m_py,m_pz,m_e; // x1 and x2 values float m_x1,m_x2; // initial state particle IDs // (PDG convention: 0=g,1=u,2=d,...,6=t,-1=ubar,...,-6=tbar) int m_id1,m_id2; // factorization and renormalization scale float m_fac_scale,m_ren_scale; // event weight float m_weight; // user weights std::vector<float> m_user_weights; // unique event number long m_evt_no; // pointers to related (real emission / counterterm) events std::vector<long> m_evt_pointers; // PDF reweights std::vector<float> m_pdf_weights;
- One important feature of the ntuple format is the possibility to store relations between events, which is important in the context of NLO event generation: The links between real emission events and subtraction counterevents can be stored. This is achieved by storing for each event a unique event number (evt_no). In addition, a vector of event numbers can be stored as pointers to the related counterevents (vector<float> evt_pointers).
Implementation
- The Fortran implementation could be based on FROOT http://hep.pa.msu.edu/cteq/public/froot/froot1.0.tar.gz which provides a Fortran wrapper for the necessary ROOT commands to book, fill and output a ROOT tree. It is already implemented in MCFM http://mcfm.fnal.gov/
- The C++ implementation would be based on two helper classes, which would shield the technical details of creating the ROOT tree from the user
- class LhaNLOEvent: it contains as data members the variables listed above. For every event, the information is stored in the LhaNLOEvent via setter functions, e.g. event->setWeight(wgt);
- class LhaNLOTreeWriter: it crates a ROOT output file (name given in constructor) and tree. An event is filled to the tree via writer->writeEvent(evt); Comments can be stored as text strings via writer->writeComment(string);
- This way, the user does not need to know any details about ROOT, only the ROOT libraries need to be linked to the NLO code
- A first prototype of this interface is currently implemented and tested in the NLO calculation of ttbar+jet (Dittmaier, Uwer, Weinzierl)