[Rivet] Truth jets and Rivet

Andy Buckley andy.buckley at cern.ch
Wed Jan 25 17:17:30 GMT 2017


On 25/01/17 10:49, Karl Gellerstedt wrote:
> Hi Andy,
>
> I have two quick question about truth jets, that I hope you know the
> answers to.
>
> Do you know if pile-up jets are included in the xAOD truth jet
> collections, (AntiKt4TruthJets/TruthWZJets)?

I should know this, but my mind has gone fuzzy and I can't remember how 
much is retained. My suspicion is that they are not there, and that a 
dedicated collection for truth pile-up jets is used: pile-up is 
simulated in separate simulation jobs and combined at the digitization 
stage. Zach Marshall or John Chapman would know, I'm sure. Try asking on 
the PMG mailing list?

Also, the truth pile-up jet info is heavily thinned before xAOD, so at 
most you'd get the truth-jet filters but no particle constituent info. 
Note that truth-jet clustering is done independently for the signal 
event and each pile-up event, so it's perfectly possible for signal and 
pile-up jets to completely overlap without "taking bites" out of each other.

> I’ve also had a look at Rivet (a really impressive work!), and do you
> know what setup to use for the FastJet projection, to get jets
> similar to the “AntiKtTruthWZJets”?

Good question. I think the W/Z jets can't be exactly replicated in Rivet 
because they explicitly look for a W or Z parent: we avoid that. But I 
think you would get a very similar answer if you configured normal akT 
jets with the correct radius and pT threshold, and also configure the 
DressedLeptons projection to find prompt electrons and muons: then veto 
any jets where they overlap. Maybe with a narrower veto radius than the 
jet radius.

Off the top of my head, something like this would work:

// Init
FinalState photons(Cuts::abspid == PID::PHOTON);
PromptFinalState leptons(Cuts::abspid == PID::ELECTRON || Cuts::abspid 
== PID::MUON);
declare(DressedLeptons(leptons, photons, Cuts::pT > 15*GeV), "Leptons");

// Analyze
const Particles leptons = apply<FinalState>(event, "Leptons").particles();
Jets jets = apply<FinalState>(event, "Jets").jets(Cuts::pT > 20*GeV);
for (const Particle& l : leptons)
   ifilter_reject(jets, deltaRLess(l, 0.3));

There are other ways that could also work, such as passing the FastJets 
projection a VetoedFinalState for clustering, where the veto is on 
anything selected by the DressedLeptons projection. Maybe that would be 
closer to the WZJets definition.

I've copied in the other Rivet developers in case they have anything to add.

Andy

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


More information about the Rivet mailing list