Some differences observed during this work that should be unified (this needs to be turned into some issues in the xaod and uproot backends):
Uproot can deal with linq type ast's (like (Select xxx) and xAOD needs (call Select xxx. Further, the xAOD backend crashes in a rather subtle way if it isn't given the right version. For xAOD background you can't call qastle.insert_linq_nodes first.
the uproot backend can deal with a dictionary as a final input to the ntupler, taking column names from the dictionaries names. The xAOD cannot.
Neither backend can deal with dictionaries in the middle of the code (that get made and then destroyed)
The xAOD backend needs an AsROOTTtree as a final call, the uproot backend does not. Should decide if different output types should be produced by the transformers and if not, then both should look like the uproot backend.
Parquet files are made by the uproot backend and not root files, and vice versa. Should this be normalized somewhere in servicex's infrastructure?
Should we be able to tell what endpoint is serving what type of backend by querying it?
This needs to be combined with any input from the testing that is done in the servicex backend tests repo.
Some differences observed during this work that should be unified (this needs to be turned into some issues in the
xaod
anduproot
backends):(Select xxx
) and xAOD needs(call Select xxx
. Further, the xAOD backend crashes in a rather subtle way if it isn't given the right version. For xAOD background you can't callqastle.insert_linq_nodes
first.uproot
backend can deal with a dictionary as a final input to the ntupler, taking column names from the dictionaries names. The xAOD cannot.xAOD
backend needs an AsROOTTtree as a final call, theuproot
backend does not. Should decide if different output types should be produced by the transformers and if not, then both should look like theuproot
backend.This needs to be combined with any input from the testing that is done in the servicex backend tests repo.