MadAnalysis/madanalysis5

Jet clustering on unsmeared object

haolinli1991 opened this issue · 3 comments

Question

Dear experts,

I am writing to ask whether there is an option in the expert mode to implement the jet algorithm on the unsmeared hadronic particles.
I am using version 2.0.4, it seems that the clusterings are all based on the smeared objects myEvent->rec().cluster_input() in the definition of ClusterAlgoFastJet::Execute.

In principle, I could prepare the clustering input of unsmeared hadrons for each event and then call the functions of fastjet library in the analysis.cpp, but I encountered some compiling issues says that it could not identity the fastjet library. In this case, would you provide me with an example of using the fastjet function like ClusterSequence in the expert mode?

Thanks,
Haolin

Hi @haolinli1991, in principle, yes, but not encouraged, so it's buried deep in the code. If you set the smearing method to jet smearing, it already does not smear the underlying constituents of the jet, so you can access all the constituents without smearing. But if the jet smearing is set to the constituent level, then all the constituents will be smeared; hence, you will have to extract information from the MC event. Note that substructure tools are designed to take RecJetFormat or a vector of RecJetFormat as input. So, if you want to go beyond the implementation, which is intended to minimize the effort and mistake, you will need to construct your own pseudojets and interact with fastjet as you like.

Hope it helps

Hi @haolinli1991, in principle, yes, but not encouraged, so it's buried deep in the code. If you set the smearing method to jet smearing, it already does not smear the underlying constituents of the jet, so you can access all the constituents without smearing. But if the jet smearing is set to the constituent level, then all the constituents will be smeared; hence, you will have to extract information from the MC event. Note that substructure tools are designed to take RecJetFormat or a vector of RecJetFormat as input. So, if you want to go beyond the implementation, which is intended to minimize the effort and mistake, you will need to construct your own pseudojets and interact with fastjet as you like.

Hope it helps

Hi Jack,
Thanks very much for you quick reply.
So if I understand correctly if I only write something like "define smearer j with E XXXXX" in the SFS card, then there is no smearing applied to the constituents before the jet clustering right? If it is the case, is there a method to access these constituents?
Another question is that, does electrons and muons are smeared if they were to be included in the input of the jet clustering algorithm?

Thanks,
Haolin

hi @haolinli1991, in SFS set main.fastsim.jetrecomode = jets indicates smearing is only applied to the clustered object and all the constituents are accessible via constituents() function. These constituents are indices of particle list within mc() collection.

If reco mode is based on jets only the jet it self is smeared but if its based on constituents all the constituents are smeared and then jet object is constructed. But since constituents() function gives you index within mc list you still have access to unsmeared objects.

Hope it helps
cheers