Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-05-23 23:48:27

0001 // -*- C++ -*-
0002 //
0003 // Package:    DQM/HLTEvF
0004 // Class:      ScoutingCollectionMonitor
0005 //
0006 /**\class ScoutingCollectionMonitor ScoutingCollectionMonitor.cc 
0007           DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc
0008 
0009 Description: ScoutingCollectionMonitor is developed to enable monitoring of several scouting objects and comparisons for the NGT demonstrator
0010 It is based on the preexisting work of the scouting group and can be found at git@github.com:CMS-Run3ScoutingTools/Run3ScoutingAnalysisTools.git
0011 
0012 */
0013 //
0014 // Original Author:  Jessica Prendi
0015 //         Created:  Thu, 17 Apr 2025 14:15:08 GMT
0016 //
0017 //
0018 
0019 // system include files
0020 #include <TLorentzVector.h>
0021 #include <cmath>
0022 #include <memory>
0023 #include <vector>
0024 
0025 // user include files
0026 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0027 #include "DataFormats/L1TGlobal/interface/GlobalAlgBlk.h"
0028 #include "DataFormats/OnlineMetaData/interface/OnlineLuminosityRecord.h"
0029 #include "DataFormats/PatCandidates/interface/PackedTriggerPrescales.h"
0030 #include "DataFormats/PatCandidates/interface/TriggerObjectStandAlone.h"
0031 #include "DataFormats/Scouting/interface/Run3ScoutingElectron.h"
0032 #include "DataFormats/Scouting/interface/Run3ScoutingMuon.h"
0033 #include "DataFormats/Scouting/interface/Run3ScoutingPFJet.h"
0034 #include "DataFormats/Scouting/interface/Run3ScoutingParticle.h"
0035 #include "DataFormats/Scouting/interface/Run3ScoutingPhoton.h"
0036 #include "DataFormats/Scouting/interface/Run3ScoutingTrack.h"
0037 #include "DataFormats/Scouting/interface/Run3ScoutingVertex.h"
0038 #include "FWCore/Common/interface/TriggerNames.h"
0039 #include "FWCore/Framework/interface/Event.h"
0040 #include "FWCore/Framework/interface/Frameworkfwd.h"
0041 #include "FWCore/Framework/interface/MakerMacros.h"
0042 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0043 #include "FWCore/Utilities/interface/InputTag.h"
0044 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
0045 #include "HLTrigger/HLTcore/interface/TriggerExpressionData.h"
0046 #include "HLTrigger/HLTcore/interface/TriggerExpressionEvaluator.h"
0047 #include "HLTrigger/HLTcore/interface/TriggerExpressionParser.h"
0048 #include "L1Trigger/L1TGlobal/interface/L1TGlobalUtil.h"
0049 
0050 //
0051 // class declaration
0052 //
0053 
0054 class ScoutingCollectionMonitor : public DQMEDAnalyzer {
0055 public:
0056   explicit ScoutingCollectionMonitor(const edm::ParameterSet&);
0057   ~ScoutingCollectionMonitor() override = default;
0058 
0059   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0060 
0061 private:
0062   void analyze(const edm::Event&, const edm::EventSetup&) override;
0063   void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0064 
0065   template <typename T>
0066   bool getValidHandle(const edm::Event& iEvent,
0067                       const edm::EDGetTokenT<T>& token,
0068                       edm::Handle<T>& handle,
0069                       const std::string& label);
0070 
0071   static inline std::pair<float, float> trk_vtx_offSet(const Run3ScoutingTrack& tk, const Run3ScoutingVertex& vtx) {
0072     const auto pt = tk.tk_pt();
0073     const auto phi = tk.tk_phi();
0074     const auto eta = tk.tk_eta();
0075 
0076     const auto px = pt * std::cos(phi);
0077     const auto py = pt * std::sin(phi);
0078     const auto pz = pt * std::sinh(eta);
0079     const auto pt2 = pt * pt;
0080 
0081     const auto dx = tk.tk_vx() - vtx.x();
0082     const auto dy = tk.tk_vy() - vtx.y();
0083     const auto dz = tk.tk_vz() - vtx.z();
0084 
0085     const auto tk_dxyPV = (-dx * py + dy * px) / pt;
0086     const auto tk_dzPV = dz - (dx * px + dy * py) * pz / pt2;
0087 
0088     return {tk_dxyPV, tk_dzPV};
0089   }
0090 
0091   const bool onlyScouting_;
0092   const edm::EDGetTokenT<std::vector<Run3ScoutingMuon>> muonsToken_;
0093   const edm::EDGetTokenT<std::vector<Run3ScoutingElectron>> electronsToken_;
0094   const edm::EDGetTokenT<std::vector<Run3ScoutingVertex>> primaryVerticesToken_;
0095   const edm::EDGetTokenT<std::vector<Run3ScoutingVertex>> verticesToken_;
0096   const edm::EDGetTokenT<std::vector<Run3ScoutingPhoton>> photonsToken_;
0097   const edm::EDGetTokenT<double> rhoToken_;
0098   const edm::EDGetTokenT<double> pfMetPhiToken_;
0099   const edm::EDGetTokenT<double> pfMetPtToken_;
0100   const edm::EDGetTokenT<std::vector<Run3ScoutingParticle>> pfcandsToken_;
0101   const edm::EDGetTokenT<std::vector<Run3ScoutingPFJet>> pfjetsToken_;
0102   const edm::EDGetTokenT<std::vector<Run3ScoutingTrack>> tracksToken_;
0103   const edm::EDGetTokenT<OnlineLuminosityRecord> onlineMetaDataDigisToken_;
0104   const std::string topfoldername_;
0105 
0106   // pv vs PU and rho vs PU plots
0107   int primaryVertex_counter = 0;
0108   float avgPileUp;
0109   dqm::reco::MonitorElement* PVvsPU_hist;
0110   dqm::reco::MonitorElement* rhovsPU_hist;
0111 
0112   // rho + pfMetphi + pfMetPt
0113   dqm::reco::MonitorElement* rho_hist;
0114   dqm::reco::MonitorElement* pfMetPhi_hist;
0115   dqm::reco::MonitorElement* pfMetPt_hist;
0116 
0117   // PF candidates histograms
0118   dqm::reco::MonitorElement* PF_pT_211_hist;
0119   dqm::reco::MonitorElement* PF_pT_n211_hist;
0120   dqm::reco::MonitorElement* PF_pT_130_hist;
0121   dqm::reco::MonitorElement* PF_pT_22_hist;
0122   dqm::reco::MonitorElement* PF_pT_13_hist;
0123   dqm::reco::MonitorElement* PF_pT_n13_hist;
0124   dqm::reco::MonitorElement* PF_pT_1_hist;
0125   dqm::reco::MonitorElement* PF_pT_2_hist;
0126 
0127   dqm::reco::MonitorElement* PF_eta_211_hist;
0128   dqm::reco::MonitorElement* PF_eta_n211_hist;
0129   dqm::reco::MonitorElement* PF_eta_130_hist;
0130   dqm::reco::MonitorElement* PF_eta_22_hist;
0131   dqm::reco::MonitorElement* PF_eta_13_hist;
0132   dqm::reco::MonitorElement* PF_eta_n13_hist;
0133   dqm::reco::MonitorElement* PF_eta_1_hist;
0134   dqm::reco::MonitorElement* PF_eta_2_hist;
0135 
0136   dqm::reco::MonitorElement* PF_phi_211_hist;
0137   dqm::reco::MonitorElement* PF_phi_n211_hist;
0138   dqm::reco::MonitorElement* PF_phi_130_hist;
0139   dqm::reco::MonitorElement* PF_phi_22_hist;
0140   dqm::reco::MonitorElement* PF_phi_13_hist;
0141   dqm::reco::MonitorElement* PF_phi_n13_hist;
0142   dqm::reco::MonitorElement* PF_phi_1_hist;
0143   dqm::reco::MonitorElement* PF_phi_2_hist;
0144 
0145   dqm::reco::MonitorElement* PF_vertex_211_hist;
0146   dqm::reco::MonitorElement* PF_vertex_n211_hist;
0147   dqm::reco::MonitorElement* PF_vertex_130_hist;
0148   dqm::reco::MonitorElement* PF_vertex_22_hist;
0149   dqm::reco::MonitorElement* PF_vertex_13_hist;
0150   dqm::reco::MonitorElement* PF_vertex_n13_hist;
0151   dqm::reco::MonitorElement* PF_vertex_1_hist;
0152   dqm::reco::MonitorElement* PF_vertex_2_hist;
0153   dqm::reco::MonitorElement* PF_normchi2_211_hist;
0154   dqm::reco::MonitorElement* PF_normchi2_n211_hist;
0155   dqm::reco::MonitorElement* PF_normchi2_130_hist;
0156   dqm::reco::MonitorElement* PF_normchi2_22_hist;
0157   dqm::reco::MonitorElement* PF_normchi2_13_hist;
0158   dqm::reco::MonitorElement* PF_normchi2_n13_hist;
0159   dqm::reco::MonitorElement* PF_normchi2_1_hist;
0160   dqm::reco::MonitorElement* PF_normchi2_2_hist;
0161 
0162   dqm::reco::MonitorElement* PF_dz_211_hist;
0163   dqm::reco::MonitorElement* PF_dz_n211_hist;
0164   dqm::reco::MonitorElement* PF_dz_13_hist;
0165   dqm::reco::MonitorElement* PF_dz_n13_hist;
0166 
0167   dqm::reco::MonitorElement* PF_dxy_211_hist;
0168   dqm::reco::MonitorElement* PF_dxy_n211_hist;
0169   dqm::reco::MonitorElement* PF_dxy_13_hist;
0170   dqm::reco::MonitorElement* PF_dxy_n13_hist;
0171 
0172   dqm::reco::MonitorElement* PF_dzsig_211_hist;
0173   dqm::reco::MonitorElement* PF_dzsig_n211_hist;
0174   dqm::reco::MonitorElement* PF_dzsig_13_hist;
0175   dqm::reco::MonitorElement* PF_dzsig_n13_hist;
0176 
0177   dqm::reco::MonitorElement* PF_dxysig_211_hist;
0178   dqm::reco::MonitorElement* PF_dxysig_n211_hist;
0179   dqm::reco::MonitorElement* PF_dxysig_13_hist;
0180   dqm::reco::MonitorElement* PF_dxysig_n13_hist;
0181 
0182   dqm::reco::MonitorElement* PF_trk_pt_211_hist;
0183   dqm::reco::MonitorElement* PF_trk_pt_n211_hist;
0184   dqm::reco::MonitorElement* PF_trk_pt_13_hist;
0185   dqm::reco::MonitorElement* PF_trk_pt_n13_hist;
0186 
0187   dqm::reco::MonitorElement* PF_trk_eta_211_hist;
0188   dqm::reco::MonitorElement* PF_trk_eta_n211_hist;
0189   dqm::reco::MonitorElement* PF_trk_eta_13_hist;
0190   dqm::reco::MonitorElement* PF_trk_eta_n13_hist;
0191 
0192   dqm::reco::MonitorElement* PF_trk_phi_211_hist;
0193   dqm::reco::MonitorElement* PF_trk_phi_n211_hist;
0194   dqm::reco::MonitorElement* PF_trk_phi_13_hist;
0195   dqm::reco::MonitorElement* PF_trk_phi_n13_hist;
0196 
0197   // photon histograms
0198   dqm::reco::MonitorElement* pt_pho_hist;
0199   dqm::reco::MonitorElement* eta_pho_hist;
0200   dqm::reco::MonitorElement* phi_pho_hist;
0201   dqm::reco::MonitorElement* rawEnergy_pho_hist;
0202   dqm::reco::MonitorElement* preshowerEnergy_pho_hist;
0203   dqm::reco::MonitorElement* corrEcalEnergyError_pho_hist;
0204   dqm::reco::MonitorElement* sigmaIetaIeta_pho_hist;
0205   dqm::reco::MonitorElement* hOverE_pho_hist;
0206   dqm::reco::MonitorElement* ecalIso_pho_hist;
0207   dqm::reco::MonitorElement* hcalIso_pho_hist;
0208   dqm::reco::MonitorElement* trackIso_pho_hist;
0209   dqm::reco::MonitorElement* r9_pho_hist;
0210   dqm::reco::MonitorElement* sMin_pho_hist;
0211   dqm::reco::MonitorElement* sMaj_pho_hist;
0212   dqm::reco::MonitorElement* seedId_pho_hist;
0213   dqm::reco::MonitorElement* nClusters_pho_hist;
0214   dqm::reco::MonitorElement* nCrystals_pho_hist;
0215   dqm::reco::MonitorElement* rechitZeroSuppression_pho_hist;
0216 
0217   // electron histograms
0218   dqm::reco::MonitorElement* pt_ele_hist;
0219   dqm::reco::MonitorElement* eta_ele_hist;
0220   dqm::reco::MonitorElement* phi_ele_hist;
0221   dqm::reco::MonitorElement* rawEnergy_ele_hist;
0222   dqm::reco::MonitorElement* preshowerEnergy_ele_hist;
0223   dqm::reco::MonitorElement* corrEcalEnergyError_ele_hist;
0224   dqm::reco::MonitorElement* dEtaIn_ele_hist;
0225   dqm::reco::MonitorElement* dPhiIn_ele_hist;
0226   dqm::reco::MonitorElement* sigmaIetaIeta_ele_hist;
0227   dqm::reco::MonitorElement* hOverE_ele_hist;
0228   dqm::reco::MonitorElement* ooEMOop_ele_hist;
0229   dqm::reco::MonitorElement* missingHits_ele_hist;
0230   dqm::reco::MonitorElement* trackfbrem_ele_hist;
0231   dqm::reco::MonitorElement* ecalIso_ele_hist;
0232   dqm::reco::MonitorElement* hcalIso_ele_hist;
0233   dqm::reco::MonitorElement* trackIso_ele_hist;
0234   dqm::reco::MonitorElement* r9_ele_hist;
0235   dqm::reco::MonitorElement* sMin_ele_hist;
0236   dqm::reco::MonitorElement* sMaj_ele_hist;
0237 
0238   // muon histograms
0239   dqm::reco::MonitorElement* pt_mu_hist;
0240   dqm::reco::MonitorElement* eta_mu_hist;
0241   dqm::reco::MonitorElement* phi_mu_hist;
0242   dqm::reco::MonitorElement* type_mu_hist;
0243   dqm::reco::MonitorElement* charge_mu_hist;
0244   dqm::reco::MonitorElement* normalizedChi2_mu_hist;
0245   dqm::reco::MonitorElement* ecalIso_mu_hist;
0246   dqm::reco::MonitorElement* hcalIso_mu_hist;
0247   dqm::reco::MonitorElement* trackIso_mu_hist;
0248   dqm::reco::MonitorElement* nValidStandAloneMuonHits_mu_hist;
0249   dqm::reco::MonitorElement* nStandAloneMuonMatchedStations_mu_hist;
0250   dqm::reco::MonitorElement* nValidRecoMuonHits_mu_hist;
0251   dqm::reco::MonitorElement* nRecoMuonChambers_mu_hist;
0252   dqm::reco::MonitorElement* nRecoMuonChambersCSCorDT_mu_hist;
0253   dqm::reco::MonitorElement* nRecoMuonMatches_mu_hist;
0254   dqm::reco::MonitorElement* nRecoMuonMatchedStations_mu_hist;
0255   dqm::reco::MonitorElement* nRecoMuonExpectedMatchedStations_mu_hist;
0256   dqm::reco::MonitorElement* recoMuonStationMask_mu_hist;
0257   dqm::reco::MonitorElement* nRecoMuonMatchedRPCLayers_mu_hist;
0258   dqm::reco::MonitorElement* recoMuonRPClayerMask_mu_hist;
0259   dqm::reco::MonitorElement* nValidPixelHits_mu_hist;
0260   dqm::reco::MonitorElement* nValidStripHits_mu_hist;
0261   dqm::reco::MonitorElement* nPixelLayersWithMeasurement_mu_hist;
0262   dqm::reco::MonitorElement* nTrackerLayersWithMeasurement_mu_hist;
0263   dqm::reco::MonitorElement* trk_chi2_mu_hist;
0264   dqm::reco::MonitorElement* trk_ndof_mu_hist;
0265   dqm::reco::MonitorElement* trk_dxy_mu_hist;
0266   dqm::reco::MonitorElement* trk_dz_mu_hist;
0267   dqm::reco::MonitorElement* trk_qoverp_mu_hist;
0268   dqm::reco::MonitorElement* trk_lambda_mu_hist;
0269   dqm::reco::MonitorElement* trk_pt_mu_hist;
0270   dqm::reco::MonitorElement* trk_phi_mu_hist;
0271   dqm::reco::MonitorElement* trk_eta_mu_hist;
0272   dqm::reco::MonitorElement* trk_dxyError_mu_hist;
0273   dqm::reco::MonitorElement* trk_dzError_mu_hist;
0274   dqm::reco::MonitorElement* trk_qoverpError_mu_hist;
0275   dqm::reco::MonitorElement* trk_lambdaError_mu_hist;
0276   dqm::reco::MonitorElement* trk_phiError_mu_hist;
0277   dqm::reco::MonitorElement* trk_dsz_mu_hist;
0278   dqm::reco::MonitorElement* trk_dszError_mu_hist;
0279   dqm::reco::MonitorElement* trk_qoverp_lambda_cov_mu_hist;
0280   dqm::reco::MonitorElement* trk_qoverp_phi_cov_mu_hist;
0281   dqm::reco::MonitorElement* trk_qoverp_dxy_cov_mu_hist;
0282   dqm::reco::MonitorElement* trk_qoverp_dsz_cov_mu_hist;
0283   dqm::reco::MonitorElement* trk_lambda_phi_cov_mu_hist;
0284   dqm::reco::MonitorElement* trk_lambda_dxy_cov_mu_hist;
0285   dqm::reco::MonitorElement* trk_lambda_dsz_cov_mu_hist;
0286   dqm::reco::MonitorElement* trk_phi_dxy_cov_mu_hist;
0287   dqm::reco::MonitorElement* trk_phi_dsz_cov_mu_hist;
0288   dqm::reco::MonitorElement* trk_dxy_dsz_cov_mu_hist;
0289   dqm::reco::MonitorElement* trk_vx_mu_hist;
0290   dqm::reco::MonitorElement* trk_vy_mu_hist;
0291   dqm::reco::MonitorElement* trk_vz_mu_hist;
0292   dqm::reco::MonitorElement* trk_chi2_prob_hist;
0293 
0294   // PF Jet histograms
0295   dqm::reco::MonitorElement* pt_pfj_hist;
0296   dqm::reco::MonitorElement* eta_pfj_hist;
0297   dqm::reco::MonitorElement* phi_pfj_hist;
0298   dqm::reco::MonitorElement* m_pfj_hist;
0299   dqm::reco::MonitorElement* jetArea_pfj_hist;
0300   dqm::reco::MonitorElement* chargedHadronEnergy_pfj_hist;
0301   dqm::reco::MonitorElement* neutralHadronEnergy_pfj_hist;
0302   dqm::reco::MonitorElement* photonEnergy_pfj_hist;
0303   dqm::reco::MonitorElement* electronEnergy_pfj_hist;
0304   dqm::reco::MonitorElement* muonEnergy_pfj_hist;
0305   dqm::reco::MonitorElement* HFHadronEnergy_pfj_hist;
0306   dqm::reco::MonitorElement* HFEMEnergy_pfj_hist;
0307   dqm::reco::MonitorElement* chargedHadronMultiplicity_pfj_hist;
0308   dqm::reco::MonitorElement* neutralHadronMultiplicity_pfj_hist;
0309   dqm::reco::MonitorElement* photonMultiplicity_pfj_hist;
0310   dqm::reco::MonitorElement* electronMultiplicity_pfj_hist;
0311   dqm::reco::MonitorElement* muonMultiplicity_pfj_hist;
0312   dqm::reco::MonitorElement* HFHadronMultiplicity_pfj_hist;
0313   dqm::reco::MonitorElement* HFEMMultiplicity_pfj_hist;
0314   dqm::reco::MonitorElement* HOEnergy_pfj_hist;
0315   dqm::reco::MonitorElement* mvaDiscriminator_pfj_hist;
0316 
0317   // primary vertex histograms
0318   dqm::reco::MonitorElement* x_pv_hist;
0319   dqm::reco::MonitorElement* y_pv_hist;
0320   dqm::reco::MonitorElement* z_pv_hist;
0321   dqm::reco::MonitorElement* zError_pv_hist;
0322   dqm::reco::MonitorElement* xError_pv_hist;
0323   dqm::reco::MonitorElement* yError_pv_hist;
0324   dqm::reco::MonitorElement* tracksSize_pv_hist;
0325   dqm::reco::MonitorElement* chi2_pv_hist;
0326   dqm::reco::MonitorElement* ndof_pv_hist;
0327   dqm::reco::MonitorElement* isValidVtx_pv_hist;
0328   dqm::reco::MonitorElement* xyCov_pv_hist;
0329   dqm::reco::MonitorElement* xzCov_pv_hist;
0330   dqm::reco::MonitorElement* yzCov_pv_hist;
0331 
0332   // displaced vertex histograms
0333   dqm::reco::MonitorElement* x_vtx_hist;
0334   dqm::reco::MonitorElement* y_vtx_hist;
0335   dqm::reco::MonitorElement* z_vtx_hist;
0336   dqm::reco::MonitorElement* zError_vtx_hist;
0337   dqm::reco::MonitorElement* xError_vtx_hist;
0338   dqm::reco::MonitorElement* yError_vtx_hist;
0339   dqm::reco::MonitorElement* tracksSize_vtx_hist;
0340   dqm::reco::MonitorElement* chi2_vtx_hist;
0341   dqm::reco::MonitorElement* ndof_vtx_hist;
0342   dqm::reco::MonitorElement* isValidVtx_vtx_hist;
0343   dqm::reco::MonitorElement* xyCov_vtx_hist;
0344   dqm::reco::MonitorElement* xzCov_vtx_hist;
0345   dqm::reco::MonitorElement* yzCov_vtx_hist;
0346 
0347   // tracker histograms
0348   dqm::reco::MonitorElement* tk_pt_tk_hist;
0349   dqm::reco::MonitorElement* tk_eta_tk_hist;
0350   dqm::reco::MonitorElement* tk_phi_tk_hist;
0351   dqm::reco::MonitorElement* tk_chi2_tk_hist;
0352   dqm::reco::MonitorElement* tk_ndof_tk_hist;
0353   dqm::reco::MonitorElement* tk_charge_tk_hist;
0354   dqm::reco::MonitorElement* tk_dxy_tk_hist;
0355   dqm::reco::MonitorElement* tk_dz_tk_hist;
0356   dqm::reco::MonitorElement* tk_nValidPixelHits_tk_hist;
0357   dqm::reco::MonitorElement* tk_nTrackerLayersWithMeasurement_tk_hist;
0358   dqm::reco::MonitorElement* tk_nValidStripHits_tk_hist;
0359   dqm::reco::MonitorElement* tk_qoverp_tk_hist;
0360   dqm::reco::MonitorElement* tk_lambda_tk_hist;
0361   dqm::reco::MonitorElement* tk_dxy_Error_tk_hist;
0362   dqm::reco::MonitorElement* tk_dz_Error_tk_hist;
0363   dqm::reco::MonitorElement* tk_qoverp_Error_tk_hist;
0364   dqm::reco::MonitorElement* tk_lambda_Error_tk_hist;
0365   dqm::reco::MonitorElement* tk_phi_Error_tk_hist;
0366   dqm::reco::MonitorElement* tk_dsz_tk_hist;
0367   dqm::reco::MonitorElement* tk_dsz_Error_tk_hist;
0368   dqm::reco::MonitorElement* tk_qoverp_lambda_cov_tk_hist;
0369   dqm::reco::MonitorElement* tk_qoverp_phi_cov_tk_hist;
0370   dqm::reco::MonitorElement* tk_qoverp_dxy_cov_tk_hist;
0371   dqm::reco::MonitorElement* tk_qoverp_dsz_cov_tk_hist;
0372   dqm::reco::MonitorElement* tk_lambda_phi_cov_tk_hist;
0373   dqm::reco::MonitorElement* tk_lambda_dxy_cov_tk_hist;
0374   dqm::reco::MonitorElement* tk_lambda_dsz_cov_tk_hist;
0375   dqm::reco::MonitorElement* tk_phi_dxy_cov_tk_hist;
0376   dqm::reco::MonitorElement* tk_phi_dsz_cov_tk_hist;
0377   dqm::reco::MonitorElement* tk_dxy_dsz_cov_tk_hist;
0378   dqm::reco::MonitorElement* tk_vtxInd_tk_hist;
0379   dqm::reco::MonitorElement* tk_vx_tk_hist;
0380   dqm::reco::MonitorElement* tk_vy_tk_hist;
0381   dqm::reco::MonitorElement* tk_vz_tk_hist;
0382   dqm::reco::MonitorElement* tk_chi2_ndof_tk_hist;
0383 
0384   dqm::reco::MonitorElement* tk_PV_dxy_hist;
0385   dqm::reco::MonitorElement* tk_PV_dz_hist;
0386 };
0387 
0388 //
0389 // constructors and destructor
0390 //
0391 ScoutingCollectionMonitor::ScoutingCollectionMonitor(const edm::ParameterSet& iConfig)
0392     : onlyScouting_(iConfig.getParameter<bool>("onlyScouting")),
0393       muonsToken_(consumes<std::vector<Run3ScoutingMuon>>(iConfig.getParameter<edm::InputTag>("muons"))),
0394       electronsToken_(consumes<std::vector<Run3ScoutingElectron>>(iConfig.getParameter<edm::InputTag>("electrons"))),
0395       primaryVerticesToken_(
0396           consumes<std::vector<Run3ScoutingVertex>>(iConfig.getParameter<edm::InputTag>("primaryVertices"))),
0397       verticesToken_(
0398           consumes<std::vector<Run3ScoutingVertex>>(iConfig.getParameter<edm::InputTag>("displacedVertices"))),
0399       photonsToken_(consumes<std::vector<Run3ScoutingPhoton>>(iConfig.getParameter<edm::InputTag>("photons"))),
0400       rhoToken_(consumes<double>(iConfig.getParameter<edm::InputTag>("rho"))),
0401       pfMetPhiToken_(consumes<double>(iConfig.getParameter<edm::InputTag>("pfMetPhi"))),
0402       pfMetPtToken_(consumes<double>(iConfig.getParameter<edm::InputTag>("pfMetPt"))),
0403       pfcandsToken_(consumes<std::vector<Run3ScoutingParticle>>(iConfig.getParameter<edm::InputTag>("pfcands"))),
0404       pfjetsToken_(consumes<std::vector<Run3ScoutingPFJet>>(iConfig.getParameter<edm::InputTag>("pfjets"))),
0405       tracksToken_(consumes<std::vector<Run3ScoutingTrack>>(iConfig.getParameter<edm::InputTag>("tracks"))),
0406       onlineMetaDataDigisToken_(consumes(iConfig.getParameter<edm::InputTag>("onlineMetaDataDigis"))),
0407       topfoldername_(iConfig.getParameter<std::string>("topfoldername"))
0408 
0409 {}
0410 
0411 //
0412 // member functions
0413 //
0414 template <typename T>
0415 bool ScoutingCollectionMonitor::getValidHandle(const edm::Event& iEvent,
0416                                                const edm::EDGetTokenT<T>& token,
0417                                                edm::Handle<T>& handle,
0418                                                const std::string& label) {
0419   iEvent.getByToken(token, handle);
0420   if (!handle.isValid()) {
0421     edm::LogWarning("ScoutingAnalyzer") << "Invalid handle for " << label;
0422     return false;
0423   }
0424   return true;
0425 }
0426 
0427 // ------------ method called for each event  ------------
0428 void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0429   using namespace edm;
0430   using namespace std;
0431   using namespace reco;
0432 
0433   // all the handles needed
0434   edm::Handle<double> rhoH;
0435   edm::Handle<double> pfMetPhiH;
0436   edm::Handle<double> pfMetPtH;
0437   edm::Handle<std::vector<Run3ScoutingParticle>> pfcandsH;
0438   edm::Handle<std::vector<Run3ScoutingPhoton>> photonsH;
0439   edm::Handle<std::vector<Run3ScoutingElectron>> electronsH;
0440   edm::Handle<std::vector<Run3ScoutingMuon>> muonsH;
0441   edm::Handle<std::vector<Run3ScoutingPFJet>> PFjetsH;
0442   edm::Handle<std::vector<Run3ScoutingVertex>> verticesH;
0443   edm::Handle<std::vector<Run3ScoutingVertex>> primaryVerticesH;
0444   edm::Handle<std::vector<Run3ScoutingTrack>> tracksH;
0445   edm::Handle<OnlineLuminosityRecord> onlineMetaDataDigisHandle;
0446 
0447   if (!getValidHandle(iEvent, rhoToken_, rhoH, "rho") ||
0448       !getValidHandle(iEvent, pfMetPhiToken_, pfMetPhiH, "MET phi") ||
0449       !getValidHandle(iEvent, pfMetPtToken_, pfMetPtH, "MET pT") ||
0450       !getValidHandle(iEvent, pfcandsToken_, pfcandsH, "PF candidates") ||
0451       !getValidHandle(iEvent, photonsToken_, photonsH, "photons") ||
0452       !getValidHandle(iEvent, electronsToken_, electronsH, "electrons") ||
0453       !getValidHandle(iEvent, muonsToken_, muonsH, "muons") ||
0454       !getValidHandle(iEvent, pfjetsToken_, PFjetsH, "PF jets") ||
0455       !getValidHandle(iEvent, verticesToken_, verticesH, "vertices") ||
0456       !getValidHandle(iEvent, primaryVerticesToken_, primaryVerticesH, "primary vertices") ||
0457       !getValidHandle(iEvent, tracksToken_, tracksH, "tracks")) {
0458     return;
0459   }
0460 
0461   // get pile up
0462   if (!onlyScouting_) {
0463     if (!getValidHandle(iEvent, onlineMetaDataDigisToken_, onlineMetaDataDigisHandle, "avgPileUp")) {
0464       return;
0465     }
0466     avgPileUp = onlineMetaDataDigisHandle->avgPileUp();
0467     rhovsPU_hist->Fill(avgPileUp, *rhoH);
0468   }
0469 
0470   // put stuff in histogram
0471   rho_hist->Fill(*rhoH);
0472   pfMetPhi_hist->Fill(*pfMetPhiH);
0473   pfMetPt_hist->Fill(*pfMetPtH);
0474 
0475   // fill the PF candidate histograms (no electrons!)
0476 
0477   for (const auto& cand : *pfcandsH) {
0478     switch (cand.pdgId()) {
0479       case 211:
0480         PF_pT_211_hist->Fill(cand.pt());
0481         PF_eta_211_hist->Fill(cand.eta());
0482         PF_phi_211_hist->Fill(cand.phi());
0483         PF_vertex_211_hist->Fill(cand.vertex());
0484         PF_normchi2_211_hist->Fill(cand.normchi2());
0485         PF_dz_211_hist->Fill(cand.dz());
0486         PF_dxy_211_hist->Fill(cand.dxy());
0487         PF_dzsig_211_hist->Fill(cand.dzsig());
0488         PF_dxysig_211_hist->Fill(cand.dxysig());
0489         PF_trk_pt_211_hist->Fill(cand.trk_pt());
0490         PF_trk_eta_211_hist->Fill(cand.trk_eta());
0491         PF_trk_phi_211_hist->Fill(cand.trk_phi());
0492         break;
0493 
0494       case -211:
0495         PF_pT_n211_hist->Fill(cand.pt());
0496         PF_eta_n211_hist->Fill(cand.eta());
0497         PF_phi_n211_hist->Fill(cand.phi());
0498         PF_vertex_n211_hist->Fill(cand.vertex());
0499         PF_normchi2_n211_hist->Fill(cand.normchi2());
0500         PF_dz_n211_hist->Fill(cand.dz());
0501         PF_dxy_n211_hist->Fill(cand.dxy());
0502         PF_dzsig_n211_hist->Fill(cand.dzsig());
0503         PF_dxysig_n211_hist->Fill(cand.dxysig());
0504         PF_trk_pt_n211_hist->Fill(cand.trk_pt());
0505         PF_trk_eta_n211_hist->Fill(cand.trk_eta());
0506         PF_trk_phi_n211_hist->Fill(cand.trk_phi());
0507         break;
0508 
0509       case 130:
0510         PF_pT_130_hist->Fill(cand.pt());
0511         PF_eta_130_hist->Fill(cand.eta());
0512         PF_phi_130_hist->Fill(cand.phi());
0513         PF_vertex_130_hist->Fill(cand.vertex());
0514         PF_normchi2_130_hist->Fill(cand.normchi2());
0515         break;
0516 
0517       case 22:
0518         PF_pT_22_hist->Fill(cand.pt());
0519         PF_eta_22_hist->Fill(cand.eta());
0520         PF_phi_22_hist->Fill(cand.phi());
0521         PF_vertex_22_hist->Fill(cand.vertex());
0522         PF_normchi2_22_hist->Fill(cand.normchi2());
0523         break;
0524 
0525       case 13:
0526         PF_pT_13_hist->Fill(cand.pt());
0527         PF_eta_13_hist->Fill(cand.eta());
0528         PF_phi_13_hist->Fill(cand.phi());
0529         PF_vertex_13_hist->Fill(cand.vertex());
0530         PF_normchi2_13_hist->Fill(cand.normchi2());
0531         PF_dz_13_hist->Fill(cand.dz());
0532         PF_dxy_13_hist->Fill(cand.dxy());
0533         PF_dzsig_13_hist->Fill(cand.dzsig());
0534         PF_dxysig_13_hist->Fill(cand.dxysig());
0535         PF_trk_pt_13_hist->Fill(cand.trk_pt());
0536         PF_trk_eta_13_hist->Fill(cand.trk_eta());
0537         PF_trk_phi_13_hist->Fill(cand.trk_phi());
0538         break;
0539 
0540       case -13:
0541         PF_pT_n13_hist->Fill(cand.pt());
0542         PF_eta_n13_hist->Fill(cand.eta());
0543         PF_phi_n13_hist->Fill(cand.phi());
0544         PF_vertex_n13_hist->Fill(cand.vertex());
0545         PF_normchi2_n13_hist->Fill(cand.normchi2());
0546         PF_dz_n13_hist->Fill(cand.dz());
0547         PF_dxy_n13_hist->Fill(cand.dxy());
0548         PF_dzsig_n13_hist->Fill(cand.dzsig());
0549         PF_dxysig_n13_hist->Fill(cand.dxysig());
0550         PF_trk_pt_n13_hist->Fill(cand.trk_pt());
0551         PF_trk_eta_n13_hist->Fill(cand.trk_eta());
0552         PF_trk_phi_n13_hist->Fill(cand.trk_phi());
0553         break;
0554 
0555       case 1:
0556         PF_pT_1_hist->Fill(cand.pt());
0557         PF_eta_1_hist->Fill(cand.eta());
0558         PF_phi_1_hist->Fill(cand.phi());
0559         PF_vertex_1_hist->Fill(cand.vertex());
0560         PF_normchi2_1_hist->Fill(cand.normchi2());
0561         break;
0562 
0563       case 2:
0564         PF_pT_2_hist->Fill(cand.pt());
0565         PF_eta_2_hist->Fill(cand.eta());
0566         PF_phi_2_hist->Fill(cand.phi());
0567         PF_vertex_2_hist->Fill(cand.vertex());
0568         PF_normchi2_2_hist->Fill(cand.normchi2());
0569         break;
0570     }
0571   }
0572 
0573   // fill all the photon histograms
0574   for (const auto& pho : *photonsH) {
0575     pt_pho_hist->Fill(pho.pt());
0576     eta_pho_hist->Fill(pho.eta());
0577     phi_pho_hist->Fill(pho.phi());
0578     rawEnergy_pho_hist->Fill(pho.rawEnergy());
0579     preshowerEnergy_pho_hist->Fill(pho.preshowerEnergy());
0580     corrEcalEnergyError_pho_hist->Fill(pho.corrEcalEnergyError());
0581     sigmaIetaIeta_pho_hist->Fill(pho.sigmaIetaIeta());
0582     hOverE_pho_hist->Fill(pho.hOverE());
0583     ecalIso_pho_hist->Fill(pho.ecalIso());
0584     hcalIso_pho_hist->Fill(pho.hcalIso());
0585     trackIso_pho_hist->Fill(pho.trkIso());
0586     r9_pho_hist->Fill(pho.r9());
0587     sMin_pho_hist->Fill(pho.sMin());
0588     sMaj_pho_hist->Fill(pho.sMaj());
0589   }
0590 
0591   // fill all the electron histograms
0592   for (const auto& ele : *electronsH) {
0593     pt_ele_hist->Fill(ele.pt());
0594     eta_ele_hist->Fill(ele.eta());
0595     phi_ele_hist->Fill(ele.phi());
0596     rawEnergy_ele_hist->Fill(ele.rawEnergy());
0597     preshowerEnergy_ele_hist->Fill(ele.preshowerEnergy());
0598     corrEcalEnergyError_ele_hist->Fill(ele.corrEcalEnergyError());
0599     dEtaIn_ele_hist->Fill(ele.dEtaIn());
0600     dPhiIn_ele_hist->Fill(ele.dPhiIn());
0601     sigmaIetaIeta_ele_hist->Fill(ele.sigmaIetaIeta());
0602     hOverE_ele_hist->Fill(ele.hOverE());
0603     ooEMOop_ele_hist->Fill(ele.ooEMOop());
0604     missingHits_ele_hist->Fill(ele.missingHits());
0605     trackfbrem_ele_hist->Fill(ele.trackfbrem());
0606     ecalIso_ele_hist->Fill(ele.ecalIso());
0607     hcalIso_ele_hist->Fill(ele.hcalIso());
0608     trackIso_ele_hist->Fill(ele.trackIso());
0609     r9_ele_hist->Fill(ele.r9());
0610     sMin_ele_hist->Fill(ele.sMin());
0611     sMaj_ele_hist->Fill(ele.sMaj());
0612   }
0613 
0614   // fill all the muon histograms
0615   for (const auto& mu : *muonsH) {
0616     pt_mu_hist->Fill(mu.pt());
0617     eta_mu_hist->Fill(mu.eta());
0618     phi_mu_hist->Fill(mu.phi());
0619     type_mu_hist->Fill(mu.type());
0620     charge_mu_hist->Fill(mu.charge());
0621     normalizedChi2_mu_hist->Fill(mu.normalizedChi2());
0622     ecalIso_mu_hist->Fill(mu.ecalIso());
0623     hcalIso_mu_hist->Fill(mu.hcalIso());
0624     trackIso_mu_hist->Fill(mu.trackIso());
0625     nValidStandAloneMuonHits_mu_hist->Fill(mu.nValidStandAloneMuonHits());
0626     nStandAloneMuonMatchedStations_mu_hist->Fill(mu.nStandAloneMuonMatchedStations());
0627     nValidRecoMuonHits_mu_hist->Fill(mu.nValidRecoMuonHits());
0628     nRecoMuonChambers_mu_hist->Fill(mu.nRecoMuonChambers());
0629     nRecoMuonChambersCSCorDT_mu_hist->Fill(mu.nRecoMuonChambersCSCorDT());
0630     nRecoMuonMatches_mu_hist->Fill(mu.nRecoMuonMatches());
0631     nRecoMuonMatchedStations_mu_hist->Fill(mu.nRecoMuonMatchedStations());
0632     nRecoMuonExpectedMatchedStations_mu_hist->Fill(mu.nRecoMuonExpectedMatchedStations());
0633     recoMuonStationMask_mu_hist->Fill(mu.recoMuonStationMask());
0634     nRecoMuonMatchedRPCLayers_mu_hist->Fill(mu.nRecoMuonMatchedRPCLayers());
0635     recoMuonRPClayerMask_mu_hist->Fill(mu.recoMuonRPClayerMask());
0636     nValidPixelHits_mu_hist->Fill(mu.nValidPixelHits());
0637     nValidStripHits_mu_hist->Fill(mu.nValidStripHits());
0638     nPixelLayersWithMeasurement_mu_hist->Fill(mu.nPixelLayersWithMeasurement());
0639     nTrackerLayersWithMeasurement_mu_hist->Fill(mu.nTrackerLayersWithMeasurement());
0640     trk_chi2_mu_hist->Fill(mu.trk_chi2());
0641     trk_ndof_mu_hist->Fill(mu.trk_ndof());
0642     trk_dxy_mu_hist->Fill(mu.trk_dxy());
0643     trk_dz_mu_hist->Fill(mu.trk_dz());
0644     trk_qoverp_mu_hist->Fill(mu.trk_qoverp());
0645     trk_lambda_mu_hist->Fill(mu.trk_lambda());
0646     trk_pt_mu_hist->Fill(mu.trk_pt());
0647     trk_phi_mu_hist->Fill(mu.trk_phi());
0648     trk_eta_mu_hist->Fill(mu.trk_eta());
0649     trk_dxyError_mu_hist->Fill(mu.trk_dxyError());
0650     trk_dzError_mu_hist->Fill(mu.trk_dzError());
0651     trk_qoverpError_mu_hist->Fill(mu.trk_qoverpError());
0652     trk_lambdaError_mu_hist->Fill(mu.trk_lambdaError());
0653     trk_phiError_mu_hist->Fill(mu.trk_phiError());
0654     trk_dsz_mu_hist->Fill(mu.trk_dsz());
0655     trk_dszError_mu_hist->Fill(mu.trk_dszError());
0656     trk_qoverp_lambda_cov_mu_hist->Fill(mu.trk_qoverp_lambda_cov());
0657     trk_qoverp_phi_cov_mu_hist->Fill(mu.trk_qoverp_phi_cov());
0658     trk_qoverp_dxy_cov_mu_hist->Fill(mu.trk_qoverp_dxy_cov());
0659     trk_qoverp_dsz_cov_mu_hist->Fill(mu.trk_qoverp_dsz_cov());
0660     trk_lambda_phi_cov_mu_hist->Fill(mu.trk_lambda_phi_cov());
0661     trk_lambda_dxy_cov_mu_hist->Fill(mu.trk_lambda_dxy_cov());
0662     trk_lambda_dsz_cov_mu_hist->Fill(mu.trk_lambda_dsz_cov());
0663     trk_phi_dxy_cov_mu_hist->Fill(mu.trk_phi_dxy_cov());
0664     trk_phi_dsz_cov_mu_hist->Fill(mu.trk_phi_dsz_cov());
0665     trk_dxy_dsz_cov_mu_hist->Fill(mu.trk_dxy_dsz_cov());
0666     trk_vx_mu_hist->Fill(mu.trk_vx());
0667     trk_vy_mu_hist->Fill(mu.trk_vy());
0668     trk_vz_mu_hist->Fill(mu.trk_vz());
0669   }
0670 
0671   // fill all the PF Jet histograms
0672   for (const auto& jet : *PFjetsH) {
0673     pt_pfj_hist->Fill(jet.pt());
0674     eta_pfj_hist->Fill(jet.eta());
0675     phi_pfj_hist->Fill(jet.phi());
0676     m_pfj_hist->Fill(jet.m());
0677     jetArea_pfj_hist->Fill(jet.jetArea());
0678     chargedHadronEnergy_pfj_hist->Fill(jet.chargedHadronEnergy());
0679     neutralHadronEnergy_pfj_hist->Fill(jet.neutralHadronEnergy());
0680     photonEnergy_pfj_hist->Fill(jet.photonEnergy());
0681     electronEnergy_pfj_hist->Fill(jet.electronEnergy());
0682     muonEnergy_pfj_hist->Fill(jet.muonEnergy());
0683     HFHadronEnergy_pfj_hist->Fill(jet.HFHadronEnergy());
0684     HFEMEnergy_pfj_hist->Fill(jet.HFEMEnergy());
0685     chargedHadronMultiplicity_pfj_hist->Fill(jet.chargedHadronMultiplicity());
0686     neutralHadronMultiplicity_pfj_hist->Fill(jet.neutralHadronMultiplicity());
0687     photonMultiplicity_pfj_hist->Fill(jet.photonMultiplicity());
0688     electronMultiplicity_pfj_hist->Fill(jet.electronMultiplicity());
0689     muonMultiplicity_pfj_hist->Fill(jet.muonMultiplicity());
0690     HFHadronMultiplicity_pfj_hist->Fill(jet.HFHadronMultiplicity());
0691     HFEMMultiplicity_pfj_hist->Fill(jet.HFEMMultiplicity());
0692     HOEnergy_pfj_hist->Fill(jet.HOEnergy());
0693     mvaDiscriminator_pfj_hist->Fill(jet.mvaDiscriminator());
0694   }
0695 
0696   // fill all the primary vertices histograms
0697   for (const auto& vtx : *primaryVerticesH) {
0698     primaryVertex_counter++;
0699     x_pv_hist->Fill(vtx.x());
0700     y_pv_hist->Fill(vtx.y());
0701     z_pv_hist->Fill(vtx.z());
0702     zError_pv_hist->Fill(vtx.zError());
0703     xError_pv_hist->Fill(vtx.xError());
0704     yError_pv_hist->Fill(vtx.yError());
0705     tracksSize_pv_hist->Fill(vtx.tracksSize());
0706     chi2_pv_hist->Fill(vtx.chi2());
0707     ndof_pv_hist->Fill(vtx.ndof());
0708     isValidVtx_pv_hist->Fill(vtx.isValidVtx());
0709     xyCov_pv_hist->Fill(vtx.xyCov());
0710     xzCov_pv_hist->Fill(vtx.xzCov());
0711     yzCov_pv_hist->Fill(vtx.yzCov());
0712   }
0713 
0714   if (!onlyScouting_) {
0715     PVvsPU_hist->Fill(avgPileUp, primaryVertex_counter);
0716   }
0717 
0718   // fill all the displaced vertices histograms
0719   for (const auto& vtx : *verticesH) {
0720     x_vtx_hist->Fill(vtx.x());
0721     y_vtx_hist->Fill(vtx.y());
0722     z_vtx_hist->Fill(vtx.z());
0723     zError_vtx_hist->Fill(vtx.zError());
0724     xError_vtx_hist->Fill(vtx.xError());
0725     yError_vtx_hist->Fill(vtx.yError());
0726     tracksSize_vtx_hist->Fill(vtx.tracksSize());
0727     chi2_vtx_hist->Fill(vtx.chi2());
0728     ndof_vtx_hist->Fill(vtx.ndof());
0729     isValidVtx_vtx_hist->Fill(vtx.isValidVtx());
0730     xyCov_vtx_hist->Fill(vtx.xyCov());
0731     xzCov_vtx_hist->Fill(vtx.xzCov());
0732     yzCov_vtx_hist->Fill(vtx.yzCov());
0733   }
0734 
0735   // fill tracks histograms
0736   for (const auto& tk : *tracksH) {
0737     tk_pt_tk_hist->Fill(tk.tk_pt());
0738     tk_eta_tk_hist->Fill(tk.tk_eta());
0739     tk_phi_tk_hist->Fill(tk.tk_phi());
0740     tk_chi2_tk_hist->Fill(tk.tk_chi2());
0741     tk_ndof_tk_hist->Fill(tk.tk_ndof());
0742     tk_charge_tk_hist->Fill(tk.tk_charge());
0743     tk_dxy_tk_hist->Fill(tk.tk_dxy());
0744     tk_dz_tk_hist->Fill(tk.tk_dz());
0745     tk_nValidPixelHits_tk_hist->Fill(tk.tk_nValidPixelHits());
0746     tk_nTrackerLayersWithMeasurement_tk_hist->Fill(tk.tk_nTrackerLayersWithMeasurement());
0747     tk_nValidStripHits_tk_hist->Fill(tk.tk_nValidStripHits());
0748     tk_qoverp_tk_hist->Fill(tk.tk_qoverp());
0749     tk_lambda_tk_hist->Fill(tk.tk_lambda());
0750     tk_dxy_Error_tk_hist->Fill(tk.tk_dxy_Error());
0751     tk_dz_Error_tk_hist->Fill(tk.tk_dz_Error());
0752     tk_qoverp_Error_tk_hist->Fill(tk.tk_qoverp_Error());
0753     tk_lambda_Error_tk_hist->Fill(tk.tk_lambda_Error());
0754     tk_phi_Error_tk_hist->Fill(tk.tk_phi_Error());
0755     tk_dsz_tk_hist->Fill(tk.tk_dsz());
0756     tk_dsz_Error_tk_hist->Fill(tk.tk_dsz_Error());
0757     tk_vtxInd_tk_hist->Fill(tk.tk_vtxInd());
0758     tk_vx_tk_hist->Fill(tk.tk_vx());
0759     tk_vy_tk_hist->Fill(tk.tk_vy());
0760     tk_vz_tk_hist->Fill(tk.tk_vz());
0761     tk_chi2_ndof_tk_hist->Fill(tk.tk_chi2() / tk.tk_ndof());
0762     trk_chi2_prob_hist->Fill(TMath::Prob(tk.tk_chi2(), tk.tk_ndof()));
0763 
0764     // initialize the impact parameters to large values
0765     std::pair<float, float> best_offset{9999.f, 99999.f};
0766 
0767     // loop on all the vertices and find the closest one
0768     for (const auto& vtx : *primaryVerticesH) {
0769       const auto offset = trk_vtx_offSet(tk, vtx);
0770       if (std::abs(offset.second) < std::abs(best_offset.second)) {
0771         best_offset = offset;
0772       }
0773     }
0774 
0775     tk_PV_dxy_hist->Fill(best_offset.first);
0776     tk_PV_dz_hist->Fill(best_offset.second);
0777   }
0778 }
0779 
0780 // ------------ method called once each job just before starting event loop  ------------
0781 void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook,
0782                                                edm::Run const& run,
0783                                                edm::EventSetup const& iSetup) {
0784   ibook.setCurrentFolder(topfoldername_);
0785 
0786   rho_hist = ibook.book1D("rho", "#rho; #rho; Entries", 100, 0.0, 60.0);
0787   pfMetPhi_hist = ibook.book1D("pfMetPhi", "pf MET #phi; #phi ;Entries", 100, -3.14, 3.14);
0788   pfMetPt_hist = ibook.book1D("pfMetPt", "pf MET pT;p_{T} [GeV];Entries", 100, 0.0, 250.0);
0789 
0790   if (!onlyScouting_) {
0791     PVvsPU_hist =
0792         ibook.bookProfile("PVvsPU", "Number of primary vertices vs pile up; pile up; <N_{PV}>", 20, 20, 60, 0, 65);
0793     rhovsPU_hist = ibook.bookProfile("rhovsPU", "#rho vs pile up; pile up; <#rho>", 20, 20, 60, 0, 45);
0794   }
0795 
0796   ibook.setCurrentFolder(topfoldername_ + "/PFcand");
0797   PF_pT_211_hist = ibook.book1DD("pT_211", "PF h^{+}  pT (GeV);p_{T} [GeV];Entries", 100, 0.0, 13.0);
0798   PF_pT_n211_hist = ibook.book1DD("pT_n211", "PF h^{-} pT (GeV);p_{T} [GeV];Entries", 100, 0.0, 14.0);
0799   PF_pT_130_hist = ibook.book1DD("pT_130", "PF h^{0} pT (GeV);p_{T} [GeV];Entries", 100, 0.0, 20.0);
0800   PF_pT_22_hist = ibook.book1DD("pT_22", "PF #gamma pT (GeV);p_{T} [GeV];Entries", 100, 0.0, 18.0);
0801   PF_pT_13_hist = ibook.book1DD("pT_13", "PF #mu^{+} pT (GeV);p_{T} [GeV];Entries", 100, 0.0, 80.0);
0802   PF_pT_n13_hist = ibook.book1DD("pT_n13", "PF #mu^{-} pT (GeV);p_{T} [GeV];Entries", 100, 0.0, 80.0);
0803   PF_pT_2_hist = ibook.book1DD("pT_2", "PF HF h (GeV);pT [GeV];Entries", 100, 0.0, 4.5);
0804   PF_pT_1_hist = ibook.book1DD("pT_1", "PF HF e/#gamma pT (GeV);p_{T} [GeV];Entries", 100, 0.0, 6.0);
0805 
0806   PF_eta_211_hist = ibook.book1DD("eta_211", "PF h^{+} #eta;#eta;Entries", 100, -5.0, 5.0);
0807   PF_eta_n211_hist = ibook.book1DD("eta_n211", "PF h^{-} #eta;#eta;Entries", 100, -5.0, 5.0);
0808   PF_eta_130_hist = ibook.book1DD("eta_130", "PF h^{0} #eta;#eta;Entries", 100, -5.0, 5.0);
0809   PF_eta_22_hist = ibook.book1DD("eta_22", "PF #gamma #eta;#eta;Entries", 100, -5.0, 5.0);
0810   PF_eta_13_hist = ibook.book1DD("eta_13", "PF #mu^{+} #eta;#eta;Entries", 100, -5.0, 5.0);
0811   PF_eta_n13_hist = ibook.book1DD("eta_n13", "PF #mu^{-} #eta;#eta;Entries", 100, -5.0, 5.0);
0812   PF_eta_1_hist = ibook.book1DD("eta_2", "PF HF h #eta;#eta;Entries", 100, -5.0, 5.0);
0813   PF_eta_2_hist = ibook.book1DD("eta_1", "PF HF e/#gamma #eta;#eta;Entries", 100, -5.0, 5.0);
0814 
0815   PF_phi_211_hist = ibook.book1DD("phi_211", "PF h^{+} #phi;#phi;Entries", 100, -3.2, 3.2);
0816   PF_phi_n211_hist = ibook.book1DD("phi_n211", "PF h^{-} #phi;#phi;Entries", 100, -3.2, 3.2);
0817   PF_phi_130_hist = ibook.book1DD("phi_130", "PF h^{0} #phi;#phi;Entries", 100, -3.2, 3.2);
0818   PF_phi_22_hist = ibook.book1DD("phi_22", "PF #gamma #phi;#phi;Entries", 100, -3.2, 3.2);
0819   PF_phi_13_hist = ibook.book1DD("phi_13", "PF #mu^{+} #phi;#phi;Entries", 100, -3.2, 3.2);
0820   PF_phi_n13_hist = ibook.book1DD("phi_n13", "PF #mu^{-} #phi;#phi;Entries", 100, -3.2, 3.2);
0821   PF_phi_1_hist = ibook.book1DD("phi_2", "PF HF h #phi;#phi;Entries", 100, -3.2, 3.2);
0822   PF_phi_2_hist = ibook.book1DD("phi_1", "PF HF e/#gamma #phi;#phi;Entries", 100, -3.2, 3.2);
0823 
0824   PF_vertex_211_hist = ibook.book1DD("vertex_211", "PF h^{+} Vertex;Vertex;Entries", 100, -10.0, 15.0);
0825   PF_vertex_n211_hist = ibook.book1DD("vertex_n211", "PF h^{-} Vertex;Vertex;Entries", 100, -10.0, 15.0);
0826   PF_vertex_130_hist = ibook.book1DD("vertex_130", "PF h^{0} Vertex;Vertex;Entries", 100, -10.0, 10.0);
0827   PF_vertex_22_hist = ibook.book1DD("vertex_22", "PF #gamma Vertex;Vertex;Entries", 100, -10.0, 10.0);
0828   PF_vertex_13_hist = ibook.book1DD("vertex_13", "PF #mu^{+} Vertex;Vertex;Entries", 100, -10.0, 15.0);
0829   PF_vertex_n13_hist = ibook.book1DD("vertex_n13", "PF #mu^{-} Vertex;Vertex;Entries", 100, -10.0, 15.0);
0830   PF_vertex_1_hist = ibook.book1DD("vertex_1", "PF HF h Vertex;Vertex;Entries", 100, -10.0, 10.0);
0831   PF_vertex_2_hist = ibook.book1DD("vertex_2", "PF HF e/#gamma Vertex;Vertex;Entries", 100, -10.0, 10.0);
0832 
0833   PF_normchi2_211_hist = ibook.book1DD("normchi2_211", "PF h^{+} Norm #chi^2;Norm #chi^2;Entries", 100, 0.0, 10.0);
0834   PF_normchi2_n211_hist = ibook.book1DD("normchi2_n211", "PF h^{-} Norm #chi^2;Norm #chi^2;Entries", 100, 0.0, 10.0);
0835   PF_normchi2_130_hist = ibook.book1DD("normchi2_130", "PF h^{0} Norm #chi^2;Norm #chi^2;Entries", 100, 0.0, 100.0);
0836   PF_normchi2_22_hist = ibook.book1DD("normchi2_22", "PF #gamma Norm #chi^2;Norm #chi^2;Entries", 100, 0.0, 100.0);
0837   PF_normchi2_13_hist = ibook.book1DD("normchi2_13", "PF #mu^{+} Norm #chi^2;Norm #chi^2;Entries", 100, 0.0, 10.0);
0838   PF_normchi2_n13_hist = ibook.book1DD("normchi2_n13", "PF #mu^{-} Norm #chi^2;Norm #chi^2;Entries", 100, 0.0, 10.0);
0839   PF_normchi2_1_hist = ibook.book1DD("normchi2_1", "PF HF h Norm #chi^2;Norm #chi^2;Entries", 100, 0.0, 100.0);
0840   PF_normchi2_2_hist = ibook.book1DD("normchi2_2", "PF HF e/#gamma Norm #chi^2;Norm #chi^2;Entries", 100, 0.0, 100.0);
0841 
0842   PF_dz_211_hist = ibook.book1DD("dz_211", "PF h^{+} dz (cm);dz (cm);Entries", 100, -1.0, 1.0);
0843   PF_dz_n211_hist = ibook.book1DD("dz_n211", "PF h^{-} dz (cm);dz (cm);Entries", 100, -1.0, 1.0);
0844   PF_dz_13_hist = ibook.book1DD("dz_13", "PF #mu^{+} dz (cm);dz (cm);Entries", 100, -1.0, 1.0);
0845   PF_dz_n13_hist = ibook.book1DD("dz_n13", "PF #mu^{-} dz (cm);dz (cm);Entries", 100, -1.0, 1.0);
0846 
0847   PF_dxy_211_hist = ibook.book1DD("dxy_211", "PF h^{+} dxy (cm);dxy (cm);Entries", 100, -0.5, 0.5);
0848   PF_dxy_n211_hist = ibook.book1DD("dxy_n211", "PF h^{-} dxy (cm);dxy (cm);Entries", 100, -0.5, 0.5);
0849   PF_dxy_13_hist = ibook.book1DD("dxy_13", "PF #mu^{+} dxy (cm);dxy (cm);Entries", 100, -0.5, 0.5);
0850   PF_dxy_n13_hist = ibook.book1DD("dxy_n13", "PF #mu^{-} dxy (cm);dxy (cm);Entries", 100, -0.5, 0.5);
0851 
0852   PF_dzsig_211_hist = ibook.book1DD("dzsig_211", "PF h^{+} dzsig;dzsig;Entries", 100, 0.0, 10.0);
0853   PF_dzsig_n211_hist = ibook.book1DD("dzsig_n211", "PF h^{-} dzsig;dzsig;Entries", 100, 0.0, 10.0);
0854   PF_dzsig_13_hist = ibook.book1DD("dzsig_13", "PF #mu^{+} dzsig;dzsig;Entries", 100, 0.0, 10.0);
0855   PF_dzsig_n13_hist = ibook.book1DD("dzsig_n13", "PF #mu^{-} dzsig;dzsig;Entries", 100, 0.0, 10.0);
0856 
0857   PF_dxysig_211_hist = ibook.book1DD("dxysig_211", "PF h^{+} dxysig;dxysig;Entries", 100, 0.0, 10.0);
0858   PF_dxysig_n211_hist = ibook.book1DD("dxysig_n211", "PF h^{-} dxysig;dxysig;Entries", 100, 0.0, 10.0);
0859   PF_dxysig_13_hist = ibook.book1DD("dxysig_13", "PF #mu^{+} dxysig;dxysig;Entries", 100, 0.0, 10.0);
0860   PF_dxysig_n13_hist = ibook.book1DD("dxysig_n13", "PF #mu^{-} dxysig;dxysig;Entries", 100, 0.0, 10.0);
0861 
0862   PF_trk_pt_211_hist = ibook.book1DD("trk_pt_211", "PF h^{+} Track pT (GeV);Track p_{T} (GeV);Entries", 100, 0.0, 10.0);
0863   PF_trk_pt_n211_hist =
0864       ibook.book1DD("trk_pt_n211", "PF h^{-} Track pT (GeV);Track p_{T} (GeV);Entries", 100, 0.0, 10.0);
0865   PF_trk_pt_13_hist = ibook.book1DD("trk_pt_13", "PF #mu^{+} Track pT (GeV);Track p_{T} (GeV);Entries", 100, 0.0, 10.0);
0866   PF_trk_pt_n13_hist =
0867       ibook.book1DD("trk_pt_n13", "PF #mu^{-} Track pT (GeV);Track p_{T} (GeV);Entries", 100, 0.0, 10.0);
0868 
0869   PF_trk_eta_211_hist = ibook.book1DD("trk_eta_211", "PF h^{+} Track #eta;Track #eta;Entries", 100, -3.0, 3.0);
0870   PF_trk_eta_n211_hist = ibook.book1DD("trk_eta_n211", "PF h^{-} Track #eta;Track #eta;Entries", 100, -3.0, 3.0);
0871   PF_trk_eta_13_hist = ibook.book1DD("trk_eta_13", "PF #mu^{+} Track #eta;Track #eta;Entries", 100, -3.0, 3.0);
0872   PF_trk_eta_n13_hist = ibook.book1DD("trk_eta_n13", "PF #mu^{-} Track #eta;Track #eta;Entries", 100, -3.0, 3.0);
0873 
0874   PF_trk_phi_211_hist = ibook.book1DD("trk_phi_211", "PF h^{+} Track #phi;Track #phi;Entries", 100, -3.2, 3.2);
0875   PF_trk_phi_n211_hist = ibook.book1DD("trk_phi_n211", "PF h^{-} Track #phi;Track #phi;Entries", 100, -3.2, 3.2);
0876   PF_trk_phi_13_hist = ibook.book1DD("trk_phi_13", "PF #mu^{+} Track #phi;Track #phi;Entries", 100, -3.2, 3.2);
0877   PF_trk_phi_n13_hist = ibook.book1DD("trk_phi_n13", "PF #mu^{-} Track #phi;Track #phi;Entries", 100, -3.2, 3.2);
0878 
0879   ibook.setCurrentFolder(topfoldername_ + "/Photon");
0880   pt_pho_hist = ibook.book1D("pt_pho", "Photon pT; p_{T} (GeV); Entries", 100, 0.0, 100.0);
0881   eta_pho_hist = ibook.book1D("eta_pho", "photon #eta; #eta; Entries", 100, -2.7, 2.7);
0882   phi_pho_hist = ibook.book1D("phi_pho", "Photon #phi; #phi (rad); Entries", 100, -3.14, 3.14);
0883   rawEnergy_pho_hist = ibook.book1D("rawEnergy_pho", "Raw Energy Photon; Energy (GeV); Entries", 100, 0.0, 250.0);
0884   preshowerEnergy_pho_hist =
0885       ibook.book1D("preshowerEnergy_pho", "Preshower Energy Photon; Energy (GeV); Entries", 100, 0.0, 8.0);
0886   corrEcalEnergyError_pho_hist = ibook.book1D(
0887       "corrEcalEnergyError_pho", "Corrected ECAL Energy Error Photon; Energy Error (GeV); Entries", 100, 0.0, 20.0);
0888   sigmaIetaIeta_pho_hist =
0889       ibook.book1D("sigmaIetaIeta_pho", "Sigma iEta iEta Photon; #sigma_{i#eta i#eta}; Entries", 100, 0.0, 0.5);
0890   hOverE_pho_hist = ibook.book1D("hOverE_pho", "H/E Photon; H/E; Entries", 100, 0.0, 1.5);
0891   ecalIso_pho_hist = ibook.book1D("ecalIso_pho", "ECAL Isolation Photon; Isolation (GeV); Entries", 100, 0.0, 100.0);
0892   hcalIso_pho_hist = ibook.book1D("hcalIso_pho", "HCAL Isolation Photon; Isolation (GeV); Entries", 100, 0.0, 100.0);
0893   trackIso_pho_hist = ibook.book1D("trackIso_pho", "Track Isolation Photon; Isolation (GeV); Entries", 100, 0.0, 0.05);
0894   r9_pho_hist = ibook.book1D("r9_pho", "R9; R9; Entries", 100, 0.0, 5);
0895   sMin_pho_hist = ibook.book1D("sMin_pho", "sMin Photon; sMin; Entries", 100, 0.0, 3);
0896   sMaj_pho_hist = ibook.book1D("sMaj_pho", "sMaj Photon; sMaj; Entries", 100, 0.0, 3);
0897 
0898   ibook.setCurrentFolder(topfoldername_ + "/Electron");
0899   pt_ele_hist = ibook.book1D("pt_ele", "Electron pT; p_{T} (GeV); Entries", 100, 0.0, 100.0);
0900   eta_ele_hist = ibook.book1D("eta_ele", "Electron #eta; #eta; Entries", 100, -2.7, 2.7);
0901   phi_ele_hist = ibook.book1D("phi_ele", "Electron #phi; #phi (rad); Entries", 100, -3.14, 3.14);
0902   rawEnergy_ele_hist = ibook.book1D("rawEnergy_ele", "Raw Energy Electron; Energy (GeV); Entries", 100, 0.0, 250.0);
0903   preshowerEnergy_ele_hist =
0904       ibook.book1D("preshowerEnergy_ele", "Preshower Energy Electron; Energy (GeV); Entries", 100, 0.0, 10.0);
0905   corrEcalEnergyError_ele_hist = ibook.book1D(
0906       "corrEcalEnergyError_ele", "Corrected ECAL Energy Error Electron; Energy Error (GeV); Entries", 100, 0.0, 20.0);
0907   dEtaIn_ele_hist = ibook.book1D("dEtaIn_ele", "dEtaIn Electron; dEtaIn; Entries", 100, -0.05, 0.05);
0908   dPhiIn_ele_hist = ibook.book1D("dPhiIn_ele", "dPhiIn Electron; dPhiIn; Entries", 100, -0.5, 0.5);
0909   sigmaIetaIeta_ele_hist =
0910       ibook.book1D("sigmaIetaIeta_ele", "Sigma iEta iEta Electron; #sigma_{i#eta i#eta}; Entries", 100, 0.0, 0.05);
0911   hOverE_ele_hist = ibook.book1D("hOverE_ele", "H/E Electron; H/E; Entries", 100, 0.0, 0.3);
0912   ooEMOop_ele_hist = ibook.book1D("ooEMOop_ele", "1/E - 1/p Electron; 1/E - 1/p; Entries", 100, -0.3, 0.3);
0913   missingHits_ele_hist = ibook.book1D("missingHits_ele", "Missing Hits Electron; Count; Entries", 10, 0, 5);
0914   trackfbrem_ele_hist = ibook.book1D("trackfbrem_ele", "Track fbrem Electron; fbrem; Entries", 100, -1.5, 1.0);
0915   ecalIso_ele_hist = ibook.book1D("ecalIso_ele", "ECAL Isolation Electron; Isolation (GeV); Entries", 100, 0.0, 70.0);
0916   hcalIso_ele_hist = ibook.book1D("hcalIso_ele", "HCAL Isolation Electron; Isolation (GeV); Entries", 100, 0.0, 60.0);
0917   trackIso_ele_hist =
0918       ibook.book1D("trackIso_ele", "Track Isolation Electron; Isolation (GeV); Entries", 100, 0.0, 0.05);
0919   r9_ele_hist = ibook.book1D("r9_ele", "R9 Electron; R9; Entries", 100, 0.0, 5);
0920   sMin_ele_hist = ibook.book1D("sMin_ele", "sMin Electron; sMin; Entries", 100, 0.0, 3);
0921   sMaj_ele_hist = ibook.book1D("sMaj_ele", "sMaj Electron; sMaj; Entries", 100, 0.0, 3);
0922 
0923   ibook.setCurrentFolder(topfoldername_ + "/Muon");
0924   pt_mu_hist = ibook.book1D("pt_mu", "Muon pT; p_{T} (GeV); Entries", 100, 0.0, 200.0);
0925   eta_mu_hist = ibook.book1D("eta_mu", "Muon #eta; #eta; Entries", 100, -2.7, 2.7);
0926   phi_mu_hist = ibook.book1D("phi_mu", "Muon #phi; #phi (rad); Entries", 100, -3.14, 3.14);
0927   type_mu_hist = ibook.book1D("type_mu", "Muon Type; Type; Entries", 10, 0, 10);
0928   charge_mu_hist = ibook.book1D("charge_mu", "Muon Charge; Charge; Entries", 3, -1, 2);
0929   normalizedChi2_mu_hist = ibook.book1D("normalizedChi2_mu", "Normalized chi2; chi2; Entries", 100, 0.0, 10.0);
0930   ecalIso_mu_hist = ibook.book1D("ecalIso_mu", "ECAL Isolation Muon; Isolation (GeV); Entries", 100, 0.0, 100.0);
0931   hcalIso_mu_hist = ibook.book1D("hcalIso_mu", "HCAL Isolation Muon; Isolation (GeV); Entries", 100, 0.0, 100.0);
0932   trackIso_mu_hist = ibook.book1D("trackIso_mu", "Track Isolation Muon; Isolation (GeV); Entries", 100, 0.0, 10.0);
0933   nValidStandAloneMuonHits_mu_hist =
0934       ibook.book1D("nValidStandAloneMuonHits_mu", "Valid Standalone Muon Hits; Hits; Entries", 50, 0, 50);
0935   nStandAloneMuonMatchedStations_mu_hist = ibook.book1D(
0936       "nStandAloneMuonMatchedStations_mu", "Standalone Muon Matched Stations; Stations; Entries", 10, 0, 10);
0937   nValidRecoMuonHits_mu_hist = ibook.book1D("nValidRecoMuonHits_mu", "Valid Reco Muon Hits; Hits; Entries", 50, 0, 50);
0938   nRecoMuonChambers_mu_hist = ibook.book1D("nRecoMuonChambers_mu", "Reco Muon Chambers; Chambers; Entries", 10, 0, 20);
0939   nRecoMuonChambersCSCorDT_mu_hist =
0940       ibook.book1D("nRecoMuonChambersCSCorDT_mu", "Reco Muon Chambers (CSC or DT); Chambers; Entries", 10, 0, 14);
0941   nRecoMuonMatches_mu_hist = ibook.book1D("nRecoMuonMatches_mu", "Reco Muon Matches; Matches; Entries", 10, 0, 10);
0942   nRecoMuonMatchedStations_mu_hist =
0943       ibook.book1D("nRecoMuonMatchedStations_mu", "Reco Muon Matched Stations; Stations; Entries", 10, 0, 10);
0944   nRecoMuonExpectedMatchedStations_mu_hist = ibook.book1D(
0945       "nRecoMuonExpectedMatchedStations_mu", "Reco Muon Expected Matched Stations; Stations; Entries", 10, 0, 10);
0946   recoMuonStationMask_mu_hist =
0947       ibook.book1D("recoMuonStationMask_mu", "Reco Muon Station Mask; Mask; Entries", 20, 0, 20);
0948   nRecoMuonMatchedRPCLayers_mu_hist =
0949       ibook.book1D("nRecoMuonMatchedRPCLayers_mu", "Reco Muon Matched RPC Layers; Layers; Entries", 10, 0, 2);
0950   recoMuonRPClayerMask_mu_hist =
0951       ibook.book1D("recoMuonRPClayerMask_mu", "Reco Muon RPC Layer Mask; Mask; Entries", 20, 0, 5);
0952   nValidPixelHits_mu_hist = ibook.book1D("nValidPixelHits_mu", "Valid Pixel Hits; Hits; Entries", 20, 0, 20);
0953   nValidStripHits_mu_hist = ibook.book1D("nValidStripHits_mu", "Valid Strip Hits; Hits; Entries", 50, 0, 50);
0954   nPixelLayersWithMeasurement_mu_hist =
0955       ibook.book1D("nPixelLayersWithMeasurement_mu", "Pixel Layers with Measurement; Layers; Entries", 10, 0, 10);
0956   nTrackerLayersWithMeasurement_mu_hist =
0957       ibook.book1D("nTrackerLayersWithMeasurement_mu", "Tracker Layers with Measurement; Layers; Entries", 20, 0, 20);
0958   trk_chi2_mu_hist = ibook.book1D("trk_chi2_mu", "Muon Tracker chi2; #chi^{2}; Entries", 100, 0.0, 100.0);
0959   trk_ndof_mu_hist = ibook.book1D("trk_ndof_mu", "Muon Tracker Ndof; Ndof; Entries", 100, 0, 100);
0960   trk_dxy_mu_hist = ibook.book1D("trk_dxy_mu", "Muon Tracker dxy; dxy (cm); Entries", 100, -0.5, 0.5);
0961   trk_dz_mu_hist = ibook.book1D("trk_dz_mu", "Muon Tracker dz; dz (cm); Entries", 100, -20.0, 20.0);
0962   trk_qoverp_mu_hist = ibook.book1D("trk_qoverp_mu", "Muon q/p; q/p; Entries", 100, -1, 1);
0963   trk_lambda_mu_hist = ibook.book1D("trk_lambda_mu", "Muon Lambda; #lambda; Entries", 100, -2, 2);
0964   trk_pt_mu_hist = ibook.book1D("trk_pt_mu", "Muon Tracker pT; p_{T} (GeV); Entries", 100, 0.0, 200.0);
0965   trk_phi_mu_hist = ibook.book1D("trk_phi_mu", "Muon Tracker #phi; #phi (rad); Entries", 100, -3.14, 3.14);
0966   trk_eta_mu_hist = ibook.book1D("trk_eta_mu", "Muon Tracker #eta; #eta; Entries", 100, -2.7, 2.7);
0967   trk_dxyError_mu_hist = ibook.book1D("trk_dxyError_mu", "Muon dxy Error; dxy Error (cm); Entries", 100, 0.0, 0.05);
0968   trk_dzError_mu_hist = ibook.book1D("trk_dzError_mu", "Muon dz Error; dz Error (cm); Entries", 100, 0.0, 0.05);
0969   trk_qoverpError_mu_hist = ibook.book1D("trk_qoverpError_mu", "Muon q/p Error; q/p Error; Entries", 100, 0.0, 0.01);
0970   trk_lambdaError_mu_hist =
0971       ibook.book1D("trk_lambdaError_mu", "Muon Lambda Error; #lambda Error; Entries", 100, 0.0, 0.1);
0972   trk_phiError_mu_hist = ibook.book1D("trk_phiError_mu", "Muon Phi Error; #phi Error (rad); Entries", 100, 0.0, 0.01);
0973   trk_dsz_mu_hist = ibook.book1D("trk_dsz_mu", "Muon dsz; dsz (cm); Entries", 100, -2, 2);
0974   trk_dszError_mu_hist = ibook.book1D("trk_dszError_mu", "Muon dsz Error; dsz Error (cm); Entries", 100, 0.0, 0.05);
0975   trk_qoverp_lambda_cov_mu_hist =
0976       ibook.book1D("trk_qoverp_lambda_cov_mu", "Muon q/p-#lambda Covariance; Covariance; Entries", 100, -0.001, 0.001);
0977   trk_qoverp_phi_cov_mu_hist =
0978       ibook.book1D("trk_qoverp_phi_cov_mu", "Muon q/p-#phi Covariance; Covariance; Entries", 100, -0.001, 0.001);
0979   trk_qoverp_dxy_cov_mu_hist =
0980       ibook.book1D("trk_qoverp_dxy_cov_mu", "Muon q/p-dxy Covariance; Covariance; Entries", 100, -0.001, 0.001);
0981   trk_qoverp_dsz_cov_mu_hist =
0982       ibook.book1D("trk_qoverp_dsz_cov_mu", "Muon q/p-dsz Covariance; Covariance; Entries", 100, -0.001, 0.001);
0983   trk_lambda_phi_cov_mu_hist =
0984       ibook.book1D("trk_lambda_phi_cov_mu", "Muon Lambda-#phi Covariance; Covariance; Entries", 100, -0.001, 0.001);
0985   trk_lambda_dxy_cov_mu_hist =
0986       ibook.book1D("trk_lambda_dxy_cov_mu", "Muon Lambda-dxy Covariance; Covariance; Entries", 100, -0.001, 0.001);
0987   trk_lambda_dsz_cov_mu_hist =
0988       ibook.book1D("trk_lambda_dsz_cov_mu", "Muon Lambda-dsz Covariance; Covariance; Entries", 100, -0.001, 0.001);
0989   trk_phi_dxy_cov_mu_hist =
0990       ibook.book1D("trk_phi_dxy_cov_mu", "Muon Phi-dxy Covariance; Covariance; Entries", 100, -0.001, 0.001);
0991   trk_phi_dsz_cov_mu_hist =
0992       ibook.book1D("trk_phi_dsz_cov_mu", "Muon Phi-dsz Covariance; Covariance; Entries", 100, -0.001, 0.001);
0993   trk_dxy_dsz_cov_mu_hist =
0994       ibook.book1D("trk_dxy_dsz_cov_mu", "Muon dxy-dsz Covariance; Covariance; Entries", 100, -0.001, 0.001);
0995   trk_vx_mu_hist = ibook.book1D("trk_vx_mu", "Muon Tracker Vertex X; x (cm); Entries", 100, -0.5, 0.5);
0996   trk_vy_mu_hist = ibook.book1D("trk_vy_mu", "Muon Tracker Vertex Y; y (cm); Entries", 100, -0.5, 0.5);
0997   trk_vz_mu_hist = ibook.book1D("trk_vz_mu", "Muon Tracker Vertex Z; z (cm); Entries", 100, -20.0, 20.0);
0998 
0999   ibook.setCurrentFolder(topfoldername_ + "/PFJet");
1000   pt_pfj_hist = ibook.book1D("pt_pfj", "PF Jet pT; p_{T} (GeV); Entries", 100, 0.0, 150.0);
1001   eta_pfj_hist = ibook.book1D("eta_pfj", "PF Jet #eta; #eta; Entries", 100, -5.0, 5.0);
1002   phi_pfj_hist = ibook.book1D("phi_pfj", "PF Jet #phi; #phi (rad); Entries", 100, -3.14, 3.14);
1003   m_pfj_hist = ibook.book1D("m_pfj", "PF Jet Mass; Mass (GeV); Entries", 100, 0.0, 40.0);
1004   jetArea_pfj_hist = ibook.book1D("jetArea_pfj", "PF Jet Area; Area; Entries", 100, 0.0, 0.8);
1005   chargedHadronEnergy_pfj_hist =
1006       ibook.book1D("chargedHadronEnergy_pfj", "Charged Hadron Energy; Energy (GeV); Entries", 100, 0.0, 150.0);
1007   neutralHadronEnergy_pfj_hist =
1008       ibook.book1D("neutralHadronEnergy_pfj", "Neutral Hadron Energy; Energy (GeV); Entries", 100, 0.0, 600.0);
1009   photonEnergy_pfj_hist = ibook.book1D("photonEnergy_pfj", "Photon Energy; Energy (GeV); Entries", 100, 0.0, 90.0);
1010   electronEnergy_pfj_hist = ibook.book1D("electronEnergy_pfj", "Electron Energy; Energy (GeV); Entries", 100, 0.0, 3.0);
1011   muonEnergy_pfj_hist = ibook.book1D("muonEnergy_pfj", "Muon Energy; Energy (GeV); Entries", 100, 0.0, 3.0);
1012   HFHadronEnergy_pfj_hist =
1013       ibook.book1D("HFHadronEnergy_pfj", "HF Hadron Energy; Energy (GeV); Entries", 100, 0.0, 300.0);
1014   HFEMEnergy_pfj_hist = ibook.book1D("HFEMEnergy_pfj", "HF EM Energy; Energy (GeV); Entries", 100, 0.0, 300.0);
1015   chargedHadronMultiplicity_pfj_hist =
1016       ibook.book1D("chargedHadronMultiplicity_pfj", "Charged Hadron Multiplicity; Multiplicity; Entries", 50, 0, 25);
1017   neutralHadronMultiplicity_pfj_hist =
1018       ibook.book1D("neutralHadronMultiplicity_pfj", "Neutral Hadron Multiplicity; Multiplicity; Entries", 50, 0, 10);
1019   photonMultiplicity_pfj_hist =
1020       ibook.book1D("photonMultiplicity_pfj", "Photon Multiplicity; Multiplicity; Entries", 50, 0, 22);
1021   electronMultiplicity_pfj_hist =
1022       ibook.book1D("electronMultiplicity_pfj", "Electron Multiplicity; Multiplicity; Entries", 20, 0, 5);
1023   muonMultiplicity_pfj_hist =
1024       ibook.book1D("muonMultiplicity_pfj", "Muon Multiplicity; Multiplicity; Entries", 20, 0, 5);
1025   HFHadronMultiplicity_pfj_hist =
1026       ibook.book1D("HFHadronMultiplicity_pfj", "HF Hadron Multiplicity; Multiplicity; Entries", 20, 0, 20);
1027   HFEMMultiplicity_pfj_hist =
1028       ibook.book1D("HFEMMultiplicity_pfj", "HF EM Multiplicity; Multiplicity; Entries", 20, 0, 20);
1029   HOEnergy_pfj_hist = ibook.book1D("HOEnergy_pfj", "HO Energy; Energy (GeV); Entries", 100, 0.0, 5.0);
1030   mvaDiscriminator_pfj_hist = ibook.book1D("mvaDiscriminator_pfj", "MVA Discriminator; Score; Entries", 100, -1.0, 1.0);
1031 
1032   ibook.setCurrentFolder(topfoldername_ + "/PrimaryVertex");
1033   x_pv_hist = ibook.book1D("x_pv", "Primary Vertex X Position; x (cm); Entries", 100, -0.5, 0.5);
1034   y_pv_hist = ibook.book1D("y_pv", "Primary Vertex Y Position; y (cm); Entries", 100, -0.5, 0.5);
1035   z_pv_hist = ibook.book1D("z_pv", "Primary Vertex Z Position; z (cm); Entries", 100, -20.0, 20.0);
1036   zError_pv_hist = ibook.book1D("zError_pv", "Primary Vertex Z Error; z Error (cm); Entries", 100, 0.0, 0.05);
1037   xError_pv_hist = ibook.book1D("xError_pv", "Primary Vertex X Error; x Error (cm); Entries", 100, 0.0, 0.05);
1038   yError_pv_hist = ibook.book1D("yError_pv", "Primary Vertex Y Error; y Error (cm); Entries", 100, 0.0, 0.05);
1039   tracksSize_pv_hist =
1040       ibook.book1D("tracksSize_pv", "Number of Tracks at Primary Vertex; Tracks; Entries", 100, 0, 100);
1041   chi2_pv_hist = ibook.book1D("chi2_pv", "Primary Vertex chi2; #chi^{2}; Entries", 100, 0.0, 50.0);
1042   ndof_pv_hist = ibook.book1D("ndof_pv", "Primary Vertex Ndof; Ndof; Entries", 100, 0, 100);
1043   isValidVtx_pv_hist = ibook.book1D("isValidVtx_pv", "Is Valid Primary Vertex?; 0 = False, 1 = True; Entries", 2, 0, 2);
1044   xyCov_pv_hist = ibook.book1D("xyCov_pv", "Primary Vertex XY Covariance; Cov(x,y); Entries", 100, -0.01, 0.01);
1045   xzCov_pv_hist = ibook.book1D("xzCov_pv", "Primary Vertex XZ Covariance; Cov(x,z); Entries", 100, -0.01, 0.01);
1046   yzCov_pv_hist = ibook.book1D("yzCov_pv", "Primary Vertex YZ Covariance; Cov(y,z); Entries", 100, -0.01, 0.01);
1047 
1048   ibook.setCurrentFolder(topfoldername_ + "/DisplacedVertex");
1049   x_vtx_hist = ibook.book1D("x_vtx", "Vertex X Position; x (cm); Entries", 100, -0.5, 0.5);
1050   y_vtx_hist = ibook.book1D("y_vtx", "Vertex Y Position; y (cm); Entries", 100, -0.5, 0.5);
1051   z_vtx_hist = ibook.book1D("z_vtx", "Vertex Z Position; z (cm); Entries", 100, -20.0, 20.0);
1052   zError_vtx_hist = ibook.book1D("zError_vtx", "Vertex Z Error; z Error (cm); Entries", 100, 0.0, 0.2);
1053   xError_vtx_hist = ibook.book1D("xError_vtx", "Vertex X Error; x Error (cm); Entries", 100, 0.0, 0.2);
1054   yError_vtx_hist = ibook.book1D("yError_vtx", "Vertex Y Error; y Error (cm); Entries", 100, 0.0, 0.2);
1055   tracksSize_vtx_hist = ibook.book1D("tracksSize_vtx", "Number of Tracks at Vertex; Tracks; Entries", 100, 0, 100);
1056   chi2_vtx_hist = ibook.book1D("chi2_vtx", "Vertex #chi^{2}; #chi^{2}; Entries", 100, 0.0, 5.0);
1057   ndof_vtx_hist = ibook.book1D("ndof_vtx", "Vertex Ndof; Ndof; Entries", 100, 0, 5);
1058   isValidVtx_vtx_hist = ibook.book1D("isValidVtx_vtx", "Is Valid Vertex?; 0 = False, 1 = True; Entries", 2, 0, 2);
1059   xyCov_vtx_hist = ibook.book1D("xyCov_vtx", "Vertex XY Covariance; Cov(x,y); Entries", 100, -0.01, 0.01);
1060   xzCov_vtx_hist = ibook.book1D("xzCov_vtx", "Vertex XZ Covariance; Cov(x,z); Entries", 100, -0.01, 0.01);
1061   yzCov_vtx_hist = ibook.book1D("yzCov_vtx", "Vertex YZ Covariance; Cov(y,z); Entries", 100, -0.01, 0.01);
1062 
1063   ibook.setCurrentFolder(topfoldername_ + "/Tracking");
1064   tk_pt_tk_hist = ibook.book1D("tk_pt_tk", "Track pT; p_{T} (GeV); Entries", 100, 0.0, 30.0);
1065   tk_eta_tk_hist = ibook.book1D("tk_eta_tk", "Track #eta; #eta; Entries", 100, -2.7, 2.7);
1066   tk_phi_tk_hist = ibook.book1D("tk_phi_tk", "Track #phi; #phi (rad); Entries", 100, -3.14, 3.14);
1067   tk_chi2_tk_hist = ibook.book1D("tk_chi2_tk", "Track #chi^{2}; #chi^{2}; Entries", 100, 0.0, 50.0);
1068   tk_ndof_tk_hist = ibook.book1D("tk_ndof_tk", "Track Ndof; Ndof; Entries", 100, 0, 10);
1069   tk_charge_tk_hist = ibook.book1D("tk_charge_tk", "Track Charge; Charge; Entries", 3, -1, 2);
1070   tk_dxy_tk_hist = ibook.book1D("tk_dxy_tk", "Track dxy; dxy (cm); Entries", 100, -0.5, 0.5);
1071   tk_dz_tk_hist = ibook.book1D("tk_dz_tk", "Track dz; dz (cm); Entries", 100, -20.0, 20.0);
1072   tk_nValidPixelHits_tk_hist = ibook.book1D("tk_nValidPixelHits_tk", "Valid Pixel Hits; Hits; Entries", 20, 0, 20);
1073   tk_nTrackerLayersWithMeasurement_tk_hist = ibook.book1D(
1074       "tk_nTrackerLayersWithMeasurement_tk", "Tracker Layers with Measurement; Layers; Entries", 20, 0, 20);
1075   tk_nValidStripHits_tk_hist = ibook.book1D("tk_nValidStripHits_tk", "Valid Strip Hits; Hits; Entries", 50, 0, 50);
1076   tk_qoverp_tk_hist = ibook.book1D("tk_qoverp_tk", "q/p; q/p; Entries", 100, -1.0, 1.0);
1077   tk_lambda_tk_hist = ibook.book1D("tk_lambda_tk", "Lambda; #lambda; Entries", 100, -2, 2);
1078   tk_dxy_Error_tk_hist = ibook.book1D("tk_dxy_Error_tk", "dxy Error; dxy Error (cm); Entries", 100, 0.0, 0.05);
1079   tk_dz_Error_tk_hist = ibook.book1D("tk_dz_Error_tk", "dz Error; dz Error (cm); Entries", 100, 0.0, 0.05);
1080   tk_qoverp_Error_tk_hist = ibook.book1D("tk_qoverp_Error_tk", "q/p Error; q/p Error; Entries", 100, 0.0, 0.05);
1081   tk_lambda_Error_tk_hist = ibook.book1D("tk_lambda_Error_tk", "Lambda Error; #lambda Error; Entries", 100, 0.0, 0.1);
1082   tk_phi_Error_tk_hist = ibook.book1D("tk_phi_Error_tk", "Phi Error; #phi Error (rad); Entries", 100, 0.0, 0.01);
1083   tk_dsz_tk_hist = ibook.book1D("tk_dsz_tk", "dsz; dsz (cm); Entries", 100, -2, 2);
1084   tk_dsz_Error_tk_hist = ibook.book1D("tk_dsz_Error_tk", "dsz Error; dsz Error (cm); Entries", 100, 0.0, 0.05);
1085   tk_vtxInd_tk_hist = ibook.book1D("tk_vtxInd_tk", "Vertex Index; Index; Entries", 50, 0, 50);
1086   tk_vx_tk_hist = ibook.book1D("tk_vx_tk", "Tracker Vertex X; x (cm); Entries", 100, -0.5, 0.5);
1087   tk_vy_tk_hist = ibook.book1D("tk_vy_tk", "Tracker Vertex Y; y (cm); Entries", 100, -0.5, 0.5);
1088   tk_vz_tk_hist = ibook.book1D("tk_vz_tk", "Tracker Vertex Z; z (cm); Entries", 100, -20.0, 20.0);
1089   tk_chi2_ndof_tk_hist = ibook.book1D("tk_chi2_ndof_tk", "Reduced #chi^{2}; #chi^{2}/NDOF; Entries", 100, 0, 50);
1090   trk_chi2_prob_hist = ibook.book1D("tk_chi2_prob_hist", "p(#chi^{2}, NDOF); p(#chi^{2}, NDOF); Entries", 100, 0, 1);
1091   tk_PV_dz_hist = ibook.book1D("tk_PV_dz", "Track dz w.r.t. PV; Track dz w.r.t. PV; Entries", 100, -0.35, 0.35);
1092   tk_PV_dxy_hist = ibook.book1D("tk_PV_dxy", "Track dxy w.r.t. PV; Track dxy w.r.t. PV; Entries", 100, -0.15, 0.15);
1093 }
1094 // ------------ method fills 'descriptions' with the allowed parameters for the module  ------------
1095 
1096 void ScoutingCollectionMonitor::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
1097   edm::ParameterSetDescription desc;
1098   desc.add<bool>("onlyScouting", false);
1099   desc.add<edm::InputTag>("electrons", edm::InputTag("hltScoutingEgammaPacker"));
1100   desc.add<edm::InputTag>("muons", edm::InputTag("hltScoutingMuonPackerNoVtx"));
1101   desc.add<edm::InputTag>("pfcands", edm::InputTag("hltScoutingPFPacker"));
1102   desc.add<edm::InputTag>("photons", edm::InputTag("hltScoutingEgammaPacker"));
1103   desc.add<edm::InputTag>("pfjets", edm::InputTag("hltScoutingPFPacker"));
1104   desc.add<edm::InputTag>("tracks", edm::InputTag("hltScoutingTrackPacker"));
1105   desc.add<edm::InputTag>("displacedVertices", edm::InputTag("hltScoutingMuonPackerNoVtx", "displacedVtx"));
1106   desc.add<edm::InputTag>("primaryVertices", edm::InputTag("hltScoutingPrimaryVertexPacker", "primaryVtx"));
1107   desc.add<edm::InputTag>("pfMetPt", edm::InputTag("hltScoutingPFPacker", "pfMetPt"));
1108   desc.add<edm::InputTag>("pfMetPhi", edm::InputTag("hltScoutingPFPacker", "pfMetPhi"));
1109   desc.add<edm::InputTag>("rho", edm::InputTag("hltScoutingPFPacker", "rho"));
1110   desc.add<edm::InputTag>("onlineMetaDataDigis", edm::InputTag("onlineMetaDataDigis"));
1111   desc.add<std::string>("topfoldername", "HLT/ScoutingOffline/Miscellaneous");
1112   descriptions.addWithDefaultLabel(desc);
1113 }
1114 
1115 //define this as a plug-in
1116 DEFINE_FWK_MODULE(ScoutingCollectionMonitor);