ROOT ntuples
From Wiki Les Houches 09
Aim: Define and implement a common ROOT ntuple output format for NLO programs
People interested: Joey Huston, Frank-Peter Schilling, Joanna Weng
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)