Fork me on GitHub

Opened 10 years ago

Last modified 10 years ago

#307 new How to

pile-up jets in ATLAS delphes card

Reported by: vani Owned by:
Priority: major Milestone:
Component: Delphes code Version: Delphes 3
Keywords: pileup Cc:

Description

Hi,

I have a question regarding the pile-up jets in Delphes 3.1.2. I'm using ATLAS delphes card with pile-up on a sample produced by mg5+Pythia.

I would like to separate between hard scattered jets and pile-up jets in the event. Is there a way how to do it in Delphes? For example, (naively) having an 'isPU' leaf in Jet branch?

From Ticket#279, I've learned that I could combine all stable Pythia and pile-up particles in a new branch. Is it possible to run fastJet over all the stable Pythia and pile-up particles inside Delphes and store the output?

Thank you!

Cheers,

Nika

Change History (3)

comment:1 by Michele Selvaggi, 10 years ago

Hi Nika,

the "isPU" flag exists only for track objects, not for jets. However you can do it the experimentalist way by looking at variables produced by the PileUpJetID module which can help in discriminating between prompt and PU jets. You can find the relevant instructions here:

https://cp3.irmp.ucl.ac.be/projects/delphes/wiki/WorkBook/PileUp

For an example on how to run it, you can have a look at the card delphes_card_CMS_PileUp.tcl.

To answer your second question, it is possible to run Fastjet on any collection you want. I am not sure I understand the question though …
By default, if you run with the card I mention above, the jet collection is made out of a collection of all neutral particles (pileup+hs) and charged that are close enough to the primary vertex.

If you want to run over everything (that is, including also charged particles from pile-up) you need to first create a new collection, and feed it to the fast jet finder module:

set ExecutionPath {
…
EFlowMergerAll
FastJetFinderAll
…
}

…


#########################
# Energy flow merger ALL
#########################

module Merger EFlowMergerAll {
# add InputArray InputArray
  add InputArray Calorimeter/eflowTracks
  add InputArray Calorimeter/eflowPhotons
  add InputArray Calorimeter/eflowNeutralHadrons
  set OutputArray eflow
}

##################
# Jet finder All
##################

module FastJetFinder FastJetFinderAll {

  set InputArray EFlowMergerAll/eflow

  set OutputArray jets

  # area algorithm: 0 Do not compute area, 1 Active area explicit ghosts, 2 One ghost passive area, 3 Passive area, 4 Voronoi, 5 Active area
  set AreaAlgorithm 5

  # jet algorithm: 1 CDFJetClu, 2 MidPoint, 3 SIScone, 4 kt, 5 Cambridge/Aachen, 6 antikt
  set JetAlgorithm 6
  set ParameterR 0.5

  set JetPTMin 20.0
}

module TreeWriter TreeWriter {
  ...
  add Branch FastJetFinderAll/jets Jet JetAll
  ...
}

Is this what you need?

Cheers,
Michele

comment:2 by Michele Selvaggi, 10 years ago

Dear Michele,

Thank you for your reply!

Since I'm using ATLAS delphes card (with PU) I would like to implement a sort of JetVertexFraction algorithm to remove PU jets. I know that JVF is not implemented in Delphes at this point, but I had an idea how to implement it at the analysis level.

A very simple method would be to just compare jets at the truth level with reconstructed jets, and if dR between reco and truth jets is less than 0.2 (for example) these jets are kept at the analysis level (and JVF efficiencies could be applied). However, since I'm a new user, I'm not entirely sure if I have all the necessary information:

  1. GenJets are jets formed from all stable particles after PS+hadronisation, also including leptons and neutrinos. Do GenJets also include PU events? From looking at the ATLAS Delphes card I would say no, since the input for GenJets are Delphes/stableParticles and PU events are stored into PileUpMerger/stableParticles etc. but when I compared GenJets pT distribution from the same event file with 0 and 80 <PU> the distributions I get are different. What could be the reason for this discrepancy?


  1. Is it possible to store only hadronic jets without leptons already at the Delphes level? Another possibly would be to again require dR between GenJets and truthLeptons to be less than 0.3 (for example).
  1. My second question from my previous email: Is it possible to run fastJet over all the stable Pythia and pile-up particles inside Delphes and store the output?

This was a second alternative on how to separate PU jets from hs jets: Since I have a branch with all stable particles after PS and hadronisation mixed with PU I was thinking of running a FastJet algorithm on it, and at the end compare Jets with the jets from the mixed PU+stableParticles branch to see which jets come from PU and which are the hs jets. Thank you for your suggestion, but since the 1st option seems a bit simpler I will wait with this implementation for a while.

  1. I am at this moment also testing the CMS PileUpJetID method...
  1. Is there another way to differentiate between PU jets and hs jets in Delphes that I've missed?

Thank you in advance for your reply!

Best,

Nika

comment:3 by Michele Selvaggi, 10 years ago

Hi Nika

(I have added your answer to this ticket, so that other people can profit from the answer. Please make sure to modify the ticket for future answers, instead of replying to the email.).

  1. Yes, if you are using the default ATLAS_PileUp card, GenJets are formed from all stable particles after PS+hadronisation, also including leptons and neutrinos. They don't include pile-up.

What do you mean the distributions are different? This should not be the case.

  1. Yes, it is possible, you should write a module that filters the Delphes/stableParticles collection before passing them through FastJetFinder. You can have a look at the existing module, StatusPidFilter, which does something similar, but not exactly: https://cp3.irmp.ucl.ac.be/projects/delphes/browser/trunk/modules/StatusPidFilter.cc

and modify it according to your needs. To remove all leptons+neutrinos, you can change the conditions to something like:

pass = kTRUE;
if(pdgCode > 10 && pdgCode < 17) pass = kFALSE;

What you propose works as well. However, you have to be careful, is this what you want to do? You might want to keep non isolated leptons inside jets. Be aware that the above will remove every lepton.

  1. If you want pile-up to be included, you have to feed the collection PileUpMerger/stableParticles to the FastJetFinder module.
  1. Good, if you have questions about that specific module, please ask directly to Seth Senz.
  1. I would ask directly the relevant experts in CMS/ATLAS.

Cheers,
Michele

Note: See TracTickets for help on using tickets.