15 Example to create lepton particle list and apply LeptonID corrections to a MC sample
16 by retrieving lookup tables from the conditions DB.
25 parser = argparse.ArgumentParser(description=__doc__,
26 formatter_class=argparse.RawTextHelpFormatter)
28 parser.add_argument(
"--release",
31 help=
"The major release number associated to the corrections that are being applied.\n"
32 "Default: %(default)s.")
33 parser.add_argument(
"--lid_weights_gt",
35 default=
"leptonid_Moriond2022_Official_rel5_v1a",
36 help=
"Name of conditions DB global tag with recommended lepton ID correction factors.\n"
37 "Default: %(default)s.")
44 Main entry point allowing external calls.
47 args = argparser().parse_args()
50 import modularAnalysis
as ma
51 from variables
import variables
54 from stdCharged
import stdE, stdMu
56 b2.set_log_level(b2.LogLevel.INFO)
59 analysis_gt = ma.getAnalysisGlobaltag()
60 b2.B2INFO(f
"Appending analysis GT: {analysis_gt}")
61 b2.conditions.append_globaltag(analysis_gt)
63 path = b2.create_path()
69 ma.inputMdst(environmentType=
"default",
70 filename=b2.find_file(
"mdst13.root",
"validation"),
71 entrySequence=
"0:10000",
81 ma.fillParticleList(
"e+:uncorrected",
82 cut=
"dr < 2 and abs(dz) < 4",
84 ma.fillParticleList(
"gamma:bremsinput",
87 ma.correctBremsBelle(outputListName=
"e+:corrected",
88 inputListName=
"e+:uncorrected",
89 gammaListName=
"gamma:bremsinput",
92 electrons_fixed09 =
"lh_B_fixed09"
93 electrons_wp =
"FixedThresh09"
94 electron_id_var, electron_id_weights = stdE(electrons_wp,
"likelihood",
"binary", args.lid_weights_gt,
96 inputListName=
"e+:corrected",
97 outputListLabel=electrons_fixed09,
100 muons_uniform90 =
"bdt_G_uniform90"
101 muons_wp =
"UniformEff90"
102 muon_id_var, muon_id_weights = stdMu(muons_wp,
"bdt",
"global", args.lid_weights_gt,
103 release=args.release,
104 outputListLabel=muons_uniform90,
111 ma.applyCuts(f
"e-:{electrons_fixed09}",
"[pt > 0.1] and thetaInCDCAcceptance", path=path)
112 ma.applyCuts(f
"mu-:{muons_uniform90}",
"[pt > 0.1] and thetaInCDCAcceptance", path=path)
118 jpsiee = f
"J/psi:ee -> e+:{electrons_fixed09} e-:{electrons_fixed09}"
119 jpsimumu = f
"J/psi:mumu -> mu+:{muons_uniform90} mu-:{muons_uniform90}"
123 "[daughterSumOf(charge) == 0]",
125 jpsi_cut =
" and ".join(jpsi_cuts)
127 ma.reconstructDecay(jpsiee, jpsi_cut, path=path)
128 ma.reconstructDecay(jpsimumu, jpsi_cut, path=path)
139 variables_jpsi += vc.kinematics
140 variables_jpsi += vc.inv_mass
142 variables_e += vc.kinematics
143 variables_mu += vc.kinematics
145 cms_kinematics = vu.create_aliases(vc.kinematics,
"useCMSFrame({variable})",
"CMS")
147 variables_e += cms_kinematics
148 variables_mu += cms_kinematics
150 lid_e = [electron_id_var] + electron_id_weights
153 lid_mu = [muon_id_var] + muon_id_weights
154 variables_mu += lid_mu
156 aliases_jpsiee = vu.create_aliases_for_selected(
158 f
"^J/psi:ee -> e+:{electrons_fixed09} e-:{electrons_fixed09}",
160 aliases_jpsimumu = vu.create_aliases_for_selected(
162 f
"^J/psi:mumu -> mu+:{muons_uniform90} mu-:{muons_uniform90}",
165 aliases_e = vu.create_aliases_for_selected(
167 f
"J/psi:ee -> ^e+:{electrons_fixed09} ^e-:{electrons_fixed09}",
169 aliases_mu = vu.create_aliases_for_selected(
171 f
"J/psi:mumu -> ^mu+:{muons_uniform90} ^mu-:{muons_uniform90}",
174 variables.printAliases()
176 output_file =
"jpsill_LID_weights.root"
179 ma.variablesToNtuple(decayString=
"J/psi:ee",
180 variables=aliases_jpsiee+aliases_e,
182 filename=output_file,
184 ma.variablesToNtuple(decayString=
"J/psi:mumu",
185 variables=aliases_jpsimumu+aliases_mu,
187 filename=output_file,
197 if __name__ ==
"__main__":
int main(int argc, char **argv)
Run all tests.