CJLST / ZZAnalysis

14 stars 51 forks source link

[NanoAnalysis] Finalise jets module #268

Open bonanomi opened 1 month ago

bonanomi commented 1 month ago

Now we have the JECs application in place and we store the (un)corrected pt and mass values for the jets in the final trees. however, we still need to implement the lepton-jet cleaning and save all the other relevant variables for jet-related measurements (eg eta, rapidity, etc) in jetFiller.py.

bonanomi commented 1 month ago

@namapane @AlessandroTarabini please correct me if I am wrong

AlessandroTarabini commented 1 month ago

Yes, it is correct. We are missing:

namapane commented 1 month ago

Regarding lepton-jet cleaning, I must say that what we had in nanoAOD is actually rather messy as the code has been reworked over time and as far as I remember there are some repetitions. More importantly, I think that from the code it is not clear is what we really want to achieve this cleaning, from the physics point of view. In principle, we want to avoid to double-count leptons and FSR photons that we use for the candidate+extra leptons; they should not be also used as a constituent of jets. Practically this would mean that we should remove leptons passing the full sel, and their photons, from jets (independently of which make the candidate, since in categorization we consider extra leptons as well). The current implementation, however, "kills" jets that are close to a lepton or photon, IIRC; but this is not really correct, first of all the lepton may have been already separated by the jet by the PF algorithm; but even if the jet includes the lepton or the photon, these may contribute to a large or small fraction of the jet energy. Even putting a threshold is not really correct (if a 45 GeV letpton makes up 51% of a jet's energy, the remaining stuff would still make a rather hard jet). I think it is not possible to remove the lepton from the jet on top of nanoAODs as we don't have the list of constituents. The muon object includes however some variables related to the matching with the closest jet, that may be checked to figure out if we can learn something. In any case, I would surely not blindly implement what we had in Run2.

namapane commented 1 month ago

Also what do you mean with adding "jet-related measurements (eg eta, rapidity)? All jet variables are copied to output, cf: https://github.com/CJLST/ZZAnalysis/blob/Run3/NanoAnalysis/test/ZZ4lNanoDoc.md#jet (maybe I misunderstood your comment)

bonanomi commented 1 month ago

Also what do you mean with adding "jet-related measurements (eg eta, rapidity)? All jet variables are copied to output, cf: https://github.com/CJLST/ZZAnalysis/blob/Run3/NanoAnalysis/test/ZZ4lNanoDoc.md#jet (maybe I misunderstood your comment)

Ciao Nicola, I clearly overlooked at the samples yesterday, as I could see only the variables added to the tree by the JECs module. You are actually right and all the jet related variables are in there already (maybe except for the rapidity, but that can be added easily)

bonanomi commented 1 month ago

Yes, it is correct. We are missing:

* [ ]  add other relevant jet-related variables

* [ ]  lepton cleaning

* [ ]  jet veto maps

* [ ]  JES splitting

Ciao Alessandro, do you have a link for the jet veto maps ( IIUC these are what in the past was called "MET Filters", right?). Also, if you have at hand the JME page with the link to the JES splitting, it would be good to have it here for book keeping (and for when we start working on the implementation), thanks! :)

namapane commented 1 month ago

These are available here https://github.com/CJLST/ZZAnalysis/blob/Run3/NanoAnalysis/test/ZZ4lNanoDoc.md#flag-back-to-top

AlessandroTarabini commented 1 month ago

All JME recommendations and recipes are stored here. IIUC, the MET filters and jet veto maps are two different kind of filters. The difference we have now is with the jet veto maps: previously only the affected jet was to be removed, while now the entire event should be dropped.

namapane commented 1 month ago

OK sorry I was referring to the MET filters that were recommeded in Run2. Actually, the wiki page still mentions they are recommended for Run3. https://twiki.cern.ch/twiki/bin/viewauth/CMS/MissingETOptionalFiltersRun2#Run_3_recommendations If that is not the case, we should probably ask JET people to fix the wiki.

Regarding veto maps, I am a bit surprised that the page links json files but not an example on how to use them (unless I overlooked that). If we need to implement a module for this recipe, as usual, I would like to put the generic part in PhysicsTools/NATModules and its configuration in our fwk.