80 likes | 199 Views
Corrected jets in CMSSW. Can run a FW module to correct jets Consistent with 1_2_0 release For Midpoint Cone R=0.5 and 0.7 For Iterative Cone R=0.5 Instructions: https://hypernews.cern.ch/HyperNews/CMS/get/JetMET/83.html Makes separate collections FW-based only
E N D
Corrected jets in CMSSW • Can run a FW module to correct jets • Consistent with 1_2_0 release • For Midpoint Cone R=0.5 and 0.7 • For Iterative Cone R=0.5 • Instructions: https://hypernews.cern.ch/HyperNews/CMS/get/JetMET/83.html • Makes separate collections • FW-based only • FWLite version in the works (function)
Editorial Comments • Making separate collections is overkill • p4(CorrectedJet) = C(PT, , , em/had, lumi,…) * p4(OriginalJet) • Why not store one number per jet, or just provide a function? • Function be easily made totally transparent to FWLite…. • This is one of the most obvious use-cases for FWLite! • Particularly because there are so many jet collections • Iterative vs MidPoint Cone, R=0.5 vs 0.7, Kt algorithm As well as so many possible levels/type of correction • Correct to particles in cone or to original parton? • Apply or don’t apply underlying event correction (pileup!)? • b-jets vs light quark jets? • Only calorimeter based vs tracking+calorimeter based (eFlow) • And my experience is that these can change quite rapidly • Every byte in AOD is precious….why waste them? <end of rant>
Tried to use corrections Recipe seems to work • cvs co -r JetResponseV8 JetMETCorrections/MCJet • cvs co -r V00-00-07b RecoJets/JetAnalyzers • Add this incantation to your cmsRun cfg file • include "JetMETCorrections/MCJet/data/JetCorrections120mcone5.cff“ • Insert module (sequence?) JetCorrectionsMcone5 in your path • And out you get a new jet collection: corJetMcone5 • Provided you had the right collection to start with, of course
Next: try to use it with our BBox • I made it work, but it was clunky • This is how I would like the jet BBox to function: // get vectors of uncorrected jets and corrected jets with no Pt cut cms1::Cuts jetCut; jetCut.ptmin = 0.; std::vector<const reco::CaloJet*> jets = jets.getJets(“mcone05”, jetCut); std::vector<const reco::CaloJet*> c_jets = jets.getJets(“correctedmcone05”, jetCut); • Then I have access to both corrected and uncorrected jets with a minimum of fuss • The mumbo-jumbo is all hidden
This, however, is not how it works… • Current jet BBox allows me to access one-and-only-one jet collection at a time • It is possible to choose which one in a cfi file… • In order to access 2nd collection I had to go in and modify by hand • myModule/interface/myModuleFW.h • myModule/src/myModuleFW.cc • myModule/data/myModule.cfi • Jets/src/Jets.cc • Jets/interface/Jets.h …..and how to do it wasn’t immediately obvious …..and this was for FW only…… The Jets BBox is not black enough……
Lesson • The Jet BBox should allow me to easily access several jet collections in a single job • The names of these jet collections will probably be a moving target Must maintain flexibility • This may apply to other object types too Did not commit mods to access 2 jet collections because Dmytro tells me that things will change significantly • But I did convey to him what I think we need…..
One random event ---- Event 2 ------------ Uncorrected Jets: Pt= 10.3196 Eta= -2.816 Phi = -0.8323 Pt= 5.40623 Eta= -3.48884 Phi = 0.0532513 Pt= 4.20876 Eta= -0.0143419 Phi = 2.61109 Pt= 3.95908 Eta= 4.08236 Phi = -2.07385 Pt= 3.24885 Eta= 1.51637 Phi = -2.80799 Pt= 2.73552 Eta= 2.37856 Phi = -0.179766 Pt= 1.19576 Eta= -0.4785 Phi = -0.392699 Pt= 1.02987 Eta= 3.2265 Phi = -0.436332 Pt= 1.00978 Eta= 1.0875 Phi = -1.61443 Corrected Jets: Pt= 19.8062 Eta= -2.816 Phi = -0.8323 Pt= 11.5128 Eta= -3.48884 Phi = 0.0532513 Pt= 14.1202 Eta= -0.0143419 Phi = 2.61109 Pt= 9.93978 Eta= 4.08236 Phi = -2.07385 Pt= 12.0436 Eta= 1.51637 Phi = -2.80799 Pt= 8.20876 Eta= 2.37856 Phi = -0.179766 Pt= 4.56752 Eta= -0.4785 Phi = -0.392699 Pt= 2.64958 Eta= 3.2265 Phi = -0.436332 Pt= 3.71985 Eta= 1.0875 Phi = -1.61443 Note: corrected jets appear to no longer be Pt ordered…
One more (general) comment • Usage of BBoxes is now tied to TableMaker • Configured in TabeMaker cfg/cfi files • TableMaker is an example of a hi-level analysis class • There will be many more hi-level analysis classes for different studies as we proceed • All of these classes will need BBoxes • Right now a bit painful to instantiate new analysis • Need to either • Decouple BBoxes from TableMaker (hi-level anal. class) OR • Make it a easier to start a new analysis that uses BBoxes, eg, a hi-level-analysis base-class?