Old Collection Access Pattern
Old Collection Access Pattern¶
The non-typed way of accessing xAOD collections is supported for now, but is depreciated, and eventually, will stop working. There isn’t a lot different from the typed method. However, much less of the xAOD is defined, so watch out for holes.
from config import ds_zee_untyped
import matplotlib.pyplot as plt
jets = (ds_zee_untyped
.SelectMany(lambda e: (e.Jets("AntiKt4EMTopoJets")))
.Where(lambda j: (j.pt()/1000)>30)
.Select(lambda j: (j.pt()/1000.0))
.AsPandasDF("JetPt")
.value())
There are several things to note. First, you’ll see two warning messages if you are running in local mode:
Warning: assuming that the method 'xAOD::Jet::pt(...)' has return type 'double'. Use cpp_types.add_method_type_info to suppress (or correct) this warning.
Warning: assuming that the method 'xAOD::Jet::pt(...)' has return type 'double'. Use cpp_types.add_method_type_info to suppress (or correct) this warning.
Those indicate that the backend wasn’t sent type information and so made the assumption that jet pt
was a double return type. In this case, a good guess.
A few other things:
No corrections were applied. These are the raw data from the xAOD file. This is a DAOD_PHYS file, so that won’t be correct.
Only a limited number of collections are known (Jets, Muons, Electrons, Tracks).
plt.hist(jets.JetPt, bins=100, range=(0, 100))
plt.xlabel('Jet $p_T$ [GeV]')
plt.ylabel('Number of jets')
_ = plt.title('Jet $p_T$ distribution for Zee events')