[Rivet] Jet "pair-smearing" and tagging efficiencies

Andy Buckley andy.buckley at cern.ch
Tue Jul 18 09:16:25 BST 2017


Hi James!

We handle fakes (i.e. mistags) with the same function that does true-tag 
efficiency. The user-supplied tagging efficiency function can ask 
questions of the truth jet, like bTagged() and cTagged(), so the typical 
implementation is a fall-back of b-tagging rates for true b-jets, then 
true c-jets, then maybe true taus, then light.

You're right that in general these should be mappings on *any* physics 
object, and I have some plans for that... but for now Particle and Jet 
are a bit too distinct.

So the problem is not that we have one function for b-tagging b-jets, 
another for b-tagging light jets, etc., but that we have one sort of 
efficiency function for b-tagging, one for c-tagging, and one for jet 
reco... and all have the same function signature. That means that I need 
to treat each tagging as being something distinct from the rest of the 
smearing/efficiency simulation, because the compiler can't tell if a 
Jet->double function means reco efficiency or some sort of tagging 
(which one?). Thoughts on how to get around this without making the user 
do something horrible?

Andy


On 18/07/17 08:08, James William Monk wrote:
> Hi Andy,
> 
> (I know I’m pretty quiet on this list, but I do still lurk!)
> 
> Do you handle fakes separately?  If not, why does the API need to distinguish between light and b-jets?  It is legitimate to ask it “what is the probability that this light jet is reconstructed as a b-jet.”  In fact, you ought to be able to ask that about any object, not just jets.  From an analysis point of view, all you care about is how many b-jets you reconstruct, so does it make sense to distinguish between fakes and true jets (other than for debugging purposes)?
> 
> cheers,
> 
> James
> 
> 
>> On 17 Jul 2017, at 18:03, Andy Buckley <andy.buckley at cern.ch> wrote:
>>
>> Hi Riveters,
>>
>> A C++ design question for you all... ;-)
>>
>> Those who were at the Lunga hackfest last year (yes, we want to do it again!) might remember that we decided to convert the efficiency function + smearing function approach to our fast-sim, to instead take an ordered list of unified transform functions which would operate on, and return, {object,eff} *pairs*.
>>
>> At the time, Karl implemented a bunch of macro trickery on a branch, and I recently converted it with some C++11 magic to a funkier form that didn't require users (i.e. analysis authors) to add confusing make_pair calls to their only-smearing or only-efficiency functions (and lambdas).
>>
>> This works beautifully for SmearedParticles -- C++ nerds might want to look up variadic template functions and geek out -- but with SmearedJets there's an additional complication: tagging. From function signatures alone there's nothing to distinguish a Jet->double jet reco efficiency function (usually ~100% and ignorable) from a Jet->double b-tagging function (important), or indeed from a Jet->double c-tagging function (haven't used it yet, but never say never). Or tau tagging, which doesn't exist yet, but...
>>
>> So, any bright ideas of how we can distinguish reco/b-tag/c-tag/tau-tag efficiency functions? A possibility would be to return not just a double, but a {pid,eff} = {int,double} pair where the first element is the PID. But I'm hoping you can suggest something nicer!
>>
>> Not a critical thing, but if we're going to polish the interface like this, we might as well do it properly. This would also have the nice, in principle, effect of allowing tagging efficiencies to be applied at a user-defined stage of reconstruction: at the moment the tagging is all applied based on the post-smearing kinematics.
>>
>> Cheers,
>> Andy
>>
>> -- 
>> Dr Andy Buckley, Lecturer / Royal Society University Research Fellow
>> Particle Physics Expt Group, University of Glasgow
>> _______________________________________________
>> Rivet mailing list
>> Rivet at projects.hepforge.org
>> https://www.hepforge.org/lists/listinfo/rivet
> 


-- 
Dr Andy Buckley, Lecturer / Royal Society University Research Fellow
Particle Physics Expt Group, University of Glasgow


More information about the Rivet mailing list