Qvs gandtk met

General interest
1) add Q vs G likelihood
2) fix multilepton config as introduced in 124
3) created metAnalyzer and added tkmet
4) added some official T2tt sample

MT2 specific
A) fix initial parameter  in KT
what's the meaning of isParton here? as it is now, in line 46 it will be defined as boolean computed for the last value of "p" (which is ill defined, but likely it's the last genParticle in the collection since python doesn't have a good scoping and so it probably takes it from the p inside of the list in line 44 ), and then the request of isParton in line 47 it will either accept everything or reject everything.
did you mean instead to define isParton as a function on p to use in the filtering in line 47, i.e.:

     isParton = lambda p : isFlavour(p,1) or isFlavour(p,2) or isFlavour(p,3) or isFlavour(p,4) or isFlavour(p,5) or isFlavour(p,21)
     event.partons = [ p for p in event.genParticles if ((p.status() == 23 or p.status() == 3) and abs(p.pdgId())>0 and isParton ) ]

also, are you sure you want isFlavour rather than "abs(p.pdgId()) in [1,2,3,4,5,21]" ? as it is, also all hadrons will pass your selection, and similarly would the susy squarks and gluinos.

and, why abs(pdgId()) > 0 ? do we have pdgId zero particles?