File indexing completed on 2023-03-17 10:40:27
0001
0002 import sys
0003 argv = sys.argv
0004 sys.argv = argv[:1]
0005
0006 import os
0007 import json
0008 import yaml
0009 import copy
0010 import ROOT
0011 import argparse
0012
0013 from Alignment.OfflineValidation.TkAlMap import TkAlMap
0014
0015 def parser():
0016 sys.argv = argv
0017 parser = argparse.ArgumentParser(description = "run the python plots for the AllInOneTool validations", formatter_class=argparse.RawTextHelpFormatter)
0018 parser.add_argument("config", metavar='config', type=str, action="store", help="GCP AllInOneTool config (json/yaml format)")
0019 parser.add_argument("-b", "--batch", action = "store_true", help ="Batch mode")
0020
0021 sys.argv.append( '-b' )
0022 ROOT.gROOT.SetBatch()
0023 return parser.parse_args()
0024
0025 def TkAlMap_plots(config):
0026 root_file = str(config['output']) + '/GCPtree.root'
0027 destination = str(config['output'])
0028 plot_dir = destination + '/TkAlMaps'
0029
0030 com_vs_ref = config['alignments']['comp']['title'] + ' vs ' + config['alignments']['ref']['title']
0031 iov_vs_iov = str(config['validation']['IOVcomp']) + ' - ' + str(config['validation']['IOVref'])
0032 title = '#splitline{'+com_vs_ref+'}{'+iov_vs_iov+'}'
0033
0034 if not os.path.isdir(plot_dir): os.mkdir(plot_dir)
0035
0036 plot_png = False
0037 if 'plotPng' in config['validation']['GCP']:
0038 plot_png = config['validation']['GCP']['plotPng']
0039
0040 palette = 2
0041
0042 var_list = ['dr', 'dx', 'dy', 'dz', 'rdphi', 'dphi']
0043 TkMap_pixel = TkAlMap(
0044 'dummy_var', title, root_file,
0045 use_default_range=True, two_sigma_cap=False,
0046 tracker='pixel',
0047 palette=palette, check_tracker=True
0048 )
0049 TkMap_strips = TkAlMap(
0050 'dummy_var', title, root_file,
0051 use_default_range=True, two_sigma_cap=False,
0052 tracker='strips',
0053 palette=palette, check_tracker=True
0054 )
0055
0056 for var in var_list:
0057 print(' --- Creating maps for variable: '+var)
0058 var_range = [None, None]
0059 if var+'_min' in config['validation']['GCP']: var_range[0] = float(config['validation']['GCP'][var+'_min'])
0060 if var+'_max' in config['validation']['GCP']: var_range[1] = float(config['validation']['GCP'][var+'_max'])
0061
0062 TkMap_pixel.set_var(var, var_range=var_range)
0063 TkMap_pixel.analyse()
0064 TkMap_pixel.save(out_dir=plot_dir)
0065 if plot_png: TkMap_pixel.save(out_dir=plot_dir, extension='png')
0066 TkMap_pixel.plot_variable_distribution(out_dir=plot_dir)
0067
0068 TkMap_strips.set_var(var)
0069 TkMap_strips.analyse()
0070 TkMap_strips.save(out_dir=plot_dir)
0071 if plot_png: TkMap_strips.save(out_dir=plot_dir, extension='png')
0072 TkMap_strips.plot_variable_distribution(out_dir=plot_dir)
0073
0074 if __name__ == '__main__':
0075
0076 args = parser()
0077
0078 with open(args.config, "r") as configFile:
0079 if args.config.split(".")[-1] == "json":
0080 config = json.load(configFile)
0081
0082 elif args.config.split(".")[-1] == "yaml":
0083 config = yaml.load(configFile, Loader=yaml.Loader)
0084
0085 else:
0086 raise Exception("Unknown config extension '{}'. Please use json/yaml format!".format(args.config.split(".")[-1]))
0087
0088 print(' ----- TkAlMaps -----')
0089 TkAlMap_plots(config)
0090