Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:57:13

0001 #!/usr/bin/env python3
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 #1 is rainbow palette, 2 is diverging color palette (blue to red)
0041 
0042     var_list = ['dr', 'dx', 'dy', 'dz', 'rdphi', 'dphi'] #, 'dalpha', 'dbeta', 'dgamma', 'du', 'dv', 'dw', 'da', 'db', 'dg']
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