Skip to content
Snippets Groups Projects

Test of FunTuple with v2 Composites and ChargedBasic

Merged Abhijit Mathad requested to merge AM_v2 into master
All threads resolved!
Files
4
###############################################################################
# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration #
# #
# This software is distributed under the terms of the GNU General Public #
# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
# #
# In applying this licence, CERN does not waive the privileges and immunities #
# granted to it by virtue of its status as an Intergovernmental Organization #
# or submit itself to any jurisdiction. #
###############################################################################
from PyConf.Algorithms import ChargedBasicsProducer, UniqueIDGeneratorAlg
from PyConf.Algorithms import ThOrCombiner__2ChargedBasics
from PyConf.Algorithms import ThOrCombiner__CompositesChargedBasics
import Functors as F
from FunTuple import FunctorCollection
from FunTuple import FunTuple_Composites
from FunTuple import FunTuple_ChargedBasics
from DaVinci import options
#make unique_id_generator
unique_id_gen = UniqueIDGeneratorAlg()
#produce charged basic particles
produce_muons = ChargedBasicsProducer(
InputUniqueIDGenerator=unique_id_gen, ParticleID='muon')
produce_jpsi = ThOrCombiner__2ChargedBasics(
InputUniqueIDGenerator=unique_id_gen,
DecayDescriptor="J/psi(1S) -> mu+ mu-",
Input1=produce_muons.Particles,
Input2=produce_muons.Particles)
produce_kaons = ChargedBasicsProducer(
InputUniqueIDGenerator=unique_id_gen, ParticleID='kaon')
produce_B = ThOrCombiner__CompositesChargedBasics(
InputUniqueIDGenerator=unique_id_gen,
DecayDescriptor="[B+ -> J/psi(1S) K+]cc",
Input1=produce_jpsi.Output,
Input2=produce_kaons.Particles)
#define FunTuple instance
# Cannot yet use CHILD functors with v2.
variables = FunctorCollection({"PX": F.PX, "PY": F.PY, "PZ": F.PZ})
#Note CC here and cc (small case) above in the decay descriptor. Needs to be uniform.
# Decay descriptor parsing is not yet available with v2 Composites.
# Hence, we are simply running over all particles in TES and not selecting any subset using the decay descriptor for the moment.
bfields = {"B": "[B+ -> J/psi(1S) K+]CC"}
bvars = {"B": variables}
ntuple_composite = FunTuple_Composites(
name="TupleB",
tuple_name="DecayTree",
fields=bfields,
variables=bvars,
inputs=produce_B.Output)
# Decay descriptor parsing is not yet available with v2 Composites or ChargedBasic (see above comment).
kfields = {"K": "[B+ -> J/psi(1S) ^K+]CC"}
kvars = {"K": variables}
ntuple_charged_basic = FunTuple_ChargedBasics(
name="TupleK",
tuple_name="DecayTree",
fields=kfields,
variables=kvars,
inputs=produce_kaons.Particles)
options.evt_max = 2
def main():
return {
"UserAlgs_1": [ntuple_composite],
'UserAlgs_2': {ntuple_charged_basic}
}, []
Loading