From e6a69516cf319fbe624c8f06f7a9cf41039e3637 Mon Sep 17 00:00:00 2001 From: Jakob Date: Tue, 10 Nov 2020 12:13:47 +0100 Subject: [PATCH 1/6] backport of PR #31962, includes changes to Scouting dataformats and producers --- DataFormats/Scouting/BuildFile.xml | 2 +- .../Scouting/interface/ScoutingElectron.h | 31 ++- DataFormats/Scouting/interface/ScoutingMuon.h | 241 +++++++++++++----- .../Scouting/interface/ScoutingPhoton.h | 52 +++- .../Scouting/interface/ScoutingTrack.h | 77 +++++- DataFormats/Scouting/src/classes_def.xml | 15 +- .../plugins/HLTScoutingEgammaProducer.cc | 101 +++++++- .../plugins/HLTScoutingEgammaProducer.h | 19 ++ .../JetMET/plugins/HLTScoutingPFProducer.cc | 8 +- .../Muon/plugins/HLTScoutingMuonProducer.cc | 169 ++++++++---- .../Muon/plugins/HLTScoutingMuonProducer.h | 7 +- .../Muon/plugins/HLTScoutingTrackProducer.cc | 80 ++++-- 12 files changed, 653 insertions(+), 149 deletions(-) diff --git a/DataFormats/Scouting/BuildFile.xml b/DataFormats/Scouting/BuildFile.xml index 06d710ca67c99..041bf1d5692dc 100644 --- a/DataFormats/Scouting/BuildFile.xml +++ b/DataFormats/Scouting/BuildFile.xml @@ -1,4 +1,4 @@ - + diff --git a/DataFormats/Scouting/interface/ScoutingElectron.h b/DataFormats/Scouting/interface/ScoutingElectron.h index fcab1acd1d1d3..5498cfad49222 100644 --- a/DataFormats/Scouting/interface/ScoutingElectron.h +++ b/DataFormats/Scouting/interface/ScoutingElectron.h @@ -23,7 +23,12 @@ class ScoutingElectron { int charge, float ecalIso, float hcalIso, - float trackIso) + float trackIso, + float r9, + float sMin, + float sMaj, + std::vector energyMatrix, + std::vector timingMatrix) : pt_(pt), eta_(eta), phi_(phi), @@ -39,7 +44,12 @@ class ScoutingElectron { charge_(charge), ecalIso_(ecalIso), hcalIso_(hcalIso), - trackIso_(trackIso) {} + trackIso_(trackIso), + r9_(r9), + sMin_(sMin), + sMaj_(sMaj), + energyMatrix_(std::move(energyMatrix)), + timingMatrix_(std::move(timingMatrix)) {} //default constructor ScoutingElectron() : pt_(0), @@ -57,7 +67,12 @@ class ScoutingElectron { charge_(0), ecalIso_(0), hcalIso_(0), - trackIso_(0) {} + trackIso_(0), + r9_(0), + sMin_(0), + sMaj_(0), + energyMatrix_(0), + timingMatrix_(0) {} //accessor functions float pt() const { return pt_; } @@ -76,6 +91,11 @@ class ScoutingElectron { float ecalIso() const { return ecalIso_; } float hcalIso() const { return hcalIso_; } float trackIso() const { return trackIso_; } + float r9() const { return r9_; } + float sMin() const { return sMin_; } + float sMaj() const { return sMaj_; } + std::vector energyMatrix() const { return energyMatrix_; } + std::vector timingMatrix() const { return timingMatrix_; } private: float pt_; @@ -94,6 +114,11 @@ class ScoutingElectron { float ecalIso_; float hcalIso_; float trackIso_; + float r9_; + float sMin_; + float sMaj_; + std::vector energyMatrix_; + std::vector timingMatrix_; }; typedef std::vector ScoutingElectronCollection; diff --git a/DataFormats/Scouting/interface/ScoutingMuon.h b/DataFormats/Scouting/interface/ScoutingMuon.h index fd6fed8fe45af..993f687cefde6 100644 --- a/DataFormats/Scouting/interface/ScoutingMuon.h +++ b/DataFormats/Scouting/interface/ScoutingMuon.h @@ -2,6 +2,7 @@ #define DataFormats_ScoutingMuon_h #include +#include "DataFormats/TrackReco/interface/Track.h" // Class for holding muon information, for use in data scouting // IMPORTANT: the content of this class should be changed only in backwards compatible ways! @@ -12,63 +13,113 @@ class ScoutingMuon { float eta, float phi, float m, + unsigned int type, + int charge, + float normalizedChi2, float ecalIso, float hcalIso, float trackIso, - float chi2, - float ndof, - int charge, - float dxy, - float dz, - int nValidMuonHits, + int nValidStandAloneMuonHits, + int nStandAloneMuonMatchedStations, + int nValidRecoMuonHits, + int nRecoMuonChambers, + int nRecoMuonChambersCSCorDT, + int nRecoMuonMatches, + int nRecoMuonMatchedStations, + unsigned int nRecoMuonExpectedMatchedStations, + unsigned int recoMuonStationMask, + int nRecoMuonMatchedRPCLayers, + unsigned int recoMuonRPClayerMask, int nValidPixelHits, - int nMatchedStations, - int nTrackerLayersWithMeasurement, - int type, int nValidStripHits, + int nPixelLayersWithMeasurement, + int nTrackerLayersWithMeasurement, + float trk_chi2, + float trk_ndof, + float trk_dxy, + float trk_dz, float trk_qoverp, float trk_lambda, float trk_pt, float trk_phi, float trk_eta, - float dxyError, - float dzError, + float trk_dxyError, + float trk_dzError, float trk_qoverpError, float trk_lambdaError, float trk_phiError, float trk_dsz, float trk_dszError, + float trk_qoverp_lambda_cov, + float trk_qoverp_phi_cov, + float trk_qoverp_dxy_cov, + float trk_qoverp_dsz_cov, + float trk_lambda_phi_cov, + float trk_lambda_dxy_cov, + float trk_lambda_dsz_cov, + float trk_phi_dxy_cov, + float trk_phi_dsz_cov, + float trk_dxy_dsz_cov, + float trk_vx, + float trk_vy, + float trk_vz, + reco::HitPattern trk_hitPattern, std::vector vtxIndx) : pt_(pt), eta_(eta), phi_(phi), m_(m), + type_(type), + charge_(charge), + normalizedChi2_(normalizedChi2), ecalIso_(ecalIso), hcalIso_(hcalIso), trackIso_(trackIso), - chi2_(chi2), - ndof_(ndof), - charge_(charge), - dxy_(dxy), - dz_(dz), - nValidMuonHits_(nValidMuonHits), + nValidStandAloneMuonHits_(nValidStandAloneMuonHits), + nStandAloneMuonMatchedStations_(nStandAloneMuonMatchedStations), + nValidRecoMuonHits_(nValidRecoMuonHits), + nRecoMuonChambers_(nRecoMuonChambers), + nRecoMuonChambersCSCorDT_(nRecoMuonChambersCSCorDT), + nRecoMuonMatches_(nRecoMuonMatches), + nRecoMuonMatchedStations_(nRecoMuonMatchedStations), + nRecoMuonExpectedMatchedStations_(nRecoMuonExpectedMatchedStations), + recoMuonStationMask_(recoMuonStationMask), + nRecoMuonMatchedRPCLayers_(nRecoMuonMatchedRPCLayers), + recoMuonRPClayerMask_(recoMuonRPClayerMask), nValidPixelHits_(nValidPixelHits), - nMatchedStations_(nMatchedStations), - nTrackerLayersWithMeasurement_(nTrackerLayersWithMeasurement), - type_(type), nValidStripHits_(nValidStripHits), + nPixelLayersWithMeasurement_(nPixelLayersWithMeasurement), + nTrackerLayersWithMeasurement_(nTrackerLayersWithMeasurement), + trk_chi2_(trk_chi2), + trk_ndof_(trk_ndof), + trk_dxy_(trk_dxy), + trk_dz_(trk_dz), trk_qoverp_(trk_qoverp), trk_lambda_(trk_lambda), trk_pt_(trk_pt), trk_phi_(trk_phi), trk_eta_(trk_eta), - dxyError_(dxyError), - dzError_(dzError), + trk_dxyError_(trk_dxyError), + trk_dzError_(trk_dzError), trk_qoverpError_(trk_qoverpError), trk_lambdaError_(trk_lambdaError), trk_phiError_(trk_phiError), trk_dsz_(trk_dsz), trk_dszError_(trk_dszError), + trk_qoverp_lambda_cov_(trk_qoverp_lambda_cov), + trk_qoverp_phi_cov_(trk_qoverp_phi_cov), + trk_qoverp_dxy_cov_(trk_qoverp_dxy_cov), + trk_qoverp_dsz_cov_(trk_qoverp_dsz_cov), + trk_lambda_phi_cov_(trk_lambda_phi_cov), + trk_lambda_dxy_cov_(trk_lambda_dxy_cov), + trk_lambda_dsz_cov_(trk_lambda_dsz_cov), + trk_phi_dxy_cov_(trk_phi_dxy_cov), + trk_phi_dsz_cov_(trk_phi_dsz_cov), + trk_dxy_dsz_cov_(trk_dxy_dsz_cov), + trk_vx_(trk_vx), + trk_vy_(trk_vy), + trk_vz_(trk_vz), + trk_hitPattern_(trk_hitPattern), vtxIndx_(std::move(vtxIndx)) {} //default constructor ScoutingMuon() @@ -76,32 +127,57 @@ class ScoutingMuon { eta_(0), phi_(0), m_(0), + type_(0), + charge_(0), + normalizedChi2_(0), ecalIso_(0), hcalIso_(0), trackIso_(0), - chi2_(0), - ndof_(0), - charge_(0), - dxy_(0), - dz_(0), - nValidMuonHits_(0), + nValidStandAloneMuonHits_(0), + nStandAloneMuonMatchedStations_(0), + nValidRecoMuonHits_(0), + nRecoMuonChambers_(0), + nRecoMuonChambersCSCorDT_(0), + nRecoMuonMatches_(0), + nRecoMuonMatchedStations_(0), + nRecoMuonExpectedMatchedStations_(0), + recoMuonStationMask_(0), + nRecoMuonMatchedRPCLayers_(0), + recoMuonRPClayerMask_(0), nValidPixelHits_(0), - nMatchedStations_(0), - nTrackerLayersWithMeasurement_(0), - type_(0), nValidStripHits_(0), + nPixelLayersWithMeasurement_(0), + nTrackerLayersWithMeasurement_(0), + trk_chi2_(0), + trk_ndof_(0), + trk_dxy_(0), + trk_dz_(0), trk_qoverp_(0), trk_lambda_(0), trk_pt_(0), trk_phi_(0), trk_eta_(0), - dxyError_(0), - dzError_(0), + trk_dxyError_(0), + trk_dzError_(0), trk_qoverpError_(0), trk_lambdaError_(0), trk_phiError_(0), trk_dsz_(0), trk_dszError_(0), + trk_qoverp_lambda_cov_(0), + trk_qoverp_phi_cov_(0), + trk_qoverp_dxy_cov_(0), + trk_qoverp_dsz_cov_(0), + trk_lambda_phi_cov_(0), + trk_lambda_dxy_cov_(0), + trk_lambda_dsz_cov_(0), + trk_phi_dxy_cov_(0), + trk_phi_dsz_cov_(0), + trk_dxy_dsz_cov_(0), + trk_vx_(0), + trk_vy_(0), + trk_vz_(0), + trk_hitPattern_(reco::HitPattern()), vtxIndx_(0) {} //accessor functions @@ -109,34 +185,60 @@ class ScoutingMuon { float eta() const { return eta_; } float phi() const { return phi_; } float m() const { return m_; } + unsigned int type() const { return type_; } + bool isGlobalMuon() const { return type_ & 1 << 1; } + bool isTrackerMuon() const { return type_ & 1 << 2; } + int charge() const { return charge_; } + float normalizedChi2() const { return normalizedChi2_; } float ecalIso() const { return ecalIso_; } float hcalIso() const { return hcalIso_; } float trackIso() const { return trackIso_; } - float chi2() const { return chi2_; } - float ndof() const { return ndof_; } - int charge() const { return charge_; } - float dxy() const { return dxy_; } - float dz() const { return dz_; } - int nValidMuonHits() const { return nValidMuonHits_; } + int nValidStandAloneMuonHits() const { return nValidStandAloneMuonHits_; } + int nStandAloneMuonMatchedStations() const { return nStandAloneMuonMatchedStations_; } + int nValidRecoMuonHits() const { return nValidRecoMuonHits_; } + int nRecoMuonChambers() const { return nRecoMuonChambers_; } + int nRecoMuonChambersCSCorDT() const { return nRecoMuonChambersCSCorDT_; } + int nRecoMuonMatches() const { return nRecoMuonMatches_; } + int nRecoMuonMatchedStations() const { return nRecoMuonMatchedStations_; } + unsigned int nRecoMuonExpectedMatchedStations() const { return nRecoMuonExpectedMatchedStations_; } + unsigned int recoMuonStationMask() const { return recoMuonStationMask_; } + int nRecoMuonMatchedRPCLayers() const { return nRecoMuonMatchedRPCLayers_; } + unsigned int recoMuonRPClayerMask() const { return recoMuonRPClayerMask_; } int nValidPixelHits() const { return nValidPixelHits_; } - int nMatchedStations() const { return nMatchedStations_; } - int nTrackerLayersWithMeasurement() const { return nTrackerLayersWithMeasurement_; } - int type() const { return type_; } - bool isGlobalMuon() const { return type_ & 1 << 1; } - bool isTrackerMuon() const { return type_ & 1 << 2; } int nValidStripHits() const { return nValidStripHits_; } + int nPixelLayersWithMeasurement() const { return nPixelLayersWithMeasurement_; } + int nTrackerLayersWithMeasurement() const { return nTrackerLayersWithMeasurement_; } + float trk_chi2() const { return trk_chi2_; } + float trk_ndof() const { return trk_ndof_; } + float trk_dxy() const { return trk_dxy_; } + float trk_dz() const { return trk_dz_; } float trk_qoverp() const { return trk_qoverp_; } float trk_lambda() const { return trk_lambda_; } float trk_pt() const { return trk_pt_; } float trk_phi() const { return trk_phi_; } float trk_eta() const { return trk_eta_; } - float dxyError() const { return dxyError_; } - float dzError() const { return dzError_; } + float trk_dxyError() const { return trk_dxyError_; } + float trk_dzError() const { return trk_dzError_; } float trk_qoverpError() const { return trk_qoverpError_; } float trk_lambdaError() const { return trk_lambdaError_; } float trk_phiError() const { return trk_phiError_; } float trk_dsz() const { return trk_dsz_; } float trk_dszError() const { return trk_dszError_; } + //add off-diagonal covariance matrix parameter, the above "Error" variables correspond to the diagonal, enum for Cov matrix (qoverp, lambda, phi, dxy, dsz), see https://github.com/cms-sw/cmssw/blob/CMSSW_11_2_X/DataFormats/TrackReco/src/TrackBase.cc for details + float trk_qoverp_lambda_cov() const { return trk_qoverp_lambda_cov_; } + float trk_qoverp_phi_cov() const { return trk_qoverp_phi_cov_; } + float trk_qoverp_dxy_cov() const { return trk_qoverp_dxy_cov_; } + float trk_qoverp_dsz_cov() const { return trk_qoverp_dsz_cov_; } + float trk_lambda_phi_cov() const { return trk_lambda_phi_cov_; } + float trk_lambda_dxy_cov() const { return trk_lambda_dxy_cov_; } + float trk_lambda_dsz_cov() const { return trk_lambda_dsz_cov_; } + float trk_phi_dxy_cov() const { return trk_phi_dxy_cov_; } + float trk_phi_dsz_cov() const { return trk_phi_dsz_cov_; } + float trk_dxy_dsz_cov() const { return trk_dxy_dsz_cov_; } + float trk_vx() const { return trk_vx_; } + float trk_vy() const { return trk_vy_; } + float trk_vz() const { return trk_vz_; } + reco::HitPattern trk_hitPattern() const { return trk_hitPattern_; } std::vector vtxIndx() const { return vtxIndx_; } private: @@ -144,32 +246,57 @@ class ScoutingMuon { float eta_; float phi_; float m_; + unsigned int type_; + int charge_; + float normalizedChi2_; float ecalIso_; float hcalIso_; float trackIso_; - float chi2_; - float ndof_; - int charge_; - float dxy_; - float dz_; - int nValidMuonHits_; + int nValidStandAloneMuonHits_; + int nStandAloneMuonMatchedStations_; + int nValidRecoMuonHits_; + int nRecoMuonChambers_; + int nRecoMuonChambersCSCorDT_; + int nRecoMuonMatches_; + int nRecoMuonMatchedStations_; + unsigned int nRecoMuonExpectedMatchedStations_; + unsigned int recoMuonStationMask_; + int nRecoMuonMatchedRPCLayers_; + unsigned int recoMuonRPClayerMask_; int nValidPixelHits_; - int nMatchedStations_; - int nTrackerLayersWithMeasurement_; - int type_; int nValidStripHits_; + int nPixelLayersWithMeasurement_; + int nTrackerLayersWithMeasurement_; + float trk_chi2_; + float trk_ndof_; + float trk_dxy_; + float trk_dz_; float trk_qoverp_; float trk_lambda_; float trk_pt_; float trk_phi_; float trk_eta_; - float dxyError_; - float dzError_; + float trk_dxyError_; + float trk_dzError_; float trk_qoverpError_; float trk_lambdaError_; float trk_phiError_; float trk_dsz_; float trk_dszError_; + float trk_qoverp_lambda_cov_; + float trk_qoverp_phi_cov_; + float trk_qoverp_dxy_cov_; + float trk_qoverp_dsz_cov_; + float trk_lambda_phi_cov_; + float trk_lambda_dxy_cov_; + float trk_lambda_dsz_cov_; + float trk_phi_dxy_cov_; + float trk_phi_dsz_cov_; + float trk_dxy_dsz_cov_; + float trk_vx_; + float trk_vy_; + float trk_vz_; + reco::HitPattern trk_hitPattern_; std::vector vtxIndx_; }; diff --git a/DataFormats/Scouting/interface/ScoutingPhoton.h b/DataFormats/Scouting/interface/ScoutingPhoton.h index 31afd7302bd8f..220122efe653c 100644 --- a/DataFormats/Scouting/interface/ScoutingPhoton.h +++ b/DataFormats/Scouting/interface/ScoutingPhoton.h @@ -8,8 +8,20 @@ class ScoutingPhoton { public: //constructor with values for all data fields - ScoutingPhoton( - float pt, float eta, float phi, float m, float sigmaIetaIeta, float hOverE, float ecalIso, float hcalIso) + ScoutingPhoton(float pt, + float eta, + float phi, + float m, + float sigmaIetaIeta, + float hOverE, + float ecalIso, + float hcalIso, + float trkIso, + float r9, + float sMin, + float sMaj, + std::vector energyMatrix, + std::vector timingMatrix) : pt_(pt), eta_(eta), phi_(phi), @@ -17,9 +29,29 @@ class ScoutingPhoton { sigmaIetaIeta_(sigmaIetaIeta), hOverE_(hOverE), ecalIso_(ecalIso), - hcalIso_(hcalIso) {} + hcalIso_(hcalIso), + trkIso_(trkIso), + r9_(r9), + sMin_(sMin), + sMaj_(sMaj), + energyMatrix_(std::move(energyMatrix)), + timingMatrix_(std::move(timingMatrix)) {} //default constructor - ScoutingPhoton() : pt_(0), eta_(0), phi_(0), m_(0), sigmaIetaIeta_(0), hOverE_(0), ecalIso_(0), hcalIso_(0) {} + ScoutingPhoton() + : pt_(0), + eta_(0), + phi_(0), + m_(0), + sigmaIetaIeta_(0), + hOverE_(0), + ecalIso_(0), + hcalIso_(0), + trkIso_(0), + r9_(0), + sMin_(0), + sMaj_(0), + energyMatrix_(0), + timingMatrix_(0) {} //accessor functions float pt() const { return pt_; } @@ -30,6 +62,12 @@ class ScoutingPhoton { float hOverE() const { return hOverE_; } float ecalIso() const { return ecalIso_; } float hcalIso() const { return hcalIso_; } + float trkIso() const { return trkIso_; } + float r9() const { return r9_; } + float sMin() const { return sMin_; } + float sMaj() const { return sMaj_; } + std::vector energyMatrix() const { return energyMatrix_; } + std::vector timingMatrix() const { return timingMatrix_; } private: float pt_; @@ -40,6 +78,12 @@ class ScoutingPhoton { float hOverE_; float ecalIso_; float hcalIso_; + float trkIso_; + float r9_; + float sMin_; + float sMaj_; + std::vector energyMatrix_; + std::vector timingMatrix_; }; typedef std::vector ScoutingPhotonCollection; diff --git a/DataFormats/Scouting/interface/ScoutingTrack.h b/DataFormats/Scouting/interface/ScoutingTrack.h index 1d11cb4931392..87e6830b4272d 100644 --- a/DataFormats/Scouting/interface/ScoutingTrack.h +++ b/DataFormats/Scouting/interface/ScoutingTrack.h @@ -26,7 +26,21 @@ class ScoutingTrack { float tk_lambda_Error, float tk_phi_Error, float tk_dsz, - float tk_dsz_Error) + float tk_dsz_Error, + float tk_qoverp_lambda_cov, + float tk_qoverp_phi_cov, + float tk_qoverp_dxy_cov, + float tk_qoverp_dsz_cov, + float tk_lambda_phi_cov, + float tk_lambda_dxy_cov, + float tk_lambda_dsz_cov, + float tk_phi_dxy_cov, + float tk_phi_dsz_cov, + float tk_dxy_dsz_cov, + int tk_vtxInd, + float tk_vx, + float tk_vy, + float tk_vz) : tk_pt_(tk_pt), tk_eta_(tk_eta), tk_phi_(tk_phi), @@ -46,7 +60,21 @@ class ScoutingTrack { tk_lambda_Error_(tk_lambda_Error), tk_phi_Error_(tk_phi_Error), tk_dsz_(tk_dsz), - tk_dsz_Error_(tk_dsz_Error) {} + tk_dsz_Error_(tk_dsz_Error), + tk_qoverp_lambda_cov_(tk_qoverp_lambda_cov), + tk_qoverp_phi_cov_(tk_qoverp_phi_cov), + tk_qoverp_dxy_cov_(tk_qoverp_dxy_cov), + tk_qoverp_dsz_cov_(tk_qoverp_dsz_cov), + tk_lambda_phi_cov_(tk_lambda_phi_cov), + tk_lambda_dxy_cov_(tk_lambda_dxy_cov), + tk_lambda_dsz_cov_(tk_lambda_dsz_cov), + tk_phi_dxy_cov_(tk_phi_dxy_cov), + tk_phi_dsz_cov_(tk_phi_dsz_cov), + tk_dxy_dsz_cov_(tk_dxy_dsz_cov), + tk_vtxInd_(tk_vtxInd), + tk_vx_(tk_vx), + tk_vy_(tk_vy), + tk_vz_(tk_vz) {} //default constructor ScoutingTrack() : tk_pt_(0), @@ -68,7 +96,21 @@ class ScoutingTrack { tk_lambda_Error_(0), tk_phi_Error_(0), tk_dsz_(0), - tk_dsz_Error_(0) {} + tk_dsz_Error_(0), + tk_qoverp_lambda_cov_(0), + tk_qoverp_phi_cov_(0), + tk_qoverp_dxy_cov_(0), + tk_qoverp_dsz_cov_(0), + tk_lambda_phi_cov_(0), + tk_lambda_dxy_cov_(0), + tk_lambda_dsz_cov_(0), + tk_phi_dxy_cov_(0), + tk_phi_dsz_cov_(0), + tk_dxy_dsz_cov_(0), + tk_vtxInd_(0), + tk_vx_(0), + tk_vy_(0), + tk_vz_(0) {} //accessor functions float tk_pt() const { return tk_pt_; } @@ -91,6 +133,21 @@ class ScoutingTrack { float tk_phi_Error() const { return tk_phi_Error_; } float tk_dsz() const { return tk_dsz_; } float tk_dsz_Error() const { return tk_dsz_Error_; } + //add off-diagonal covariance matrix parameter, the above "Error" variables correspond to the diagonal, enum for Cov matrix (qoverp, lambda, phi, dxy, dsz), see https://github.com/cms-sw/cmssw/blob/CMSSW_11_2_X/DataFormats/TrackReco/src/TrackBase.cc for details + float tk_qoverp_lambda_cov() const { return tk_qoverp_lambda_cov_; } + float tk_qoverp_phi_cov() const { return tk_qoverp_phi_cov_; } + float tk_qoverp_dxy_cov() const { return tk_qoverp_dxy_cov_; } + float tk_qoverp_dsz_cov() const { return tk_qoverp_dsz_cov_; } + float tk_lambda_phi_cov() const { return tk_lambda_phi_cov_; } + float tk_lambda_dxy_cov() const { return tk_lambda_dxy_cov_; } + float tk_lambda_dsz_cov() const { return tk_lambda_dsz_cov_; } + float tk_phi_dxy_cov() const { return tk_phi_dxy_cov_; } + float tk_phi_dsz_cov() const { return tk_phi_dsz_cov_; } + float tk_dxy_dsz_cov() const { return tk_dxy_dsz_cov_; } + int tk_vtxInd() const { return tk_vtxInd_; } + float tk_vx() const { return tk_vx_; } + float tk_vy() const { return tk_vy_; } + float tk_vz() const { return tk_vz_; } private: float tk_pt_; @@ -113,6 +170,20 @@ class ScoutingTrack { float tk_phi_Error_; float tk_dsz_; float tk_dsz_Error_; + float tk_qoverp_lambda_cov_; + float tk_qoverp_phi_cov_; + float tk_qoverp_dxy_cov_; + float tk_qoverp_dsz_cov_; + float tk_lambda_phi_cov_; + float tk_lambda_dxy_cov_; + float tk_lambda_dsz_cov_; + float tk_phi_dxy_cov_; + float tk_phi_dsz_cov_; + float tk_dxy_dsz_cov_; + int tk_vtxInd_; + float tk_vx_; + float tk_vy_; + float tk_vz_; }; typedef std::vector ScoutingTrackCollection; diff --git a/DataFormats/Scouting/src/classes_def.xml b/DataFormats/Scouting/src/classes_def.xml index 1e94bbf80b77b..00b7ff12f66a0 100755 --- a/DataFormats/Scouting/src/classes_def.xml +++ b/DataFormats/Scouting/src/classes_def.xml @@ -14,18 +14,25 @@ - + + + - + + + - + + + - + + diff --git a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc index 1b8106b087249..dd68f5b2833fb 100644 --- a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc +++ b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc @@ -16,6 +16,29 @@ Description: Producer for ScoutingElectron and ScoutingPhoton #include "HLTScoutingEgammaProducer.h" +// function to find rechhit associated to detid and return energy +float recHitE(const DetId id, const EcalRecHitCollection& recHits) { + if (id == DetId(0)) { + return 0; + } else { + EcalRecHitCollection::const_iterator it = recHits.find(id); + if (it != recHits.end()) + return (*it).energy(); + } + return 0; +} + +float recHitT(const DetId id, const EcalRecHitCollection& recHits) { + if (id == DetId(0)) { + return 0; + } else { + EcalRecHitCollection::const_iterator it = recHits.find(id); + if (it != recHits.end()) + return (*it).time(); + } + return 0; +} + // // constructors and destructor // @@ -25,6 +48,7 @@ HLTScoutingEgammaProducer::HLTScoutingEgammaProducer(const edm::ParameterSet& iC EgammaGsfTrackCollection_( consumes(iConfig.getParameter("EgammaGsfTracks"))), SigmaIEtaIEtaMap_(consumes(iConfig.getParameter("SigmaIEtaIEtaMap"))), + R9Map_(consumes(iConfig.getParameter("r9Map"))), HoverEMap_(consumes(iConfig.getParameter("HoverEMap"))), DetaMap_(consumes(iConfig.getParameter("DetaMap"))), DphiMap_(consumes(iConfig.getParameter("DphiMap"))), @@ -35,7 +59,12 @@ HLTScoutingEgammaProducer::HLTScoutingEgammaProducer(const edm::ParameterSet& iC HcalPFClusterIsoMap_(consumes(iConfig.getParameter("HcalPFClusterIsoMap"))), egammaPtCut(iConfig.getParameter("egammaPtCut")), egammaEtaCut(iConfig.getParameter("egammaEtaCut")), - egammaHoverECut(iConfig.getParameter("egammaHoverECut")) { + egammaHoverECut(iConfig.getParameter("egammaHoverECut")), + mantissaPrecision(iConfig.getParameter("mantissaPrecision")), + saveRecHitTiming(iConfig.getParameter("saveRecHitTiming")), + rechitMatrixSize(iConfig.getParameter("rechitMatrixSize")), //(2n+1)^2 + ecalRechitEB_(consumes(iConfig.getParameter("ecalRechitEB"))), + ecalRechitEE_(consumes(iConfig.getParameter("ecalRechitEE"))) { //register products produces(); produces(); @@ -74,6 +103,13 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e return; } + Handle R9Map; + if (!iEvent.getByToken(R9Map_, R9Map)) { + iEvent.put(std::move(outElectrons)); + iEvent.put(std::move(outPhotons)); + return; + } + // Get HoverEMap Handle HoverEMap; if (!iEvent.getByToken(HoverEMap_, HoverEMap)) { @@ -138,6 +174,11 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e return; } + edm::Handle rechitsEB; + edm::Handle rechitsEE; + iEvent.getByToken(ecalRechitEB_, rechitsEB); + iEvent.getByToken(ecalRechitEE_, rechitsEE); + // Produce electrons and photons int index = 0; for (auto& candidate : *EgammaCandidateCollection) { @@ -153,9 +194,44 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e if (fabs(candidate.eta()) > egammaEtaCut) continue; + edm::ESHandle pTopology; + setup.get().get(pTopology); + const CaloTopology* topology = pTopology.product(); + reco::SuperClusterRef scRef = candidate.superCluster(); if (scRef.isNull() && !scRef.isAvailable()) continue; + + reco::CaloClusterPtr SCseed = candidate.superCluster()->seed(); + const EcalRecHitCollection* rechits = (std::abs(scRef->eta()) < 1.479) ? rechitsEB.product() : rechitsEE.product(); + Cluster2ndMoments moments = EcalClusterTools::cluster2ndMoments(*SCseed, *rechits); + float sMin = moments.sMin; + float sMaj = moments.sMaj; + + std::vector mDetIds = EcalClusterTools::matrixDetId((topology), (*SCseed).seed(), rechitMatrixSize); + std::vector mEnergies; + std::vector mTimes; + + int detSize = mDetIds.size(); + + if (!saveRecHitTiming) + mTimes.push_back(0.); + + for (int i = 0; i < pow(2 * rechitMatrixSize + 1, 2); i++) { + if (i >= detSize) { + mEnergies.push_back(MiniFloatConverter::reduceMantissaToNbitsRounding(0., mantissaPrecision)); + + if (saveRecHitTiming) + mTimes.push_back(MiniFloatConverter::reduceMantissaToNbitsRounding(0., mantissaPrecision)); + } else { + mEnergies.push_back( + MiniFloatConverter::reduceMantissaToNbitsRounding(recHitE(mDetIds.at(i), *rechits), mantissaPrecision)); + if (saveRecHitTiming) + mTimes.push_back( + MiniFloatConverter::reduceMantissaToNbitsRounding(recHitT(mDetIds.at(i), *rechits), mantissaPrecision)); + } + } + float d0 = 0.0; float dz = 0.0; int charge = -999; @@ -178,8 +254,14 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e (*SigmaIEtaIEtaMap)[candidateRef], (*HoverEMap)[candidateRef], (*EcalPFClusterIsoMap)[candidateRef], - (*HcalPFClusterIsoMap)[candidateRef]); - } else { // Candidate is a scouting electron + (*HcalPFClusterIsoMap)[candidateRef], + 0., + (*R9Map)[candidateRef], + sMin, + sMaj, + mEnergies, + mTimes); //read for(ieta){for(iphi){}} + } else { // Candidate is a scouting electron outElectrons->emplace_back(candidate.pt(), candidate.eta(), candidate.phi(), @@ -195,7 +277,12 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e charge, (*EcalPFClusterIsoMap)[candidateRef], (*HcalPFClusterIsoMap)[candidateRef], - (*EleGsfTrackIsoMap)[candidateRef]); + (*EleGsfTrackIsoMap)[candidateRef], + (*R9Map)[candidateRef], + sMin, + sMaj, + mEnergies, + mTimes); //read for(ieta){for(iphi){}} } } @@ -210,6 +297,7 @@ void HLTScoutingEgammaProducer::fillDescriptions(edm::ConfigurationDescriptions& desc.add("EgammaCandidates", edm::InputTag("hltEgammaCandidates")); desc.add("EgammaGsfTracks", edm::InputTag("hltEgammaGsfTracks")); desc.add("SigmaIEtaIEtaMap", edm::InputTag("hltEgammaClusterShape:sigmaIEtaIEta5x5")); + desc.add("r9Map", edm::InputTag("hltEgammaR9ID:r95x5")); desc.add("HoverEMap", edm::InputTag("hltEgammaHoverE")); desc.add("DetaMap", edm::InputTag("hltEgammaGsfTrackVars:Deta")); desc.add("DphiMap", edm::InputTag("hltEgammaGsfTrackVars:Dphi")); @@ -221,6 +309,11 @@ void HLTScoutingEgammaProducer::fillDescriptions(edm::ConfigurationDescriptions& desc.add("egammaPtCut", 4.0); desc.add("egammaEtaCut", 2.5); desc.add("egammaHoverECut", 1.0); + desc.add("saveRecHitTiming", false); + desc.add("mantissaPrecision", 10); // default float16, switch to 23 for float32 precision + desc.add("rechitMatrixSize", 0); + desc.add("ecalRechitEB", edm::InputTag("hltEcalRecHit:EcalRecHitsEB")); + desc.add("ecalRechitEE", edm::InputTag("hltEcalRecHit:EcalRecHitsEE")); descriptions.add("hltScoutingEgammaProducer", desc); } diff --git a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.h b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.h index 5d81146da48ea..5ee1fc97ba9db 100644 --- a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.h +++ b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.h @@ -41,6 +41,16 @@ Description: Producer for ScoutingElectron and ScoutingPhoton #include "DataFormats/Scouting/interface/ScoutingElectron.h" #include "DataFormats/Scouting/interface/ScoutingPhoton.h" +#include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h" +#include "RecoEcal/EgammaCoreTools/interface/EcalClusterLazyTools.h" +#include "RecoEcal/EgammaCoreTools/interface/EcalClusterTools.h" +#include "DataFormats/DetId/interface/DetId.h" +#include "Geometry/CaloTopology/interface/CaloTopology.h" +#include "Geometry/CaloEventSetup/interface/CaloTopologyRecord.h" +#include "RecoEcal/EgammaCoreTools/interface/EcalTools.h" +#include "DataFormats/EcalDetId/interface/EBDetId.h" +#include "DataFormats/Math/interface/libminifloat.h" + class HLTScoutingEgammaProducer : public edm::global::EDProducer<> { typedef edm::AssociationMap, float, unsigned int> > RecoEcalCandMap; @@ -57,6 +67,7 @@ class HLTScoutingEgammaProducer : public edm::global::EDProducer<> { const edm::EDGetTokenT EgammaCandidateCollection_; const edm::EDGetTokenT EgammaGsfTrackCollection_; const edm::EDGetTokenT SigmaIEtaIEtaMap_; + const edm::EDGetTokenT R9Map_; const edm::EDGetTokenT HoverEMap_; const edm::EDGetTokenT DetaMap_; const edm::EDGetTokenT DphiMap_; @@ -66,9 +77,17 @@ class HLTScoutingEgammaProducer : public edm::global::EDProducer<> { const edm::EDGetTokenT EleGsfTrackIsoMap_; const edm::EDGetTokenT HcalPFClusterIsoMap_; + //const EcalClusterLazyTools::ESGetTokens ecalClusterToolsESGetTokens_; + const double egammaPtCut; const double egammaEtaCut; const double egammaHoverECut; + const int mantissaPrecision; + const bool saveRecHitTiming; + const int rechitMatrixSize; + + const edm::EDGetTokenT ecalRechitEB_; + const edm::EDGetTokenT ecalRechitEE_; }; #endif diff --git a/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc b/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc index 33093fe7c23ba..bbe381a10af34 100644 --- a/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc +++ b/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc @@ -124,7 +124,7 @@ void HLTScoutingPFProducer::produce(edm::StreamID sid, edm::Event &iEvent, edm:: Handle rho; std::unique_ptr outRho(new double(-999)); if (iEvent.getByToken(rho_, rho)) { - outRho.reset(new double(*rho)); + outRho = std::make_unique(*rho); } //get MET @@ -132,8 +132,8 @@ void HLTScoutingPFProducer::produce(edm::StreamID sid, edm::Event &iEvent, edm:: std::unique_ptr outMetPt(new double(-999)); std::unique_ptr outMetPhi(new double(-999)); if (doMet && iEvent.getByToken(metCollection_, metCollection)) { - outMetPt.reset(new double(metCollection->front().pt())); - outMetPhi.reset(new double(metCollection->front().phi())); + outMetPt = std::make_unique(metCollection->front().pt()); + outMetPhi = std::make_unique(metCollection->front().phi()); } //get PF candidates @@ -263,7 +263,7 @@ void HLTScoutingPFProducer::fillDescriptions(edm::ConfigurationDescriptions &des desc.add("pfJetEtaCut", 3.0); desc.add("pfCandidatePtCut", 0.6); desc.add("pfCandidateEtaCut", 5.0); - desc.add("mantissaPrecision", 23); + desc.add("mantissaPrecision", 10); //default float16, change to 23 for float32 desc.add("doJetTags", true); desc.add("doCandidates", true); desc.add("doMet", true); diff --git a/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc b/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc index cdd946fba6994..7c229f0c13540 100644 --- a/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc +++ b/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc @@ -24,16 +24,17 @@ Description: Producer for ScoutingMuon HLTScoutingMuonProducer::HLTScoutingMuonProducer(const edm::ParameterSet& iConfig) : ChargedCandidateCollection_( consumes(iConfig.getParameter("ChargedCandidates"))), + displacedvertexCollection_( + consumes(iConfig.getParameter("displacedvertexCollection"))), + MuonCollection_(consumes(iConfig.getParameter("InputMuons"))), + linkToken_(consumes(iConfig.getParameter("InputLinks"))), TrackCollection_(consumes(iConfig.getParameter("Tracks"))), EcalPFClusterIsoMap_(consumes(iConfig.getParameter("EcalPFClusterIsoMap"))), HcalPFClusterIsoMap_(consumes(iConfig.getParameter("HcalPFClusterIsoMap"))), TrackIsoMap_(consumes>(iConfig.getParameter("TrackIsoMap"))), - displacedvertexCollection_( - consumes(iConfig.getParameter("displacedvertexCollection"))), muonPtCut(iConfig.getParameter("muonPtCut")), muonEtaCut(iConfig.getParameter("muonEtaCut")), - minVtxProbCut(iConfig.getParameter("minVtxProbCut")), - linkToken_(consumes(iConfig.getParameter("InputLinks"))) { + minVtxProbCut(iConfig.getParameter("minVtxProbCut")) { //register products produces(); produces("displacedVtx"); @@ -52,28 +53,7 @@ void HLTScoutingMuonProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm Handle ChargedCandidateCollection; if (!iEvent.getByToken(ChargedCandidateCollection_, ChargedCandidateCollection)) { iEvent.put(std::move(outMuons)); - return; - } - - // Get Track - Handle TrackCollection; - if (!iEvent.getByToken(TrackCollection_, TrackCollection)) { - iEvent.put(std::move(outMuons)); - return; - } - - // Get EcalPFClusterIsoMap - Handle EcalPFClusterIsoMap; - iEvent.getByToken(EcalPFClusterIsoMap_, EcalPFClusterIsoMap); - - // Get HcalPFClusterIsoMap - Handle HcalPFClusterIsoMap; - iEvent.getByToken(HcalPFClusterIsoMap_, HcalPFClusterIsoMap); - - // Get TrackIsoMap - Handle> TrackIsoMap; - if (!iEvent.getByToken(TrackIsoMap_, TrackIsoMap)) { - iEvent.put(std::move(outMuons)); + iEvent.put(std::move(dispVertices), "displacedVtx"); return; } @@ -128,15 +108,39 @@ void HLTScoutingMuonProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm } } + // Get Muon collection + Handle MuonCollection; + if (!iEvent.getByToken(MuonCollection_, MuonCollection)) { + iEvent.put(std::move(outMuons)); + iEvent.put(std::move(dispVertices), "displacedVtx"); + return; + } + + // Get Links collection + edm::Handle links; + if (!iEvent.getByToken(linkToken_, links)) { + iEvent.put(std::move(outMuons)); + iEvent.put(std::move(dispVertices), "displacedVtx"); + return; + } + + // Get EcalPFClusterIsoMap + Handle EcalPFClusterIsoMap; + iEvent.getByToken(EcalPFClusterIsoMap_, EcalPFClusterIsoMap); + + // Get HcalPFClusterIsoMap + Handle HcalPFClusterIsoMap; + iEvent.getByToken(HcalPFClusterIsoMap_, HcalPFClusterIsoMap); + + // Get TrackIsoMap + Handle> TrackIsoMap; + iEvent.getByToken(TrackIsoMap_, TrackIsoMap); + // Produce muons std::vector vtxInd; float minDR2 = 1e-06; int index = 0; - // Read Links collection: - edm::Handle links; - iEvent.getByToken(linkToken_, links); - for (auto& muon : *ChargedCandidateCollection) { reco::RecoChargedCandidateRef muonRef = getRef(ChargedCandidateCollection, index); ++index; @@ -147,8 +151,8 @@ void HLTScoutingMuonProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm if (track.isNull() || !track.isAvailable()) continue; - int validmuhit = 0; - int matchedsta = 0; + int validStandAloneMuonHits = 0; + int matchedStandAloneMuonStations = 0; for (auto const& link : *links) { const reco::Track& trackerTrack = *link.trackerTrack(); float dR2 = deltaR2(track->eta(), track->phi(), trackerTrack.eta(), trackerTrack.phi()); @@ -157,9 +161,44 @@ void HLTScoutingMuonProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm dPt = dPt / track->pt(); if (dR2 < 0.02 * 0.02 and dPt < 0.001) { - const reco::TrackRef staTrack = link.standAloneTrack(); - validmuhit = staTrack->hitPattern().numberOfValidMuonHits(); - matchedsta = staTrack->hitPattern().muonStationsWithValidHits(); + if (link.standAloneTrack().isNonnull()) { + validStandAloneMuonHits = link.standAloneTrack()->hitPattern().numberOfValidMuonHits(); + matchedStandAloneMuonStations = link.standAloneTrack()->hitPattern().muonStationsWithValidHits(); + } + } + } + + unsigned int recoMuonType = 2; // Global muon + float normalizedChi2 = 999.0; + int nRecoMuonValidMuonHits = 0; + int nRecoMuonChambers = 0; + int nRecoMuonChambersCSCorDT = 0; + int nRecoMuonMatches = 0; + int nRecoMuonMatchedStations = 0; + unsigned int nRecoMuonExpectedMatchedStations = 0; + unsigned int recoMuonStationMask = 0; + int nRecoMuonMatchedRPCLayers = 0; + unsigned int recoMuonRPClayerMask = 0; + for (auto const& recoMu : *MuonCollection) { + float dR2 = deltaR2(muon.eta(), muon.phi(), recoMu.eta(), recoMu.phi()); + float dPt = std::abs(muon.pt() - recoMu.pt()); + if (muon.pt() != 0) + dPt = dPt / muon.pt(); + + if (dR2 < 0.02 * 0.02 and dPt < 0.001) { + if (recoMu.globalTrack().isNonnull()) { + normalizedChi2 = recoMu.globalTrack()->normalizedChi2(); + nRecoMuonValidMuonHits = recoMu.globalTrack()->hitPattern().numberOfValidMuonHits(); + } + recoMuonType = recoMu.type(); + nRecoMuonChambers = recoMu.numberOfChambers(); + nRecoMuonChambersCSCorDT = recoMu.numberOfChambersCSCorDT(); + nRecoMuonMatches = recoMu.numberOfMatches(); + nRecoMuonMatchedStations = recoMu.numberOfMatchedStations(); + nRecoMuonExpectedMatchedStations = recoMu.expectedNnumberOfMatchedStations(); + recoMuonStationMask = recoMu.stationMask(); + nRecoMuonMatchedRPCLayers = recoMu.numberOfMatchedRPCLayers(); + recoMuonRPClayerMask = recoMu.RPClayerMask(); } } @@ -178,6 +217,11 @@ void HLTScoutingMuonProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm hcalisopf = (*HcalPFClusterIsoMap)[muonRef]; } + double trackiso = -1.0; + if (TrackIsoMap.isValid()) { + trackiso = (*TrackIsoMap)[muonRef]; + } + vtxInd.reserve(vtxMuPair.size()); for (unsigned int i = 0; i < vtxMuPair.size(); i++) { float dr2_1 = reco::deltaR2(((vtxMuPair[i]).first), muon); @@ -190,20 +234,31 @@ void HLTScoutingMuonProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm muon.eta(), muon.phi(), muon.mass(), + recoMuonType, + track->charge(), + normalizedChi2, ecalisopf, hcalisopf, - (*TrackIsoMap)[muonRef], + trackiso, + validStandAloneMuonHits, + matchedStandAloneMuonStations, + nRecoMuonValidMuonHits, + nRecoMuonChambers, + nRecoMuonChambersCSCorDT, + nRecoMuonMatches, + nRecoMuonMatchedStations, + nRecoMuonExpectedMatchedStations, + recoMuonStationMask, + nRecoMuonMatchedRPCLayers, + recoMuonRPClayerMask, + track->hitPattern().numberOfValidPixelHits(), + track->hitPattern().numberOfValidStripHits(), + track->hitPattern().pixelLayersWithMeasurement(), + track->hitPattern().trackerLayersWithMeasurement(), track->chi2(), track->ndof(), - track->charge(), track->dxy(), track->dz(), - validmuhit, - track->hitPattern().numberOfValidPixelHits(), - matchedsta, - track->hitPattern().trackerLayersWithMeasurement(), - 2, // Global muon - track->hitPattern().numberOfValidStripHits(), track->qoverp(), track->lambda(), track->pt(), @@ -216,6 +271,20 @@ void HLTScoutingMuonProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm track->phiError(), track->dsz(), track->dszError(), + track->covariance(0, 1), + track->covariance(0, 2), + track->covariance(0, 3), + track->covariance(0, 4), + track->covariance(1, 2), + track->covariance(1, 3), + track->covariance(1, 4), + track->covariance(2, 3), + track->covariance(2, 4), + track->covariance(3, 4), + track->vx(), + track->vy(), + track->vz(), + track->hitPattern(), vtxInd); vtxInd.clear(); } @@ -228,16 +297,18 @@ void HLTScoutingMuonProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ void HLTScoutingMuonProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; - desc.add("ChargedCandidates", edm::InputTag("hltIterL3MuonCandidates")); + desc.add("ChargedCandidates", edm::InputTag("hltIterL3MuonCandidatesNoVtx")); + desc.add("displacedvertexCollection", edm::InputTag("hltDisplacedmumuVtxProducer")); + desc.add("InputMuons", edm::InputTag("hltIterL3MuonsNoVtx")); + desc.add("InputLinks", edm::InputTag("hltL3MuonsIterL3LinksNoVtx")); desc.add("Tracks", edm::InputTag("hltPixelTracks")); - desc.add("EcalPFClusterIsoMap", edm::InputTag("hltMuonEcalMFPFClusterIsoForMuons")); - desc.add("HcalPFClusterIsoMap", edm::InputTag("hltMuonHcalRegPFClusterIsoForMuons")); - desc.add("TrackIsoMap", edm::InputTag("hltMuonTkRelIsolationCut0p07Map:combinedRelativeIsoDeposits")); - desc.add("displacedvertexCollection", edm::InputTag("hltPixelVertices")); + desc.add("EcalPFClusterIsoMap", edm::InputTag("hltMuonEcalMFPFClusterIsoForMuonsNoVtx")); + desc.add("HcalPFClusterIsoMap", edm::InputTag("hltMuonHcalPFClusterIsoForMuonsNoVtx")); + desc.add("TrackIsoMap", + edm::InputTag("hltMuonTkRelIsolationCut0p09MapNoVtx:combinedRelativeIsoDeposits")); desc.add("muonPtCut", 3.0); desc.add("muonEtaCut", 2.4); desc.add("minVtxProbCut", 0.001); - desc.add("InputLinks", edm::InputTag("hltL3MuonsIterL3Links")); descriptions.add("hltScoutingMuonProducer", desc); } diff --git a/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.h b/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.h index e508e04f45aa7..1d13f52240115 100644 --- a/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.h +++ b/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.h @@ -43,6 +43,7 @@ Description: Producer for ScoutingMuon #include "DataFormats/Scouting/interface/ScoutingVertex.h" #include "DataFormats/MuonReco/interface/MuonTrackLinks.h" +#include "DataFormats/MuonReco/interface/Muon.h" #include "DataFormats/MuonReco/interface/MuonFwd.h" class HLTScoutingMuonProducer : public edm::global::EDProducer<> { @@ -59,17 +60,17 @@ class HLTScoutingMuonProducer : public edm::global::EDProducer<> { void produce(edm::StreamID sid, edm::Event& iEvent, edm::EventSetup const& setup) const final; const edm::EDGetTokenT ChargedCandidateCollection_; + const edm::EDGetTokenT displacedvertexCollection_; + const edm::EDGetTokenT MuonCollection_; + const edm::EDGetTokenT linkToken_; const edm::EDGetTokenT TrackCollection_; const edm::EDGetTokenT EcalPFClusterIsoMap_; const edm::EDGetTokenT HcalPFClusterIsoMap_; const edm::EDGetTokenT> TrackIsoMap_; - const edm::EDGetTokenT displacedvertexCollection_; const double muonPtCut; const double muonEtaCut; const double minVtxProbCut; - - const edm::EDGetTokenT linkToken_; }; #endif diff --git a/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc b/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc index 25f2d43950d64..f614e8245385e 100644 --- a/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc +++ b/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc @@ -22,6 +22,7 @@ Description: Producer for Scouting Tracks #include "DataFormats/TrackReco/interface/HitPattern.h" #include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "DataFormats/TrackReco/interface/TrackBase.h" #include "DataFormats/VertexReco/interface/Vertex.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" #include "DataFormats/Scouting/interface/ScoutingMuon.h" @@ -29,6 +30,7 @@ Description: Producer for Scouting Tracks #include "DataFormats/Scouting/interface/ScoutingVertex.h" #include "DataFormats/MuonReco/interface/MuonTrackLinks.h" #include "DataFormats/MuonReco/interface/MuonFwd.h" +#include "DataFormats/Math/interface/libminifloat.h" class HLTScoutingTrackProducer : public edm::global::EDProducer<> { public: @@ -41,13 +43,20 @@ class HLTScoutingTrackProducer : public edm::global::EDProducer<> { void produce(edm::StreamID sid, edm::Event& iEvent, edm::EventSetup const& setup) const final; const edm::EDGetTokenT otherTrackCollection_; + const edm::EDGetTokenT vertexCollection_; + + const int mantissaPrecision; + const double vtxMinDist; }; // // constructors and destructor // HLTScoutingTrackProducer::HLTScoutingTrackProducer(const edm::ParameterSet& iConfig) - : otherTrackCollection_(consumes(iConfig.getParameter("OtherTracks"))) { + : otherTrackCollection_(consumes(iConfig.getParameter("OtherTracks"))), + vertexCollection_(consumes(iConfig.getParameter("vertexCollection"))), + mantissaPrecision(iConfig.getParameter("mantissaPrecision")), + vtxMinDist(iConfig.getParameter("vtxMinDist")) { //register products produces(); } @@ -61,30 +70,63 @@ void HLTScoutingTrackProducer::produce(edm::StreamID sid, edm::Event& iEvent, ed std::unique_ptr outTrack(new ScoutingTrackCollection()); Handle otherTrackCollection; + Handle vertexCollection; if (iEvent.getByToken(otherTrackCollection_, otherTrackCollection)) { - // Produce tracks in event + //match tracks to vertices for (auto& trk : *otherTrackCollection) { - outTrack->emplace_back(trk.pt(), - trk.eta(), - trk.phi(), - trk.chi2(), + int vtxInd = -1; + double min_dist = vtxMinDist; + int vtxIt = 0; + + if (iEvent.getByToken(vertexCollection_, vertexCollection)) { + for (auto& vrt : *vertexCollection) { + double min_dist_tmp = pow(trk.dz(vrt.position()), 2); // hltPixelVertices only clustered in Z + std::cout << vrt.position().x() << std::endl; + if (min_dist_tmp < min_dist) { + min_dist = min_dist_tmp; + vtxInd = vtxIt; + } + + vtxIt++; + } + } + + //fill track information + outTrack->emplace_back(MiniFloatConverter::reduceMantissaToNbitsRounding(trk.pt(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.eta(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.phi(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.chi2(), mantissaPrecision), trk.ndof(), trk.charge(), - trk.dxy(), - trk.dz(), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.dxy(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.dz(), mantissaPrecision), trk.hitPattern().numberOfValidPixelHits(), trk.hitPattern().trackerLayersWithMeasurement(), trk.hitPattern().numberOfValidStripHits(), - trk.qoverp(), - trk.lambda(), - trk.dxyError(), - trk.dzError(), - trk.qoverpError(), - trk.lambdaError(), - trk.phiError(), - trk.dsz(), - trk.dszError()); + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.qoverp(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.lambda(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.dxyError(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.dzError(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.qoverpError(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.lambdaError(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.phiError(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.dsz(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.dszError(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.covariance(0, 1), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.covariance(0, 2), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.covariance(0, 3), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.covariance(0, 4), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.covariance(1, 2), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.covariance(1, 3), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.covariance(1, 4), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.covariance(2, 3), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.covariance(2, 4), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.covariance(3, 4), mantissaPrecision), + vtxInd, + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.vx(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.vy(), mantissaPrecision), + MiniFloatConverter::reduceMantissaToNbitsRounding(trk.vz(), mantissaPrecision)); } } @@ -95,6 +137,10 @@ void HLTScoutingTrackProducer::produce(edm::StreamID sid, edm::Event& iEvent, ed void HLTScoutingTrackProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; desc.add("OtherTracks", edm::InputTag("hltPixelTracksL3MuonNoVtx")); + desc.add("vertexCollection", edm::InputTag("hltPixelVertices")); + + desc.add("mantissaPrecision", 10); //default float16, change to 23 for float32 + desc.add("vtxMinDist", 0.01); descriptions.add("hltScoutingTrackProducer", desc); } From a628e7562b843d3489c72edd655ce6b93ce6d4b5 Mon Sep 17 00:00:00 2001 From: Mario Masciovecchio Date: Tue, 10 Nov 2020 17:36:57 +0100 Subject: [PATCH 2/6] Fix read i/o rules for backward accessibility of scouting data --- DataFormats/Scouting/src/classes_def.xml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/DataFormats/Scouting/src/classes_def.xml b/DataFormats/Scouting/src/classes_def.xml index 00b7ff12f66a0..80074cf4f7932 100755 --- a/DataFormats/Scouting/src/classes_def.xml +++ b/DataFormats/Scouting/src/classes_def.xml @@ -25,6 +25,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + From a23245cada856ca82799ac905bb4733dedccb9bf Mon Sep 17 00:00:00 2001 From: Jakob Date: Sun, 22 Nov 2020 19:50:48 +0100 Subject: [PATCH 3/6] synchronise with #31962 --- .../Scouting/interface/Run3ScoutingCaloJet.h | 101 ++++++ .../Scouting/interface/Run3ScoutingElectron.h | 131 ++++++++ .../Scouting/interface/Run3ScoutingMuon.h | 305 ++++++++++++++++++ .../Scouting/interface/Run3ScoutingPFJet.h | 136 ++++++++ .../Scouting/interface/Run3ScoutingParticle.h | 35 ++ .../Scouting/interface/Run3ScoutingPhoton.h | 96 ++++++ .../Scouting/interface/Run3ScoutingTrack.h | 191 +++++++++++ .../Scouting/interface/Run3ScoutingVertex.h | 71 ++++ .../Scouting/interface/ScoutingElectron.h | 31 +- DataFormats/Scouting/interface/ScoutingMuon.h | 241 ++++---------- .../Scouting/interface/ScoutingPhoton.h | 52 +-- .../Scouting/interface/ScoutingTrack.h | 77 +---- DataFormats/Scouting/src/classes.h | 8 + DataFormats/Scouting/src/classes_def.xml | 81 ++--- .../plugins/HLTScoutingEgammaProducer.cc | 26 +- .../plugins/HLTScoutingEgammaProducer.h | 4 +- .../JetMET/plugins/HLTScoutingCaloProducer.cc | 16 +- .../JetMET/plugins/HLTScoutingPFProducer.cc | 16 +- .../HLTScoutingPrimaryVertexProducer.cc | 6 +- .../Muon/plugins/HLTScoutingMuonProducer.cc | 8 +- .../Muon/plugins/HLTScoutingMuonProducer.h | 6 +- .../Muon/plugins/HLTScoutingTrackProducer.cc | 12 +- 22 files changed, 1236 insertions(+), 414 deletions(-) create mode 100644 DataFormats/Scouting/interface/Run3ScoutingCaloJet.h create mode 100644 DataFormats/Scouting/interface/Run3ScoutingElectron.h create mode 100644 DataFormats/Scouting/interface/Run3ScoutingMuon.h create mode 100644 DataFormats/Scouting/interface/Run3ScoutingPFJet.h create mode 100644 DataFormats/Scouting/interface/Run3ScoutingParticle.h create mode 100644 DataFormats/Scouting/interface/Run3ScoutingPhoton.h create mode 100644 DataFormats/Scouting/interface/Run3ScoutingTrack.h create mode 100644 DataFormats/Scouting/interface/Run3ScoutingVertex.h diff --git a/DataFormats/Scouting/interface/Run3ScoutingCaloJet.h b/DataFormats/Scouting/interface/Run3ScoutingCaloJet.h new file mode 100644 index 0000000000000..b0b0e7b4f7a15 --- /dev/null +++ b/DataFormats/Scouting/interface/Run3ScoutingCaloJet.h @@ -0,0 +1,101 @@ +#ifndef DataFormats_Run3ScoutingCaloJet_h +#define DataFormats_Run3ScoutingCaloJet_h + +#include + +//class for holding calo jet information, for use in data scouting +//IMPORTANT: the content of this class should be changed only in backwards compatible ways! +class Run3ScoutingCaloJet { +public: + //constructor with values for all data fields + Run3ScoutingCaloJet(float pt, + float eta, + float phi, + float m, + float jetArea, + float maxEInEmTowers, + float maxEInHadTowers, + float hadEnergyInHB, + float hadEnergyInHE, + float hadEnergyInHF, + float emEnergyInEB, + float emEnergyInEE, + float emEnergyInHF, + float towersArea, + float mvaDiscriminator, + float btagDiscriminator) + : pt_(pt), + eta_(eta), + phi_(phi), + m_(m), + jetArea_(jetArea), + maxEInEmTowers_(maxEInEmTowers), + maxEInHadTowers_(maxEInHadTowers), + hadEnergyInHB_(hadEnergyInHB), + hadEnergyInHE_(hadEnergyInHE), + hadEnergyInHF_(hadEnergyInHF), + emEnergyInEB_(emEnergyInEB), + emEnergyInEE_(emEnergyInEE), + emEnergyInHF_(emEnergyInHF), + towersArea_(towersArea), + mvaDiscriminator_(mvaDiscriminator), + btagDiscriminator_(btagDiscriminator) {} + //default constructor + Run3ScoutingCaloJet() + : pt_(0), + eta_(0), + phi_(0), + m_(0), + jetArea_(0), + maxEInEmTowers_(0), + maxEInHadTowers_(0), + hadEnergyInHB_(0), + hadEnergyInHE_(0), + hadEnergyInHF_(0), + emEnergyInEB_(0), + emEnergyInEE_(0), + emEnergyInHF_(0), + towersArea_(0), + mvaDiscriminator_(0), + btagDiscriminator_(0) {} + + //accessor functions + float pt() const { return pt_; } + float eta() const { return eta_; } + float phi() const { return phi_; } + float m() const { return m_; } + float jetArea() const { return jetArea_; } + float maxEInEmTowers() const { return maxEInEmTowers_; } + float maxEInHadTowers() const { return maxEInHadTowers_; } + float hadEnergyInHB() const { return hadEnergyInHB_; } + float hadEnergyInHE() const { return hadEnergyInHE_; } + float hadEnergyInHF() const { return hadEnergyInHF_; } + float emEnergyInEB() const { return emEnergyInEB_; } + float emEnergyInEE() const { return emEnergyInEE_; } + float emEnergyInHF() const { return emEnergyInHF_; } + float towersArea() const { return towersArea_; } + float mvaDiscriminator() const { return mvaDiscriminator_; } + float btagDiscriminator() const { return btagDiscriminator_; } + +private: + float pt_; + float eta_; + float phi_; + float m_; + float jetArea_; + float maxEInEmTowers_; + float maxEInHadTowers_; + float hadEnergyInHB_; + float hadEnergyInHE_; + float hadEnergyInHF_; + float emEnergyInEB_; + float emEnergyInEE_; + float emEnergyInHF_; + float towersArea_; + float mvaDiscriminator_; + float btagDiscriminator_; +}; + +typedef std::vector Run3ScoutingCaloJetCollection; + +#endif diff --git a/DataFormats/Scouting/interface/Run3ScoutingElectron.h b/DataFormats/Scouting/interface/Run3ScoutingElectron.h new file mode 100644 index 0000000000000..5f68272818bd0 --- /dev/null +++ b/DataFormats/Scouting/interface/Run3ScoutingElectron.h @@ -0,0 +1,131 @@ +#ifndef DataFormats_Run3ScoutingElectron_h +#define DataFormats_Run3ScoutingElectron_h + +#include + +// Class for holding electron information, for use in data scouting +// IMPORTANT: the content of this class should be changed only in backwards compatible ways! +class Run3ScoutingElectron { +public: + //constructor with values for all data fields + Run3ScoutingElectron(float pt, + float eta, + float phi, + float m, + float d0, + float dz, + float dEtaIn, + float dPhiIn, + float sigmaIetaIeta, + float hOverE, + float ooEMOop, + int missingHits, + int charge, + float ecalIso, + float hcalIso, + float trackIso, + float r9, + float sMin, + float sMaj, + unsigned int seedId, + std::vector energyMatrix, + std::vector timingMatrix) + : pt_(pt), + eta_(eta), + phi_(phi), + m_(m), + d0_(d0), + dz_(dz), + dEtaIn_(dEtaIn), + dPhiIn_(dPhiIn), + sigmaIetaIeta_(sigmaIetaIeta), + hOverE_(hOverE), + ooEMOop_(ooEMOop), + missingHits_(missingHits), + charge_(charge), + ecalIso_(ecalIso), + hcalIso_(hcalIso), + trackIso_(trackIso), + r9_(r9), + sMin_(sMin), + sMaj_(sMaj), + seedId_(seedId), + energyMatrix_(std::move(energyMatrix)), + timingMatrix_(std::move(timingMatrix)) {} + //default constructor + Run3ScoutingElectron() + : pt_(0), + eta_(0), + phi_(0), + m_(0), + d0_(0), + dz_(0), + dEtaIn_(0), + dPhiIn_(0), + sigmaIetaIeta_(0), + hOverE_(0), + ooEMOop_(0), + missingHits_(0), + charge_(0), + ecalIso_(0), + hcalIso_(0), + trackIso_(0), + r9_(0), + sMin_(0), + sMaj_(0), + seedId_(0), + energyMatrix_(0), + timingMatrix_(0) {} + + //accessor functions + float pt() const { return pt_; } + float eta() const { return eta_; } + float phi() const { return phi_; } + float m() const { return m_; } + float d0() const { return d0_; } + float dz() const { return dz_; } + float dEtaIn() const { return dEtaIn_; } + float dPhiIn() const { return dPhiIn_; } + float sigmaIetaIeta() const { return sigmaIetaIeta_; } + float hOverE() const { return hOverE_; } + float ooEMOop() const { return ooEMOop_; } + int missingHits() const { return missingHits_; } + int charge() const { return charge_; } + float ecalIso() const { return ecalIso_; } + float hcalIso() const { return hcalIso_; } + float trackIso() const { return trackIso_; } + float r9() const { return r9_; } + float sMin() const { return sMin_; } + float sMaj() const { return sMaj_; } + unsigned int seedId() const { return seedId_; } + std::vector energyMatrix() const { return energyMatrix_; } + std::vector timingMatrix() const { return timingMatrix_; } + +private: + float pt_; + float eta_; + float phi_; + float m_; + float d0_; + float dz_; + float dEtaIn_; + float dPhiIn_; + float sigmaIetaIeta_; + float hOverE_; + float ooEMOop_; + int missingHits_; + int charge_; + float ecalIso_; + float hcalIso_; + float trackIso_; + float r9_; + float sMin_; + float sMaj_; + unsigned int seedId_; + std::vector energyMatrix_; + std::vector timingMatrix_; +}; + +typedef std::vector Run3ScoutingElectronCollection; + +#endif diff --git a/DataFormats/Scouting/interface/Run3ScoutingMuon.h b/DataFormats/Scouting/interface/Run3ScoutingMuon.h new file mode 100644 index 0000000000000..b9375e7e91e57 --- /dev/null +++ b/DataFormats/Scouting/interface/Run3ScoutingMuon.h @@ -0,0 +1,305 @@ +#ifndef DataFormats_Run3ScoutingMuon_h +#define DataFormats_Run3ScoutingMuon_h + +#include +#include "DataFormats/TrackReco/interface/Track.h" + +// Class for holding muon information, for use in data scouting +// IMPORTANT: the content of this class should be changed only in backwards compatible ways! +class Run3ScoutingMuon { +public: + //constructor with values for all data fields + Run3ScoutingMuon(float pt, + float eta, + float phi, + float m, + unsigned int type, + int charge, + float normalizedChi2, + float ecalIso, + float hcalIso, + float trackIso, + int nValidStandAloneMuonHits, + int nStandAloneMuonMatchedStations, + int nValidRecoMuonHits, + int nRecoMuonChambers, + int nRecoMuonChambersCSCorDT, + int nRecoMuonMatches, + int nRecoMuonMatchedStations, + unsigned int nRecoMuonExpectedMatchedStations, + unsigned int recoMuonStationMask, + int nRecoMuonMatchedRPCLayers, + unsigned int recoMuonRPClayerMask, + int nValidPixelHits, + int nValidStripHits, + int nPixelLayersWithMeasurement, + int nTrackerLayersWithMeasurement, + float trk_chi2, + float trk_ndof, + float trk_dxy, + float trk_dz, + float trk_qoverp, + float trk_lambda, + float trk_pt, + float trk_phi, + float trk_eta, + float trk_dxyError, + float trk_dzError, + float trk_qoverpError, + float trk_lambdaError, + float trk_phiError, + float trk_dsz, + float trk_dszError, + float trk_qoverp_lambda_cov, + float trk_qoverp_phi_cov, + float trk_qoverp_dxy_cov, + float trk_qoverp_dsz_cov, + float trk_lambda_phi_cov, + float trk_lambda_dxy_cov, + float trk_lambda_dsz_cov, + float trk_phi_dxy_cov, + float trk_phi_dsz_cov, + float trk_dxy_dsz_cov, + float trk_vx, + float trk_vy, + float trk_vz, + reco::HitPattern trk_hitPattern, + std::vector vtxIndx) + : pt_(pt), + eta_(eta), + phi_(phi), + m_(m), + type_(type), + charge_(charge), + normalizedChi2_(normalizedChi2), + ecalIso_(ecalIso), + hcalIso_(hcalIso), + trackIso_(trackIso), + nValidStandAloneMuonHits_(nValidStandAloneMuonHits), + nStandAloneMuonMatchedStations_(nStandAloneMuonMatchedStations), + nValidRecoMuonHits_(nValidRecoMuonHits), + nRecoMuonChambers_(nRecoMuonChambers), + nRecoMuonChambersCSCorDT_(nRecoMuonChambersCSCorDT), + nRecoMuonMatches_(nRecoMuonMatches), + nRecoMuonMatchedStations_(nRecoMuonMatchedStations), + nRecoMuonExpectedMatchedStations_(nRecoMuonExpectedMatchedStations), + recoMuonStationMask_(recoMuonStationMask), + nRecoMuonMatchedRPCLayers_(nRecoMuonMatchedRPCLayers), + recoMuonRPClayerMask_(recoMuonRPClayerMask), + nValidPixelHits_(nValidPixelHits), + nValidStripHits_(nValidStripHits), + nPixelLayersWithMeasurement_(nPixelLayersWithMeasurement), + nTrackerLayersWithMeasurement_(nTrackerLayersWithMeasurement), + trk_chi2_(trk_chi2), + trk_ndof_(trk_ndof), + trk_dxy_(trk_dxy), + trk_dz_(trk_dz), + trk_qoverp_(trk_qoverp), + trk_lambda_(trk_lambda), + trk_pt_(trk_pt), + trk_phi_(trk_phi), + trk_eta_(trk_eta), + trk_dxyError_(trk_dxyError), + trk_dzError_(trk_dzError), + trk_qoverpError_(trk_qoverpError), + trk_lambdaError_(trk_lambdaError), + trk_phiError_(trk_phiError), + trk_dsz_(trk_dsz), + trk_dszError_(trk_dszError), + trk_qoverp_lambda_cov_(trk_qoverp_lambda_cov), + trk_qoverp_phi_cov_(trk_qoverp_phi_cov), + trk_qoverp_dxy_cov_(trk_qoverp_dxy_cov), + trk_qoverp_dsz_cov_(trk_qoverp_dsz_cov), + trk_lambda_phi_cov_(trk_lambda_phi_cov), + trk_lambda_dxy_cov_(trk_lambda_dxy_cov), + trk_lambda_dsz_cov_(trk_lambda_dsz_cov), + trk_phi_dxy_cov_(trk_phi_dxy_cov), + trk_phi_dsz_cov_(trk_phi_dsz_cov), + trk_dxy_dsz_cov_(trk_dxy_dsz_cov), + trk_vx_(trk_vx), + trk_vy_(trk_vy), + trk_vz_(trk_vz), + trk_hitPattern_(trk_hitPattern), + vtxIndx_(std::move(vtxIndx)) {} + //default constructor + Run3ScoutingMuon() + : pt_(0), + eta_(0), + phi_(0), + m_(0), + type_(0), + charge_(0), + normalizedChi2_(0), + ecalIso_(0), + hcalIso_(0), + trackIso_(0), + nValidStandAloneMuonHits_(0), + nStandAloneMuonMatchedStations_(0), + nValidRecoMuonHits_(0), + nRecoMuonChambers_(0), + nRecoMuonChambersCSCorDT_(0), + nRecoMuonMatches_(0), + nRecoMuonMatchedStations_(0), + nRecoMuonExpectedMatchedStations_(0), + recoMuonStationMask_(0), + nRecoMuonMatchedRPCLayers_(0), + recoMuonRPClayerMask_(0), + nValidPixelHits_(0), + nValidStripHits_(0), + nPixelLayersWithMeasurement_(0), + nTrackerLayersWithMeasurement_(0), + trk_chi2_(0), + trk_ndof_(0), + trk_dxy_(0), + trk_dz_(0), + trk_qoverp_(0), + trk_lambda_(0), + trk_pt_(0), + trk_phi_(0), + trk_eta_(0), + trk_dxyError_(0), + trk_dzError_(0), + trk_qoverpError_(0), + trk_lambdaError_(0), + trk_phiError_(0), + trk_dsz_(0), + trk_dszError_(0), + trk_qoverp_lambda_cov_(0), + trk_qoverp_phi_cov_(0), + trk_qoverp_dxy_cov_(0), + trk_qoverp_dsz_cov_(0), + trk_lambda_phi_cov_(0), + trk_lambda_dxy_cov_(0), + trk_lambda_dsz_cov_(0), + trk_phi_dxy_cov_(0), + trk_phi_dsz_cov_(0), + trk_dxy_dsz_cov_(0), + trk_vx_(0), + trk_vy_(0), + trk_vz_(0), + trk_hitPattern_(reco::HitPattern()), + vtxIndx_(0) {} + + //accessor functions + float pt() const { return pt_; } + float eta() const { return eta_; } + float phi() const { return phi_; } + float m() const { return m_; } + unsigned int type() const { return type_; } + bool isGlobalMuon() const { return type_ & 1 << 1; } + bool isTrackerMuon() const { return type_ & 1 << 2; } + int charge() const { return charge_; } + float normalizedChi2() const { return normalizedChi2_; } + float ecalIso() const { return ecalIso_; } + float hcalIso() const { return hcalIso_; } + float trackIso() const { return trackIso_; } + int nValidStandAloneMuonHits() const { return nValidStandAloneMuonHits_; } + int nStandAloneMuonMatchedStations() const { return nStandAloneMuonMatchedStations_; } + int nValidRecoMuonHits() const { return nValidRecoMuonHits_; } + int nRecoMuonChambers() const { return nRecoMuonChambers_; } + int nRecoMuonChambersCSCorDT() const { return nRecoMuonChambersCSCorDT_; } + int nRecoMuonMatches() const { return nRecoMuonMatches_; } + int nRecoMuonMatchedStations() const { return nRecoMuonMatchedStations_; } + unsigned int nRecoMuonExpectedMatchedStations() const { return nRecoMuonExpectedMatchedStations_; } + unsigned int recoMuonStationMask() const { return recoMuonStationMask_; } + int nRecoMuonMatchedRPCLayers() const { return nRecoMuonMatchedRPCLayers_; } + unsigned int recoMuonRPClayerMask() const { return recoMuonRPClayerMask_; } + int nValidPixelHits() const { return nValidPixelHits_; } + int nValidStripHits() const { return nValidStripHits_; } + int nPixelLayersWithMeasurement() const { return nPixelLayersWithMeasurement_; } + int nTrackerLayersWithMeasurement() const { return nTrackerLayersWithMeasurement_; } + float trk_chi2() const { return trk_chi2_; } + float trk_ndof() const { return trk_ndof_; } + float trk_dxy() const { return trk_dxy_; } + float trk_dz() const { return trk_dz_; } + float trk_qoverp() const { return trk_qoverp_; } + float trk_lambda() const { return trk_lambda_; } + float trk_pt() const { return trk_pt_; } + float trk_phi() const { return trk_phi_; } + float trk_eta() const { return trk_eta_; } + float trk_dxyError() const { return trk_dxyError_; } + float trk_dzError() const { return trk_dzError_; } + float trk_qoverpError() const { return trk_qoverpError_; } + float trk_lambdaError() const { return trk_lambdaError_; } + float trk_phiError() const { return trk_phiError_; } + float trk_dsz() const { return trk_dsz_; } + float trk_dszError() const { return trk_dszError_; } + //add off-diagonal covariance matrix parameter, the above "Error" variables correspond to the diagonal, enum for Cov matrix (qoverp, lambda, phi, dxy, dsz), see https://github.com/cms-sw/cmssw/blob/CMSSW_11_2_X/DataFormats/TrackReco/src/TrackBase.cc for details + float trk_qoverp_lambda_cov() const { return trk_qoverp_lambda_cov_; } + float trk_qoverp_phi_cov() const { return trk_qoverp_phi_cov_; } + float trk_qoverp_dxy_cov() const { return trk_qoverp_dxy_cov_; } + float trk_qoverp_dsz_cov() const { return trk_qoverp_dsz_cov_; } + float trk_lambda_phi_cov() const { return trk_lambda_phi_cov_; } + float trk_lambda_dxy_cov() const { return trk_lambda_dxy_cov_; } + float trk_lambda_dsz_cov() const { return trk_lambda_dsz_cov_; } + float trk_phi_dxy_cov() const { return trk_phi_dxy_cov_; } + float trk_phi_dsz_cov() const { return trk_phi_dsz_cov_; } + float trk_dxy_dsz_cov() const { return trk_dxy_dsz_cov_; } + float trk_vx() const { return trk_vx_; } + float trk_vy() const { return trk_vy_; } + float trk_vz() const { return trk_vz_; } + reco::HitPattern trk_hitPattern() const { return trk_hitPattern_; } + std::vector vtxIndx() const { return vtxIndx_; } + +private: + float pt_; + float eta_; + float phi_; + float m_; + unsigned int type_; + int charge_; + float normalizedChi2_; + float ecalIso_; + float hcalIso_; + float trackIso_; + int nValidStandAloneMuonHits_; + int nStandAloneMuonMatchedStations_; + int nValidRecoMuonHits_; + int nRecoMuonChambers_; + int nRecoMuonChambersCSCorDT_; + int nRecoMuonMatches_; + int nRecoMuonMatchedStations_; + unsigned int nRecoMuonExpectedMatchedStations_; + unsigned int recoMuonStationMask_; + int nRecoMuonMatchedRPCLayers_; + unsigned int recoMuonRPClayerMask_; + int nValidPixelHits_; + int nValidStripHits_; + int nPixelLayersWithMeasurement_; + int nTrackerLayersWithMeasurement_; + float trk_chi2_; + float trk_ndof_; + float trk_dxy_; + float trk_dz_; + float trk_qoverp_; + float trk_lambda_; + float trk_pt_; + float trk_phi_; + float trk_eta_; + float trk_dxyError_; + float trk_dzError_; + float trk_qoverpError_; + float trk_lambdaError_; + float trk_phiError_; + float trk_dsz_; + float trk_dszError_; + float trk_qoverp_lambda_cov_; + float trk_qoverp_phi_cov_; + float trk_qoverp_dxy_cov_; + float trk_qoverp_dsz_cov_; + float trk_lambda_phi_cov_; + float trk_lambda_dxy_cov_; + float trk_lambda_dsz_cov_; + float trk_phi_dxy_cov_; + float trk_phi_dsz_cov_; + float trk_dxy_dsz_cov_; + float trk_vx_; + float trk_vy_; + float trk_vz_; + reco::HitPattern trk_hitPattern_; + std::vector vtxIndx_; +}; + +typedef std::vector Run3ScoutingMuonCollection; + +#endif diff --git a/DataFormats/Scouting/interface/Run3ScoutingPFJet.h b/DataFormats/Scouting/interface/Run3ScoutingPFJet.h new file mode 100644 index 0000000000000..08758ee41238a --- /dev/null +++ b/DataFormats/Scouting/interface/Run3ScoutingPFJet.h @@ -0,0 +1,136 @@ +#ifndef DataFormats_Run3ScoutingPFJet_h +#define DataFormats_Run3ScoutingPFJet_h + +#include + +//class for holding PF jet information, for use in data scouting +//IMPORTANT: the content of this class should be changed only in backwards compatible ways! +class Run3ScoutingPFJet { +public: + //constructor with values for all data fields + Run3ScoutingPFJet(float pt, + float eta, + float phi, + float m, + float jetArea, + float chargedHadronEnergy, + float neutralHadronEnergy, + float photonEnergy, + float electronEnergy, + float muonEnergy, + float HFHadronEnergy, + float HFEMEnergy, + int chargedHadronMultiplicity, + int neutralHadronMultiplicity, + int photonMultiplicity, + int electronMultiplicity, + int muonMultiplicity, + int HFHadronMultiplicity, + int HFEMMultiplicity, + float HOEnergy, + float csv, + float mvaDiscriminator, + std::vector constituents) + : pt_(pt), + eta_(eta), + phi_(phi), + m_(m), + jetArea_(jetArea), + chargedHadronEnergy_(chargedHadronEnergy), + neutralHadronEnergy_(neutralHadronEnergy), + photonEnergy_(photonEnergy), + electronEnergy_(electronEnergy), + muonEnergy_(muonEnergy), + HFHadronEnergy_(HFHadronEnergy), + HFEMEnergy_(HFEMEnergy), + chargedHadronMultiplicity_(chargedHadronMultiplicity), + neutralHadronMultiplicity_(neutralHadronMultiplicity), + photonMultiplicity_(photonMultiplicity), + electronMultiplicity_(electronMultiplicity), + muonMultiplicity_(muonMultiplicity), + HFHadronMultiplicity_(HFHadronMultiplicity), + HFEMMultiplicity_(HFEMMultiplicity), + HOEnergy_(HOEnergy), + csv_(csv), + mvaDiscriminator_(mvaDiscriminator), + constituents_(constituents) {} + //default constructor + Run3ScoutingPFJet() + : pt_(0), + eta_(0), + phi_(0), + m_(0), + jetArea_(0), + chargedHadronEnergy_(0), + neutralHadronEnergy_(0), + photonEnergy_(0), + electronEnergy_(0), + muonEnergy_(0), + HFHadronEnergy_(0), + HFEMEnergy_(0), + chargedHadronMultiplicity_(0), + neutralHadronMultiplicity_(0), + photonMultiplicity_(0), + electronMultiplicity_(0), + muonMultiplicity_(0), + HFHadronMultiplicity_(0), + HFEMMultiplicity_(0), + HOEnergy_(0), + csv_(0), + mvaDiscriminator_(0), + constituents_(std::vector()) {} + + //accessor functions + float pt() const { return pt_; } + float eta() const { return eta_; } + float phi() const { return phi_; } + float m() const { return m_; } + float jetArea() const { return jetArea_; } + float chargedHadronEnergy() const { return chargedHadronEnergy_; } + float neutralHadronEnergy() const { return neutralHadronEnergy_; } + float photonEnergy() const { return photonEnergy_; } + float electronEnergy() const { return electronEnergy_; } + float muonEnergy() const { return muonEnergy_; } + float HFHadronEnergy() const { return HFHadronEnergy_; } + float HFEMEnergy() const { return HFEMEnergy_; } + int chargedHadronMultiplicity() const { return chargedHadronMultiplicity_; } + int neutralHadronMultiplicity() const { return neutralHadronMultiplicity_; } + int photonMultiplicity() const { return photonMultiplicity_; } + int electronMultiplicity() const { return electronMultiplicity_; } + int muonMultiplicity() const { return muonMultiplicity_; } + int HFHadronMultiplicity() const { return HFHadronMultiplicity_; } + int HFEMMultiplicity() const { return HFEMMultiplicity_; } + float HOEnergy() const { return HOEnergy_; } + float csv() const { return csv_; } + float mvaDiscriminator() const { return mvaDiscriminator_; } + std::vector constituents() const { return constituents_; } + +private: + float pt_; + float eta_; + float phi_; + float m_; + float jetArea_; + float chargedHadronEnergy_; + float neutralHadronEnergy_; + float photonEnergy_; + float electronEnergy_; + float muonEnergy_; + float HFHadronEnergy_; + float HFEMEnergy_; + int chargedHadronMultiplicity_; + int neutralHadronMultiplicity_; + int photonMultiplicity_; + int electronMultiplicity_; + int muonMultiplicity_; + int HFHadronMultiplicity_; + int HFEMMultiplicity_; + float HOEnergy_; + float csv_; + float mvaDiscriminator_; + std::vector constituents_; +}; + +typedef std::vector Run3ScoutingPFJetCollection; + +#endif diff --git a/DataFormats/Scouting/interface/Run3ScoutingParticle.h b/DataFormats/Scouting/interface/Run3ScoutingParticle.h new file mode 100644 index 0000000000000..4ebcf71d8f823 --- /dev/null +++ b/DataFormats/Scouting/interface/Run3ScoutingParticle.h @@ -0,0 +1,35 @@ +#ifndef DataFormats_Run3ScoutingParticle_h +#define DataFormats_Run3ScoutingParticle_h + +#include + +//class for holding PF candidate information, for use in data scouting +//IMPORTANT: the content of this class should be changed only in backwards compatible ways! +class Run3ScoutingParticle { +public: + //constructor with values for all data fields + Run3ScoutingParticle(float pt, float eta, float phi, float m, int pdgId, int vertex) + : pt_(pt), eta_(eta), phi_(phi), m_(m), pdgId_(pdgId), vertex_(vertex) {} + //default constructor + Run3ScoutingParticle() : pt_(0), eta_(0), phi_(0), m_(0), pdgId_(0), vertex_(-1) {} + + //accessor functions + float pt() const { return pt_; } + float eta() const { return eta_; } + float phi() const { return phi_; } + float m() const { return m_; } + int pdgId() const { return pdgId_; } + int vertex() const { return vertex_; } + +private: + float pt_; + float eta_; + float phi_; + float m_; + int pdgId_; + int vertex_; +}; + +typedef std::vector Run3ScoutingParticleCollection; + +#endif diff --git a/DataFormats/Scouting/interface/Run3ScoutingPhoton.h b/DataFormats/Scouting/interface/Run3ScoutingPhoton.h new file mode 100644 index 0000000000000..43beecc981d4b --- /dev/null +++ b/DataFormats/Scouting/interface/Run3ScoutingPhoton.h @@ -0,0 +1,96 @@ +#ifndef DataFormats_Run3ScoutingPhoton_h +#define DataFormats_Run3ScoutingPhoton_h + +#include + +// Class for holding photon information, for use in data scouting +// IMPORTANT: the content of this class should be changed only in backwards compatible ways! +class Run3ScoutingPhoton { +public: + //constructor with values for all data fields + Run3ScoutingPhoton(float pt, + float eta, + float phi, + float m, + float sigmaIetaIeta, + float hOverE, + float ecalIso, + float hcalIso, + float trkIso, + float r9, + float sMin, + float sMaj, + unsigned int seedId, + std::vector energyMatrix, + std::vector timingMatrix) + : pt_(pt), + eta_(eta), + phi_(phi), + m_(m), + sigmaIetaIeta_(sigmaIetaIeta), + hOverE_(hOverE), + ecalIso_(ecalIso), + hcalIso_(hcalIso), + trkIso_(trkIso), + r9_(r9), + sMin_(sMin), + sMaj_(sMaj), + seedId_(seedId), + energyMatrix_(std::move(energyMatrix)), + timingMatrix_(std::move(timingMatrix)) {} + //default constructor + Run3ScoutingPhoton() + : pt_(0), + eta_(0), + phi_(0), + m_(0), + sigmaIetaIeta_(0), + hOverE_(0), + ecalIso_(0), + hcalIso_(0), + trkIso_(0), + r9_(0), + sMin_(0), + sMaj_(0), + seedId_(0), + energyMatrix_(0), + timingMatrix_(0) {} + + //accessor functions + float pt() const { return pt_; } + float eta() const { return eta_; } + float phi() const { return phi_; } + float m() const { return m_; } + float sigmaIetaIeta() const { return sigmaIetaIeta_; } + float hOverE() const { return hOverE_; } + float ecalIso() const { return ecalIso_; } + float hcalIso() const { return hcalIso_; } + float trkIso() const { return trkIso_; } + float r9() const { return r9_; } + float sMin() const { return sMin_; } + float sMaj() const { return sMaj_; } + float seedId() const { return seedId_; } + std::vector energyMatrix() const { return energyMatrix_; } + std::vector timingMatrix() const { return timingMatrix_; } + +private: + float pt_; + float eta_; + float phi_; + float m_; + float sigmaIetaIeta_; + float hOverE_; + float ecalIso_; + float hcalIso_; + float trkIso_; + float r9_; + float sMin_; + float sMaj_; + unsigned int seedId_; + std::vector energyMatrix_; + std::vector timingMatrix_; +}; + +typedef std::vector Run3ScoutingPhotonCollection; + +#endif diff --git a/DataFormats/Scouting/interface/Run3ScoutingTrack.h b/DataFormats/Scouting/interface/Run3ScoutingTrack.h new file mode 100644 index 0000000000000..66153beca5fec --- /dev/null +++ b/DataFormats/Scouting/interface/Run3ScoutingTrack.h @@ -0,0 +1,191 @@ +#ifndef DataFormats_Run3ScoutingTrack_h +#define DataFormats_Run3ScoutingTrack_h + +#include + +//class for holding track information, for use in data scouting +class Run3ScoutingTrack { +public: + //constructor with values for all data fields + Run3ScoutingTrack(float tk_pt, + float tk_eta, + float tk_phi, + float tk_chi2, + float tk_ndof, + int tk_charge, + float tk_dxy, + float tk_dz, + int tk_nValidPixelHits, + int tk_nTrackerLayersWithMeasurement, + int tk_nValidStripHits, + float tk_qoverp, + float tk_lambda, + float tk_dxy_Error, + float tk_dz_Error, + float tk_qoverp_Error, + float tk_lambda_Error, + float tk_phi_Error, + float tk_dsz, + float tk_dsz_Error, + float tk_qoverp_lambda_cov, + float tk_qoverp_phi_cov, + float tk_qoverp_dxy_cov, + float tk_qoverp_dsz_cov, + float tk_lambda_phi_cov, + float tk_lambda_dxy_cov, + float tk_lambda_dsz_cov, + float tk_phi_dxy_cov, + float tk_phi_dsz_cov, + float tk_dxy_dsz_cov, + int tk_vtxInd, + float tk_vx, + float tk_vy, + float tk_vz) + : tk_pt_(tk_pt), + tk_eta_(tk_eta), + tk_phi_(tk_phi), + tk_chi2_(tk_chi2), + tk_ndof_(tk_ndof), + tk_charge_(tk_charge), + tk_dxy_(tk_dxy), + tk_dz_(tk_dz), + tk_nValidPixelHits_(tk_nValidPixelHits), + tk_nTrackerLayersWithMeasurement_(tk_nTrackerLayersWithMeasurement), + tk_nValidStripHits_(tk_nValidStripHits), + tk_qoverp_(tk_qoverp), + tk_lambda_(tk_lambda), + tk_dxy_Error_(tk_dxy_Error), + tk_dz_Error_(tk_dz_Error), + tk_qoverp_Error_(tk_qoverp_Error), + tk_lambda_Error_(tk_lambda_Error), + tk_phi_Error_(tk_phi_Error), + tk_dsz_(tk_dsz), + tk_dsz_Error_(tk_dsz_Error), + tk_qoverp_lambda_cov_(tk_qoverp_lambda_cov), + tk_qoverp_phi_cov_(tk_qoverp_phi_cov), + tk_qoverp_dxy_cov_(tk_qoverp_dxy_cov), + tk_qoverp_dsz_cov_(tk_qoverp_dsz_cov), + tk_lambda_phi_cov_(tk_lambda_phi_cov), + tk_lambda_dxy_cov_(tk_lambda_dxy_cov), + tk_lambda_dsz_cov_(tk_lambda_dsz_cov), + tk_phi_dxy_cov_(tk_phi_dxy_cov), + tk_phi_dsz_cov_(tk_phi_dsz_cov), + tk_dxy_dsz_cov_(tk_dxy_dsz_cov), + tk_vtxInd_(tk_vtxInd), + tk_vx_(tk_vx), + tk_vy_(tk_vy), + tk_vz_(tk_vz) {} + //default constructor + Run3ScoutingTrack() + : tk_pt_(0), + tk_eta_(0), + tk_phi_(0), + tk_chi2_(0), + tk_ndof_(0), + tk_charge_(0), + tk_dxy_(0), + tk_dz_(0), + tk_nValidPixelHits_(0), + tk_nTrackerLayersWithMeasurement_(0), + tk_nValidStripHits_(0), + tk_qoverp_(0), + tk_lambda_(0), + tk_dxy_Error_(0), + tk_dz_Error_(0), + tk_qoverp_Error_(0), + tk_lambda_Error_(0), + tk_phi_Error_(0), + tk_dsz_(0), + tk_dsz_Error_(0), + tk_qoverp_lambda_cov_(0), + tk_qoverp_phi_cov_(0), + tk_qoverp_dxy_cov_(0), + tk_qoverp_dsz_cov_(0), + tk_lambda_phi_cov_(0), + tk_lambda_dxy_cov_(0), + tk_lambda_dsz_cov_(0), + tk_phi_dxy_cov_(0), + tk_phi_dsz_cov_(0), + tk_dxy_dsz_cov_(0), + tk_vtxInd_(0), + tk_vx_(0), + tk_vy_(0), + tk_vz_(0) {} + + //accessor functions + float tk_pt() const { return tk_pt_; } + float tk_eta() const { return tk_eta_; } + float tk_phi() const { return tk_phi_; } + float tk_chi2() const { return tk_chi2_; } + float tk_ndof() const { return tk_ndof_; } + int tk_charge() const { return tk_charge_; } + float tk_dxy() const { return tk_dxy_; } + float tk_dz() const { return tk_dz_; } + int tk_nValidPixelHits() const { return tk_nValidPixelHits_; } + int tk_nTrackerLayersWithMeasurement() const { return tk_nTrackerLayersWithMeasurement_; } + int tk_nValidStripHits() const { return tk_nValidStripHits_; } + float tk_qoverp() const { return tk_qoverp_; } + float tk_lambda() const { return tk_lambda_; } + float tk_dxy_Error() const { return tk_dxy_Error_; } + float tk_dz_Error() const { return tk_dz_Error_; } + float tk_qoverp_Error() const { return tk_qoverp_Error_; } + float tk_lambda_Error() const { return tk_lambda_Error_; } + float tk_phi_Error() const { return tk_phi_Error_; } + float tk_dsz() const { return tk_dsz_; } + float tk_dsz_Error() const { return tk_dsz_Error_; } + //add off-diagonal covariance matrix parameter, the above "Error" variables correspond to the diagonal, enum for Cov matrix (qoverp, lambda, phi, dxy, dsz), see https://github.com/cms-sw/cmssw/blob/CMSSW_11_2_X/DataFormats/TrackReco/src/TrackBase.cc for details + float tk_qoverp_lambda_cov() const { return tk_qoverp_lambda_cov_; } + float tk_qoverp_phi_cov() const { return tk_qoverp_phi_cov_; } + float tk_qoverp_dxy_cov() const { return tk_qoverp_dxy_cov_; } + float tk_qoverp_dsz_cov() const { return tk_qoverp_dsz_cov_; } + float tk_lambda_phi_cov() const { return tk_lambda_phi_cov_; } + float tk_lambda_dxy_cov() const { return tk_lambda_dxy_cov_; } + float tk_lambda_dsz_cov() const { return tk_lambda_dsz_cov_; } + float tk_phi_dxy_cov() const { return tk_phi_dxy_cov_; } + float tk_phi_dsz_cov() const { return tk_phi_dsz_cov_; } + float tk_dxy_dsz_cov() const { return tk_dxy_dsz_cov_; } + int tk_vtxInd() const { return tk_vtxInd_; } + float tk_vx() const { return tk_vx_; } + float tk_vy() const { return tk_vy_; } + float tk_vz() const { return tk_vz_; } + +private: + float tk_pt_; + float tk_eta_; + float tk_phi_; + float tk_chi2_; + float tk_ndof_; + int tk_charge_; + float tk_dxy_; + float tk_dz_; + int tk_nValidPixelHits_; + int tk_nTrackerLayersWithMeasurement_; + int tk_nValidStripHits_; + float tk_qoverp_; + float tk_lambda_; + float tk_dxy_Error_; + float tk_dz_Error_; + float tk_qoverp_Error_; + float tk_lambda_Error_; + float tk_phi_Error_; + float tk_dsz_; + float tk_dsz_Error_; + float tk_qoverp_lambda_cov_; + float tk_qoverp_phi_cov_; + float tk_qoverp_dxy_cov_; + float tk_qoverp_dsz_cov_; + float tk_lambda_phi_cov_; + float tk_lambda_dxy_cov_; + float tk_lambda_dsz_cov_; + float tk_phi_dxy_cov_; + float tk_phi_dsz_cov_; + float tk_dxy_dsz_cov_; + int tk_vtxInd_; + float tk_vx_; + float tk_vy_; + float tk_vz_; +}; + +typedef std::vector Run3ScoutingTrackCollection; + +#endif diff --git a/DataFormats/Scouting/interface/Run3ScoutingVertex.h b/DataFormats/Scouting/interface/Run3ScoutingVertex.h new file mode 100644 index 0000000000000..0f5ffebfcba9f --- /dev/null +++ b/DataFormats/Scouting/interface/Run3ScoutingVertex.h @@ -0,0 +1,71 @@ +#ifndef DataFormats_Run3ScoutingVertex_h +#define DataFormats_Run3ScoutingVertex_h + +#include + +//class for holding vertex information, for use in data scouting +//IMPORTANT: the content of this class should be changed only in backwards compatible ways! +class Run3ScoutingVertex { +public: + //constructor with values for all data fields + Run3ScoutingVertex(float x, + float y, + float z, + float zError, + float xError, + float yError, + int tracksSize, + float chi2, + int ndof, + bool isValidVtx) + : x_(x), + y_(y), + z_(z), + zError_(zError), + xError_(xError), + yError_(yError), + tracksSize_(tracksSize), + chi2_(chi2), + ndof_(ndof), + isValidVtx_(isValidVtx) {} + //default constructor + Run3ScoutingVertex() + : x_(0), + y_(0), + z_(0), + zError_(0), + xError_(0), + yError_(0), + tracksSize_(0), + chi2_(0), + ndof_(0), + isValidVtx_(false) {} + + //accessor functions + float x() const { return x_; } + float y() const { return y_; } + float z() const { return z_; } + float zError() const { return zError_; } + float xError() const { return xError_; } + float yError() const { return yError_; } + int tracksSize() const { return tracksSize_; } + float chi2() const { return chi2_; } + int ndof() const { return ndof_; } + bool isValidVtx() const { return isValidVtx_; } + +private: + float x_; + float y_; + float z_; + float zError_; + float xError_; + float yError_; + int tracksSize_; + float chi2_; + int ndof_; + bool isValidVtx_; +}; + +typedef std::vector Run3ScoutingVertexCollection; + +#endif diff --git a/DataFormats/Scouting/interface/ScoutingElectron.h b/DataFormats/Scouting/interface/ScoutingElectron.h index 5498cfad49222..fcab1acd1d1d3 100644 --- a/DataFormats/Scouting/interface/ScoutingElectron.h +++ b/DataFormats/Scouting/interface/ScoutingElectron.h @@ -23,12 +23,7 @@ class ScoutingElectron { int charge, float ecalIso, float hcalIso, - float trackIso, - float r9, - float sMin, - float sMaj, - std::vector energyMatrix, - std::vector timingMatrix) + float trackIso) : pt_(pt), eta_(eta), phi_(phi), @@ -44,12 +39,7 @@ class ScoutingElectron { charge_(charge), ecalIso_(ecalIso), hcalIso_(hcalIso), - trackIso_(trackIso), - r9_(r9), - sMin_(sMin), - sMaj_(sMaj), - energyMatrix_(std::move(energyMatrix)), - timingMatrix_(std::move(timingMatrix)) {} + trackIso_(trackIso) {} //default constructor ScoutingElectron() : pt_(0), @@ -67,12 +57,7 @@ class ScoutingElectron { charge_(0), ecalIso_(0), hcalIso_(0), - trackIso_(0), - r9_(0), - sMin_(0), - sMaj_(0), - energyMatrix_(0), - timingMatrix_(0) {} + trackIso_(0) {} //accessor functions float pt() const { return pt_; } @@ -91,11 +76,6 @@ class ScoutingElectron { float ecalIso() const { return ecalIso_; } float hcalIso() const { return hcalIso_; } float trackIso() const { return trackIso_; } - float r9() const { return r9_; } - float sMin() const { return sMin_; } - float sMaj() const { return sMaj_; } - std::vector energyMatrix() const { return energyMatrix_; } - std::vector timingMatrix() const { return timingMatrix_; } private: float pt_; @@ -114,11 +94,6 @@ class ScoutingElectron { float ecalIso_; float hcalIso_; float trackIso_; - float r9_; - float sMin_; - float sMaj_; - std::vector energyMatrix_; - std::vector timingMatrix_; }; typedef std::vector ScoutingElectronCollection; diff --git a/DataFormats/Scouting/interface/ScoutingMuon.h b/DataFormats/Scouting/interface/ScoutingMuon.h index 993f687cefde6..fd6fed8fe45af 100644 --- a/DataFormats/Scouting/interface/ScoutingMuon.h +++ b/DataFormats/Scouting/interface/ScoutingMuon.h @@ -2,7 +2,6 @@ #define DataFormats_ScoutingMuon_h #include -#include "DataFormats/TrackReco/interface/Track.h" // Class for holding muon information, for use in data scouting // IMPORTANT: the content of this class should be changed only in backwards compatible ways! @@ -13,113 +12,63 @@ class ScoutingMuon { float eta, float phi, float m, - unsigned int type, - int charge, - float normalizedChi2, float ecalIso, float hcalIso, float trackIso, - int nValidStandAloneMuonHits, - int nStandAloneMuonMatchedStations, - int nValidRecoMuonHits, - int nRecoMuonChambers, - int nRecoMuonChambersCSCorDT, - int nRecoMuonMatches, - int nRecoMuonMatchedStations, - unsigned int nRecoMuonExpectedMatchedStations, - unsigned int recoMuonStationMask, - int nRecoMuonMatchedRPCLayers, - unsigned int recoMuonRPClayerMask, + float chi2, + float ndof, + int charge, + float dxy, + float dz, + int nValidMuonHits, int nValidPixelHits, - int nValidStripHits, - int nPixelLayersWithMeasurement, + int nMatchedStations, int nTrackerLayersWithMeasurement, - float trk_chi2, - float trk_ndof, - float trk_dxy, - float trk_dz, + int type, + int nValidStripHits, float trk_qoverp, float trk_lambda, float trk_pt, float trk_phi, float trk_eta, - float trk_dxyError, - float trk_dzError, + float dxyError, + float dzError, float trk_qoverpError, float trk_lambdaError, float trk_phiError, float trk_dsz, float trk_dszError, - float trk_qoverp_lambda_cov, - float trk_qoverp_phi_cov, - float trk_qoverp_dxy_cov, - float trk_qoverp_dsz_cov, - float trk_lambda_phi_cov, - float trk_lambda_dxy_cov, - float trk_lambda_dsz_cov, - float trk_phi_dxy_cov, - float trk_phi_dsz_cov, - float trk_dxy_dsz_cov, - float trk_vx, - float trk_vy, - float trk_vz, - reco::HitPattern trk_hitPattern, std::vector vtxIndx) : pt_(pt), eta_(eta), phi_(phi), m_(m), - type_(type), - charge_(charge), - normalizedChi2_(normalizedChi2), ecalIso_(ecalIso), hcalIso_(hcalIso), trackIso_(trackIso), - nValidStandAloneMuonHits_(nValidStandAloneMuonHits), - nStandAloneMuonMatchedStations_(nStandAloneMuonMatchedStations), - nValidRecoMuonHits_(nValidRecoMuonHits), - nRecoMuonChambers_(nRecoMuonChambers), - nRecoMuonChambersCSCorDT_(nRecoMuonChambersCSCorDT), - nRecoMuonMatches_(nRecoMuonMatches), - nRecoMuonMatchedStations_(nRecoMuonMatchedStations), - nRecoMuonExpectedMatchedStations_(nRecoMuonExpectedMatchedStations), - recoMuonStationMask_(recoMuonStationMask), - nRecoMuonMatchedRPCLayers_(nRecoMuonMatchedRPCLayers), - recoMuonRPClayerMask_(recoMuonRPClayerMask), + chi2_(chi2), + ndof_(ndof), + charge_(charge), + dxy_(dxy), + dz_(dz), + nValidMuonHits_(nValidMuonHits), nValidPixelHits_(nValidPixelHits), - nValidStripHits_(nValidStripHits), - nPixelLayersWithMeasurement_(nPixelLayersWithMeasurement), + nMatchedStations_(nMatchedStations), nTrackerLayersWithMeasurement_(nTrackerLayersWithMeasurement), - trk_chi2_(trk_chi2), - trk_ndof_(trk_ndof), - trk_dxy_(trk_dxy), - trk_dz_(trk_dz), + type_(type), + nValidStripHits_(nValidStripHits), trk_qoverp_(trk_qoverp), trk_lambda_(trk_lambda), trk_pt_(trk_pt), trk_phi_(trk_phi), trk_eta_(trk_eta), - trk_dxyError_(trk_dxyError), - trk_dzError_(trk_dzError), + dxyError_(dxyError), + dzError_(dzError), trk_qoverpError_(trk_qoverpError), trk_lambdaError_(trk_lambdaError), trk_phiError_(trk_phiError), trk_dsz_(trk_dsz), trk_dszError_(trk_dszError), - trk_qoverp_lambda_cov_(trk_qoverp_lambda_cov), - trk_qoverp_phi_cov_(trk_qoverp_phi_cov), - trk_qoverp_dxy_cov_(trk_qoverp_dxy_cov), - trk_qoverp_dsz_cov_(trk_qoverp_dsz_cov), - trk_lambda_phi_cov_(trk_lambda_phi_cov), - trk_lambda_dxy_cov_(trk_lambda_dxy_cov), - trk_lambda_dsz_cov_(trk_lambda_dsz_cov), - trk_phi_dxy_cov_(trk_phi_dxy_cov), - trk_phi_dsz_cov_(trk_phi_dsz_cov), - trk_dxy_dsz_cov_(trk_dxy_dsz_cov), - trk_vx_(trk_vx), - trk_vy_(trk_vy), - trk_vz_(trk_vz), - trk_hitPattern_(trk_hitPattern), vtxIndx_(std::move(vtxIndx)) {} //default constructor ScoutingMuon() @@ -127,57 +76,32 @@ class ScoutingMuon { eta_(0), phi_(0), m_(0), - type_(0), - charge_(0), - normalizedChi2_(0), ecalIso_(0), hcalIso_(0), trackIso_(0), - nValidStandAloneMuonHits_(0), - nStandAloneMuonMatchedStations_(0), - nValidRecoMuonHits_(0), - nRecoMuonChambers_(0), - nRecoMuonChambersCSCorDT_(0), - nRecoMuonMatches_(0), - nRecoMuonMatchedStations_(0), - nRecoMuonExpectedMatchedStations_(0), - recoMuonStationMask_(0), - nRecoMuonMatchedRPCLayers_(0), - recoMuonRPClayerMask_(0), + chi2_(0), + ndof_(0), + charge_(0), + dxy_(0), + dz_(0), + nValidMuonHits_(0), nValidPixelHits_(0), - nValidStripHits_(0), - nPixelLayersWithMeasurement_(0), + nMatchedStations_(0), nTrackerLayersWithMeasurement_(0), - trk_chi2_(0), - trk_ndof_(0), - trk_dxy_(0), - trk_dz_(0), + type_(0), + nValidStripHits_(0), trk_qoverp_(0), trk_lambda_(0), trk_pt_(0), trk_phi_(0), trk_eta_(0), - trk_dxyError_(0), - trk_dzError_(0), + dxyError_(0), + dzError_(0), trk_qoverpError_(0), trk_lambdaError_(0), trk_phiError_(0), trk_dsz_(0), trk_dszError_(0), - trk_qoverp_lambda_cov_(0), - trk_qoverp_phi_cov_(0), - trk_qoverp_dxy_cov_(0), - trk_qoverp_dsz_cov_(0), - trk_lambda_phi_cov_(0), - trk_lambda_dxy_cov_(0), - trk_lambda_dsz_cov_(0), - trk_phi_dxy_cov_(0), - trk_phi_dsz_cov_(0), - trk_dxy_dsz_cov_(0), - trk_vx_(0), - trk_vy_(0), - trk_vz_(0), - trk_hitPattern_(reco::HitPattern()), vtxIndx_(0) {} //accessor functions @@ -185,60 +109,34 @@ class ScoutingMuon { float eta() const { return eta_; } float phi() const { return phi_; } float m() const { return m_; } - unsigned int type() const { return type_; } - bool isGlobalMuon() const { return type_ & 1 << 1; } - bool isTrackerMuon() const { return type_ & 1 << 2; } - int charge() const { return charge_; } - float normalizedChi2() const { return normalizedChi2_; } float ecalIso() const { return ecalIso_; } float hcalIso() const { return hcalIso_; } float trackIso() const { return trackIso_; } - int nValidStandAloneMuonHits() const { return nValidStandAloneMuonHits_; } - int nStandAloneMuonMatchedStations() const { return nStandAloneMuonMatchedStations_; } - int nValidRecoMuonHits() const { return nValidRecoMuonHits_; } - int nRecoMuonChambers() const { return nRecoMuonChambers_; } - int nRecoMuonChambersCSCorDT() const { return nRecoMuonChambersCSCorDT_; } - int nRecoMuonMatches() const { return nRecoMuonMatches_; } - int nRecoMuonMatchedStations() const { return nRecoMuonMatchedStations_; } - unsigned int nRecoMuonExpectedMatchedStations() const { return nRecoMuonExpectedMatchedStations_; } - unsigned int recoMuonStationMask() const { return recoMuonStationMask_; } - int nRecoMuonMatchedRPCLayers() const { return nRecoMuonMatchedRPCLayers_; } - unsigned int recoMuonRPClayerMask() const { return recoMuonRPClayerMask_; } + float chi2() const { return chi2_; } + float ndof() const { return ndof_; } + int charge() const { return charge_; } + float dxy() const { return dxy_; } + float dz() const { return dz_; } + int nValidMuonHits() const { return nValidMuonHits_; } int nValidPixelHits() const { return nValidPixelHits_; } - int nValidStripHits() const { return nValidStripHits_; } - int nPixelLayersWithMeasurement() const { return nPixelLayersWithMeasurement_; } + int nMatchedStations() const { return nMatchedStations_; } int nTrackerLayersWithMeasurement() const { return nTrackerLayersWithMeasurement_; } - float trk_chi2() const { return trk_chi2_; } - float trk_ndof() const { return trk_ndof_; } - float trk_dxy() const { return trk_dxy_; } - float trk_dz() const { return trk_dz_; } + int type() const { return type_; } + bool isGlobalMuon() const { return type_ & 1 << 1; } + bool isTrackerMuon() const { return type_ & 1 << 2; } + int nValidStripHits() const { return nValidStripHits_; } float trk_qoverp() const { return trk_qoverp_; } float trk_lambda() const { return trk_lambda_; } float trk_pt() const { return trk_pt_; } float trk_phi() const { return trk_phi_; } float trk_eta() const { return trk_eta_; } - float trk_dxyError() const { return trk_dxyError_; } - float trk_dzError() const { return trk_dzError_; } + float dxyError() const { return dxyError_; } + float dzError() const { return dzError_; } float trk_qoverpError() const { return trk_qoverpError_; } float trk_lambdaError() const { return trk_lambdaError_; } float trk_phiError() const { return trk_phiError_; } float trk_dsz() const { return trk_dsz_; } float trk_dszError() const { return trk_dszError_; } - //add off-diagonal covariance matrix parameter, the above "Error" variables correspond to the diagonal, enum for Cov matrix (qoverp, lambda, phi, dxy, dsz), see https://github.com/cms-sw/cmssw/blob/CMSSW_11_2_X/DataFormats/TrackReco/src/TrackBase.cc for details - float trk_qoverp_lambda_cov() const { return trk_qoverp_lambda_cov_; } - float trk_qoverp_phi_cov() const { return trk_qoverp_phi_cov_; } - float trk_qoverp_dxy_cov() const { return trk_qoverp_dxy_cov_; } - float trk_qoverp_dsz_cov() const { return trk_qoverp_dsz_cov_; } - float trk_lambda_phi_cov() const { return trk_lambda_phi_cov_; } - float trk_lambda_dxy_cov() const { return trk_lambda_dxy_cov_; } - float trk_lambda_dsz_cov() const { return trk_lambda_dsz_cov_; } - float trk_phi_dxy_cov() const { return trk_phi_dxy_cov_; } - float trk_phi_dsz_cov() const { return trk_phi_dsz_cov_; } - float trk_dxy_dsz_cov() const { return trk_dxy_dsz_cov_; } - float trk_vx() const { return trk_vx_; } - float trk_vy() const { return trk_vy_; } - float trk_vz() const { return trk_vz_; } - reco::HitPattern trk_hitPattern() const { return trk_hitPattern_; } std::vector vtxIndx() const { return vtxIndx_; } private: @@ -246,57 +144,32 @@ class ScoutingMuon { float eta_; float phi_; float m_; - unsigned int type_; - int charge_; - float normalizedChi2_; float ecalIso_; float hcalIso_; float trackIso_; - int nValidStandAloneMuonHits_; - int nStandAloneMuonMatchedStations_; - int nValidRecoMuonHits_; - int nRecoMuonChambers_; - int nRecoMuonChambersCSCorDT_; - int nRecoMuonMatches_; - int nRecoMuonMatchedStations_; - unsigned int nRecoMuonExpectedMatchedStations_; - unsigned int recoMuonStationMask_; - int nRecoMuonMatchedRPCLayers_; - unsigned int recoMuonRPClayerMask_; + float chi2_; + float ndof_; + int charge_; + float dxy_; + float dz_; + int nValidMuonHits_; int nValidPixelHits_; - int nValidStripHits_; - int nPixelLayersWithMeasurement_; + int nMatchedStations_; int nTrackerLayersWithMeasurement_; - float trk_chi2_; - float trk_ndof_; - float trk_dxy_; - float trk_dz_; + int type_; + int nValidStripHits_; float trk_qoverp_; float trk_lambda_; float trk_pt_; float trk_phi_; float trk_eta_; - float trk_dxyError_; - float trk_dzError_; + float dxyError_; + float dzError_; float trk_qoverpError_; float trk_lambdaError_; float trk_phiError_; float trk_dsz_; float trk_dszError_; - float trk_qoverp_lambda_cov_; - float trk_qoverp_phi_cov_; - float trk_qoverp_dxy_cov_; - float trk_qoverp_dsz_cov_; - float trk_lambda_phi_cov_; - float trk_lambda_dxy_cov_; - float trk_lambda_dsz_cov_; - float trk_phi_dxy_cov_; - float trk_phi_dsz_cov_; - float trk_dxy_dsz_cov_; - float trk_vx_; - float trk_vy_; - float trk_vz_; - reco::HitPattern trk_hitPattern_; std::vector vtxIndx_; }; diff --git a/DataFormats/Scouting/interface/ScoutingPhoton.h b/DataFormats/Scouting/interface/ScoutingPhoton.h index 220122efe653c..31afd7302bd8f 100644 --- a/DataFormats/Scouting/interface/ScoutingPhoton.h +++ b/DataFormats/Scouting/interface/ScoutingPhoton.h @@ -8,20 +8,8 @@ class ScoutingPhoton { public: //constructor with values for all data fields - ScoutingPhoton(float pt, - float eta, - float phi, - float m, - float sigmaIetaIeta, - float hOverE, - float ecalIso, - float hcalIso, - float trkIso, - float r9, - float sMin, - float sMaj, - std::vector energyMatrix, - std::vector timingMatrix) + ScoutingPhoton( + float pt, float eta, float phi, float m, float sigmaIetaIeta, float hOverE, float ecalIso, float hcalIso) : pt_(pt), eta_(eta), phi_(phi), @@ -29,29 +17,9 @@ class ScoutingPhoton { sigmaIetaIeta_(sigmaIetaIeta), hOverE_(hOverE), ecalIso_(ecalIso), - hcalIso_(hcalIso), - trkIso_(trkIso), - r9_(r9), - sMin_(sMin), - sMaj_(sMaj), - energyMatrix_(std::move(energyMatrix)), - timingMatrix_(std::move(timingMatrix)) {} + hcalIso_(hcalIso) {} //default constructor - ScoutingPhoton() - : pt_(0), - eta_(0), - phi_(0), - m_(0), - sigmaIetaIeta_(0), - hOverE_(0), - ecalIso_(0), - hcalIso_(0), - trkIso_(0), - r9_(0), - sMin_(0), - sMaj_(0), - energyMatrix_(0), - timingMatrix_(0) {} + ScoutingPhoton() : pt_(0), eta_(0), phi_(0), m_(0), sigmaIetaIeta_(0), hOverE_(0), ecalIso_(0), hcalIso_(0) {} //accessor functions float pt() const { return pt_; } @@ -62,12 +30,6 @@ class ScoutingPhoton { float hOverE() const { return hOverE_; } float ecalIso() const { return ecalIso_; } float hcalIso() const { return hcalIso_; } - float trkIso() const { return trkIso_; } - float r9() const { return r9_; } - float sMin() const { return sMin_; } - float sMaj() const { return sMaj_; } - std::vector energyMatrix() const { return energyMatrix_; } - std::vector timingMatrix() const { return timingMatrix_; } private: float pt_; @@ -78,12 +40,6 @@ class ScoutingPhoton { float hOverE_; float ecalIso_; float hcalIso_; - float trkIso_; - float r9_; - float sMin_; - float sMaj_; - std::vector energyMatrix_; - std::vector timingMatrix_; }; typedef std::vector ScoutingPhotonCollection; diff --git a/DataFormats/Scouting/interface/ScoutingTrack.h b/DataFormats/Scouting/interface/ScoutingTrack.h index 87e6830b4272d..1d11cb4931392 100644 --- a/DataFormats/Scouting/interface/ScoutingTrack.h +++ b/DataFormats/Scouting/interface/ScoutingTrack.h @@ -26,21 +26,7 @@ class ScoutingTrack { float tk_lambda_Error, float tk_phi_Error, float tk_dsz, - float tk_dsz_Error, - float tk_qoverp_lambda_cov, - float tk_qoverp_phi_cov, - float tk_qoverp_dxy_cov, - float tk_qoverp_dsz_cov, - float tk_lambda_phi_cov, - float tk_lambda_dxy_cov, - float tk_lambda_dsz_cov, - float tk_phi_dxy_cov, - float tk_phi_dsz_cov, - float tk_dxy_dsz_cov, - int tk_vtxInd, - float tk_vx, - float tk_vy, - float tk_vz) + float tk_dsz_Error) : tk_pt_(tk_pt), tk_eta_(tk_eta), tk_phi_(tk_phi), @@ -60,21 +46,7 @@ class ScoutingTrack { tk_lambda_Error_(tk_lambda_Error), tk_phi_Error_(tk_phi_Error), tk_dsz_(tk_dsz), - tk_dsz_Error_(tk_dsz_Error), - tk_qoverp_lambda_cov_(tk_qoverp_lambda_cov), - tk_qoverp_phi_cov_(tk_qoverp_phi_cov), - tk_qoverp_dxy_cov_(tk_qoverp_dxy_cov), - tk_qoverp_dsz_cov_(tk_qoverp_dsz_cov), - tk_lambda_phi_cov_(tk_lambda_phi_cov), - tk_lambda_dxy_cov_(tk_lambda_dxy_cov), - tk_lambda_dsz_cov_(tk_lambda_dsz_cov), - tk_phi_dxy_cov_(tk_phi_dxy_cov), - tk_phi_dsz_cov_(tk_phi_dsz_cov), - tk_dxy_dsz_cov_(tk_dxy_dsz_cov), - tk_vtxInd_(tk_vtxInd), - tk_vx_(tk_vx), - tk_vy_(tk_vy), - tk_vz_(tk_vz) {} + tk_dsz_Error_(tk_dsz_Error) {} //default constructor ScoutingTrack() : tk_pt_(0), @@ -96,21 +68,7 @@ class ScoutingTrack { tk_lambda_Error_(0), tk_phi_Error_(0), tk_dsz_(0), - tk_dsz_Error_(0), - tk_qoverp_lambda_cov_(0), - tk_qoverp_phi_cov_(0), - tk_qoverp_dxy_cov_(0), - tk_qoverp_dsz_cov_(0), - tk_lambda_phi_cov_(0), - tk_lambda_dxy_cov_(0), - tk_lambda_dsz_cov_(0), - tk_phi_dxy_cov_(0), - tk_phi_dsz_cov_(0), - tk_dxy_dsz_cov_(0), - tk_vtxInd_(0), - tk_vx_(0), - tk_vy_(0), - tk_vz_(0) {} + tk_dsz_Error_(0) {} //accessor functions float tk_pt() const { return tk_pt_; } @@ -133,21 +91,6 @@ class ScoutingTrack { float tk_phi_Error() const { return tk_phi_Error_; } float tk_dsz() const { return tk_dsz_; } float tk_dsz_Error() const { return tk_dsz_Error_; } - //add off-diagonal covariance matrix parameter, the above "Error" variables correspond to the diagonal, enum for Cov matrix (qoverp, lambda, phi, dxy, dsz), see https://github.com/cms-sw/cmssw/blob/CMSSW_11_2_X/DataFormats/TrackReco/src/TrackBase.cc for details - float tk_qoverp_lambda_cov() const { return tk_qoverp_lambda_cov_; } - float tk_qoverp_phi_cov() const { return tk_qoverp_phi_cov_; } - float tk_qoverp_dxy_cov() const { return tk_qoverp_dxy_cov_; } - float tk_qoverp_dsz_cov() const { return tk_qoverp_dsz_cov_; } - float tk_lambda_phi_cov() const { return tk_lambda_phi_cov_; } - float tk_lambda_dxy_cov() const { return tk_lambda_dxy_cov_; } - float tk_lambda_dsz_cov() const { return tk_lambda_dsz_cov_; } - float tk_phi_dxy_cov() const { return tk_phi_dxy_cov_; } - float tk_phi_dsz_cov() const { return tk_phi_dsz_cov_; } - float tk_dxy_dsz_cov() const { return tk_dxy_dsz_cov_; } - int tk_vtxInd() const { return tk_vtxInd_; } - float tk_vx() const { return tk_vx_; } - float tk_vy() const { return tk_vy_; } - float tk_vz() const { return tk_vz_; } private: float tk_pt_; @@ -170,20 +113,6 @@ class ScoutingTrack { float tk_phi_Error_; float tk_dsz_; float tk_dsz_Error_; - float tk_qoverp_lambda_cov_; - float tk_qoverp_phi_cov_; - float tk_qoverp_dxy_cov_; - float tk_qoverp_dsz_cov_; - float tk_lambda_phi_cov_; - float tk_lambda_dxy_cov_; - float tk_lambda_dsz_cov_; - float tk_phi_dxy_cov_; - float tk_phi_dsz_cov_; - float tk_dxy_dsz_cov_; - int tk_vtxInd_; - float tk_vx_; - float tk_vy_; - float tk_vz_; }; typedef std::vector ScoutingTrackCollection; diff --git a/DataFormats/Scouting/src/classes.h b/DataFormats/Scouting/src/classes.h index 9e3ff39e7ea89..1243b1da0bf7e 100644 --- a/DataFormats/Scouting/src/classes.h +++ b/DataFormats/Scouting/src/classes.h @@ -6,5 +6,13 @@ #include "DataFormats/Scouting/interface/ScoutingElectron.h" #include "DataFormats/Scouting/interface/ScoutingMuon.h" #include "DataFormats/Scouting/interface/ScoutingPhoton.h" +#include "DataFormats/Scouting/interface/Run3ScoutingCaloJet.h" +#include "DataFormats/Scouting/interface/Run3ScoutingPFJet.h" +#include "DataFormats/Scouting/interface/Run3ScoutingParticle.h" +#include "DataFormats/Scouting/interface/Run3ScoutingTrack.h" +#include "DataFormats/Scouting/interface/Run3ScoutingVertex.h" +#include "DataFormats/Scouting/interface/Run3ScoutingElectron.h" +#include "DataFormats/Scouting/interface/Run3ScoutingMuon.h" +#include "DataFormats/Scouting/interface/Run3ScoutingPhoton.h" #include "DataFormats/Common/interface/Wrapper.h" #include "DataFormats/Common/interface/Ref.h" diff --git a/DataFormats/Scouting/src/classes_def.xml b/DataFormats/Scouting/src/classes_def.xml index 80074cf4f7932..e5810d434b250 100755 --- a/DataFormats/Scouting/src/classes_def.xml +++ b/DataFormats/Scouting/src/classes_def.xml @@ -14,50 +14,43 @@ - + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -66,6 +59,14 @@ + + + + + + + + @@ -74,4 +75,12 @@ + + + + + + + + diff --git a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc index dd68f5b2833fb..3dcb084d9d361 100644 --- a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc +++ b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc @@ -5,7 +5,7 @@ // /**\class HLTScoutingEgammaProducer HLTScoutingEgammaProducer.cc HLTrigger/Egamma/src/HLTScoutingEgammaProducer.cc -Description: Producer for ScoutingElectron and ScoutingPhoton +Description: Producer for Run3ScoutingElectron and Run3ScoutingPhoton */ // @@ -66,8 +66,8 @@ HLTScoutingEgammaProducer::HLTScoutingEgammaProducer(const edm::ParameterSet& iC ecalRechitEB_(consumes(iConfig.getParameter("ecalRechitEB"))), ecalRechitEE_(consumes(iConfig.getParameter("ecalRechitEE"))) { //register products - produces(); - produces(); + produces(); + produces(); } HLTScoutingEgammaProducer::~HLTScoutingEgammaProducer() = default; @@ -76,8 +76,8 @@ HLTScoutingEgammaProducer::~HLTScoutingEgammaProducer() = default; void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm::EventSetup const& setup) const { using namespace edm; - std::unique_ptr outElectrons(new ScoutingElectronCollection()); - std::unique_ptr outPhotons(new ScoutingPhotonCollection()); + std::unique_ptr outElectrons(new Run3ScoutingElectronCollection()); + std::unique_ptr outPhotons(new Run3ScoutingPhotonCollection()); // Get RecoEcalCandidate Handle EgammaCandidateCollection; @@ -187,8 +187,6 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e if (candidateRef.isNull() && !candidateRef.isAvailable()) continue; - if ((*HoverEMap)[candidateRef] > egammaHoverECut) - continue; if (candidate.pt() < egammaPtCut) continue; if (fabs(candidate.eta()) > egammaEtaCut) @@ -208,6 +206,8 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e float sMin = moments.sMin; float sMaj = moments.sMaj; + unsigned int seedId = (*SCseed).seed(); + std::vector mDetIds = EcalClusterTools::matrixDetId((topology), (*SCseed).seed(), rechitMatrixSize); std::vector mEnergies; std::vector mTimes; @@ -232,6 +232,10 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e } } + float HoE = 999.; + if (candidate.superCluster()->energy() != 0.) + HoE = (*HoverEMap)[candidateRef] / candidate.superCluster()->energy(); + float d0 = 0.0; float dz = 0.0; int charge = -999; @@ -252,13 +256,14 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e candidate.phi(), candidate.mass(), (*SigmaIEtaIEtaMap)[candidateRef], - (*HoverEMap)[candidateRef], + HoE, (*EcalPFClusterIsoMap)[candidateRef], (*HcalPFClusterIsoMap)[candidateRef], 0., (*R9Map)[candidateRef], sMin, sMaj, + seedId, mEnergies, mTimes); //read for(ieta){for(iphi){}} } else { // Candidate is a scouting electron @@ -271,7 +276,7 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e (*DetaMap)[candidateRef], (*DphiMap)[candidateRef], (*SigmaIEtaIEtaMap)[candidateRef], - (*HoverEMap)[candidateRef], + HoE, (*OneOEMinusOneOPMap)[candidateRef], (*MissingHitsMap)[candidateRef], charge, @@ -281,6 +286,7 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e (*R9Map)[candidateRef], sMin, sMaj, + seedId, mEnergies, mTimes); //read for(ieta){for(iphi){}} } @@ -299,7 +305,7 @@ void HLTScoutingEgammaProducer::fillDescriptions(edm::ConfigurationDescriptions& desc.add("SigmaIEtaIEtaMap", edm::InputTag("hltEgammaClusterShape:sigmaIEtaIEta5x5")); desc.add("r9Map", edm::InputTag("hltEgammaR9ID:r95x5")); desc.add("HoverEMap", edm::InputTag("hltEgammaHoverE")); - desc.add("DetaMap", edm::InputTag("hltEgammaGsfTrackVars:Deta")); + desc.add("DetaMap", edm::InputTag("hltEgammaGsfTrackVars:DetaSeed")); desc.add("DphiMap", edm::InputTag("hltEgammaGsfTrackVars:Dphi")); desc.add("MissingHitsMap", edm::InputTag("hltEgammaGsfTrackVars:MissingHits")); desc.add("OneOEMinusOneOPMap", edm::InputTag("hltEgammaGsfTrackVars:OneOESuperMinusOneOP")); diff --git a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.h b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.h index 5ee1fc97ba9db..0ce58ad785728 100644 --- a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.h +++ b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.h @@ -38,8 +38,8 @@ Description: Producer for ScoutingElectron and ScoutingPhoton #include "DataFormats/RecoCandidate/interface/RecoEcalCandidate.h" #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" -#include "DataFormats/Scouting/interface/ScoutingElectron.h" -#include "DataFormats/Scouting/interface/ScoutingPhoton.h" +#include "DataFormats/Scouting/interface/Run3ScoutingElectron.h" +#include "DataFormats/Scouting/interface/Run3ScoutingPhoton.h" #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h" #include "RecoEcal/EgammaCoreTools/interface/EcalClusterLazyTools.h" diff --git a/HLTrigger/JetMET/plugins/HLTScoutingCaloProducer.cc b/HLTrigger/JetMET/plugins/HLTScoutingCaloProducer.cc index 52cce8433cf2a..2567b77386bb7 100644 --- a/HLTrigger/JetMET/plugins/HLTScoutingCaloProducer.cc +++ b/HLTrigger/JetMET/plugins/HLTScoutingCaloProducer.cc @@ -5,7 +5,7 @@ // /**\class HLTScoutingCaloProducer HLTScoutingCaloProducer.cc HLTrigger/JetMET/plugins/HLTScoutingCaloProducer.cc -Description: Producer for ScoutingCaloJets from reco::CaloJet objects +Description: Producer for Run3ScoutingCaloJets from reco::CaloJet objects */ // @@ -31,8 +31,8 @@ Description: Producer for ScoutingCaloJets from reco::CaloJet objects #include "DataFormats/METReco/interface/CaloMET.h" #include "DataFormats/BTauReco/interface/JetTag.h" -#include "DataFormats/Scouting/interface/ScoutingCaloJet.h" -#include "DataFormats/Scouting/interface/ScoutingVertex.h" +#include "DataFormats/Scouting/interface/Run3ScoutingCaloJet.h" +#include "DataFormats/Scouting/interface/Run3ScoutingVertex.h" #include "DataFormats/Math/interface/deltaR.h" @@ -79,7 +79,7 @@ HLTScoutingCaloProducer::HLTScoutingCaloProducer(const edm::ParameterSet& iConfi doJetBTags(iConfig.getParameter("doJetBTags")), doJetIDTags(iConfig.getParameter("doJetIDTags")) { //register products - produces(); + produces(); produces("rho"); produces("caloMetPt"); produces("caloMetPhi"); @@ -93,7 +93,7 @@ void HLTScoutingCaloProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm //get calo jets Handle caloJetCollection; - std::unique_ptr outCaloJets(new ScoutingCaloJetCollection()); + std::unique_ptr outCaloJets(new Run3ScoutingCaloJetCollection()); if (iEvent.getByToken(caloJetCollection_, caloJetCollection)) { //get jet tags Handle caloJetBTagCollection; @@ -156,7 +156,7 @@ void HLTScoutingCaloProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm Handle rho; std::unique_ptr outRho(new double(-999)); if (iEvent.getByToken(rho_, rho)) { - outRho.reset(new double(*rho)); + outRho = std::make_unique(*rho); } //get MET @@ -164,8 +164,8 @@ void HLTScoutingCaloProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm std::unique_ptr outMetPt(new double(-999)); std::unique_ptr outMetPhi(new double(-999)); if (doMet && iEvent.getByToken(metCollection_, metCollection)) { - outMetPt.reset(new double(metCollection->front().pt())); - outMetPhi.reset(new double(metCollection->front().phi())); + outMetPt = std::make_unique(metCollection->front().pt()); + outMetPhi = std::make_unique(metCollection->front().phi()); } //put output diff --git a/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc b/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc index bbe381a10af34..2d4ed3cef1707 100644 --- a/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc +++ b/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc @@ -33,9 +33,9 @@ Description: Producer for ScoutingPFJets from reco::PFJet objects, ScoutingVerte #include "DataFormats/VertexReco/interface/VertexFwd.h" #include "DataFormats/BTauReco/interface/JetTag.h" -#include "DataFormats/Scouting/interface/ScoutingPFJet.h" -#include "DataFormats/Scouting/interface/ScoutingParticle.h" -#include "DataFormats/Scouting/interface/ScoutingVertex.h" +#include "DataFormats/Scouting/interface/Run3ScoutingPFJet.h" +#include "DataFormats/Scouting/interface/Run3ScoutingParticle.h" +#include "DataFormats/Scouting/interface/Run3ScoutingVertex.h" #include "DataFormats/Math/interface/deltaR.h" @@ -89,8 +89,8 @@ HLTScoutingPFProducer::HLTScoutingPFProducer(const edm::ParameterSet &iConfig) doCandidates(iConfig.getParameter("doCandidates")), doMet(iConfig.getParameter("doMet")) { //register products - produces(); - produces(); + produces(); + produces(); produces("rho"); produces("pfMetPt"); produces("pfMetPhi"); @@ -104,7 +104,7 @@ void HLTScoutingPFProducer::produce(edm::StreamID sid, edm::Event &iEvent, edm:: //get vertices Handle vertexCollection; - std::unique_ptr outVertices(new ScoutingVertexCollection()); + std::unique_ptr outVertices(new Run3ScoutingVertexCollection()); if (iEvent.getByToken(vertexCollection_, vertexCollection)) { for (auto &vtx : *vertexCollection) { outVertices->emplace_back(vtx.x(), @@ -138,7 +138,7 @@ void HLTScoutingPFProducer::produce(edm::StreamID sid, edm::Event &iEvent, edm:: //get PF candidates Handle pfCandidateCollection; - std::unique_ptr outPFCandidates(new ScoutingParticleCollection()); + std::unique_ptr outPFCandidates(new Run3ScoutingParticleCollection()); if (doCandidates && iEvent.getByToken(pfCandidateCollection_, pfCandidateCollection)) { for (auto &cand : *pfCandidateCollection) { if (cand.pt() > pfCandidatePtCut && std::abs(cand.eta()) < pfCandidateEtaCut) { @@ -168,7 +168,7 @@ void HLTScoutingPFProducer::produce(edm::StreamID sid, edm::Event &iEvent, edm:: //get PF jets Handle pfJetCollection; - std::unique_ptr outPFJets(new ScoutingPFJetCollection()); + std::unique_ptr outPFJets(new Run3ScoutingPFJetCollection()); if (iEvent.getByToken(pfJetCollection_, pfJetCollection)) { //get PF jet tags Handle pfJetTagCollection; diff --git a/HLTrigger/JetMET/plugins/HLTScoutingPrimaryVertexProducer.cc b/HLTrigger/JetMET/plugins/HLTScoutingPrimaryVertexProducer.cc index 3f87620924e76..abd787a463bb1 100644 --- a/HLTrigger/JetMET/plugins/HLTScoutingPrimaryVertexProducer.cc +++ b/HLTrigger/JetMET/plugins/HLTScoutingPrimaryVertexProducer.cc @@ -14,7 +14,7 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "DataFormats/VertexReco/interface/Vertex.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" -#include "DataFormats/Scouting/interface/ScoutingVertex.h" +#include "DataFormats/Scouting/interface/Run3ScoutingVertex.h" #include "DataFormats/Math/interface/deltaR.h" class HLTScoutingPrimaryVertexProducer : public edm::global::EDProducer<> { @@ -35,7 +35,7 @@ class HLTScoutingPrimaryVertexProducer : public edm::global::EDProducer<> { HLTScoutingPrimaryVertexProducer::HLTScoutingPrimaryVertexProducer(const edm::ParameterSet& iConfig) : vertexCollection_(consumes(iConfig.getParameter("vertexCollection"))) { //register products - produces("primaryVtx"); + produces("primaryVtx"); } HLTScoutingPrimaryVertexProducer::~HLTScoutingPrimaryVertexProducer() = default; @@ -49,7 +49,7 @@ void HLTScoutingPrimaryVertexProducer::produce(edm::StreamID sid, //get vertices Handle vertexCollection; - std::unique_ptr outVertices(new ScoutingVertexCollection()); + std::unique_ptr outVertices(new Run3ScoutingVertexCollection()); if (iEvent.getByToken(vertexCollection_, vertexCollection)) { for (auto& vtx : *vertexCollection) { diff --git a/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc b/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc index 7c229f0c13540..f3bca0c645cb5 100644 --- a/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc +++ b/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc @@ -36,8 +36,8 @@ HLTScoutingMuonProducer::HLTScoutingMuonProducer(const edm::ParameterSet& iConfi muonEtaCut(iConfig.getParameter("muonEtaCut")), minVtxProbCut(iConfig.getParameter("minVtxProbCut")) { //register products - produces(); - produces("displacedVtx"); + produces(); + produces("displacedVtx"); } HLTScoutingMuonProducer::~HLTScoutingMuonProducer() = default; @@ -46,8 +46,8 @@ HLTScoutingMuonProducer::~HLTScoutingMuonProducer() = default; void HLTScoutingMuonProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm::EventSetup const& setup) const { using namespace edm; - std::unique_ptr outMuons(new ScoutingMuonCollection()); - std::unique_ptr dispVertices(new ScoutingVertexCollection()); + std::unique_ptr outMuons(new Run3ScoutingMuonCollection()); + std::unique_ptr dispVertices(new Run3ScoutingVertexCollection()); // Get RecoChargedCandidate Handle ChargedCandidateCollection; diff --git a/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.h b/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.h index 1d13f52240115..b1c8f3e199c82 100644 --- a/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.h +++ b/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.h @@ -8,7 +8,7 @@ // /**\class HLTScoutingMuonProducer HLTScoutingMuonProducer.h HLTScoutingMuonProducer.h -Description: Producer for ScoutingMuon +Description: Producer for Run3ScoutingMuon */ // @@ -39,8 +39,8 @@ Description: Producer for ScoutingMuon #include "DataFormats/VertexReco/interface/Vertex.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" -#include "DataFormats/Scouting/interface/ScoutingMuon.h" -#include "DataFormats/Scouting/interface/ScoutingVertex.h" +#include "DataFormats/Scouting/interface/Run3ScoutingMuon.h" +#include "DataFormats/Scouting/interface/Run3ScoutingVertex.h" #include "DataFormats/MuonReco/interface/MuonTrackLinks.h" #include "DataFormats/MuonReco/interface/Muon.h" diff --git a/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc b/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc index f614e8245385e..e285cdd8f60fa 100644 --- a/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc +++ b/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc @@ -4,7 +4,7 @@ // Class: HLTScoutingTrackProducer // /**\class HLTScoutingTrackProducer HLTScoutingTrackProducer.cc HLTScoutingTrackProducer.cc -Description: Producer for Scouting Tracks +Description: Producer for Run3 Scouting Tracks */ // @@ -25,9 +25,9 @@ Description: Producer for Scouting Tracks #include "DataFormats/TrackReco/interface/TrackBase.h" #include "DataFormats/VertexReco/interface/Vertex.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" -#include "DataFormats/Scouting/interface/ScoutingMuon.h" -#include "DataFormats/Scouting/interface/ScoutingTrack.h" -#include "DataFormats/Scouting/interface/ScoutingVertex.h" +#include "DataFormats/Scouting/interface/Run3ScoutingMuon.h" +#include "DataFormats/Scouting/interface/Run3ScoutingTrack.h" +#include "DataFormats/Scouting/interface/Run3ScoutingVertex.h" #include "DataFormats/MuonReco/interface/MuonTrackLinks.h" #include "DataFormats/MuonReco/interface/MuonFwd.h" #include "DataFormats/Math/interface/libminifloat.h" @@ -58,7 +58,7 @@ HLTScoutingTrackProducer::HLTScoutingTrackProducer(const edm::ParameterSet& iCon mantissaPrecision(iConfig.getParameter("mantissaPrecision")), vtxMinDist(iConfig.getParameter("vtxMinDist")) { //register products - produces(); + produces(); } HLTScoutingTrackProducer::~HLTScoutingTrackProducer() = default; @@ -67,7 +67,7 @@ HLTScoutingTrackProducer::~HLTScoutingTrackProducer() = default; void HLTScoutingTrackProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm::EventSetup const& setup) const { using namespace edm; - std::unique_ptr outTrack(new ScoutingTrackCollection()); + std::unique_ptr outTrack(new Run3ScoutingTrackCollection()); Handle otherTrackCollection; Handle vertexCollection; From 3d48250e13e8c8014f857d42ff294de96540cbc2 Mon Sep 17 00:00:00 2001 From: Jakob Date: Sun, 22 Nov 2020 20:50:47 +0100 Subject: [PATCH 4/6] synchronise with #31962 v2 --- .../Scouting/interface/Run3ScoutingElectron.h | 8 +++----- .../Scouting/interface/Run3ScoutingMuon.h | 5 ++--- .../Scouting/interface/Run3ScoutingPFJet.h | 7 +++---- .../Scouting/interface/Run3ScoutingPhoton.h | 4 ++-- .../Scouting/interface/Run3ScoutingTrack.h | 1 + .../Egamma/plugins/HLTScoutingEgammaProducer.cc | 16 +++++++++------- .../JetMET/plugins/HLTScoutingPFProducer.cc | 2 +- 7 files changed, 21 insertions(+), 22 deletions(-) diff --git a/DataFormats/Scouting/interface/Run3ScoutingElectron.h b/DataFormats/Scouting/interface/Run3ScoutingElectron.h index 5f68272818bd0..d973b3f235370 100644 --- a/DataFormats/Scouting/interface/Run3ScoutingElectron.h +++ b/DataFormats/Scouting/interface/Run3ScoutingElectron.h @@ -73,9 +73,7 @@ class Run3ScoutingElectron { r9_(0), sMin_(0), sMaj_(0), - seedId_(0), - energyMatrix_(0), - timingMatrix_(0) {} + seedId_(0) {} //accessor functions float pt() const { return pt_; } @@ -98,8 +96,8 @@ class Run3ScoutingElectron { float sMin() const { return sMin_; } float sMaj() const { return sMaj_; } unsigned int seedId() const { return seedId_; } - std::vector energyMatrix() const { return energyMatrix_; } - std::vector timingMatrix() const { return timingMatrix_; } + std::vector const& energyMatrix() const { return energyMatrix_; } + std::vector const& timingMatrix() const { return timingMatrix_; } private: float pt_; diff --git a/DataFormats/Scouting/interface/Run3ScoutingMuon.h b/DataFormats/Scouting/interface/Run3ScoutingMuon.h index b9375e7e91e57..85e67d553a16e 100644 --- a/DataFormats/Scouting/interface/Run3ScoutingMuon.h +++ b/DataFormats/Scouting/interface/Run3ScoutingMuon.h @@ -177,7 +177,6 @@ class Run3ScoutingMuon { trk_vx_(0), trk_vy_(0), trk_vz_(0), - trk_hitPattern_(reco::HitPattern()), vtxIndx_(0) {} //accessor functions @@ -238,8 +237,8 @@ class Run3ScoutingMuon { float trk_vx() const { return trk_vx_; } float trk_vy() const { return trk_vy_; } float trk_vz() const { return trk_vz_; } - reco::HitPattern trk_hitPattern() const { return trk_hitPattern_; } - std::vector vtxIndx() const { return vtxIndx_; } + reco::HitPattern const& trk_hitPattern() const { return trk_hitPattern_; } + std::vector const& vtxIndx() const { return vtxIndx_; } private: float pt_; diff --git a/DataFormats/Scouting/interface/Run3ScoutingPFJet.h b/DataFormats/Scouting/interface/Run3ScoutingPFJet.h index 08758ee41238a..3ca6f3e0b9551 100644 --- a/DataFormats/Scouting/interface/Run3ScoutingPFJet.h +++ b/DataFormats/Scouting/interface/Run3ScoutingPFJet.h @@ -53,7 +53,7 @@ class Run3ScoutingPFJet { HOEnergy_(HOEnergy), csv_(csv), mvaDiscriminator_(mvaDiscriminator), - constituents_(constituents) {} + constituents_(std::move(constituents)) {} //default constructor Run3ScoutingPFJet() : pt_(0), @@ -77,8 +77,7 @@ class Run3ScoutingPFJet { HFEMMultiplicity_(0), HOEnergy_(0), csv_(0), - mvaDiscriminator_(0), - constituents_(std::vector()) {} + mvaDiscriminator_(0) {} //accessor functions float pt() const { return pt_; } @@ -103,7 +102,7 @@ class Run3ScoutingPFJet { float HOEnergy() const { return HOEnergy_; } float csv() const { return csv_; } float mvaDiscriminator() const { return mvaDiscriminator_; } - std::vector constituents() const { return constituents_; } + std::vector const& constituents() const { return constituents_; } private: float pt_; diff --git a/DataFormats/Scouting/interface/Run3ScoutingPhoton.h b/DataFormats/Scouting/interface/Run3ScoutingPhoton.h index 43beecc981d4b..f0e4971e06c81 100644 --- a/DataFormats/Scouting/interface/Run3ScoutingPhoton.h +++ b/DataFormats/Scouting/interface/Run3ScoutingPhoton.h @@ -70,8 +70,8 @@ class Run3ScoutingPhoton { float sMin() const { return sMin_; } float sMaj() const { return sMaj_; } float seedId() const { return seedId_; } - std::vector energyMatrix() const { return energyMatrix_; } - std::vector timingMatrix() const { return timingMatrix_; } + std::vector const& energyMatrix() const { return energyMatrix_; } + std::vector const& timingMatrix() const { return timingMatrix_; } private: float pt_; diff --git a/DataFormats/Scouting/interface/Run3ScoutingTrack.h b/DataFormats/Scouting/interface/Run3ScoutingTrack.h index 66153beca5fec..1e310d65b7582 100644 --- a/DataFormats/Scouting/interface/Run3ScoutingTrack.h +++ b/DataFormats/Scouting/interface/Run3ScoutingTrack.h @@ -4,6 +4,7 @@ #include //class for holding track information, for use in data scouting +// IMPORTANT: the content of this class should be changed only in backwards compatible ways! class Run3ScoutingTrack { public: //constructor with values for all data fields diff --git a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc index 3dcb084d9d361..999935fa90d36 100644 --- a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc +++ b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc @@ -76,8 +76,8 @@ HLTScoutingEgammaProducer::~HLTScoutingEgammaProducer() = default; void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm::EventSetup const& setup) const { using namespace edm; - std::unique_ptr outElectrons(new Run3ScoutingElectronCollection()); - std::unique_ptr outPhotons(new Run3ScoutingPhotonCollection()); + auto outElectrons = std::make_unique(); + auto outPhotons = std::make_unique(); // Get RecoEcalCandidate Handle EgammaCandidateCollection; @@ -179,6 +179,12 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e iEvent.getByToken(ecalRechitEB_, rechitsEB); iEvent.getByToken(ecalRechitEE_, rechitsEE); + //const CaloTopology* topology = &setup.getData(topologyToken_); + + edm::ESHandle pTopology; + setup.get().get(pTopology); + const CaloTopology* topology = pTopology.product(); + // Produce electrons and photons int index = 0; for (auto& candidate : *EgammaCandidateCollection) { @@ -192,10 +198,6 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e if (fabs(candidate.eta()) > egammaEtaCut) continue; - edm::ESHandle pTopology; - setup.get().get(pTopology); - const CaloTopology* topology = pTopology.product(); - reco::SuperClusterRef scRef = candidate.superCluster(); if (scRef.isNull() && !scRef.isAvailable()) continue; @@ -316,7 +318,7 @@ void HLTScoutingEgammaProducer::fillDescriptions(edm::ConfigurationDescriptions& desc.add("egammaEtaCut", 2.5); desc.add("egammaHoverECut", 1.0); desc.add("saveRecHitTiming", false); - desc.add("mantissaPrecision", 10); // default float16, switch to 23 for float32 precision + desc.add("mantissaPrecision", 10)->setComment("default float16, change to 23 for float32"); desc.add("rechitMatrixSize", 0); desc.add("ecalRechitEB", edm::InputTag("hltEcalRecHit:EcalRecHitsEB")); desc.add("ecalRechitEE", edm::InputTag("hltEcalRecHit:EcalRecHitsEE")); diff --git a/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc b/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc index 2d4ed3cef1707..51575ae169b54 100644 --- a/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc +++ b/HLTrigger/JetMET/plugins/HLTScoutingPFProducer.cc @@ -263,7 +263,7 @@ void HLTScoutingPFProducer::fillDescriptions(edm::ConfigurationDescriptions &des desc.add("pfJetEtaCut", 3.0); desc.add("pfCandidatePtCut", 0.6); desc.add("pfCandidateEtaCut", 5.0); - desc.add("mantissaPrecision", 10); //default float16, change to 23 for float32 + desc.add("mantissaPrecision", 10)->setComment("default float16, change to 23 for float32"); desc.add("doJetTags", true); desc.add("doCandidates", true); desc.add("doMet", true); From 7cf0cea16fdc5c3efae3b48e272bf357b4879df8 Mon Sep 17 00:00:00 2001 From: Jakob Date: Tue, 24 Nov 2020 16:41:06 +0100 Subject: [PATCH 5/6] removed cout in /HLTScoutingTrackProducer, improved matrix reading for photon rechit energies --- .../plugins/HLTScoutingEgammaProducer.cc | 33 +++++++------------ .../Muon/plugins/HLTScoutingTrackProducer.cc | 2 +- 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc index 999935fa90d36..04425c11d38dc 100644 --- a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc +++ b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc @@ -179,8 +179,6 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e iEvent.getByToken(ecalRechitEB_, rechitsEB); iEvent.getByToken(ecalRechitEE_, rechitsEE); - //const CaloTopology* topology = &setup.getData(topologyToken_); - edm::ESHandle pTopology; setup.get().get(pTopology); const CaloTopology* topology = pTopology.product(); @@ -211,27 +209,18 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e unsigned int seedId = (*SCseed).seed(); std::vector mDetIds = EcalClusterTools::matrixDetId((topology), (*SCseed).seed(), rechitMatrixSize); - std::vector mEnergies; - std::vector mTimes; + int size = pow(2 * rechitMatrixSize + 1, 2); int detSize = mDetIds.size(); - - if (!saveRecHitTiming) - mTimes.push_back(0.); - - for (int i = 0; i < pow(2 * rechitMatrixSize + 1, 2); i++) { - if (i >= detSize) { - mEnergies.push_back(MiniFloatConverter::reduceMantissaToNbitsRounding(0., mantissaPrecision)); - - if (saveRecHitTiming) - mTimes.push_back(MiniFloatConverter::reduceMantissaToNbitsRounding(0., mantissaPrecision)); - } else { - mEnergies.push_back( - MiniFloatConverter::reduceMantissaToNbitsRounding(recHitE(mDetIds.at(i), *rechits), mantissaPrecision)); - if (saveRecHitTiming) - mTimes.push_back( - MiniFloatConverter::reduceMantissaToNbitsRounding(recHitT(mDetIds.at(i), *rechits), mantissaPrecision)); - } + std::vector mEnergies(size, 0.); + std::vector mTimes(size, 0.); + + for (int i = 0; i < detSize; i++) { + mEnergies[i] = + MiniFloatConverter::reduceMantissaToNbitsRounding(recHitE(mDetIds.at(i), *rechits), mantissaPrecision); + if (saveRecHitTiming) + mTimes[i] = + MiniFloatConverter::reduceMantissaToNbitsRounding(recHitT(mDetIds.at(i), *rechits), mantissaPrecision); } float HoE = 999.; @@ -319,7 +308,7 @@ void HLTScoutingEgammaProducer::fillDescriptions(edm::ConfigurationDescriptions& desc.add("egammaHoverECut", 1.0); desc.add("saveRecHitTiming", false); desc.add("mantissaPrecision", 10)->setComment("default float16, change to 23 for float32"); - desc.add("rechitMatrixSize", 0); + desc.add("rechitMatrixSize", 10); desc.add("ecalRechitEB", edm::InputTag("hltEcalRecHit:EcalRecHitsEB")); desc.add("ecalRechitEE", edm::InputTag("hltEcalRecHit:EcalRecHitsEE")); descriptions.add("hltScoutingEgammaProducer", desc); diff --git a/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc b/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc index e285cdd8f60fa..95a4bb35bad9d 100644 --- a/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc +++ b/HLTrigger/Muon/plugins/HLTScoutingTrackProducer.cc @@ -82,7 +82,7 @@ void HLTScoutingTrackProducer::produce(edm::StreamID sid, edm::Event& iEvent, ed if (iEvent.getByToken(vertexCollection_, vertexCollection)) { for (auto& vrt : *vertexCollection) { double min_dist_tmp = pow(trk.dz(vrt.position()), 2); // hltPixelVertices only clustered in Z - std::cout << vrt.position().x() << std::endl; + if (min_dist_tmp < min_dist) { min_dist = min_dist_tmp; vtxInd = vtxIt; From a857a564bb74ca7a38f71d7b6216b5c64227be18 Mon Sep 17 00:00:00 2001 From: Jakob Date: Tue, 24 Nov 2020 18:17:29 +0100 Subject: [PATCH 6/6] scouting egamma matrix size corresponds to size of matrix returned by matrixDetId --- HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc index 04425c11d38dc..1db10bb1d818d 100644 --- a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc +++ b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc @@ -210,10 +210,9 @@ void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event& iEvent, e std::vector mDetIds = EcalClusterTools::matrixDetId((topology), (*SCseed).seed(), rechitMatrixSize); - int size = pow(2 * rechitMatrixSize + 1, 2); int detSize = mDetIds.size(); - std::vector mEnergies(size, 0.); - std::vector mTimes(size, 0.); + std::vector mEnergies(detSize, 0.); + std::vector mTimes(detSize, 0.); for (int i = 0; i < detSize; i++) { mEnergies[i] =