00001 #ifndef DQM_Physics_EwkTauDQM_h
00002 #define DQM_Physics_EwkTauDQM_h
00003
00022 #include "FWCore/Framework/interface/EDAnalyzer.h"
00023
00024 #include "DQMServices/Core/interface/DQMStore.h"
00025
00026 #include <string>
00027 #include <Math/VectorUtil.h>
00028 class EwkElecTauHistManager;
00029 class EwkMuTauHistManager;
00030
00031 class EwkTauDQM : public edm::EDAnalyzer
00032 {
00033 public:
00034 EwkTauDQM(const edm::ParameterSet&);
00035 ~EwkTauDQM();
00036
00037 void beginJob();
00038 void analyze(const edm::Event&, const edm::EventSetup&);
00039 void endJob();
00040
00041 private:
00042 DQMStore* dqmStore_;
00043 std::string dqmDirectory_;
00044 int dqmError_;
00045 int maxNumWarnings_;
00046
00047 EwkElecTauHistManager* elecTauHistManager_;
00048 EwkMuTauHistManager* muTauHistManager_;
00049 };
00050
00051
00052
00053
00054
00069 #include "FWCore/Framework/interface/Event.h"
00070 #include "FWCore/Framework/interface/EventSetup.h"
00071 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00072 #include "FWCore/Utilities/interface/InputTag.h"
00073
00074 #include "DQMServices/Core/interface/MonitorElement.h"
00075
00076 #include <string>
00077
00078 class EwkElecTauHistManager
00079 {
00080 public:
00081 EwkElecTauHistManager(const edm::ParameterSet&, DQMStore*);
00082
00083 void bookHistograms();
00084 void fillHistograms(const edm::Event&, const edm::EventSetup&);
00085 void finalizeHistograms();
00086
00087 private:
00088
00089
00090
00091 edm::InputTag triggerResultsSource_;
00092 edm::InputTag vertexSource_;
00093 edm::InputTag beamSpotSource_;
00094 edm::InputTag electronSource_;
00095 edm::InputTag tauJetSource_;
00096 edm::InputTag caloMEtSource_;
00097 edm::InputTag pfMEtSource_;
00098
00099 edm::InputTag tauDiscrByLeadTrackFinding_;
00100 edm::InputTag tauDiscrByLeadTrackPtCut_;
00101 edm::InputTag tauDiscrByTrackIso_;
00102 edm::InputTag tauDiscrByEcalIso_;
00103 edm::InputTag tauDiscrAgainstElectrons_;
00104 edm::InputTag tauDiscrAgainstMuons_;
00105
00106
00107 typedef std::vector<std::string> vstring;
00108 vstring hltPaths_;
00109
00110 double electronEtaCut_;
00111 double electronPtCut_;
00112 double electronTrackIsoCut_;
00113 double electronEcalIsoCut_;
00114 int electronIsoMode_;
00115
00116 double tauJetEtaCut_;
00117 double tauJetPtCut_;
00118
00119 double visMassCut_;
00120
00121
00122 DQMStore* dqmStore_;
00123
00124
00125 std::string dqmDirectory_;
00126
00127
00128
00129 MonitorElement* hElectronPt_;
00130 MonitorElement* hElectronEta_;
00131 MonitorElement* hElectronPhi_;
00132 MonitorElement* hElectronTrackIsoPt_;
00133 MonitorElement* hElectronEcalIsoPt_;
00134
00135
00136 MonitorElement* hTauJetPt_;
00137 MonitorElement* hTauJetEta_;
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 MonitorElement* hVisMass_;
00149
00150 MonitorElement* hMtElecPFMEt_;
00151
00152
00153 MonitorElement* hElecTauAcoplanarity_;
00154 MonitorElement* hElecTauCharge_;
00155
00156
00157 MonitorElement* hVertexZ_;
00158
00159
00160 MonitorElement* hCaloMEtPt_;
00161
00162
00163 MonitorElement* hPFMEtPt_;
00164
00165
00166 MonitorElement* hCutFlowSummary_;
00167 enum { kPassedPreselection = 1, kPassedTrigger = 2, kPassedElectronId = 3, kPassedElectronTrackIso = 4, kPassedElectronEcalIso = 5,
00168 kPassedTauLeadTrack = 6, kPassedTauLeadTrackPt = 7, kPassedTauDiscrAgainstElectrons = 8, kPassedTauDiscrAgainstMuons = 9,
00169 kPassedTauTrackIso = 10, kPassedTauEcalIso = 11
00170 };
00171
00172
00173 unsigned numEventsAnalyzed_;
00174 unsigned numEventsSelected_;
00175
00176 int cfgError_;
00177
00178 int maxNumWarnings_;
00179
00180 long numWarningsTriggerResults_;
00181 long numWarningsHLTpath_;
00182 long numWarningsVertex_;
00183 long numWarningsBeamSpot_;
00184 long numWarningsElectron_;
00185 long numWarningsTauJet_;
00186 long numWarningsTauDiscrByLeadTrackFinding_;
00187 long numWarningsTauDiscrByLeadTrackPtCut_;
00188 long numWarningsTauDiscrByTrackIso_;
00189 long numWarningsTauDiscrByEcalIso_;
00190 long numWarningsTauDiscrAgainstElectrons_;
00191 long numWarningsTauDiscrAgainstMuons_;
00192 long numWarningsCaloMEt_;
00193 long numWarningsPFMEt_;
00194 };
00195
00196
00197
00198
00199
00200
00201
00216 #include "FWCore/Framework/interface/Event.h"
00217 #include "FWCore/Framework/interface/EventSetup.h"
00218 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00219 #include "FWCore/Utilities/interface/InputTag.h"
00220
00221 #include "DQMServices/Core/interface/MonitorElement.h"
00222
00223 #include <string>
00224
00225 class EwkMuTauHistManager
00226 {
00227 public:
00228 EwkMuTauHistManager(const edm::ParameterSet&, DQMStore*);
00229
00230 void bookHistograms();
00231 void fillHistograms(const edm::Event&, const edm::EventSetup&);
00232 void finalizeHistograms();
00233
00234 private:
00235
00236
00237
00238 edm::InputTag triggerResultsSource_;
00239 edm::InputTag vertexSource_;
00240 edm::InputTag beamSpotSource_;
00241 edm::InputTag muonSource_;
00242 edm::InputTag tauJetSource_;
00243 edm::InputTag caloMEtSource_;
00244 edm::InputTag pfMEtSource_;
00245
00246 edm::InputTag tauDiscrByLeadTrackFinding_;
00247 edm::InputTag tauDiscrByLeadTrackPtCut_;
00248 edm::InputTag tauDiscrByTrackIso_;
00249 edm::InputTag tauDiscrByEcalIso_;
00250 edm::InputTag tauDiscrAgainstMuons_;
00251
00252
00253 typedef std::vector<std::string> vstring;
00254 vstring hltPaths_;
00255
00256 double muonEtaCut_;
00257 double muonPtCut_;
00258 double muonTrackIsoCut_;
00259 double muonEcalIsoCut_;
00260 double muonCombIsoCut_;
00261 int muonIsoMode_;
00262
00263 double tauJetEtaCut_;
00264 double tauJetPtCut_;
00265
00266 double visMassCut_;
00267 double deltaRCut_;
00268
00269 DQMStore* dqmStore_;
00270
00271
00272 std::string dqmDirectory_;
00273
00274
00275
00276 MonitorElement* hMuonPt_;
00277 MonitorElement* hMuonEta_;
00278 MonitorElement* hMuonPhi_;
00279 MonitorElement* hMuonTrackIsoPt_;
00280 MonitorElement* hMuonEcalIsoPt_;
00281 MonitorElement* hMuonCombIsoPt_;
00282
00283 MonitorElement* hTauJetPt_;
00284 MonitorElement* hTauJetEta_;
00285 MonitorElement* hTauJetPhi_;
00286 MonitorElement* hTauLeadTrackPt_;
00287 MonitorElement* hTauTrackIsoPt_;
00288 MonitorElement* hTauEcalIsoPt_;
00289 MonitorElement* hTauDiscrAgainstMuons_;
00290 MonitorElement* hTauJetCharge_;
00291 MonitorElement* hTauJetNumSignalTracks_;
00292 MonitorElement* hTauJetNumIsoTracks_;
00293
00294 MonitorElement* hVisMass_;
00295 MonitorElement* hMuTauDeltaR_;
00296 MonitorElement* hVisMassFinal_;
00297
00298 MonitorElement* hMtMuPFMEt_;
00299
00300
00301 MonitorElement* hMuTauAcoplanarity_;
00302
00303
00304
00305 MonitorElement* hVertexZ_;
00306
00307
00308 MonitorElement* hCaloMEtPt_;
00309
00310
00311 MonitorElement* hPFMEtPt_;
00312
00313
00314 MonitorElement* hCutFlowSummary_;
00315 enum { kPassedPreselection = 1, kPassedTrigger = 2, kPassedMuonId = 3, kPassedTauLeadTrack = 4, kPassedTauLeadTrackPt = 5, kPassedTauDiscrAgainstMuons = 6, kPassedDeltaR = 7, kPassedMuonTrackIso = 8, kPassedMuonEcalIso = 9, kPassedTauTrackIso = 10, kPassedTauEcalIso = 11};
00316
00317
00318 unsigned numEventsAnalyzed_;
00319 unsigned numEventsSelected_;
00320
00321 int cfgError_;
00322
00323 int maxNumWarnings_;
00324
00325 long numWarningsTriggerResults_;
00326 long numWarningsHLTpath_;
00327 long numWarningsVertex_;
00328 long numWarningsBeamSpot_;
00329 long numWarningsMuon_;
00330 long numWarningsTauJet_;
00331 long numWarningsTauDiscrByLeadTrackFinding_;
00332 long numWarningsTauDiscrByLeadTrackPtCut_;
00333 long numWarningsTauDiscrByTrackIso_;
00334 long numWarningsTauDiscrByEcalIso_;
00335 long numWarningsTauDiscrAgainstMuons_;
00336 long numWarningsCaloMEt_;
00337 long numWarningsPFMEt_;
00338 };
00339
00340
00341
00342
00343
00358 #include "DataFormats/Candidate/interface/Candidate.h"
00359 #include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
00360 #include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h"
00361 #include "DataFormats/MuonReco/interface/Muon.h"
00362 #include "DataFormats/MuonReco/interface/MuonFwd.h"
00363 #include "DataFormats/TauReco/interface/PFTau.h"
00364 #include "DataFormats/TauReco/interface/PFTauFwd.h"
00365 #include "DataFormats/VertexReco/interface/Vertex.h"
00366 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
00367
00368 #include <string>
00369
00370 enum { kAbsoluteIso, kRelativeIso, kUndefinedIso };
00371
00372 template<typename T>
00373 void readEventData(const edm::Event& evt, const edm::InputTag& src, edm::Handle<T>& handle, long& numWarnings, int maxNumWarnings,
00374 bool& error, const char* errorMessage)
00375 {
00376 if ( !evt.getByLabel(src, handle) ) {
00377 if ( numWarnings < maxNumWarnings || maxNumWarnings == -1 )
00378 edm::LogWarning ("readEventData") << errorMessage << " !!";
00379 ++numWarnings;
00380 error = true;
00381 }
00382 }
00383
00384 int getIsoMode(const std::string&, int&);
00385
00386 double calcDeltaPhi(double, double);
00387 double calcMt(double, double, double, double);
00388 double calcPzeta(const reco::Candidate::LorentzVector&, const reco::Candidate::LorentzVector&, double, double);
00389
00390 bool passesElectronPreId(const reco::GsfElectron&);
00391 bool passesElectronId(const reco::GsfElectron&);
00392
00393 const reco::GsfElectron* getTheElectron(const reco::GsfElectronCollection&, double, double);
00394 const reco::Muon* getTheMuon(const reco::MuonCollection&, double, double);
00395 const reco::PFTau* getTheTauJet(const reco::PFTauCollection&, double, double, int&);
00396
00397 double getVertexD0(const reco::Vertex&, const reco::BeamSpot&);
00398
00399 #endif