Belle II Software  release-05-01-25
custom_reweighting.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 # Thomas Keck 2016
5 
6 # Besides the builtin reweighting, you can also implement the reweighting yourself.
7 # This can be useful if you want to do something special which is not supported by the mva package
8 
9 import basf2_mva
10 from basf2 import *
11 from modularAnalysis import *
12 
13 if __name__ == "__main__":
14  variables = ['p', 'pt', 'pz', 'phi',
15  'daughter(0, p)', 'daughter(0, pz)', 'daughter(0, pt)', 'daughter(0, phi)',
16  'daughter(1, p)', 'daughter(1, pz)', 'daughter(1, pt)', 'daughter(1, phi)',
17  'daughter(2, p)', 'daughter(2, pz)', 'daughter(2, pt)', 'daughter(2, phi)',
18  'chiProb', 'dr', 'dz', 'dphi',
19  'daughter(0, dr)', 'daughter(1, dr)', 'daughter(0, dz)', 'daughter(1, dz)',
20  'daughter(0, dphi)', 'daughter(1, dphi)',
21  'daughter(0, chiProb)', 'daughter(1, chiProb)', 'daughter(2, chiProb)', 'daughter(2, M)',
22  'daughter(0, atcPIDBelle(3,2))', 'daughter(1, atcPIDBelle(3,2))',
23  'daughterAngle(0, 1)', 'daughterAngle(0, 2)', 'daughterAngle(1, 2)',
24  'daughter(2, daughter(0, E))', 'daughter(2, daughter(1, E))',
25  'daughter(2, daughter(0, clusterLAT))', 'daughter(2, daughter(1, clusterLAT))',
26  'daughter(2, daughter(0, clusterHighestE))', 'daughter(2, daughter(1, clusterHighestE))',
27  'daughter(2, daughter(0, clusterNHits))', 'daughter(2, daughter(1, clusterNHits))',
28  'daughter(2, daughter(0, clusterE9E25))', 'daughter(2, daughter(1, clusterE9E25))',
29  'daughter(2, daughter(0, minC2HDist))', 'daughter(2, daughter(1, minC2HDist))',
30  'daughterInvariantMass(1, 2)']
31 
32  general_options = basf2_mva.GeneralOptions()
33  general_options.m_datafiles = basf2_mva.vector("train_mc.root")
34  general_options.m_identifier = "boost.xml"
35  general_options.m_treename = "tree"
36  general_options.m_variables = basf2_mva.vector(*variables)
37  # EventType is 0 for MC and 1 for Data
38  general_options.m_target_variable = "EventType"
39  fastbdt_options = basf2_mva.FastBDTOptions()
40  basf2_mva.teacher(general_options, fastbdt_options)
41 
42  reweighter_options = basf2_mva.ReweighterOptions()
43  reweighter_options.m_variable = 'isContinuumEvent'
44  reweighter_options.m_weightfile = "boost.xml"
45  general_options.m_identifier = "reweighter.xml"
46  basf2_mva.teacher(general_options, reweighter_options)
47 
48  # Now you can use the reweighter.xml expert to output the correct weights
49  # and use them in another training