Skip to content

Packing and persistence of containers for persist reco

Nicole Skidmore requested to merge packing_persistreco into master

Implementing packing and persistence of containers for persist reco. Unit tests run orthogonal dzero2kk_line HLT2 lines with PersistReco==True and PersistReco==False. We check the container sizes in the output dst to see if the persistreco logic is working, check the track unpacking using the new PersistRecoConf logic and check that the particle physics objects are correctly packed to pPhys/Particles. One test for using reconstruction from file and one for real time reco

Still need to force whole reconstruction if a persistreco line fires

Depends on LHCb!2857 (merged).

Note 1 - VeloTracks

In the unit test test_persistreco_fromfile.qmt (using reco from file) get the following when doing the packing

PackPVs                             WARNING PackRecVertex:: Null Track SmartRef in '/Event/Rec/Vertex/Primary' StatusCode=FAILURE

and

PackCaloElectrons                   WARNING PackCaloHypo:: Null CaloCluster SmartRef found StatusCode=FAILURE
In [3]: link_manager_paths(TES["/Event/pRec/Vertex/Primary"])
Out[3]: ['/Event/Rec/Track/Velo']

VELO tracks/clusters aren't saved by Brunel so nothing unpacked to /Event/Rec/Track/Velo. Velo tracks are the ones used to make the PVs and this container only be useful if you needed to refit the PV (DTF should work fine without)

This is not an issue when using real time reco.

As a result test_persistreco_fromfile.qmt does not count Warnings only ERROR and FATAL

Note 2 - Missing reco

Muon tracks not implemented in real time reco so are not part of the persistreco container list (only for Calib anyway?).

Muon PIDs check

if TES["/Event/HLT2/pRec/Muon/MuonPID"].data().size() > N_TURBO:
        muons = True
print('Packed Muon PID container size: ' + str(TES["/Event/HLT2/pRec/Muon/MuonPID"].data().size()))

is not included in the tests for real time reco as these are temporarily disabled, they will need to be added later.

Also not included in real time reco check is neutrals

if TES["/Event/HLT2/pRec/ProtoP/Neutrals"].protos().size() > N_TURBO:
        neutrals = True
print('Packed neutral protos container size: ' + str(TES["/Event/HLT2/pRec/ProtoP/Neutrals"].protos().size()))

This can be added back when the whole reconstruction is forced if a persistreco line fires

Edited by Rosen Matev

Merge request reports