hpstr
The Heavy Photon Search Toolkit for Reconstruction (hpstr) provides an interface to physics data from the HPS experiment saved in the LCIO format and converts it into an ROOT based format.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
simp_zbi_config.py
Go to the documentation of this file.
1import HpstrConf
2import baseConfig as base
3import os
4import math
5import json
6
7base.parser.add_argument("-mass", "--mass", type=float, dest="mass",
8 help="Enter signal mass value", metavar="mass", default=55.0)
9
10base.parser.add_argument("-new_vars", "--new_vars", type=str, dest="new_vars",
11 help="List of new variables, strings defined in processor addNewVariables", default=[], nargs='+')
12
13base.parser.add_argument("-new_vars_params", "--new_vars_params", type=float, dest="new_vars_params",
14 help="New variable parameters", default=[], nargs='+')
15
16base.parser.add_argument("-cut_variables", "--cut_variables", type=str, dest="cut_variables",
17 help="Specifcy cut variables to test", default=[], nargs='+')
18
19base.parser.add_argument("-b", "--ztail_nevents", type=float, dest="ztail_nevents",
20 help="Define Zcut based on n background events in background fit", metavar="ztail_nevents", default=0.5)
21
22base.parser.add_argument("-z", "--scan_zcut", type=int, dest="scan_zcut",
23 help="Choose best ZBi using Zcut Scan (1=yes, 0 = No)", metavar="scan_zcut", default=0)
24
25base.parser.add_argument("-m", "--step_size", type=float, dest="step_size",
26 help="Cut % of signal with each iteration", metavar="step_size", default=0.01)
27
28base.parser.add_argument("-e", "--logeps2", type=float, dest="logeps2",
29 help="Cut % of signal with each iteration", metavar="logeps2", default=-5.5)
30options = base.parser.parse_args()
31
33
34
37 radF = -1.04206e-01 + 9.92547e-03*mass + -1.99437e-04*pow(mass,2) + 1.83534e-06*pow(mass,3) + -7.93138e-9*pow(mass,4) + 1.30456e-11*pow(mass,5) #alic 2016 simps kf 11/15/22
38 return radF
39
40#Calculated in 'makeTotRadAcc.py'
42 acc = ( -7.35934e-01 + 9.75402e-02*mass + -5.22599e-03*pow(mass,2) + 1.47226e-04*pow(mass,3) + -2.41435e-06*pow(mass,4) + 2.45015e-08*pow(mass,5) + -1.56938e-10*pow(mass,6) + 6.19494e-13*pow(mass,7) + -1.37780e-15*pow(mass,8) + 1.32155e-18*pow(mass,9) ) #alic 2016 simps kf 11/15/22
43 return acc
44
45
46
47def chooseIterativeCutVariables(zbi, cut_variables = [], new_variables = [], variable_params = []):
48 zbi.parameters['cutVariables'] = cut_variables
49 zbi.parameters['add_new_variaibles'] = new_variables
50 zbi.parameters['new_variable_params'] = variable_params
51
52in_file = 'dummy.root'
53out_file = options.outFilename
54
55p.run_mode = 2
56p.skip_events = options.skip_events
57p.max_events = options.nevents
58
59p.libraries.append("libprocessors.so")
60
61
64
65#Initialize processor
66zbi = HpstrConf.Processor('zbi','SimpZBiOptimizationProcessor')
67
68#Configure basic settings
69zbi.parameters['max_iteration'] = 25
70zbi.parameters['year'] = 2016
71zbi.parameters['debug'] = 1
72zbi.parameters['outFileName'] = options.outFilename
73zbi.parameters['scan_zcut'] = options.scan_zcut #1 will calculate ZBi as function of zcut position
74zbi.parameters['step_size'] = options.step_size #Specify %variable in signal to cut with each iteration
75zbi.parameters['ztail_events'] = options.ztail_nevents # 0.5 is the minimum allowed. ZBi calc breaks if 0.0
76
77#Histogram Config
78zbi.parameters['variableHistCfgFilename'] = '/sdf/group/hps/users/alspellm/src/test/hpstr/analysis/plotconfigs/tracking/zbi_optimization_histograms.json'
79#Config SIMP model
80eq_cfg_file = '/sdf/group/hps/users/alspellm/src/hpstr/analysis/selections/simps/simp_parameters.json'
81zbi.parameters['eq_cfgFile'] = eq_cfg_file
82#Choose initial set of cuts
83zbi.parameters['cuts_cfgFile'] = '/sdf/group/hps/users/alspellm/projects/THESIS/analysis/tight_selection_studies/v0_projection/zbi_opt/iterativeCuts.json'
84#Choose cut variables to tighten iteratively. Must be present in json file above^
85chooseIterativeCutVariables(zbi, ["unc_vtx_proj_sig"])
86
87#Configure Background
88zbi.parameters['bkgVtxAnaFilename'] = '/sdf/group/hps/users/alspellm/projects/THESIS/data/2016/BLPass4c_20231006/ana_20231019/full_hadd_blpass4c_ana.root'
89zbi.parameters['bkgVtxAnaTreename'] = 'vtxana_Tight_2016_simp_reach_SR'
90zbi.parameters['background_sf'] = 10.0
91
92#Configure Signal
93zbi.parameters['signal_sf'] = 1.0
94zbi.parameters['signal_mass'] = options.mass
95zbi.parameters['mass_window_nsigma'] = 2.8
96zbi.parameters['signalVtxAnaFilename'] = '/sdf/group/hps/users/alspellm/projects/THESIS/mc/2016/simps/signal_beam/20230713_slic/20230713_readout/hps-java_v5pt2pt1/pass4/recon_20231009/ana_20231020/hadd_simp_signal_%s_MeV_beam_ana.root'%(int(options.mass))
97zbi.parameters['signalVtxAnaTreename'] = 'vtxana_radMatchTight_2016_simp_reach_SR'
98zbi.parameters['signalVtxMCSelection'] = 'vtxana_mc_radMatchTight_2016_simp_reach_SR'
99zbi.parameters['signalMCAnaFilename'] = '/sdf/group/hps/users/alspellm/projects/THESIS/mc/2016/simps/slic/20230713_slic/20230724_slic_ana/ana_files/hadd_simp_%s_MeV_rot_slic_mcana.root'%(int(options.mass))
100zbi.parameters['signal_pdgid'] = '625'
101zbi.parameters['logEps2'] = options.logeps2
102
103#Configure Expected Signal Calculation
104#Read simp params from json to get A' mass
105eq_cfg = open(eq_cfg_file)
106eq_data = json.load(eq_cfg)
107for key, val in eq_data['SIMP Parameters'].items():
108 mass_ratio_Ap_to_Vd = eq_data['SIMP Parameters']['mass_ratio_Ap_to_Vd']
109m_Ap = options.mass*mass_ratio_Ap_to_Vd
110zbi.parameters['radFrac'] = radiativeFraction(m_Ap)
111zbi.parameters['radAcc'] = radiativeAcceptance(m_Ap)
112zbi.parameters['bkgControlRegionFilename'] = '/sdf/group/hps/users/alspellm/projects/THESIS/data/2016/BLPass4c_20231006/ana_20231019/full_hadd_blpass4c_ana.root'
113zbi.parameters['bkgControlRegionTreename'] = 'vtxana_Tight_2016_simp_reach_CR'
114zbi.parameters['dNdm_sf'] = 10.0
115
116# Sequence which the processors will run.
117p.sequence = [zbi]
118
119p.input_files=[in_file]
120p.output_files = [out_file]
121p.printProcess()
122
Process python class.
Definition HpstrConf.py:20
Processor python class.
Definition HpstrConf.py:4
chooseIterativeCutVariables(zbi, cut_variables=[], new_variables=[], variable_params=[])
radiativeFraction(mass)
Expected Signal Calculation ##################################################### Calculated in 'make...