13 This file skims events that are useful to test the time dependent CPV analysis tools,
14 i.e. those events where the signal B0 meson is correctly MC matched and where no tracks on the tag side
15 belong to the signal side. The variable used for skimming is isRelatedRestOfEventB0Flavor.
16 As input one needs a MC mdst file for the signal channel B0sig->J/PsiKs.
17 The script reconstructs B0sig->J/PsiKs on the signal side
18 and applies the flavor tagger on the ROE.
19 The vertex of B0sig is reconstructed (JPsi vertex) and the vertex of B0tag is reconstructed
24 import modularAnalysis
as ma
28 from mdst
import add_mdst_output
30 if len(sys.argv) != 3:
31 sys.exit(
'Must provide three input parameters: [Belle_Belle2] [output_root_file_name]'
34 belleOrBelle2Flag = sys.argv[1]
35 outRootFileName = sys.argv[2]
39 cp_val_path = b2.Path()
41 environmentType =
"default"
43 if belleOrBelle2Flag ==
"Belle":
44 os.environ[
'BELLE_POSTGRES_SERVER'] =
'can51'
45 os.environ[
'USE_GRAND_REPROCESS_DATA'] =
'1'
47 environmentType =
"Belle"
49 ma.inputMdstList(environmentType=environmentType, filelist=[], path=cp_val_path)
51 ma.fillParticleList(decayString=
'mu+:all', cut=
'', path=cp_val_path)
52 ma.reconstructDecay(decayString=
'J/psi:mumu -> mu+:all mu-:all', cut=
'abs(dM) < 0.11', path=cp_val_path)
53 ma.matchMCTruth(list_name=
'J/psi:mumu', path=cp_val_path)
55 if belleOrBelle2Flag ==
"Belle":
58 ma.matchMCTruth(list_name=
'K_S0:mdst', path=cp_val_path)
61 ma.reconstructDecay(decayString=
'B0:sig -> J/psi:mumu K_S0:mdst', cut=
'Mbc > 5.2 and abs(deltaE) < 0.15', path=cp_val_path)
63 if belleOrBelle2Flag ==
"Belle2":
66 ma.fillParticleList(decayString=
'pi+:all', cut=
'', path=cp_val_path)
67 ma.reconstructDecay(decayString=
'K_S0:pipi -> pi+:all pi-:all', cut=
'abs(dM) < 0.25', path=cp_val_path)
70 ma.reconstructDecay(decayString=
'B0:sig -> J/psi:mumu K_S0:pipi', cut=
'Mbc > 5.2 and abs(deltaE) < 0.15', path=cp_val_path)
72 ma.matchMCTruth(list_name=
'B0:sig', path=cp_val_path)
74 ma.buildRestOfEvent(target_list_name=
'B0:sig', path=cp_val_path)
76 ma.applyCuts(list_name=
'B0:sig', cut=
'abs(isRelatedRestOfEventB0Flavor) == 1', path=cp_val_path)
108 skimfilter = b2.register_module(
'SkimFilter')
109 skimfilter.set_name(
'SkimFilter_B2JPsiKs_NoTargetOfFT')
111 skimfilter.param(
'particleLists', [
'B0:sig'])
112 cp_val_path.add_module(skimfilter)
117 B0skim_path = b2.Path()
120 skimfilter.if_value(
'=0', B0skim_path)
123 add_mdst_output(cp_val_path,
True, outRootFileName)
125 ma.summaryOfLists(particleLists=[
'B0:sig'], path=cp_val_path)
128 ma.process(cp_val_path)