[Rivet] b-tagging in Rivet 2.x.x

Gavin Hesketh gavin.hesketh at ucl.ac.uk
Mon Feb 16 16:34:06 GMT 2015


Hi Chris,
one thing to be aware of: the actual analysis did not use ghost 
association to label jets. The differences are very small, but still it 
is probably worth implementing what the analysis actually did... (this 
is why we ended up with the clunky list of B hadrons for Z+bb).
cheers,
Gavin


On 16/02/15 09:49, Christian Gütschow wrote:
> Hi Andy,
>
> ooh, fancy that! I am liking this option best. :-)
>
> Unfortunately, it doesn't seem to work for me either, i.e. both the
> bHadrons vector is empty and jet.bTagged() also returns false for all my
> selected jets (at least that's consistent), while the approach via the
> GenParticle container does find some b-jets.
>
> I was using an Alpgen+Herwig sample for this test, namely a file from
> the mc11_7TeV.126733.AlpgenHerwigEvtGenWbb2p.evgen.EVNT.e1155 container.
>
> Cheers,
> Chris
>
>
> On 15 February 2015 at 23:10, Andy Buckley <andy.buckley at cern.ch
> <mailto:andy.buckley at cern.ch>> wrote:
>
>     Hi Christian,
>
>     The best way to do it now is if (jet.bTagged()) ;-)  This uses ghost
>     association to hadrons.
>
>     The HeavyHadrons way should work, though, so I'm very puzzled that it
>     doesn't. What generator are you using? Is the bHadrons vector non-empty?
>     Could you try printing the dRs in that comparison? (By the way, you
>     shouldn't need to re-apply the > 5 GeV cut in the loop, since that's one
>     of your b-hadron selection criteria!)
>
>     Andy
>
>     PS. I will get back to you about the merging issue. I didn't get any
>     chance in the last 2 weeks, but have a "free" week coming up so will do
>     my best. Prod me if I don't!
>
>
>     On 15/02/15 14:05, Christian Gütschow wrote:
>      > Dear Rivet authors,
>      >
>      > I'm just trying to implement a Rivet routine for a W+b ATLAS
>     measurement
>      > and was wondering what the preferred way of doing particle-level
>      > b-tagging in Rivet is?
>      >
>      > Naively, I would think that the easiest way to decide whether a
>     jet is a
>      > b-jet is to use the HeavyHadrons projection, e.g. like so
>      >
>      >     addProjection(HeavyHadrons(-2.5, 2.5, 5.0*GeV), "BHadrons");
>      >     ...
>      >     const Particles& bHadrons = applyProjection<HeavyHadrons>(event,
>      >     "BHadrons").bHadrons();
>      >     ...
>      >     // for each jet "j":
>      >     foreach(const Particle& b, bHadrons) {
>      >       if( (b.pT() > 5.0*GeV) && (deltaR(j, b) < 0.3) ) {
>      >         // jet matched to B hadron!
>      >         ...
>      >         break;
>      >       }
>      >     }
>      >
>      >
>      > Turns out, this doesn't do anything at all because bHadrons has
>     always
>      > size 0 for some reason. Is this to be expected or likely to be
>     some sort
>      > of bug (on my side)?
>      >
>      > On the other hand, if I use the approach that was used in the Z+b(b)
>      > analysis (ATLAS_2014_I1306294), i.e. something like
>      >
>      >     bool hasB = false;
>      >
>      >     foreach(const GenParticle* b, particles(event.genEvent())) {
>      >       if(b->momentum().perp() < 5.0*GeV)  continue;
>      >       for(uint k=0; k < stableB.size(); ++k) {
>      >         if( fabs(b->pdg_id()) == stableB[k] ) {
>      >           if( deltaR(j.momentum().eta(), j.momentum().phi(),
>      >     b->momentum().eta(), b->momentum().phi()) < 0.3 ) {
>      >             // jet matched to B hadron!
>      >             hasB = true;
>      >             break;
>      >           }
>      >         }
>      >       }
>      >       if(hasB)  break;
>      >     }
>      >
>      >
>      > where stableB is a custom-made vector of the B-hadron PDG IDs,
>     then I do
>      > find the B hadrons in the event and can successfully match my
>     jets to them.
>      >
>      > I think it's safe to say that while the latter option does the
>     trick, it
>      > is a bit of an awkward way to code this up. (Presumably that's the
>      > reason why the Z+b(b) analysis is still dwelling in the contributions
>      > area...?) Is there a better way of doing this?
>      >
>      > Many thanks for your advice in advance!
>      >
>      > Cheers,
>      > Chris
>      >
>      > --
>      >
>      >  Dr. Christian Gütschow
>      >
>      >  TU Dresden
>      >  Institut für Kern- und Teilchenphysik
>      >  Zellescher Weg 19
>      >  01069 Dresden
>      >
>      >  > E17, Andreas-Schubert-Bau
>      >  > chris.g at cern.ch <mailto:chris.g at cern.ch>
>     <mailto:chris.g at cern.ch <mailto:chris.g at cern.ch>>
>      >
>      >
>      >
>      > _______________________________________________
>      > Rivet mailing list
>      > Rivet at projects.hepforge.org <mailto:Rivet at projects.hepforge.org>
>      > https://www.hepforge.org/lists/listinfo/rivet
>      >
>
>
>     --
>     Dr Andy Buckley, Royal Society University Research Fellow
>     Particle Physics Expt Group, University of Glasgow / PH Dept, CERN
>
>
>
>
> --
>
>   Dr. Christian Gütschow
>
>   TU Dresden
>   Institut für Kern- und Teilchenphysik
>   Zellescher Weg 19
>   01069 Dresden
>
>   > E17, Andreas-Schubert-Bau
>   > chris.g at cern.ch <mailto:chris.g at cern.ch>
>
>
>
> _______________________________________________
> Rivet mailing list
> Rivet at projects.hepforge.org
> https://www.hepforge.org/lists/listinfo/rivet
>


More information about the Rivet mailing list