Back to home page

Project CMSSW displayed by LXR

 
 

    


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 # Build full list of histograms
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()