Skip to content
Snippets Groups Projects
Commit 710cab5c authored by LHCb Data Processing and Analysis's avatar LHCb Data Processing and Analysis :robot: Committed by Linxuan Zhu
Browse files

Revert "Process all currently available data"

This reverts merge request !1755
parent 53dceb3f
No related branches found
No related tags found
No related merge requests found
###############################################################################
# (c) Copyright 2023 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 DaVinci import make_config, Options
from . import mesons, mesons_prompt
def get_alg_config(channel, locations):
for mod in locations:
spec = channel + "_alg_config"
if not hasattr(mod, spec):
continue
return getattr(mod, spec)
raise ValueError(f"Channel {channel!r} not found")
def alg_config(options: Options, locations, *channels):
algs = {}
total_chan_algs = 0
for chan in channels:
chan_algs = get_alg_config(chan, locations)(options)
total_chan_algs += len(chan_algs.keys())
algs = {**algs, **chan_algs}
print(f"Added {len(algs.keys())} algorithms for {len(channels)} channels")
assert total_chan_algs == len(algs.keys()), "Number of algorithms created does not match fully concatenated dict - there is a name collision :("
return make_config(options, algs)
def all_alg_config(options: Options, locations):
all_algs = []
for mod in locations:
all_algs += [
channel_func.removesuffix("_alg_config")
for channel_func in dir(mod)
if channel_func.endswith("_alg_config")
]
return alg_config(
options,
locations,
*all_algs,
)
def all_alg_config_data(options: Options):
return all_alg_config(options = options, locations = [mesons, mesons_prompt])
def all_alg_config_data_detached(options: Options):
return all_alg_config(options = options, locations = [mesons])
def all_alg_config_data_prompt(options: Options):
return all_alg_config(options = options, locations = [mesons_prompt])
###############################################################################
# Copyright 2023 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 .tupling import (
make_composite_variables,
make_basic_variables,
make_hlt2_event_variables,
make_unpack_only_mc_variables,
make_tagging_vars,
configure_tuple,
configure_mc_tuple,
make_MCTruth_B_vars, make_MCTruth_vars,
make_composite_vars,
make_OSVertexCharge_vars
)
from DaVinciMCTools import MCTruthAndBkgCat
from DecayTreeFitter import DecayTreeFitter as DTFAlg
from FunTuple.functorcollections import Kinematics, SelectionInfo, ParticleID, DecayTreeFitterResults
import Functors.math as fmath
import Functors as F
from FunTuple import functorcollections as FC
from PyConf.reading import get_particles, get_pvs
from DaVinci import Options
from Hlt2Conf.flavourTagging import run2_all_taggers
def BsToDsPi_alg_config(options: Options):
line_name = "Hlt2B2OC_BdToDsmPi_DsmToKpKmPim"
data = get_particles(f"/Event/HLT2/{line_name}/Particles")
all_tagging = run2_all_taggers(data)
v2_pvs = get_pvs()
fields = { # 13264021
'B' : '[[B0]CC -> (D_s- -> K+ K- pi-) pi+]CC',
'Ds' : '[[B0]CC -> ^(D_s- -> K+ K- pi-) pi+]CC',
'hplus' : '[[B0]CC -> (D_s- -> ^K+ K- pi-) pi+]CC',
'hminus' : '[[B0]CC -> (D_s- -> K+ ^K- pi-) pi+]CC',
'piminus': '[[B0]CC -> (D_s- -> K+ K- ^pi-) pi+]CC',
'piplus' : '[[B0]CC -> (D_s- -> K+ K- pi-) ^pi+]CC',
}
variables = {
"B" : (make_composite_vars(options, data)
+ make_tagging_vars(options, data, line_name, '')
+ FC.FlavourTaggingResults(all_tagging))
+ make_OSVertexCharge_vars(options, data),
"Ds" : (make_composite_vars(options, data) ),
"hplus" : (make_basic_variables(options, data) ),
"hminus" : (make_basic_variables(options, data) ),
"piminus": (make_basic_variables(options, data) ),
"piplus" : (make_basic_variables(options, data) ),
}
DTF0 = DTFAlg(name='DTF0', input_particles=data, input_pvs=v2_pvs, mass_constraints=[])
DTF1 = DTFAlg(name='DTF1', input_particles=data, input_pvs=v2_pvs, mass_constraints=['B_s0'],
substitutions=['B0{{B_s0}} -> (D_s- -> K+ K- pi-) pi+', 'B0{{B_s0}} -> (D_s+ -> K+ K- pi+) pi-',])
DTF2 = DTFAlg(name='DTF2', input_particles=data, input_pvs=v2_pvs, mass_constraints=['D_s-'])
DTF3 = DTFAlg(name='DTF3', input_particles=data, input_pvs=v2_pvs, mass_constraints=['B_s0', 'D_s-'],
substitutions=['B0{{B_s~0}} -> (D_s- -> K+ K- pi-) pi+', 'B0{{B_s~0}} -> (D_s+ -> K+ K- pi+) pi- ',])
for dtf, prefix in [(DTF0, 'DTF_PV'), (DTF1, 'DTF_PV_B'), (DTF2, 'DTF_PV_Ds'), (DTF3, 'DTF_PV_B_Ds')]:
for key in ['B', 'Ds']:
variables[key] += DecayTreeFitterResults(DTF=dtf, decay_origin=True, with_lifetime=True, with_kinematics=True, prefix=prefix)
# define FunTuple instance
algs = configure_tuple(
options,
data,
line_name,
fields,
variables,
event_variables=make_hlt2_event_variables(options, line_name, line_data=data),
)
return algs
def BsToJpsiPhi_Detached_alg_config(options: Options):
line_name = "Hlt2B2CC_BsToJpsiPhi_Detached"
data = get_particles(f"/Event/HLT2/{line_name}/Particles")
all_tagging = run2_all_taggers(data)
algs = configure_tuple(
options,
data,
line_name,
{
"B" : "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) -> K+ K-)",
"Jpsi" : "B_s0 -> ^(J/psi(1S) -> mu+ mu-) (phi(1020) -> K+ K-)",
"X" : "B_s0 -> (J/psi(1S) -> mu+ mu-) ^(phi(1020) -> K+ K-)",
"muplus" : "B_s0 -> (J/psi(1S) -> ^mu+ mu-) (phi(1020) -> K+ K-)",
"muminus": "B_s0 -> (J/psi(1S) -> mu+ ^mu-) (phi(1020) -> K+ K-)",
"hplus" : "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) -> ^K+ K-)",
"hminus" : "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) -> K+ ^K-)",
},
{
"B" : make_composite_variables(options, data)
+ make_tagging_vars(options, data, line_name, '')
+ FC.FlavourTaggingResults(all_tagging)
+ make_OSVertexCharge_vars(options, data),
"Jpsi" : make_composite_variables(options, data),
"X" : make_composite_variables(options, data),
"muplus" : make_basic_variables(options, data),
"muminus": make_basic_variables(options, data),
"hplus" : make_basic_variables(options, data),
"hminus" : make_basic_variables(options, data),
},
event_variables=make_hlt2_event_variables(options, line_name, line_data=data),
)
return algs
def BdToJpsiKstar_JpsiToMuMu_Detached_alg_config(options: Options):
line_name = "Hlt2B2CC_BdToJpsiKstar_JpsiToMuMu_Detached"
data = get_particles(f"/Event/HLT2/{line_name}/Particles")
all_tagging = run2_all_taggers(data)
algs = configure_tuple(
options,
data,
line_name,
{
"B" : "[B0 -> (J/psi(1S) -> mu+ mu-) (K*(892)0 -> K+ pi-)]CC",
"Jpsi" : "[B0 -> ^(J/psi(1S) -> mu+ mu-) (K*(892)0 -> K+ pi-)]CC",
"X" : "[B0 -> (J/psi(1S) -> mu+ mu-) ^(K*(892)0 -> K+ pi-)]CC",
"muplus" : "[B0 -> (J/psi(1S) -> ^mu+ mu-) (K*(892)0 -> K+ pi-)]CC",
"muminus" : "[B0 -> (J/psi(1S) -> mu+ ^mu-) (K*(892)0 -> K+ pi-)]CC",
"hplus" : "[B0 -> (J/psi(1S) -> mu+ mu-) (K*(892)0 -> ^K+ pi-)]CC",
"hminus" : "[B0 -> (J/psi(1S) -> mu+ mu-) (K*(892)0 -> K+ ^pi-)]CC",
},
{
"B" : make_composite_variables(options, data)
+ make_tagging_vars(options, data, line_name, '')
+ FC.FlavourTaggingResults(all_tagging)
+ make_OSVertexCharge_vars(options, data),
"Jpsi" : make_composite_variables(options, data),
"X" : make_composite_variables(options, data),
"muplus" : make_basic_variables(options, data),
"muminus" : make_basic_variables(options, data),
"hplus" : make_basic_variables(options, data),
"hminus" : make_basic_variables(options, data),
},
event_variables=make_hlt2_event_variables(options, line_name, line_data=data),
)
return algs
def BuToJpsiKplus_JpsiToMuMu_Detached_alg_config(options: Options):
line_name = "Hlt2B2CC_BuToJpsiKplus_JpsiToMuMu_Detached"
data = get_particles(f"/Event/HLT2/{line_name}/Particles")
all_tagging = run2_all_taggers(data)
algs = configure_tuple(
options,
data,
line_name,
{
"B" : "[B+ -> (J/psi(1S) -> mu+ mu-) K+]CC",
"Jpsi" : "[B+ -> ^(J/psi(1S) -> mu+ mu-) K+]CC",
"muplus" : "[B+ -> (J/psi(1S) -> ^mu+ mu-) K+]CC",
"muminus" : "[B+ -> (J/psi(1S) -> mu+ ^mu-) K+]CC",
"hplus" : "[B+ -> (J/psi(1S) -> mu+ mu-) ^K+]CC",
},
{
"B" : make_composite_variables(options, data)
+ make_tagging_vars(options, data, line_name, '')
+ FC.FlavourTaggingResults(all_tagging)
+ make_OSVertexCharge_vars(options, data),
"Jpsi" : make_composite_variables(options, data),
"muplus" : make_basic_variables(options, data),
"muminus" : make_basic_variables(options, data),
"hplus" : make_basic_variables(options, data),
},
event_variables=make_hlt2_event_variables(options, line_name, line_data=data),
)
return algs
def BsToJpsiPhi_JpsiToEE_Detached_alg_config(options: Options):
line_name = "Hlt2B2CC_BsToJpsiPhi_JpsiToEE_Detached"
data = get_particles(f"/Event/HLT2/{line_name}/Particles")
all_tagging = run2_all_taggers(data)
algs = configure_tuple(
options,
data,
line_name,
{
"B" : "B_s0 -> (J/psi(1S) -> e+ e-) (phi(1020) -> K+ K-)",
"Jpsi" : "B_s0 -> ^(J/psi(1S) -> e+ e-) (phi(1020) -> K+ K-)",
"X" : "B_s0 -> (J/psi(1S) -> e+ e-) ^(phi(1020) -> K+ K-)",
"eplus" : "B_s0 -> (J/psi(1S) -> ^e+ e-) (phi(1020) -> K+ K-)",
"eminus" : "B_s0 -> (J/psi(1S) -> e+ ^e-) (phi(1020) -> K+ K-)",
"hplus" : "B_s0 -> (J/psi(1S) -> e+ e-) (phi(1020) -> ^K+ K-)",
"hminus" : "B_s0 -> (J/psi(1S) -> e+ e-) (phi(1020) -> K+ ^K-)",
},
{
"B" : make_composite_variables(options, data)
+ make_tagging_vars(options, data, line_name, '')
+ FC.FlavourTaggingResults(all_tagging)
+ make_OSVertexCharge_vars(options, data),
"Jpsi" : make_composite_variables(options, data),
"X" : make_composite_variables(options, data),
"eplus" : make_basic_variables(options, data),
"eminus" : make_basic_variables(options, data),
"hplus" : make_basic_variables(options, data),
"hminus" : make_basic_variables(options, data),
},
event_variables=make_hlt2_event_variables(options, line_name, line_data=data),
)
return algs
###############################################################################
# Copyright 2023 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 .tupling import (
make_composite_variables,
make_basic_variables,
make_hlt2_event_variables,
make_unpack_only_mc_variables,
make_tagging_vars,
configure_tuple,
configure_mc_tuple,
make_MCTruth_B_vars, make_MCTruth_vars,
make_composite_vars,
make_OSVertexCharge_vars
)
from DaVinciMCTools import MCTruthAndBkgCat
from DecayTreeFitter import DecayTreeFitter as DTFAlg
from FunTuple.functorcollections import Kinematics, SelectionInfo, ParticleID, DecayTreeFitterResults
import Functors.math as fmath
import Functors as F
from FunTuple import functorcollections as FC
from PyConf.reading import get_particles, get_pvs
from DaVinci import Options
from Hlt2Conf.flavourTagging import run2_all_taggers
def BsToJpsiPhi_Prompt_alg_config(options: Options):
line_name = "Hlt2B2CC_BsToJpsiPhi"
data = get_particles(f"/Event/HLT2/{line_name}/Particles")
algs = configure_tuple(
options,
data,
line_name,
{
"B" : "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) -> K+ K-)",
"Jpsi" : "B_s0 -> ^(J/psi(1S) -> mu+ mu-) (phi(1020) -> K+ K-)",
"X" : "B_s0 -> (J/psi(1S) -> mu+ mu-) ^(phi(1020) -> K+ K-)",
"muplus" : "B_s0 -> (J/psi(1S) -> ^mu+ mu-) (phi(1020) -> K+ K-)",
"muminus": "B_s0 -> (J/psi(1S) -> mu+ ^mu-) (phi(1020) -> K+ K-)",
"hplus" : "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) -> ^K+ K-)",
"hminus" : "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) -> K+ ^K-)",
},
{
"B" : make_composite_variables(options, data),
"Jpsi" : make_composite_variables(options, data),
"X" : make_composite_variables(options, data),
"muplus" : make_basic_variables(options, data),
"muminus": make_basic_variables(options, data),
"hplus" : make_basic_variables(options, data),
"hminus" : make_basic_variables(options, data),
},
event_variables=make_hlt2_event_variables(options, line_name, line_data=data),
)
return algs
def BsToDsPi_Prompt_alg_config(options: Options):
line_name = "Hlt2B2OC_BdToDsmK_DsmToKpKmPim_LTU"
data = get_particles(f"/Event/HLT2/{line_name}/Particles")
all_tagging = run2_all_taggers(data)
v2_pvs = get_pvs()
fields = {
'B' : '[B0 -> (D_s- -> K+ K- pi-) K+]CC',
'Ds' : '[B0 -> ^(D_s- -> K+ K- pi-) K+]CC',
'hplus' : '[B0 -> (D_s- -> ^K+ K- pi-) K+]CC',
'hminus' : '[B0 -> (D_s- -> K+ ^K- pi-) K+]CC',
'piminus' : '[B0 -> (D_s- -> K+ K- ^pi-) K+]CC',
'hplusFromB' : '[B0 -> (D_s- -> K+ K- pi-) ^K+]CC',
}
variables = {
"B" : make_composite_vars(options, data)
+ make_tagging_vars(options, data, line_name, '')
+ FC.FlavourTaggingResults(all_tagging)
+ make_OSVertexCharge_vars(options, data),
"Ds" : make_composite_vars(options, data),
"hplus" : make_basic_variables(options, data),
"hminus" : make_basic_variables(options, data),
"piminus" : make_basic_variables(options, data),
"hplusFromB" : make_basic_variables(options, data),
}
DTF0 = DTFAlg(name='DTF0_Bs', input_particles=data, input_pvs=v2_pvs, mass_constraints=[])
DTF1 = DTFAlg(name='DTF1_Bs', input_particles=data, input_pvs=v2_pvs, mass_constraints=['B0'])
DTF2 = DTFAlg(name='DTF2_Bs', input_particles=data, input_pvs=v2_pvs, mass_constraints=['D_s-'])
DTF3 = DTFAlg(name='DTF3_Bs', input_particles=data, input_pvs=v2_pvs, mass_constraints=['B0', 'D_s-'])
for dtf, prefix in [(DTF0, 'DTF_PV'), (DTF1, 'DTF_PV_B'), (DTF2, 'DTF_PV_Ds'), (DTF3, 'DTF_PV_B_Ds')]:
for key in ['B', 'Ds']:
variables[key] += DecayTreeFitterResults(DTF=dtf, decay_origin=True, with_lifetime=True, with_kinematics=True, prefix=prefix)
algs = configure_tuple(
options,
data,
line_name,
fields,
variables,
event_variables=make_hlt2_event_variables(options, line_name, line_data=data),
)
return algs
def BdToDPi_Prompt_alg_config(options: Options):
line_name = "Hlt2B2OC_BdToDmPi_DmToPimPimKp_LTU"
data = get_particles(f"/Event/HLT2/{line_name}/Particles")
all_tagging = run2_all_taggers(data)
v2_pvs = get_pvs()
fields = {
'B' : '[B0 -> (D- -> K+ pi- pi-) pi+]CC',
'D' : '[B0 -> ^(D- -> K+ pi- pi-) pi+]CC',
'hplus' : '[B0 -> (D- -> ^K+ pi- pi-) pi+]CC',
'piminus1': '[B0 -> (D- -> K+ ^pi- pi-) pi+]CC',
'piminus2': '[B0 -> (D- -> K+ pi- ^pi-) pi+]CC',
'piplus' : '[B0 -> (D- -> K+ pi- pi-) ^pi+]CC',
}
variables = {
"B" : make_composite_vars(options, data)
+ make_tagging_vars(options, data, line_name, '')
+ FC.FlavourTaggingResults(all_tagging)
+ make_OSVertexCharge_vars(options, data),
"D" : make_composite_vars(options, data),
"hplus" : make_basic_variables(options, data),
"piminus1" : make_basic_variables(options, data),
"piminus2" : make_basic_variables(options, data),
"piplus" : make_basic_variables(options, data),
}
DTF0 = DTFAlg(name='DTF0_Bd', input_particles=data, input_pvs=v2_pvs, mass_constraints=[])
DTF1 = DTFAlg(name='DTF1_Bd', input_particles=data, input_pvs=v2_pvs, mass_constraints=['B0'])
DTF2 = DTFAlg(name='DTF2_Bd', input_particles=data, input_pvs=v2_pvs, mass_constraints=['D-'])
DTF3 = DTFAlg(name='DTF3_Bd', input_particles=data, input_pvs=v2_pvs, mass_constraints=['B0', 'D-'])
for dtf, prefix in [(DTF0, 'DTF_PV'), (DTF1, 'DTF_PV_B'), (DTF2, 'DTF_PV_D'), (DTF3, 'DTF_PV_B_D')]:
for key in ['B', 'D']:
variables[key] += DecayTreeFitterResults(DTF=dtf, decay_origin=True, with_lifetime=True, with_kinematics=True, prefix=prefix)
algs = configure_tuple(
options,
data,
line_name,
fields,
variables,
event_variables=make_hlt2_event_variables(options, line_name, line_data=data),
)
return algs
\ No newline at end of file
This diff is collapsed.
defaults:
inform:
- peilian.li@cern.ch
- maurice.pierre.morgenthaler@cern.ch
wg: B2CC
{%- set DaVinci_version = "v64r12" %}
{%- set platform_DaVinci_data = "x86_64_v2-el9-clang16-opt" %}
{%- set platform_Moore = "x86_64_v2-el9-gcc13+detdesc-opt" %}
#### 2024 data
{%- set sprucing_ver = [
("24c2"),
("24c3"),
("24c4"),
]%}
{%- set conditions = [
("MagUp"),
("MagDown"),
]%}
{% for sprucing in sprucing_ver %}
{% for polarity in conditions %}
{% if not (sprucing == "24c2" and polarity == "MagDown") %}
data24_withUT_Spruce{{sprucing}}_{{polarity}}:
application: "DaVinci/{{DaVinci_version}}@{{ platform_DaVinci_data }}"
input:
bk_query: '/LHCb/Collision24/Beam6800GeV-VeloClosed-{{ polarity }}/Real Data/Sprucing{{sprucing}}/94000000/B2CC.DST'
dq_flags:
- OK
- UNCHECKED
keep_running: true
n_test_lfns: 1
output: data24.ROOT
options:
entrypoint: phis_run3.DaVinciOptions:all_alg_config_data
extra_options:
input_type: ROOT
input_process: "TurboPass"
input_stream: b2cc
input_raw_format: 0.5
simulation: False
data_type: "Upgrade"
geometry_version: run3/2024.Q1.2-v00.00
conditions_version: master
{%- endif %}
{%- endfor %}
{%- endfor %}
{% for sprucing in sprucing_ver %}
{% for polarity in conditions %}
data24_Bs2DsPi_withUT_Spruce{{sprucing}}_{{polarity}}:
application: "DaVinci/{{DaVinci_version}}@{{ platform_DaVinci_data }}"
input:
bk_query: '/LHCb/Collision24/Beam6800GeV-VeloClosed-{{ polarity }}/Real Data/Sprucing{{sprucing}}/94000000/B2OC.DST'
dq_flags:
- OK
- UNCHECKED
keep_running: true
n_test_lfns: 1
output: data24.ROOT
options:
entrypoint: phis_run3.DaVinciOptions:all_alg_config_data_detached
extra_options:
input_type: ROOT
input_process: "TurboPass"
input_stream: b2oc
input_raw_format: 0.5
simulation: False
data_type: "Upgrade"
geometry_version: run3/2024.Q1.2-v00.00
conditions_version: master
{%- endfor %}
{%- endfor %}
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