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
Version
Revision:
1.4
Id:
EwkTauDQM.h,v 1.4 2010/10/01 10:05:20 lusito Exp
Enumerator
kAbsoluteIso 
kRelativeIso 
kUndefinedIso 

Definition at line 370 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 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 double pt() const
transverse momentum
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 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 double pt() const
transverse momentum
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 double eta() const
momentum pseudorapidity
virtual double pt() const
transverse momentum
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 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 }
bool passesElectronPreId(const reco::GsfElectron &electron)
Definition: EwkTauDQM.cc:1023
bool passesElectronPreId ( const reco::GsfElectron )

Definition at line 1023 of file EwkTauDQM.cc.

References 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 }
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 373 of file EwkTauDQM.h.

References edm::Event::getByLabel().

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

375 {
376  if ( !evt.getByLabel(src, handle) ) {
377  if ( numWarnings < maxNumWarnings || maxNumWarnings == -1 )
378  edm::LogWarning ("readEventData") << errorMessage << " !!";
379  ++numWarnings;
380  error = true;
381  }
382 }
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356