ROOT ntuples

From Wiki Les Houches 09

Jump to: navigation, search

People interested: Joey Huston, Frank-Peter Schilling, Joanna Weng



  • 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).


  • 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)
Personal tools