for iEntry in xrange(nEntries) : tree.GetEntry(iEntry) pdg = tree.mc_pdgId status = tree.mc_status parents = tree.mc_parent_index children = tree.mc_child_index findHiggs = gen.findInterestingHiggsWithChiAndPar interestingIhiggs, higgsChildren, higgsParents = findHiggs(pdg, parents, children) for hc in higgsChildren : counter[str(sorted(hc))] += 1 if not interestingIhiggs : counter['nothing interesting'] += 1 if len(interestingIhiggs) > 2 : counter['multiple interesting'] += 1 if (iEntry/(lastPrinted if lastPrinted else 1) >= printEveryFactor) or iEntry<nEntriesToPrint: print '-'*4 + " event %d "%iEntry + '-'*4 print "run: %d event %d" % (tree.RunNumber, tree.EventNumber) print "interesting iHiggs: ",str(interestingIhiggs) print "higgsChildren: ",str(higgsChildren) print "higgsParents: ",str(higgsParents) lastPrinted = iEntry if iEntry < nEntriesToPrint : printer.uponAcceptance(tree) cleanCounts = collections.defaultdict(int) #categorize them discarding the MC gen extra stuff print "Counts for each decay" for ch,count in sorted(counter.iteritems(), key=lambda (k,v): v, reverse=True): print "%s : %d" % (ch, count) children = eval(ch) label = gen.guessHdecayLabel(children) cleanCounts[label] += count totCategorized = sum([v for k,v in cleanCounts.iteritems() if k!='unknown']) for ch,count in sorted(cleanCounts.iteritems(), key=lambda (k,v): v, reverse=True): print "%s : %d (%.2f%%)" % (ch, count, 100.*count/totCategorized)
[h.Clone(h.GetName()+'_'+d) for h in hsMassJetPair]) for d in hDecays]) print "looping over %d entries"%nEntries findHiggs = gen.findInterestingHiggsWithChiAndPar for iEntry in xrange(nEntries) : tree.GetEntry(iEntry) nTruthJets = tree.jet_AntiKt4TruthJets_n truthJets = [tlv(0., 0., 0., 0.) for i in xrange(nTruthJets)] pdg, parents, children = tree.mc_pdgId, tree.mc_parent_index, tree.mc_child_index interestingIhiggs, higgsChildren, higgsParents = findHiggs(pdg, parents, children) if len(interestingIhiggs)>1 : print "skip event with multiple (%d) higgs"%len(interestingIhiggs) continue higgsChildren, higgsParents = higgsChildren[0], higgsParents[0] hDecay = gen.guessHdecayLabel(higgsChildren) for j, pt, eta, phi, en in zip(truthJets, tree.jet_AntiKt4TruthJets_pt, tree.jet_AntiKt4TruthJets_eta, tree.jet_AntiKt4TruthJets_phi, tree.jet_AntiKt4TruthJets_E) : j.SetPtEtaPhiE(pt*MeV2GeV, eta, phi, en*MeV2GeV) truthJets = [j for j in truthJets if j.Pt()>minJetPt] nTruthJets = len(truthJets) sorted(truthJets, key=lambda j : j.Pt()) hTruthNjets.Fill(len(truthJets)) for i, j in enumerate(truthJets) : hTruthJetEta.Fill(j.Eta()) hTruthJetPt.Fill(j.Pt()) if i==0 : hTruthJet0Pt.Fill(j.Pt())
pdg, parents, children) for hc in higgsChildren: counter[str(sorted(hc))] += 1 if not interestingIhiggs: counter['nothing interesting'] += 1 if len(interestingIhiggs) > 2: counter['multiple interesting'] += 1 if (iEntry / (lastPrinted if lastPrinted else 1) >= printEveryFactor) or iEntry < nEntriesToPrint: print '-' * 4 + " event %d " % iEntry + '-' * 4 print "run: %d event %d" % (tree.RunNumber, tree.EventNumber) print "interesting iHiggs: ", str(interestingIhiggs) print "higgsChildren: ", str(higgsChildren) print "higgsParents: ", str(higgsParents) lastPrinted = iEntry if iEntry < nEntriesToPrint: printer.uponAcceptance(tree) cleanCounts = collections.defaultdict( int) #categorize them discarding the MC gen extra stuff print "Counts for each decay" for ch, count in sorted(counter.iteritems(), key=lambda (k, v): v, reverse=True): print "%s : %d" % (ch, count) children = eval(ch) label = gen.guessHdecayLabel(children) cleanCounts[label] += count totCategorized = sum([v for k, v in cleanCounts.iteritems() if k != 'unknown']) for ch, count in sorted(cleanCounts.iteritems(), key=lambda (k, v): v, reverse=True): print "%s : %d (%.2f%%)" % (ch, count, 100. * count / totCategorized)