123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- import pydotplus.graphviz as pdp
- log = """
- "GenPart_eta" at address 0x43f4040
- "GenPart_mass" at address 0x43f1110
- "GenPart_motherId" at address 0x43f70a0
- "GenPart_motherIndex" at address 0x43f88d0
- "GenPart_pdgId" at address 0x44cb260
- "GenPart_phi" at address 0x43f2810
- "GenPart_pt" at address 0x43f5860
- "GenPart_status" at address 0x43ef9a0
- "Jet_btagCMVA" at address 0x44cd090
- "Jet_eta" at address 0x43f0b50
- "Jet_mass" at address 0x44cee60
- "Jet_phi" at address 0x43eff60
- "Jet_pt" at address 0x43f16d0
- "LepGood_charge" at address 0x43f6a70
- "LepGood_eta" at address 0x43f8f10
- "LepGood_mass" at address 0x43f7700
- "LepGood_mcMatchAny" at address 0x43f4690
- "LepGood_mcMatchId" at address 0x43f5e60
- "LepGood_mcMatchPdgId" at address 0x43f5270
- "LepGood_mcMatchTau" at address 0x43f3a10
- "LepGood_mcPt" at address 0x43f2e80
- "LepGood_pdgId" at address 0x44cb8b0
- "LepGood_phi" at address 0x43f8290
- "LepGood_pt" at address 0x44cac00
- "cartProduct(lorentz_vectors(vectorOf(nJet,Jet_pt),vectorOf(nJet,Jet_eta),vectorOf(nJet,Jet_phi),vectorOf(nJet,Jet_mass)),lorentz_vectors(vectorOf(nJet,Jet_pt),vectorOf(nJet,Jet_eta),vectorOf(nJet,Jet_phi),vectorOf(nJet,Jet_mass)))" at address 0x2c7a230
- "count(bJet_Selection:vectorOf(nJet,Jet_btagCMVA))" at address 0x442cbc0
- "count(is_electron:vectorOf(nGenPart,GenPart_pdgId))" at address 0x2c7bad0
- "count(is_electron:vectorOf(nLepGood,LepGood_pdgId))" at address 0x2c7be30
- "count(is_lepton:vectorOf(nGenPart,GenPart_pdgId))" at address 0x2c7bde0
- "count(is_lepton:vectorOf(nLepGood,LepGood_pdgId))" at address 0x2c7c230
- "count(is_muon:vectorOf(nGenPart,GenPart_pdgId))" at address 0x2c7bb20
- "count(is_muon:vectorOf(nLepGood,LepGood_pdgId))" at address 0x2c7bfa0
- "energies(lorentz_vectors(vectorOf(nGenPart,GenPart_pt),vectorOf(nGenPart,GenPart_eta),vectorOf(nGenPart,GenPart_phi),vectorOf(nGenPart,GenPart_mass)))" at address 0x448ca00
- "energies(lorentz_vectors(vectorOf(nJet,Jet_pt),vectorOf(nJet,Jet_eta),vectorOf(nJet,Jet_phi),vectorOf(nJet,Jet_mass)))" at address 0x448bd90
- "energies(lorentz_vectors(vectorOf(nLepGood,LepGood_pt),vectorOf(nLepGood,LepGood_eta),vectorOf(nLepGood,LepGood_phi),vectorOf(nLepGood,LepGood_mass)))" at address 0x43ed5a0
- "evt" at address 0x43f4c70
- "lorentz_vectors(vectorOf(nGenPart,GenPart_pt),vectorOf(nGenPart,GenPart_eta),vectorOf(nGenPart,GenPart_phi),vectorOf(nGenPart,GenPart_mass))" at address 0x44187b0
- "lorentz_vectors(vectorOf(nJet,Jet_pt),vectorOf(nJet,Jet_eta),vectorOf(nJet,Jet_phi),vectorOf(nJet,Jet_mass))" at address 0x4416800
- "lorentz_vectors(vectorOf(nLepGood,LepGood_pt),vectorOf(nLepGood,LepGood_eta),vectorOf(nLepGood,LepGood_phi),vectorOf(nLepGood,LepGood_mass))" at address 0x4415860
- "lumi" at address 0x44cbe90
- "map(inv_mass:cartProduct(lorentz_vectors(vectorOf(nJet,Jet_pt),vectorOf(nJet,Jet_eta),vectorOf(nJet,Jet_phi),vectorOf(nJet,Jet_mass)),lorentz_vectors(vectorOf(nJet,Jet_pt),vectorOf(nJet,Jet_eta),vectorOf(nJet,Jet_phi),vectorOf(nJet,Jet_mass))))" at address 0x448b760
- "nBJetLoose40" at address 0x44ccab0
- "nBJetMedium40" at address 0x44bfbb0
- "nBJetTight40" at address 0x43f6440
- "nGenPart" at address 0x4414830
- "nJet" at address 0x43f2250
- "nLepGood" at address 0x44cc470
- "nVert" at address 0x43f3450
- "os-dilepton" at address 0x2c7cbe0
- "pair(count(is_electron:vectorOf(nGenPart,GenPart_pdgId)),count(is_electron:vectorOf(nLepGood,LepGood_pdgId)))" at address 0x2c7c280
- "pair(count(is_lepton:vectorOf(nGenPart,GenPart_pdgId)),count(is_lepton:vectorOf(nLepGood,LepGood_pdgId)))" at address 0x2c7c7b0
- "pair(count(is_muon:vectorOf(nGenPart,GenPart_pdgId)),count(is_muon:vectorOf(nLepGood,LepGood_pdgId)))" at address 0x2c7c610
- "pair(energies(lorentz_vectors(vectorOf(nJet,Jet_pt),vectorOf(nJet,Jet_eta),vectorOf(nJet,Jet_phi),vectorOf(nJet,Jet_mass))),vectorOf(nJet,Jet_eta))" at address 0x2c7a710
- "pair(energies(lorentz_vectors(vectorOf(nLepGood,LepGood_pt),vectorOf(nLepGood,LepGood_eta),vectorOf(nLepGood,LepGood_phi),vectorOf(nLepGood,LepGood_mass))),vectorOf(nLepGood,LepGood_pt))" at address 0x2c7a2a0
- "pair(nLepGood,nJet)" at address 0x2c7e3c0
- "reduceWith(max:energies(lorentz_vectors(vectorOf(nLepGood,LepGood_pt),vectorOf(nLepGood,LepGood_eta),vectorOf(nLepGood,LepGood_phi),vectorOf(nLepGood,LepGood_mass))))" at address 0x4489e80
- "reduceWith(mean:energies(lorentz_vectors(vectorOf(nLepGood,LepGood_pt),vectorOf(nLepGood,LepGood_eta),vectorOf(nLepGood,LepGood_phi),vectorOf(nLepGood,LepGood_mass))))" at address 0x43eee70
- "reduceWith(min:energies(lorentz_vectors(vectorOf(nLepGood,LepGood_pt),vectorOf(nLepGood,LepGood_eta),vectorOf(nLepGood,LepGood_phi),vectorOf(nLepGood,LepGood_mass))))" at address 0x44873c0
- "reduceWith(range:energies(lorentz_vectors(vectorOf(nLepGood,LepGood_pt),vectorOf(nLepGood,LepGood_eta),vectorOf(nLepGood,LepGood_phi),vectorOf(nLepGood,LepGood_mass))))" at address 0x44327f0
- "run" at address 0x43f0590
- "ss-dilepton" at address 0x44158d0
- "trilepton" at address 0x2c7c660
- "vectorOf(nGenPart,GenPart_eta)" at address 0x44321a0
- "vectorOf(nGenPart,GenPart_mass)" at address 0x442ef10
- "vectorOf(nGenPart,GenPart_motherId)" at address 0x44855a0
- "vectorOf(nGenPart,GenPart_motherIndex)" at address 0x44861f0
- "vectorOf(nGenPart,GenPart_pdgId)" at address 0x4486dd0
- "vectorOf(nGenPart,GenPart_phi)" at address 0x43ee800
- "vectorOf(nGenPart,GenPart_pt)" at address 0x4432e40
- "vectorOf(nGenPart,GenPart_status)" at address 0x442e370
- "vectorOf(nJet,Jet_btagCMVA)" at address 0x4487fa0
- "vectorOf(nJet,Jet_eta)" at address 0x448a500
- "vectorOf(nJet,Jet_mass)" at address 0x4488c30
- "vectorOf(nJet,Jet_phi)" at address 0x4489820
- "vectorOf(nJet,Jet_pt)" at address 0x448b140
- "vectorOf(nLepGood,LepGood_charge)" at address 0x442a270
- "vectorOf(nLepGood,LepGood_eta)" at address 0x442c5d0
- "vectorOf(nLepGood,LepGood_mass)" at address 0x442ae40
- "vectorOf(nLepGood,LepGood_mcMatchAny)" at address 0x43ee190
- "vectorOf(nLepGood,LepGood_mcMatchId)" at address 0x44296f0
- "vectorOf(nLepGood,LepGood_mcMatchPdgId)" at address 0x4428b70
- "vectorOf(nLepGood,LepGood_mcMatchTau)" at address 0x43ecf10
- "vectorOf(nLepGood,LepGood_mcPt)" at address 0x448c3a0
- "vectorOf(nLepGood,LepGood_pdgId)" at address 0x442dda0
- "vectorOf(nLepGood,LepGood_phi)" at address 0x442ba10
- "vectorOf(nLepGood,LepGood_pt)" at address 0x442d1a0
- "xsec" at address 0x44ce800
- """
- def parse(str_in):
- str_in = "("+str_in+")"
- ends = {}
- nests = {}
- names = {}
- styles = {}
- parens = []
- name = ""
- name_start = 0
- name_end = 0
- for i, char in enumerate(str_in):
- if char == "(":
- nests[name_start] = []
- if parens:
- nests[parens[-1]].append(name_start)
- names[name_start] = name # save function name
- styles[name_start] = {"shape": "ellipse"}
- name = ""
- parens.append(name_start)
- elif char == ")":
- if name:
- ends[name_start] = name_end
- names[name_start] = name
- styles[name_start] = {"shape": "rectangle"}
- nests[parens[-1]].append(name_start)
- name = ""
- ends[parens.pop()] = i
- elif char in ",:":
- if name:
- ends[name_start] = name_end
- names[name_start] = name
- if char == ",":
- styles[name_start] = {"shape": "rectangle"}
- else:
- styles[name_start] = {"shape": "invhouse"}
- nests[parens[-1]].append(name_start)
- name = ""
- else:
- if not name:
- name_start = i
- name += char
- name_end = i
- # clean up duplicate sub-trees
- text = {}
- for start, end in ends.items():
- s = str_in[start:end+1]
- if s in text:
- dup_id = text[s]
- names.pop(start)
- if start in nests:
- nests.pop(start)
- for l in nests.values():
- for i in range(len(l)):
- if l[i] == start:
- l[i] = dup_id
- else:
- text[s] = start
- names.pop(0)
- nests.pop(0)
- g = pdp.Dot()
- for id_, name in names.items():
- g.add_node(pdp.Node(str(id_), label=name, **styles[id_]))
- for group_id, children in nests.items():
- for child_id in children:
- g.add_edge(pdp.Edge(str(group_id), str(child_id)))
- with open("outfile.ps", "wb") as f:
- try:
- f.write(g.create_ps())
- except Exception as e:
- print(g.to_string())
- raise e
- if __name__ == '__main__':
- vals = log.split('\n')
- vals = [val.split(' at ')[0][1:-1] for val in vals if val]
- for val in vals:
- parse(val)
- input()
|