CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Classes | Enumerations | Functions
EwkTauDQM.h File Reference
#include "FWCore/Framework/interface/EDAnalyzer.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include <string>
#include <Math/VectorUtil.h>
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "DQMServices/Core/interface/MonitorElement.h"
#include "DataFormats/Candidate/interface/Candidate.h"
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
#include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h"
#include "DataFormats/MuonReco/interface/Muon.h"
#include "DataFormats/MuonReco/interface/MuonFwd.h"
#include "DataFormats/TauReco/interface/PFTau.h"
#include "DataFormats/TauReco/interface/PFTauFwd.h"
#include "DataFormats/VertexReco/interface/Vertex.h"
#include "DataFormats/BeamSpot/interface/BeamSpot.h"

Go to the source code of this file.

Classes

class  EwkElecTauHistManager
 
class  EwkMuTauHistManager
 
class  EwkTauDQM
 

Enumerations

enum  { kAbsoluteIso, kRelativeIso, kUndefinedIso }
 

Functions

double calcDeltaPhi (double, double)
 
double calcMt (double, double, double, double)
 
double calcPzeta (const reco::Candidate::LorentzVector &, const reco::Candidate::LorentzVector &, double, double)
 
int getIsoMode (const std::string &, int &)
 
const reco::GsfElectrongetTheElectron (const reco::GsfElectronCollection &, double, double)
 
const reco::MuongetTheMuon (const reco::MuonCollection &, double, double)
 
const reco::PFTaugetTheTauJet (const reco::PFTauCollection &, double, double, int &)
 
double getVertexD0 (const reco::Vertex &, const reco::BeamSpot &)
 
bool passesElectronId (const reco::GsfElectron &)
 
bool passesElectronPreId (const reco::GsfElectron &)
 
template<typename T >
void readEventData (const edm::Event &evt, const edm::InputTag &src, edm::Handle< T > &handle, long &numWarnings, int maxNumWarnings, bool &error, const char *errorMessage)
 

Enumeration Type Documentation

anonymous enum

Auxiliary functions to compute quantities used by EWK Tau DQM (shared by different channels)

Author
Joshua Swanson
Enumerator
kAbsoluteIso 
kRelativeIso 
kUndefinedIso 

Definition at line 362 of file EwkTauDQM.h.

Function Documentation

double calcDeltaPhi ( double  ,
double   
)

Definition at line 972 of file EwkTauDQM.cc.

References SiPixelRawToDigiRegional_cfi::deltaPhi, and Pi.

Referenced by EwkDQM::analyze(), EwkElecTauHistManager::fillHistograms(), and EwkMuTauHistManager::fillHistograms().

973 {
974  double deltaPhi = phi1 - phi2;
975 
976  if ( deltaPhi < 0. ) deltaPhi = -deltaPhi;
977 
978  if ( deltaPhi > TMath::Pi() ) deltaPhi = 2*TMath::Pi() - deltaPhi;
979 
980  return deltaPhi;
981 }
const double Pi
double calcMt ( double  ,
double  ,
double  ,
double   
)

Definition at line 983 of file EwkTauDQM.cc.

Referenced by EwkElecTauHistManager::fillHistograms(), and EwkMuTauHistManager::fillHistograms().

984 {
985  double pt1 = TMath::Sqrt(px1*px1 + py1*py1);
986  double pt2 = TMath::Sqrt(px2*px2 + py2*py2);
987 
988  double p1Dotp2 = px1*px2 + py1*py2;
989  double cosAlpha = p1Dotp2/(pt1*pt2);
990 
991  return TMath::Sqrt(2*pt1*pt2*(1 - cosAlpha));
992 }
double calcPzeta ( const reco::Candidate::LorentzVector ,
const reco::Candidate::LorentzVector ,
double  ,
double   
)

Definition at line 994 of file EwkTauDQM.cc.

References funct::cos(), and funct::sin().

