Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:33:03

0001 #ifndef PhotonValidator_H
0002 #define PhotonValidator_H
0003 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0004 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
0005 #include "Geometry/CaloTopology/interface/CaloTopology.h"
0006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0007 #include "FWCore/Framework/interface/Event.h"
0008 #include "FWCore/Framework/interface/EventSetup.h"
0009 #include "FWCore/Framework/interface/ESHandle.h"
0010 #include "RecoEgamma/EgammaMCTools/interface/PhotonMCTruthFinder.h"
0011 #include "MagneticField/Engine/interface/MagneticField.h"
0012 #include "DataFormats/EgammaCandidates/interface/Photon.h"
0013 #include "DataFormats/EgammaCandidates/interface/PhotonFwd.h"
0014 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
0015 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0016 #include "DataFormats/JetReco/interface/GenJetCollection.h"
0017 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
0018 #include "DataFormats/Common/interface/ValueMap.h"
0019 #include "SimDataFormats/Track/interface/SimTrack.h"
0020 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
0021 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
0022 #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticleFwd.h"
0023 #include "SimDataFormats/Vertex/interface/SimVertex.h"
0024 #include "SimDataFormats/Vertex/interface/SimVertexContainer.h"
0025 #include "DataFormats/HepMCCandidate/interface/GenParticle.h"
0026 #include "Geometry/Records/interface/CaloGeometryRecord.h"
0027 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
0028 #include "TrackingTools/Records/interface/TransientTrackRecord.h"
0029 //
0030 //DQM services
0031 #include "DQMServices/Core/interface/DQMStore.h"
0032 #include "FWCore/ServiceRegistry/interface/Service.h"
0033 #include "DQMServices/Core/interface/DQMOneEDAnalyzer.h"
0034 
0035 //
0036 #include <map>
0037 #include <vector>
0038 #include <memory>
0039 /** \class PhotonValidator
0040  **
0041  **
0042  **  $Id: PhotonValidator
0043  **  \author Nancy Marinelli, U. of Notre Dame, US
0044  **
0045  ***/
0046 
0047 // forward declarations
0048 namespace edm {
0049   class HepMCProduct;
0050 }
0051 class TFile;
0052 class TH1F;
0053 class TH2F;
0054 class TProfile;
0055 class TTree;
0056 class SimVertex;
0057 class SimTrack;
0058 
0059 class PhotonValidator : public DQMOneEDAnalyzer<> {
0060 public:
0061   //
0062   explicit PhotonValidator(const edm::ParameterSet&);
0063   ~PhotonValidator() override;
0064 
0065   void analyze(const edm::Event&, const edm::EventSetup&) override;
0066   //  virtual void beginJob();
0067   void dqmBeginRun(edm::Run const& r, edm::EventSetup const& theEventSetup) override;
0068   void dqmEndRun(edm::Run const& r, edm::EventSetup const& es) override;
0069   void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0070 
0071 private:
0072   //
0073 
0074   float phiNormalization(float& a);
0075   float etaTransformation(float a, float b);
0076 
0077   std::string fName_;
0078   edm::ESHandle<MagneticField> theMF_;
0079 
0080   int verbosity_;
0081   int nEvt_;
0082   int nEntry_;
0083   int nSimPho_[2];
0084   int nSimConv_[2];
0085   int nMatched_;
0086   int nRecConv_;
0087   int nRecConvAss_;
0088   int nRecConvAssWithEcal_;
0089 
0090   int nInvalidPCA_;
0091 
0092   edm::ParameterSet parameters_;
0093   edm::ESHandle<CaloGeometry> theCaloGeom_;
0094   edm::ESHandle<CaloTopology> theCaloTopo_;
0095 
0096   std::string photonCollectionProducer_;
0097   std::string photonCollection_;
0098   edm::EDGetTokenT<reco::PhotonCollection> photonCollectionToken_;
0099   edm::EDGetTokenT<reco::PFCandidateCollection> pfCandidates_;
0100   std::string valueMapPhoPFCandIso_;
0101   edm::EDGetTokenT<edm::ValueMap<std::vector<reco::PFCandidateRef> > > particleBasedIso_token;
0102   edm::EDGetTokenT<reco::VertexCollection> offline_pvToken_;
0103   edm::InputTag bcBarrelCollection_;
0104   edm::InputTag bcEndcapCollection_;
0105   edm::EDGetTokenT<reco::GenParticleCollection> genpartToken_;
0106 
0107   edm::EDGetTokenT<EcalRecHitCollection> barrelEcalHits_;
0108   edm::EDGetTokenT<EcalRecHitCollection> endcapEcalHits_;
0109   edm::EDGetTokenT<TrackingParticleCollection> token_tp_;
0110 
0111   edm::InputTag conversionOITrackProducer_;
0112   edm::InputTag conversionIOTrackProducer_;
0113 
0114   edm::EDGetTokenT<edm::View<reco::Track> > conversionOITrackPr_Token_;
0115   edm::EDGetTokenT<edm::View<reco::Track> > conversionIOTrackPr_Token_;
0116 
0117   edm::EDGetTokenT<edm::SimTrackContainer> g4_simTk_Token_;
0118   edm::EDGetTokenT<edm::SimVertexContainer> g4_simVtx_Token_;
0119   edm::EDGetTokenT<edm::SimTrackContainer> famos_simTk_Token_;
0120   edm::EDGetTokenT<edm::SimVertexContainer> famos_simVtx_Token_;
0121   edm::EDGetTokenT<edm::HepMCProduct> hepMC_Token_;
0122   edm::EDGetTokenT<reco::GenJetCollection> genjets_Token_;
0123 
0124   const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magneticFieldToken_;
0125   const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> caloGeometryToken_;
0126   const edm::ESGetToken<TransientTrackBuilder, TransientTrackRecord> transientTrackBuilderToken_;
0127 
0128   std::unique_ptr<PhotonMCTruthFinder> thePhotonMCTruthFinder_;
0129 
0130   bool fastSim_;
0131   bool isRunCentrally_;
0132 
0133   double minPhoEtCut_;
0134   double convTrackMinPtCut_;
0135   double likelihoodCut_;
0136   double trkIsolExtRadius_;
0137   double trkIsolInnRadius_;
0138   double trkPtLow_;
0139   double lip_;
0140   double ecalIsolRadius_;
0141   double bcEtLow_;
0142   double hcalIsolExtRadius_;
0143   double hcalIsolInnRadius_;
0144   double hcalHitEtLow_;
0145   int numOfTracksInCone_;
0146   double trkPtSumCut_;
0147   double ecalEtSumCut_;
0148   double hcalEtSumCut_;
0149   bool dCotCutOn_;
0150   double dCotCutValue_;
0151   double dCotHardCutValue_;
0152 
0153   /// global variable for the MC photon
0154   double mcPhi_;
0155   double mcEta_;
0156   double mcConvR_;
0157   double mcConvZ_;
0158   double mcConvY_;
0159   double mcConvX_;
0160   double mcConvPhi_;
0161   double mcConvEta_;
0162   double mcJetEta_;
0163   double mcJetPhi_;
0164 
0165   edm::RefVector<TrackingParticleCollection> theConvTP_;
0166   //  std::vector<TrackingParticleRef> theConvTP_;
0167 
0168   double simMinPt_;
0169   double simMaxPt_;
0170 
0171   /// Global variables for reco Photon
0172   double recMinPt_;
0173   double recMaxPt_;
0174   MonitorElement* h_nRecoVtx_;
0175   //
0176   MonitorElement* h_nSimPho_[2];
0177   MonitorElement* h_SimPhoMotherType_[2];
0178   MonitorElement* h_SimPhoMotherEt_[2];
0179   MonitorElement* h_SimPhoMotherEta_[2];
0180   MonitorElement* h_SimPhoEtaSmallR9_;
0181   //
0182   MonitorElement* h_nSimConv_[2];
0183   MonitorElement* h_SimConvEtaPix_[2];
0184   //
0185   MonitorElement* h_simTkPt_;
0186   MonitorElement* h_simTkEta_;
0187 
0188   MonitorElement* h_simConvVtxRvsZ_[4];
0189   MonitorElement* h_simConvVtxYvsX_;
0190 
0191   ///   Denominator for efficiencies
0192   MonitorElement* h_SimPho_[3];
0193   MonitorElement* h_AllSimConv_[5];
0194   MonitorElement* h_VisSimConv_[6];
0195   MonitorElement* h_VisSimConvLarge_;
0196   ///   Numerator for efficiencies
0197   MonitorElement* h_MatchedSimPho_[3];
0198   MonitorElement* h_MatchedSimPhoBadCh_[3];
0199   MonitorElement* h_SimConvOneTracks_[5];
0200   MonitorElement* h_SimConvOneMTracks_[5];
0201   MonitorElement* h_SimConvTwoTracks_[5];
0202   MonitorElement* h_SimConvTwoMTracks_[5];
0203   MonitorElement* h_SimConvMTotal_[5];
0204   MonitorElement* h_SimConvTwoMTracksAndVtxPGT0_[5];
0205   MonitorElement* h_SimConvTwoMTracksAndVtxPGT0005_[5];
0206   MonitorElement* h_SimConvTwoMTracksAndVtxPGT01_[5];
0207   // Denominators for conversion fake rate
0208   MonitorElement* h_RecoConvTwoTracks_[5];
0209   // Numerators for conversion fake rate
0210   MonitorElement* h_RecoConvTwoMTracks_[5];
0211 
0212   //// tmp TH1F
0213   TH1F* th1f_SimConvMTotal_[5];
0214 
0215   //// test on OutIn Tracks
0216   MonitorElement* h_OIinnermostHitR_;
0217   MonitorElement* h_IOinnermostHitR_;
0218   MonitorElement* h_trkProv_[2];
0219   MonitorElement* h_trkAlgo_;
0220   MonitorElement* h_convAlgo_;
0221   MonitorElement* h_convQuality_;
0222 
0223   MonitorElement* h_phoDEta_[2];
0224   MonitorElement* h_phoDPhi_[2];
0225 
0226   MonitorElement* h_scEta_[2];
0227   MonitorElement* h_scEtaWidth_[2];
0228   MonitorElement* h_scPhi_[2];
0229   MonitorElement* h_scPhiWidth_[2];
0230   MonitorElement* h_scEtaPhi_[2];
0231 
0232   MonitorElement* h_scE_[2][3];
0233   MonitorElement* h_scEt_[2][3];
0234 
0235   MonitorElement* h_psE_;
0236 
0237   MonitorElement* h_EtR9Less093_[3][3];
0238   MonitorElement* h_r9_[3][3];
0239   MonitorElement* p_r9VsEta_[3];
0240   MonitorElement* h2_r9VsEt_[3];
0241   MonitorElement* p_r9VsEt_[3];
0242   //
0243   MonitorElement* h_r1_[3][3];
0244   MonitorElement* h2_r1VsEta_[3];
0245   MonitorElement* p_r1VsEta_[3];
0246   MonitorElement* h2_r1VsEt_[3];
0247   MonitorElement* p_r1VsEt_[3];
0248   //
0249   MonitorElement* h_r2_[3][3];
0250   MonitorElement* h2_r2VsEta_[3];
0251   MonitorElement* p_r2VsEta_[3];
0252   MonitorElement* h2_r2VsEt_[3];
0253   MonitorElement* p_r2VsEt_[3];
0254   //
0255   MonitorElement* h_sigmaIetaIeta_[3][3];
0256   MonitorElement* h2_sigmaIetaIetaVsEta_[3];
0257   MonitorElement* p_sigmaIetaIetaVsEta_[3];
0258   MonitorElement* h2_sigmaIetaIetaVsEt_[3];
0259   MonitorElement* p_sigmaIetaIetaVsEt_[3];
0260   //
0261   MonitorElement* h_hOverE_[3][3];
0262   MonitorElement* h2_hOverEVsEta_[3];
0263   MonitorElement* p_hOverEVsEta_[3];
0264   MonitorElement* h2_hOverEVsEt_[3];
0265   MonitorElement* p_hOverEVsEt_[3];
0266   //
0267   MonitorElement* h_newhOverE_[3][3];
0268   MonitorElement* p_newhOverEVsEta_[3];
0269   MonitorElement* p_newhOverEVsEt_[3];
0270 
0271   //
0272   MonitorElement* h_ecalRecHitSumEtConeDR04_[3][3];
0273   MonitorElement* h2_ecalRecHitSumEtConeDR04VsEta_[3];
0274   MonitorElement* p_ecalRecHitSumEtConeDR04VsEta_[3];
0275   MonitorElement* h2_ecalRecHitSumEtConeDR04VsEt_[3];
0276   MonitorElement* p_ecalRecHitSumEtConeDR04VsEt_[3];
0277   //
0278   MonitorElement* h_hcalTowerSumEtConeDR04_[3][3];
0279   MonitorElement* h2_hcalTowerSumEtConeDR04VsEta_[3];
0280   MonitorElement* p_hcalTowerSumEtConeDR04VsEta_[3];
0281   MonitorElement* h2_hcalTowerSumEtConeDR04VsEt_[3];
0282   MonitorElement* p_hcalTowerSumEtConeDR04VsEt_[3];
0283   //
0284   MonitorElement* h_hcalTowerBcSumEtConeDR04_[3][3];
0285   MonitorElement* p_hcalTowerBcSumEtConeDR04VsEta_[3];
0286   MonitorElement* p_hcalTowerBcSumEtConeDR04VsEt_[3];
0287   //
0288   MonitorElement* h_isoTrkSolidConeDR04_[3][3];
0289   MonitorElement* h2_isoTrkSolidConeDR04VsEta_[3];
0290   MonitorElement* p_isoTrkSolidConeDR04VsEta_[3];
0291   MonitorElement* h2_isoTrkSolidConeDR04VsEt_[3];
0292   MonitorElement* p_isoTrkSolidConeDR04VsEt_[3];
0293   //
0294   MonitorElement* h_nTrkSolidConeDR04_[3][3];
0295   MonitorElement* h2_nTrkSolidConeDR04VsEta_[3];
0296   MonitorElement* p_nTrkSolidConeDR04VsEta_[3];
0297   MonitorElement* h2_nTrkSolidConeDR04VsEt_[3];
0298   MonitorElement* p_nTrkSolidConeDR04VsEt_[3];
0299   //
0300 
0301   MonitorElement* h_gamgamMass_[3][3];
0302   MonitorElement* h_gamgamMassRegr1_[3][3];
0303   MonitorElement* h_gamgamMassRegr2_[3][3];
0304 
0305   MonitorElement* h_phoE_[2][3];
0306   MonitorElement* h_phoEt_[2][3];
0307   MonitorElement* h_phoERes_[3][3];
0308   MonitorElement* h_phoSigmaEoE_[3][3];
0309 
0310   MonitorElement* h2_eResVsEta_[3];
0311   MonitorElement* p_eResVsEta_[3];
0312   MonitorElement* p_sigmaEoEVsEta_[3];
0313   MonitorElement* h2_eResVsEt_[3][3];
0314   MonitorElement* p_eResVsEt_[3][3];
0315   MonitorElement* p_eResVsNVtx_[3][3];
0316 
0317   MonitorElement* p_sigmaEoEVsEt_[3][3];
0318   MonitorElement* p_sigmaEoEVsNVtx_[3][3];
0319 
0320   MonitorElement* h2_eResVsR9_[3];
0321   MonitorElement* p_eResVsR9_[3];
0322   MonitorElement* h2_sceResVsR9_[3];
0323   MonitorElement* p_sceResVsR9_[3];
0324 
0325   MonitorElement* h_phoEta_[2];
0326   MonitorElement* h_phoPhi_[2];
0327 
0328   // Photon energies as derived from Regression1 (MIT) nd Regression2 (PF/Rishi)
0329   MonitorElement* h_phoEResRegr1_[3][3];
0330   MonitorElement* h_phoEResRegr2_[3][3];
0331 
0332   //
0333   MonitorElement* h_phoPixSeedSize_[2];
0334 
0335   // Information from Particle Flow
0336   // Isolation
0337   MonitorElement* h_chHadIso_[3];
0338   MonitorElement* h_nHadIso_[3];
0339   MonitorElement* h_phoIso_[3];
0340   // Identification
0341   MonitorElement* h_nCluOutsideMustache_[3];
0342   MonitorElement* h_etOutsideMustache_[3];
0343   MonitorElement* h_pfMva_[3];
0344   //// particle based isolation from ValueMap
0345   MonitorElement* h_dRPhoPFcand_ChHad_Cleaned_[3];
0346   MonitorElement* h_dRPhoPFcand_NeuHad_Cleaned_[5];
0347   MonitorElement* h_dRPhoPFcand_Pho_Cleaned_[3];
0348   MonitorElement* h_dRPhoPFcand_ChHad_unCleaned_[3];
0349   MonitorElement* h_dRPhoPFcand_NeuHad_unCleaned_[5];
0350   MonitorElement* h_dRPhoPFcand_Pho_unCleaned_[3];
0351   MonitorElement* h_SumPtOverPhoPt_ChHad_Cleaned_[3];
0352   MonitorElement* h_SumPtOverPhoPt_NeuHad_Cleaned_[3];
0353   MonitorElement* h_SumPtOverPhoPt_Pho_Cleaned_[3];
0354   MonitorElement* h_SumPtOverPhoPt_ChHad_unCleaned_[3];
0355   MonitorElement* h_SumPtOverPhoPt_NeuHad_unCleaned_[3];
0356   MonitorElement* h_SumPtOverPhoPt_Pho_unCleaned_[3];
0357 
0358   /// Histos for comparison with miniAOD content
0359   MonitorElement* h_scEta_miniAOD_[2];
0360   MonitorElement* h_scPhi_miniAOD_[2];
0361 
0362   MonitorElement* h_r9_miniAOD_[3][3];
0363   MonitorElement* h_full5x5_r9_miniAOD_[3][3];
0364   MonitorElement* h_sigmaIetaIeta_miniAOD_[3][3];
0365   MonitorElement* h_full5x5_sigmaIetaIeta_miniAOD_[3][3];
0366   MonitorElement* h_r1_miniAOD_[3][3];
0367   MonitorElement* h_r2_miniAOD_[3][3];
0368   MonitorElement* h_hOverE_miniAOD_[3][3];
0369   MonitorElement* h_newhOverE_miniAOD_[3][3];
0370   MonitorElement* h_ecalRecHitSumEtConeDR04_miniAOD_[3][3];
0371   MonitorElement* h_hcalTowerSumEtConeDR04_miniAOD_[3][3];
0372   MonitorElement* h_hcalTowerBcSumEtConeDR04_miniAOD_[3][3];
0373   MonitorElement* h_isoTrkSolidConeDR04_miniAOD_[3][3];
0374   MonitorElement* h_nTrkSolidConeDR04_miniAOD_[3][3];
0375 
0376   MonitorElement* h_phoE_miniAOD_[2][3];
0377   MonitorElement* h_phoEt_miniAOD_[2][3];
0378   MonitorElement* h_phoERes_miniAOD_[3][3];
0379   MonitorElement* h_phoSigmaEoE_miniAOD_[3][3];
0380 
0381   // Information from Particle Flow
0382   // Isolation
0383   MonitorElement* h_chHadIso_miniAOD_[3];
0384   MonitorElement* h_nHadIso_miniAOD_[3];
0385   MonitorElement* h_phoIso_miniAOD_[3];
0386 
0387   /// info per conversion
0388   MonitorElement* h_nConv_[2][3];
0389   MonitorElement* h_convEta_[3];
0390   MonitorElement* h_convPhi_[2];
0391   MonitorElement* h_convERes_[2][3];
0392   MonitorElement* p_eResVsR_;
0393 
0394   MonitorElement* h_convPtRes_[2][3];
0395 
0396   MonitorElement* h_invMass_[2][3];
0397   MonitorElement* h_r9VsNofTracks_[2][3];
0398   MonitorElement* h_EoverPTracks_[2][3];
0399   MonitorElement* h_PoverETracks_[2][3];
0400 
0401   MonitorElement* h_EoverP_SL_[3];
0402 
0403   MonitorElement* h_mvaOut_[3];
0404   MonitorElement* h2_etaVsRsim_[3];
0405   MonitorElement* h2_etaVsRreco_[3];
0406 
0407   MonitorElement* h2_EoverEtrueVsEoverP_[3];
0408   MonitorElement* h2_PoverPtrueVsEoverP_[3];
0409 
0410   MonitorElement* h2_EoverPVsEta_[3];
0411   MonitorElement* p_EoverPVsEta_[3];
0412   MonitorElement* h2_EoverPVsR_[3];
0413   MonitorElement* p_EoverPVsR_[3];
0414 
0415   MonitorElement* h2_EoverEtrueVsEta_[3];
0416   MonitorElement* p_EoverEtrueVsEta_[3];
0417   MonitorElement* h2_EoverEtrueVsR_[3];
0418   MonitorElement* p_EoverEtrueVsR_[3];
0419 
0420   MonitorElement* h2_PoverPtrueVsEta_[3];
0421   MonitorElement* p_PoverPtrueVsEta_[3];
0422 
0423   MonitorElement* h_DPhiTracksAtVtx_[2][3];
0424   MonitorElement* h2_DPhiTracksAtVtxVsEta_;
0425   MonitorElement* p_DPhiTracksAtVtxVsEta_;
0426   MonitorElement* h2_DPhiTracksAtVtxVsR_;
0427   MonitorElement* p_DPhiTracksAtVtxVsR_;
0428 
0429   MonitorElement* h_DCotTracks_[2][3];
0430   MonitorElement* h2_DCotTracksVsEta_;
0431   MonitorElement* p_DCotTracksVsEta_;
0432   MonitorElement* h2_DCotTracksVsR_;
0433   MonitorElement* p_DCotTracksVsR_;
0434 
0435   MonitorElement* h_distMinAppTracks_[2][3];
0436 
0437   MonitorElement* h_DPhiTracksAtEcal_[2][3];
0438   MonitorElement* h2_DPhiTracksAtEcalVsR_;
0439   MonitorElement* p_DPhiTracksAtEcalVsR_;
0440   MonitorElement* h2_DPhiTracksAtEcalVsEta_;
0441   MonitorElement* p_DPhiTracksAtEcalVsEta_;
0442 
0443   MonitorElement* h_DEtaTracksAtEcal_[2][3];
0444 
0445   MonitorElement* h_convVtxRvsZ_[3];
0446   MonitorElement* h_convVtxYvsX_;
0447   MonitorElement* h_convVtxRvsZ_zoom_[2];
0448   MonitorElement* h_convVtxYvsX_zoom_[2];
0449   MonitorElement* h_convSLVtxRvsZ_[3];
0450 
0451   MonitorElement* h_convVtxdX_;
0452   MonitorElement* h_convVtxdY_;
0453   MonitorElement* h_convVtxdZ_;
0454   MonitorElement* h_convVtxdR_;
0455 
0456   MonitorElement* h_convVtxdX_barrel_;
0457   MonitorElement* h_convVtxdY_barrel_;
0458   MonitorElement* h_convVtxdZ_barrel_;
0459   MonitorElement* h_convVtxdR_barrel_;
0460 
0461   MonitorElement* h_convVtxdX_endcap_;
0462   MonitorElement* h_convVtxdY_endcap_;
0463   MonitorElement* h_convVtxdZ_endcap_;
0464   MonitorElement* h_convVtxdR_endcap_;
0465 
0466   MonitorElement* h_convVtxdEta_;
0467   MonitorElement* h_convVtxdPhi_;
0468 
0469   MonitorElement* h2_convVtxdRVsR_;
0470   MonitorElement* p_convVtxdRVsR_;
0471   MonitorElement* h2_convVtxdRVsEta_;
0472   MonitorElement* p_convVtxdRVsEta_;
0473   MonitorElement* p_convVtxdXVsX_;
0474   MonitorElement* p_convVtxdYVsY_;
0475   MonitorElement* p_convVtxdZVsZ_;
0476 
0477   MonitorElement* h2_convVtxRrecVsTrue_;
0478 
0479   MonitorElement* h_vtxChi2_[3];
0480   MonitorElement* h_vtxChi2Prob_[3];
0481 
0482   MonitorElement* h_zPVFromTracks_[5];
0483   MonitorElement* h_dzPVFromTracks_[5];
0484   MonitorElement* h2_dzPVVsR_;
0485   MonitorElement* p_dzPVVsR_;
0486   MonitorElement* p_dzPVVsEta_;
0487 
0488   //////////// info per track
0489   MonitorElement* p_nHitsVsEta_[2];
0490   MonitorElement* p_nHitsVsEtaSL_[2];
0491   MonitorElement* nHitsVsEta_[2];
0492   MonitorElement* p_nHitsVsR_[2];
0493   MonitorElement* p_nHitsVsRSL_[2];
0494   MonitorElement* nHitsVsR_[2];
0495   MonitorElement* h_tkChi2_[2];
0496   MonitorElement* h_tkChi2SL_[2];
0497   MonitorElement* h_tkChi2Large_[2];
0498   MonitorElement* h2_Chi2VsEta_[3];
0499   MonitorElement* p_Chi2VsEta_[3];
0500   MonitorElement* h2_Chi2VsR_[3];
0501   MonitorElement* p_Chi2VsR_[3];
0502 
0503   MonitorElement* h_TkD0_[3];
0504 
0505   MonitorElement* h_TkPtPull_[3];
0506   MonitorElement* h2_TkPtPull_[3];
0507   MonitorElement* p_TkPtPull_[3];
0508   MonitorElement* h2_PtRecVsPtSim_[3];
0509   MonitorElement* h2_PtRecVsPtSimMixProv_;
0510 
0511   MonitorElement* hBCEnergyOverTrackPout_[3];
0512 
0513   // ME for bkg efficiencies
0514   MonitorElement* h_SimJet_[3];
0515   MonitorElement* h_MatchedSimJet_[3];
0516   MonitorElement* h_MatchedSimJetBadCh_[3];
0517   //
0518 
0519   MonitorElement* h_nPho_;
0520 
0521   MonitorElement* h_scBkgEta_;
0522   MonitorElement* h_scBkgPhi_;
0523   MonitorElement* h_phoBkgEta_;
0524   MonitorElement* h_phoBkgPhi_;
0525   MonitorElement* h_phoBkgDEta_;
0526   MonitorElement* h_phoBkgDPhi_;
0527   MonitorElement* h_phoBkgE_[3];
0528   MonitorElement* h_phoBkgEt_[3];
0529 
0530   MonitorElement* h_scBkgE_[3];
0531   MonitorElement* h_scBkgEt_[3];
0532 
0533   MonitorElement* h_r9Bkg_[3];
0534   MonitorElement* h_r1Bkg_[3];
0535   MonitorElement* h_r2Bkg_[3];
0536   MonitorElement* h_hOverEBkg_[3];
0537 
0538   MonitorElement* h2_r9VsEtaBkg_;
0539   MonitorElement* h2_r9VsEtBkg_;
0540 
0541   MonitorElement* h2_r1VsEtaBkg_;
0542   MonitorElement* h2_r1VsEtBkg_;
0543   MonitorElement* p_r1VsEtaBkg_;
0544   MonitorElement* p_r1VsEtBkg_;
0545 
0546   MonitorElement* h2_r2VsEtaBkg_;
0547   MonitorElement* h2_r2VsEtBkg_;
0548   MonitorElement* p_r2VsEtaBkg_;
0549   MonitorElement* p_r2VsEtBkg_;
0550 
0551   MonitorElement* h_sigmaIetaIetaBkg_[3];
0552   MonitorElement* h2_sigmaIetaIetaVsEtaBkg_;
0553   MonitorElement* p_sigmaIetaIetaVsEtaBkg_;
0554   MonitorElement* h2_sigmaIetaIetaVsEtBkg_[3];
0555   MonitorElement* p_sigmaIetaIetaVsEtBkg_[3];
0556 
0557   MonitorElement* h2_hOverEVsEtaBkg_;
0558   MonitorElement* h2_hOverEVsEtBkg_;
0559   MonitorElement* p_hOverEVsEtaBkg_;
0560   MonitorElement* p_hOverEVsEtBkg_;
0561 
0562   MonitorElement* h_ecalRecHitSumEtConeDR04Bkg_[3];
0563   MonitorElement* h2_ecalRecHitSumEtConeDR04VsEtaBkg_;
0564   MonitorElement* p_ecalRecHitSumEtConeDR04VsEtaBkg_;
0565   MonitorElement* h2_ecalRecHitSumEtConeDR04VsEtBkg_[3];
0566   MonitorElement* p_ecalRecHitSumEtConeDR04VsEtBkg_[3];
0567 
0568   MonitorElement* h_hcalTowerSumEtConeDR04Bkg_[3];
0569   MonitorElement* h2_hcalTowerSumEtConeDR04VsEtaBkg_;
0570   MonitorElement* p_hcalTowerSumEtConeDR04VsEtaBkg_;
0571   MonitorElement* h2_hcalTowerSumEtConeDR04VsEtBkg_[3];
0572   MonitorElement* p_hcalTowerSumEtConeDR04VsEtBkg_[3];
0573 
0574   MonitorElement* h_isoTrkSolidConeDR04Bkg_[3];
0575   MonitorElement* h2_isoTrkSolidConeDR04VsEtaBkg_;
0576   MonitorElement* p_isoTrkSolidConeDR04VsEtaBkg_;
0577   MonitorElement* h2_isoTrkSolidConeDR04VsEtBkg_[3];
0578   MonitorElement* p_isoTrkSolidConeDR04VsEtBkg_[3];
0579   //
0580   MonitorElement* h_nTrkSolidConeDR04Bkg_[3];
0581   MonitorElement* h2_nTrkSolidConeDR04VsEtaBkg_;
0582   MonitorElement* p_nTrkSolidConeDR04VsEtaBkg_;
0583   MonitorElement* h2_nTrkSolidConeDR04VsEtBkg_[3];
0584   MonitorElement* p_nTrkSolidConeDR04VsEtBkg_[3];
0585   //
0586   MonitorElement* h_convEtaBkg_;
0587   MonitorElement* h_convPhiBkg_;
0588   MonitorElement* h_mvaOutBkg_[3];
0589   MonitorElement* nHitsVsEtaBkg_;
0590   MonitorElement* h_tkChi2Bkg_;
0591   MonitorElement* h_EoverPTracksBkg_[3];
0592   MonitorElement* h_PoverETracksBkg_[3];
0593   MonitorElement* h_DPhiTracksAtVtxBkg_[3];
0594   MonitorElement* h_DCotTracksBkg_[3];
0595   MonitorElement* h_convVtxYvsXBkg_;
0596   MonitorElement* h_convVtxRvsZBkg_[2];
0597 
0598   class sortPhotons {
0599   public:
0600     bool operator()(const reco::PhotonRef& lhs, const reco::PhotonRef& rhs) { return lhs->et() > rhs->et(); }
0601   };
0602 };
0603 
0604 #endif