Skip to content
Snippets Groups Projects
Commit 13ab0464 authored by Izaac Sanderswood's avatar Izaac Sanderswood
Browse files

skeleton of bs2phigamma line

parent 2c74dd46
No related branches found
No related tags found
1 merge request!1240Bs2PhiGamma and Bd2KstGamma HLT2 and Sprucing lines
Pipeline #3421908 failed
###############################################################################
# (c) Copyright 2021 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. #
###############################################################################
""" Bs2PhiGamma Hlt2 Line
"""
from Moore.config import register_line_builder
from Moore.lines import Hlt2Line
from RecoConf.reconstruction_objects import upfront_reconstruction
from GaudiKernel.SystemOfUnits import GeV, MeV, mm
import Functors as F
from Functors.math import in_range
from RecoConf.reconstruction_objects import (
make_pvs_v2 as make_pvs,
make_pvs as make_pvs_v1
)
from PyConf import configurable
# from Hlt2Conf.standard_particles import (
# make_photons,
# make_long_kaons,
# make_phi2kk,
# make_has_rich_long_kaons
# )
from Hlt2Conf.lines.rd.builders.rdbuilder_thor import (
make_rd_photons as make_photons,
make_rd_detached_phis,
)
from Hlt2Conf.lines.rd.builders import b_tmva_builder
all_lines = {}
from Hlt2Conf.algorithms_thor import ParticleCombiner, ParticleFilter, require_all
## The cuts are put here for clarity
## If adding new cuts, please add here, then refer to them in the parts below
photon_cuts = {
"pt_min" : 2 * GeV,
"p_min" : 5*GeV,
}
track_cuts = {
"chi2pdof_max" : 5,
"ipchi2_min" : 20,
"pt_min": 500 * MeV,
}
phi_cuts = {
"vchi2pdof_max" : 25 ,
"comb_m_min": 1010 * MeV,
"comb_m_max" : 1030 * MeV ,
}
b_cuts = {
"vchi2pdof_max" : 25 ,
"dira_max": 0.063,
"pt_min" : 2000 * MeV,
"comb_m_min" : 750 * MeV,
"comb_m_max" : 2250 * MeV,
"ipchi2_max": 12,
}
cuts = {
"photon": photon_cuts,
"track": track_cuts,
"phi": phi_cuts,
"b": b_cuts
}
# make sure we passed GEC and have PV in event
def prefilters():
return [require_pvs(make_pvs())]
# Define photon filter
# TO DO -- what are the filter requirements?
# @configurable
# def filter_photons(photons,pvs,pt_min=photon_cuts["pt_min"]):
# filter_code = require_all(
# F.PT > pt_min
# )
# return ParticleFilter(photons,F.FILTER(filter_code))
# # return photons
# # Define the kaon filter
# @configurable
# def filter_kaons(kaons,pvs,pt_min=track_cuts["pt_min"],chi2pdof_max=track_cuts["chi2pdof_max"],ipchi2_min=track_cuts["ipchi2_min"]):
# filter_code = require_all(
# F.PT > pt_min,
# F.CHI2DOF < chi2pdof_max,
# F.BPVIPCHI2(pvs) > ipchi2_min
# )
# return ParticleFilter(kaons,F.FILTER(filter_code))
# # define the maker for the phi
# @configurable
# def make_phis(kaons,pvs,comb_m_min=phi_cuts["comb_m_min"],comb_m_max=phi_cuts["comb_m_max"],vchi2pdof_max=phi_cuts["vchi2pdof_max"]):
# descriptor = "[phi(1020) -> K+ K-]cc"
# combination_code = in_range(comb_m_min,F.MASS,comb_m_max)
# vertex_code = require_all(
# F.CHI2DOF < vchi2pdof_max
# )
# return ParticleCombiner(
# name="Phi2KKCombiner4Bs2PhiGamma",
# Inputs=kaons,
# DecayDescriptor=descriptor,
# CombinationCut=combination_code,
# CompositeCut=vertex_code
# )
# Make the Bs
@configurable
def make_bs2phigamma(phis, photons, pvs,comb_m_min=b_cuts["comb_m_min"],comb_m_max=b_cuts["comb_m_max"],pt_min=b_cuts["pt_min"],vchi2pdof_max=b_cuts["vchi2pdof_max"],ipchi2_max=b_cuts["ipchi2_max"]):
descriptor = "[B_s0 -> phi(1020) gamma]cc"
combination_code = require_all(
in_range(comb_m_min,F.MASS,comb_m_max),
F.SUM(F.PT) > pt_min,
)
vertex_code = require_all(
F.CHI2DOF < vchi2pdof_max,
F.BPVIPCHI2(pvs) < ipchi2_max
)
# return particle combiner
return ParticleCombiner(name="Bs2PhiGammaCombiner",
Inputs=[phis,photons],
DecayDescriptor=descriptor,
CombinationCut=combination_code,
CompositeCut=vertex_code
)
@register_line_builder(all_lines)
def bs2phigamma_line(name="Hlt2Bs2PhiGammaLine",prescale=1):
pvs = make_pvs()
pvs_v1 = make_pvs_v1()
# to do: double check which type of kaon to use
# kaons = filter_kaons(kaons=make_long_kaons(),pvs=pvs)
# phis = make_phis([kaons,kaons],pvs) # is this ok or broken?
phis = make_rd_detached_phis()
# photons = filter_photons(photons=make_photons(),pvs=pvs)
photons = make_photons() ;
b_s0_presel = make_bs2phigamma(phis=phis,photons=photons,pvs=pvs)
b_s0 = b_tmva_builder.make_b(b_s0_presel, pvs_v1, "HHgamma", 0.18)
return Hlt2Line(
name=name,
algs=upfront_reconstruction()+[b_s0],
prescale=prescale,
)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment