|
[Rivet] b-tagging in Rivet 2.x.xAndy Buckley andy.buckley at cern.chSun Feb 15 22:10:58 GMT 2015
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> > > > > _______________________________________________ > Rivet mailing list > 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
More information about the Rivet mailing list |