Fork me on GitHub

Opened 9 years ago

Last modified 9 years ago

#639 new How to

Jet Constituents

Reported by: Jordan Dull Owned by:
Priority: minor Milestone:
Component: Delphes code Version: Delphes 3
Keywords: Cc:

Description

Hi,

I am trying to analyze the individual towers within any given jet that is found through the FastJetFinder module. Is there an easy way of getting the constituents of a jet using the program as it is?

I attempted to modify the FastJetFinder code to output an array of towers for each jet but I kept getting the error that the input list can't be accessed in the module. Is there an easier way to achieving this goal?

Thanks!

Attachments (1)

Example3.C (4.8 KB ) - added by Jordan Dull 9 years ago.

Download all attachments as: .zip

Change History (6)

comment:1 by Michele Selvaggi, 9 years ago

Hi,

sure there is, in "examples/Example3.C" you'll find exactly what you need.

https://github.com/delphes/delphes/blob/master/examples/Example3.C#l196

Cheers,
Michele

comment:2 by Jordan Dull, 9 years ago

Hi again,

Thanks for the response! This example gives the jet constituents which is what I was looking for. However, as I was playing around with the code, I found a few inconsistencies. For example, I summed together the energies of all the constituents for each jet and then compared this value to the energy of that jet. They rarely, if ever, agreed. I also compared the Eta and Phi values of the constituents to their respective jet and they did not match either. I have attached the modified code. In essence, the constituents of a jet do not seem to agree with their jet. What exactly does jet.Constituents return?

Thanks,

Jordan

Version 1, edited 9 years ago by Jordan Dull (previous) (next) (diff)

by Jordan Dull, 9 years ago

Attachment: Example3.C added

comment:3 by Jordan Dull, 9 years ago

Hi again,

So I figured out the error that I described in my reply to my first question. The constituents now perfectly match their respective jets. There was something wrong in my delphes_card_FCC_notau.tcl. My question now is if it is possible to isolate the hcal towers and the ecal towers from the constituents energies? I know they are separate at first and then merged. Is there a way to get to those towers before they are merged through the Constituents class?

Thanks!

comment:4 by Michele Selvaggi, 9 years ago

Hi Jordan,

given the nature of your question, I am assuming you are already forming your jets using Calorimeter objects (TowerMerger/towers collection == merge of ECal/ecalTowers and HCal/hcalTowers) as opposed to particle-flow objects. Also, make sure you are storing in the output that collection:

add Branch TowerMerger/towers Tower Tower

and that you are properly opening this collection in your root macro:

TClonesArray *branchTower = treeReader->UseBranch("Tower");

Thanks to your question we have realised that when SimpleCalorimeter there is no simple way to determine whether the tower is Ecal or Hcal.

To fix that, we have added a flag called IsEcal to the SimpleCalorimeter module. If it is set to true, the variable Eem gets attributed a value equal to the tower energy and Ehad gets 0. If IsEcal is set to false then it is the other way around. You should then be able to distinguish Ecal from Hcal tower by looking at Eem and Ehad from now on (have a look at the updated FCC card for how to define the !isEcal flag properly).

To do this, please get the HEAD from git:

git clone https://github.com/delphes/delphes.git

Let me know if this answers your question.
Michele

in reply to:  4 comment:5 by Jordan Dull, 9 years ago

Replying to mselvaggi:

Hi Jordan,

given the nature of your question, I am assuming you are already forming your jets using Calorimeter objects (TowerMerger/towers collection == merge of ECal/ecalTowers and HCal/hcalTowers) as opposed to particle-flow objects. Also, make sure you are storing in the output that collection:

add Branch TowerMerger/towers Tower Tower

and that you are properly opening this collection in your root macro:

TClonesArray *branchTower = treeReader->UseBranch("Tower");

Thanks to your question we have realised that when SimpleCalorimeter there is no simple way to determine whether the tower is Ecal or Hcal.

To fix that, we have added a flag called IsEcal to the SimpleCalorimeter module. If it is set to true, the variable Eem gets attributed a value equal to the tower energy and Ehad gets 0. If IsEcal is set to false then it is the other way around. You should then be able to distinguish Ecal from Hcal tower by looking at Eem and Ehad from now on (have a look at the updated FCC card for how to define the !isEcal flag properly).

To do this, please get the HEAD from git:

git clone https://github.com/delphes/delphes.git

Let me know if this answers your question.
Michele


This modification works perfectly! Thank you again.
Jordan

Note: See TracTickets for help on using tickets.