ROOT ntuples
From Wiki Les Houches 09
(Difference between revisions)
Line 1: | Line 1: | ||
- | |||
People interested: Joey Huston, Frank-Peter Schilling, Joanna Weng | People interested: Joey Huston, Frank-Peter Schilling, Joanna Weng | ||
Line 5: | Line 4: | ||
* Define and implement a common ROOT ntuple output format for NLO programs | * Define and implement a common ROOT ntuple output format for NLO programs | ||
- | * It allows easy exchange of information between theorists | + | * It allows easy exchange of information between theorists and experimentalists |
- | and experimentalists | + | |
* the ntuples can be used to plot distributions, apply kinematic cuts etc. | * the ntuples can be used to plot distributions, apply kinematic cuts etc. | ||
- | * Reference ntuples could be provided for basic LHC cross sections, | + | * Reference ntuples could be provided for basic LHC cross sections, with well defined and tested content |
- | 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 |
- | * ntuples could be provided by NLO program authors, even if | + | |
- | the program itself is not (yet) available for the public | + | |
=== Relation with LHEF === | === Relation with LHEF === | ||
- | * The ROOT ntuples are NOT meant to replace or | + | * The ROOT ntuples are NOT meant to replace or compete with the existing Les Houches Event file standard LHEF |
- | compete with the existing Les Houches Event file standard LHEF | + | * The ntuples are meant for plotting, not for interfacing with parton showers etc. |
- | * The ntuples are meant for plotting, not for interfacing with | + | * The information stored in the ntuples is a subset of what is needed in LHEF |
- | parton showers etc. | + | * A one-way '''converter''' could be implemented, which reads LHEF and writes out an ntuple |
- | * 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 |
Revision as of 08:00, 16 June 2009
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;
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)