Skip to content

Add new Muon PIDs object in SOA format

Sascha Stahl requested to merge sstahl_muons into master

This merge request builds on top of !2095 (merged).

Adds LHCb::Pr::Muon::PIDs object which mainly consists of

 class PIDs {
    std::vector<int>         m_statuses;
    std::vector<float>       m_chi2Corrs;
    Zipping::ZipFamilyNumber m_zipIdentifier;

and follows a similar structure as https://gitlab.cern.ch/lhcb/Rec/blob/master/Phys/SelKernel/SelKernel/VertexRelation.h. Only the IsMuon flag is implemented for now, more can be added later. Checking the IsMuon flag is vectorized.

The version to iterate over muon ids is defined PrIterableMuonIDs.h.

Additionally a transform function which can operate with PrTracks and PrMuonIDs is introduced. This allows to write

auto muonPIDs = Zipping::transform<MuonPIDs>( tracks, ismuon );

where tracks are iterable and ismuon is a lambda which calculates one muon id per track. No attempt to vectorize this has been made.

Additional changes

  • Move some helper function from PrZip.h to ZipUtils.h
  • Add iterable forward tracks used in muon id algorithm.
  • Added endScifiState accessors used in muon id algorithm.

Tests of the Pr::Muon::PIDs class are implemented in Event/RecEvent/tests/src/TestMuonZipInfrastructure

See Rec!1689 (merged) for the adaption of the MuonID algorithm and Moore!240 (merged) for a test.

Edited by Marco Cattaneo

Merge request reports