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)
Change History (6)
comment:1 by , 9 years ago
comment:2 by , 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
by , 9 years ago
Attachment: | Example3.C added |
---|
comment:3 by , 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!
follow-up: 5 comment:4 by , 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
comment:5 by , 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 Towerand 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.gitLet me know if this answers your question.
Michele
This modification works perfectly! Thank you again.
Jordan
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