995 {
996  double cosPhi1 = cos(p1.phi());
997  double sinPhi1 = sin(p1.phi());
998  double cosPhi2 = cos(p2.phi());
999  double sinPhi2 = sin(p2.phi());
1000  double zetaX = cosPhi1 + cosPhi2;
1001  double zetaY = sinPhi1 + sinPhi2;
1002  double zetaR = TMath::Sqrt(zetaX*zetaX + zetaY*zetaY);
1003  if ( zetaR > 0. ) {
1004  zetaX /= zetaR;
1005  zetaY /= zetaR;
1006  }
1007 
1008  double pxVis = p1.px() + p2.px();
1009  double pyVis = p1.py() + p2.py();
1010  double pZetaVis = pxVis*zetaX + pyVis*zetaY;
1011 
1012  double px = pxVis + pxMEt;
1013  double py = pyVis + pyMEt;
1014  double pZeta = px*zetaX + py*zetaY;
1015 
1016  return pZeta - 1.5*pZetaVis;
1017 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
double p2[4]
Definition: TauolaWrapper.h:90
double p1[4]
Definition: TauolaWrapper.h:89
int getIsoMode ( const std::string &  ,
int &   
)

Definition at line 953 of file EwkTauDQM.cc.

References kAbsoluteIso, kRelativeIso, and kUndefinedIso.

Referenced by EwkElecTauHistManager::EwkElecTauHistManager(), and EwkMuTauHistManager::EwkMuTauHistManager().

954 {
955  int isoMode_int;
956  if ( isoMode_string == "absoluteIso" ) {
957  isoMode_int = kAbsoluteIso;
958  } else if ( isoMode_string == "relativeIso" ) {
959  isoMode_int = kRelativeIso;
960  } else {
961  edm::LogError ("getIsoMode") << " Failed to decode isoMode string = " << isoMode_string << " !!";
962  isoMode_int = kUndefinedIso;
963  error = 1;
964  }
965  return isoMode_int;
966 }
const reco::GsfElectron* getTheElectron ( const reco::GsfElectronCollection ,
double  ,
double   
)

Definition at line 1056 of file EwkTauDQM.cc.

References Abs(), metsig::electron, passesElectronPreId(), and reco::LeafCandidate::pt().

Referenced by EwkElecTauHistManager::fillHistograms().

1057 {
1058  const reco::GsfElectron* theElectron = 0;
1059 
1060  for ( reco::GsfElectronCollection::const_iterator electron = electrons.begin();
1061  electron != electrons.end(); ++electron ) {
1062  if ( TMath::Abs(electron->eta()) < electronEtaCut && electron->pt() > electronPtCut && passesElectronPreId(*electron) ) {
1063  if ( theElectron == 0 || electron->pt() > theElectron->pt() ) theElectron = &(*electron);
1064  }
1065  }
1066 
1067  return theElectron;
1068 }
virtual float pt() const
transverse momentum
T Abs(T a)
Definition: MathUtil.h:49
bool passesElectronPreId(const reco::GsfElectron &electron)
Definition: EwkTauDQM.cc:1023
const reco::Muon* getTheMuon ( const reco::MuonCollection ,
double  ,
double   
)

Definition at line 1073 of file EwkTauDQM.cc.

References Abs(), metsig::muon, and reco::LeafCandidate::pt().

Referenced by EwkMuTauHistManager::fillHistograms().

1074 {
1075  const reco::Muon* theMuon = 0;
1076 
1077  for ( reco::MuonCollection::const_iterator muon = muons.begin();
1078  muon != muons.end(); ++muon ) {
1079  if ( TMath::Abs(muon->eta()) < muonEtaCut && muon->pt() > muonPtCut ) {
1080  if ( theMuon == 0 || muon->pt() > theMuon->pt() ) theMuon = &(*muon);
1081  }
1082  }
1083 
1084  return theMuon;
1085 }
virtual float pt() const
transverse momentum
T Abs(T a)
Definition: MathUtil.h:49
tuple muons
Definition: patZpeak.py:38
const reco::PFTau* getTheTauJet ( const reco::PFTauCollection ,
double  ,
double  ,
int &   
)

Definition at line 1087 of file EwkTauDQM.cc.

References reco::LeafCandidate::eta(), reco::LeafCandidate::pt(), and reco::Candidate::size.

Referenced by EwkElecTauHistManager::fillHistograms(), and EwkMuTauHistManager::fillHistograms().

1088 {
1089  const reco::PFTau* theTauJet = 0;
1090  theTauJetIndex = -1;
1091 
1092  int numTauJets = tauJets.size();
1093  for ( int iTauJet = 0; iTauJet < numTauJets; ++iTauJet ) {
1094  const reco::PFTau& tauJet = tauJets.at(iTauJet);
1095 
1096  if ( fabs(tauJet.eta()) < tauJetEtaCut && tauJet.pt() > tauJetPtCut ) {
1097  if ( theTauJet == 0 || tauJet.pt() > theTauJet->pt() ) {
1098  theTauJet = &tauJet;
1099  theTauJetIndex = iTauJet;
1100  }
1101  }
1102  }
1103 
1104  return theTauJet;
1105 }
virtual float pt() const
transverse momentum
virtual float eta() const
momentum pseudorapidity
double getVertexD0 ( const reco::Vertex ,
const reco::BeamSpot  
)

Definition at line 1111 of file EwkTauDQM.cc.

References reco::Vertex::x(), reco::BeamSpot::x0(), reco::Vertex::y(), and reco::BeamSpot::y0().

1112 {
1113  double dX = vertex.x() - beamSpot.x0();
1114  double dY = vertex.y() - beamSpot.y0();
1115  return TMath::Sqrt(dX*dX + dY*dY);
1116 }
bool passesElectronId ( const reco::GsfElectron )

Definition at line 1035 of file EwkTauDQM.cc.

References Abs(), reco::GsfElectron::deltaEtaSuperClusterTrackAtVtx(), reco::GsfElectron::deltaPhiSuperClusterTrackAtVtx(), reco::LeafCandidate::eta(), reco::GsfElectron::hcalOverEcal(), passesElectronPreId(), and reco::GsfElectron::sigmaEtaEta().

Referenced by EwkElecTauHistManager::fillHistograms().

1036 {
1037  if ( passesElectronPreId(electron) &&
1038  ((TMath::Abs(electron.eta()) > 1.566 && // electron reconstructed in ECAL endcap
1039  electron.sigmaEtaEta() < 0.03 && electron.hcalOverEcal() < 0.05 &&
1040  TMath::Abs(electron.deltaEtaSuperClusterTrackAtVtx()) < 0.009 &&
1041  TMath::Abs(electron.deltaPhiSuperClusterTrackAtVtx()) < 0.7 ) ||
1042  (TMath::Abs(electron.eta()) < 1.479 && // electron reconstructed in ECAL barrel
1043  electron.sigmaEtaEta() < 0.01 && electron.hcalOverEcal() < 0.12 &&
1044  TMath::Abs(electron.deltaEtaSuperClusterTrackAtVtx()) < 0.007 &&
1045  TMath::Abs(electron.deltaPhiSuperClusterTrackAtVtx()) < 0.8)) ) {
1046  return true;
1047  } else {
1048  return false;
1049  }
1050 }
T Abs(T a)
Definition: MathUtil.h:49
bool passesElectronPreId(const reco::GsfElectron &electron)
Definition: EwkTauDQM.cc:1023
bool passesElectronPreId ( const reco::GsfElectron )

Definition at line 1023 of file EwkTauDQM.cc.

References Abs(), reco::GsfElectron::deltaEtaSuperClusterTrackAtVtx(), reco::GsfElectron::deltaPhiSuperClusterTrackAtVtx(), reco::LeafCandidate::eta(), and reco::GsfElectron::sigmaIetaIeta().

Referenced by getTheElectron(), and passesElectronId().

1024 {
1025  if ( (TMath::Abs(electron.eta()) < 1.479 || TMath::Abs(electron.eta()) > 1.566) && // cut ECAL barrel/endcap crack
1026  electron.deltaPhiSuperClusterTrackAtVtx() < 0.8 &&
1027  electron.deltaEtaSuperClusterTrackAtVtx() < 0.01 &&
1028  electron.sigmaIetaIeta() < 0.03 ) {
1029  return true;
1030  } else {
1031  return false;
1032  }
1033 }
T Abs(T a)
Definition: MathUtil.h:49
template<typename T >
void readEventData ( const edm::Event evt,
const edm::InputTag src,
edm::Handle< T > &  handle,
long &  numWarnings,
int  maxNumWarnings,
bool &  error,
const char *  errorMessage 
)

Definition at line 365 of file EwkTauDQM.h.

References edm::Event::getByLabel().

Referenced by EwkElecTauHistManager::fillHistograms(), and EwkMuTauHistManager::fillHistograms().

367 {
368  if ( !evt.getByLabel(src, handle) ) {
369  if ( numWarnings < maxNumWarnings || maxNumWarnings == -1 )
370  edm::LogWarning ("readEventData") << errorMessage << " !!";
371  ++numWarnings;
372  error = true;
373  }
374 }
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:390