General Ntuples at D0

Before we sink into chaos of zilions of interesting Ntuples of uncertain origin or yield all the disk space to ever-hungry top group, we should try to explore if it is possible to satisfy (most of?) our needs with the unified data sets. MicroDST in a form of an Ntuple is an obvious starting point. Column-Wise Ntuple make an attempt of defining a common data set possible, because of the efficiency of the access:

Well, this is a try, and RFC (Request For Comments). Ntuple is split into several blocks, obviously. All variables are packed, to save space. For un-initiated, few examples:

    I*4:6                 === integer, store only 6 bits
    I*4:[-63,63]          === integer, store only as many bits as nesessary
                              for this range(i.e. 7)
    U*4:7                 === unsigned integer, store 7 bits only
    R*4:12:[0,1000]       === real, store only 12 bits. This implies a 
                              precision of 1000/10**12 = 0.25
Below, you find proposed format of the Ntuple. First two columns provide a link to the micro DST, and enable automatic creation of the conversion code, just ignore them. The third column contains a proposed variable name: it will be the way we use it in the analysis. It should be self-describing and easy for not-so-good typers. Next column contains the proposed packing format. In many cases there is a considerable waste of bits, please help to identify. The next column contains description of the variable. It can be rectified/ improved in many cases. Help!

This is a first pass. QCD groups have a number of suggestions, they will appear shortly. Some of the groups/people expressed a need for addtional variables or for some derived quantities (like transverse mass), for convenience. Given the substantial savings in space, such requests can be entertained. The proponents may have to pay the price in a form of the computer code to generate their favoured variables.

OK, OK... Here it is: the Ntuple format