예제 #1
0
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)
예제 #2
0
                                 [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())
예제 #3
0
        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)