File indexing completed on 2024-11-26 02:34:41
0001 from ROOT import gPad, gStyle, TCanvas
0002 import re
0003
0004 files = ['DQM_V0001_R000000001__Global__CMSSW_X_Y_Z__RECO.root']
0005
0006 folders = [
0007 'DQMData/Run 1/Vertexing/Run summary/PrimaryVertexV/selectedOfflinePrimaryVertices',
0008 'DQMData/Run 1/Vertexing/Run summary/PrimaryVertexV/selectedPixelVertices'
0009 ]
0010
0011 histo_names = [
0012 {'name': 'RecoVtx_vs_GenVtx', 'o': '', 'xAxis': 'Pileup Interactions', 'yAxis': 'Reco Vertices', 'yMax': '90', 'yMin': ''},
0013 {'name': 'MatchedRecoVtx_vs_GenVtx', 'o': '', 'xAxis': 'Pileup Interactions', 'yAxis': 'Matched Reco Vertices', 'yMax': '90', 'yMin': ''},
0014 {'name': 'RecoAllAssoc2GenProperties', 'o': '', 'xAxis': 'Kind of Reco Vertex', 'yAxis': '', 'yMax': '', 'yMin': ''},
0015 {'name': 'RecoAllAssoc2Gen_PairDistanceZ', 'o': '', 'xAxis': 'Reco Vertex, Pair Distance', 'yAxis': '', 'yMax': '', 'yMin': ''},
0016 {'name': 'globalEfficiencies', 'o': '', 'xAxis': '', 'yAxis': '', 'yMax': '', 'yMin': ''},
0017 {'name': 'KindOfSignalPV', 'o': '', 'xAxis': 'Type Of Signal VTX', 'yAxis': '', 'yMax': '', 'yMin': '0'},
0018 {'name': 'MisTagRate', 'o': '', 'xAxis': 'Misidentification', 'yAxis': '', 'yMax': '', 'yMin': '0'},
0019 {'name': 'MisTagRate_vs_PU', 'o': '', 'xAxis': 'Pileup Interactions', 'yAxis': 'Misidentification', 'yMax': '', 'yMin': '0'},
0020 {'name': 'MisTagRate_vs_sum-pt2', 'o': 'logx', 'xAxis': '#sum_{pt^{2}}', 'yAxis': 'Misidentification', 'yMax': '', 'yMin': '0'},
0021 {'name': 'MisTagRate_vs_Z', 'o': '', 'xAxis': 'Z', 'yAxis': 'Misidentification', 'yMax': '', 'yMin': '0'},
0022 {'name': 'MisTagRate_vs_R', 'o': '', 'xAxis': 'R', 'yAxis': 'Misidentification', 'yMax': '', 'yMin': '0'},
0023 {'name': 'MisTagRate_vs_NumTracks', 'o': '', 'xAxis': 'Number of Tracks in Vertex', 'yAxis': 'Misidentification', 'yMax': '', 'yMin': '0'},
0024 {'name': 'TruePVLocationIndex', 'o': '', 'xAxis': 'True PV index in RecoVtx collection', 'yAxis': '', 'yMax': '', 'yMin': ''},
0025 {'name': 'effic_vs_NumVertices', 'o': '', 'xAxis': 'Number of Vertices', 'yAxis': 'Efficiency', 'yMax': '', 'yMin': ''},
0026 {'name': 'effic_vs_NumTracks', 'o': '', 'xAxis': 'Number of Tracks in Vertex', 'yAxis': 'Efficiency', 'yMax': '', 'yMin': ''},
0027 {'name': 'effic_vs_ClosestVertexInZ', 'o': 'logx', 'xAxis': 'Closest Distance in Z', 'yAxis': 'Efficiency', 'yMax': '', 'yMin': ''},
0028 {'name': 'effic_vs_Pt2', 'o': 'logx', 'xAxis': '#sum_{pt^{2}}', 'yAxis': 'Efficiency', 'yMax': '', 'yMin': ''},
0029 {'name': 'effic_vs_Z', 'o': '', 'xAxis': 'Z', 'yAxis': 'Efficiency', 'yMax': '', 'yMin': ''},
0030 {'name': 'gen_duplicate_vs_NumVertices', 'o': '', 'xAxis': 'Number of Vertices', 'yAxis': 'GenLevel Duplicates', 'yMax': '', 'yMin': ''},
0031 {'name': 'gen_duplicate_vs_NumTracks', 'o': '', 'xAxis': 'Number of Tracks in Vertex', 'yAxis': 'GenLevel Duplicates', 'yMax': '', 'yMin': ''},
0032 {'name': 'gen_duplicate_vs_ClosestVertexInZ', 'o': 'logx', 'xAxis': 'Closest Distance in Z', 'yAxis': 'GenLevel Duplicates', 'yMax': '', 'yMin': ''},
0033 {'name': 'gen_duplicate_vs_Pt2', 'o': 'logx', 'xAxis': '#sum_{pt^{2}}', 'yAxis': 'GenLevel Duplicates', 'yMax': '', 'yMin': ''},
0034 {'name': 'gen_duplicate_vs_Z', 'o': '', 'xAxis': 'Z', 'yAxis': 'GenLevel Duplicates', 'yMax': '', 'yMin': ''},
0035 {'name': 'fakerate_vs_NumVertices', 'o': '', 'xAxis': 'Number of Vertices', 'yAxis': 'Fake Rate', 'yMax': '', 'yMin': ''},
0036 {'name': 'fakerate_vs_PU', 'o': '', 'xAxis': 'Pileup Interactions', 'yAxis': 'Fake Rate', 'yMax': '', 'yMin': ''},
0037 {'name': 'fakerate_vs_Ndof', 'o': '', 'xAxis': 'Vertex DOF', 'yAxis': 'Fake Rate', 'yMax': '', 'yMin': ''},
0038 {'name': 'fakerate_vs_NumTracks', 'o': '', 'xAxis': 'Number of Tracks in Vertex', 'yAxis': 'Fake Rate', 'yMax': '', 'yMin': ''},
0039 {'name': 'fakerate_vs_ClosestVertexInZ', 'o': 'logx', 'xAxis': 'Closest Distance in Z', 'yAxis': 'Fake Rate', 'yMax': '', 'yMin': ''},
0040 {'name': 'fakerate_vs_Pt2', 'o': 'logx', 'xAxis': '#sum_{pt^{2}}', 'yAxis': 'Fake Rate', 'yMax': '', 'yMin': ''},
0041 {'name': 'fakerate_vs_Z', 'o': '', 'xAxis': 'Z', 'yAxis': 'Fake Rate', 'yMax': '', 'yMin': ''},
0042 {'name': 'duplicate_vs_NumVertices', 'o': '', 'xAxis': 'Number of Vertices', 'yAxis': 'Duplicate Rate', 'yMax': '', 'yMin': ''},
0043 {'name': 'duplicate_vs_PU', 'o': '', 'xAxis': 'Pileup Interactions', 'yAxis': 'Duplicate Rate', 'yMax': '', 'yMin': ''},
0044 {'name': 'duplicate_vs_NumTracks', 'o': '', 'xAxis': 'Number of Tracks in Vertex', 'yAxis': 'Duplicate Rate', 'yMax': '', 'yMin': ''},
0045 {'name': 'duplicate_vs_ClosestVertexInZ', 'o': 'logx', 'xAxis': 'Closest Distance in Z', 'yAxis': 'Duplicate Rate', 'yMax': '', 'yMin': ''},
0046 {'name': 'duplicate_vs_Pt2', 'o': 'logx', 'xAxis': '#sum_{pt^{2}}', 'yAxis': 'Duplicate Rate', 'yMax': '', 'yMin': ''},
0047 {'name': 'duplicate_vs_Z', 'o': '', 'xAxis': 'Z', 'yAxis': 'Duplicate Rate', 'yMax': '', 'yMin': ''},
0048 {'name': 'merged_vs_NumVertices', 'o': '', 'xAxis': 'Number of Vertices', 'yAxis': 'Merge Rate', 'yMax': '', 'yMin': ''},
0049 {'name': 'merged_vs_PU', 'o': '', 'xAxis': 'Pileup Interactions', 'yAxis': 'Merge Rate', 'yMax': '', 'yMin': ''},
0050 {'name': 'merged_vs_NumTracks', 'o': '', 'xAxis': 'Number of Tracks in Vertex', 'yAxis': 'Merge Rate', 'yMax': '', 'yMin': ''},
0051 {'name': 'merged_vs_ClosestVertexInZ', 'o': 'logx', 'xAxis': 'Closest Distance in Z', 'yAxis': 'Merge Rate', 'yMax': '', 'yMin': ''},
0052 {'name': 'merged_vs_Pt2', 'o': 'logx', 'xAxis': '#sum_{pt^{2}}', 'yAxis': 'Merge Rate', 'yMax': '', 'yMin': ''},
0053 {'name': 'merged_vs_Z', 'o': '', 'xAxis': 'Z', 'yAxis': 'Merge Rate', 'yMax': '', 'yMin': ''}
0054 ]
0055
0056 histograms = []
0057
0058 for h in histo_names:
0059 for f in folders:
0060 histograms.append({'name': '%s/%s' % (f, h['name']), 'o': h['o'],
0061 'xAxis': h['xAxis'], 'yAxis': h['yAxis'],
0062 'yMax': h['yMax'], 'yMin': h['yMin']})
0063
0064 file_handles = []
0065
0066 def prepareFileHandles():
0067 for file in files:
0068 file_handles.append(TFile(file))
0069
0070 def cleanOptions():
0071 gPad.SetLogx(0)
0072 gPad.SetLogy(0)
0073
0074 def setTextProperties(obj, label=False, title=False):
0075 textFont = 42
0076 textSize = 0.027
0077 titleOffset = 1.25
0078 labelOffset = 0.002
0079 if not label and not title:
0080 obj.SetTextFont(textFont)
0081 obj.SetTextSize(textSize)
0082 if label:
0083 obj.SetLabelOffset(labelOffset)
0084 obj.SetLabelFont(textFont)
0085 obj.SetLabelSize(textSize)
0086 if title:
0087 gStyle.SetTitleX(0.5)
0088 gStyle.SetTitleAlign(23)
0089 obj.SetTitleFont(textFont)
0090 obj.SetTitleSize(textSize)
0091 obj.SetTitleOffset(titleOffset)
0092 return obj
0093
0094 def producePlots():
0095 gStyle.SetOptStat(0)
0096 c = TCanvas('c', 'c', 1024, 1024)
0097 histo = {}
0098 for h in histograms:
0099 counter = 0
0100 draw_options = ''
0101 for f in file_handles:
0102 histo = f.Get(h['name'])
0103 if not histo:
0104 print('Failed to get histograms %s', h)
0105 else:
0106 if counter == 0:
0107 counter += 1
0108 else:
0109 draw_options += 'SAME'
0110 cleanOptions()
0111 if h['o'] != '':
0112 if h['o'] == 'logx':
0113 gPad.SetLogx()
0114 if h['yMax'] != '':
0115 histo.SetMaximum(float(h['yMax']))
0116 if h['yMin'] != '':
0117 histo.SetMinimum(float(h['yMin']))
0118 histo.GetXaxis().SetTitle(h['xAxis'])
0119 histo.GetYaxis().SetTitle(h['yAxis'])
0120 setTextProperties(histo.GetXaxis(), title=True)
0121 setTextProperties(histo.GetYaxis(), title=True)
0122 setTextProperties(histo.GetXaxis(), label=True)
0123 setTextProperties(histo.GetYaxis(), label=True)
0124 histo.SetMarkerStyle(20)
0125 histo.SetMarkerColor(kAzure)
0126 histo.SetMarkerSize(1.2)
0127 histo.Draw(draw_options)
0128 c.Update()
0129 c.SaveAs('%s' % ("_".join(h['name'].split('/')[-2:]) + ".png"))
0130
0131 if __name__ == '__main__':
0132 prepareFileHandles()
0133 producePlots()