Implementation strategy for mcMatch functor
The mcMatch
functor has, in Run 1-2, extensively been used in DaVinci to:
- build a trivial selection to run on MC, that is subsequently used to motivate a selection for data or study efficiencies
- as variables through the LoKi Hybrid TupleTool to separate which particle comes from which decay chain
Plenty of examples of the former can be found in the analysis productions (for example in mctruthsels for D02HHPi0), and the latter in e.g. OmbToOmcPi_XibToXic0Pi
. (it's used a lot)
These functors can act on LHCb::Particles, and can be given a list of linker tables if you do even more fancy linking. It effectively makes the hop of particle -> mcparticle for you, and then tests whether the mcparticle matches the MC decay descriptor:
LoKi_Bc.Variables["is_from_Bc_BsPi"] = "switch( mcMatch( '[B_c+ => (B_s0 => ((D_s- | D_s+) ==> K- K+ (pi- | pi+ ) ) (pi+ | pi-) ) pi+]CC' , 1 ) , 1 , 0 )"
and you can do some fancy things like carets (like mcMatch('Z0 -> ^mu- mu+')
).
This issue is to describe how this functionality is preserved technically with the new event model.
Note that:
- An argument should be present to point to alternative linker tables