ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/interface/MetTools.h
Revision: 1.9
Committed: Sat Apr 28 19:10:01 2012 UTC (13 years ago) by ceballos
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_028a, Mit_028, Mit_027, Mit_027a
Changes since 1.8: +4 -6 lines
Log Message:
adding radial pf muon isolation and chs/nhs met

File Contents

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id:
3 //
4 // MetTools
5 //
6 // Authors: M. Zanetti
7 //--------------------------------------------------------------------------------------------------
8
9 #ifndef MITPHYSICS_UTILS_METTOOLS_H
10 #define MITPHYSICS_UTILS_METTOOLS_H
11
12 #include "MitAna/DataTree/interface/ParticleCol.h"
13 #include "MitAna/DataTree/interface/MetCol.h"
14 #include "MitAna/DataTree/interface/VertexCol.h"
15 #include "MitAna/DataTree/interface/MuonCol.h"
16 #include "MitAna/DataTree/interface/ElectronCol.h"
17 #include "MitAna/DataTree/interface/PFCandidateCol.h"
18 #include "MitAna/DataTree/interface/PFJetCol.h"
19 #include "MitCommon/MathTools/interface/MathUtils.h"
20
21 namespace mithep {
22
23 class MetTools {
24
25 public:
26
27 MetTools(const MuonCol *fMuons, const PFCandidateCol *fPFCandidates,
28 const Vertex *fVertex, float deltaZCut = 0.1, float ptCut = 8.0, float etaCut = 5.0);
29 MetTools(const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates,
30 const Vertex *fVertex, float deltaZCut = 0.1, float ptCut = 8.0, float etaCut = 5.0);
31
32 MetTools(const MuonCol *fMuons, const PFCandidateCol *fPFCandidates, const PFJetCol *fPFJets,
33 const Vertex *fVertex, float deltaZCut = 0.1, float ptCut = 8.0, float etaCut = 5.0);
34 MetTools(const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates, const PFJetCol *fPFJets,
35 const Vertex *fVertex, float deltaZCut = 0.1, float ptCut = 8.0, float etaCut = 5.0);
36
37 MetTools(const MuonCol *fMuons, const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates,
38 const Vertex *fVertex, float deltaZCut = 0.1, float ptCut = 8.0, float etaCut = 5.0, float intRadius = 0.0);
39
40 MetTools(const MuonCol *fMuons, const ElectronCol *fElectrons, const PFCandidateCol *fPFCandidates, const PFJetCol *fPFJets,
41 const Vertex *fVertex, float deltaZCut = 0.1, float ptCut = 8.0, float etaCut = 5.0, float intRadius = 0.0);
42
43
44 ~MetTools() {}
45
46 void AddToCorrectedTrackMet ( const Particle *p, bool debug = false);
47 void AddToCorrectedMet ( const Particle *p );
48 void AddToRecoil ( const Particle *p );
49 void RemoveParticleInIsoConeFromTrackMet ( const Particle *p,
50 const PFCandidateCol *fPFCandidates,
51 const Vertex *fVertex, float deltaZCut,
52 float deltaR, bool debug = false );
53 void RemoveParticleInIsoConeFromCorrectedMet ( const Particle *p,
54 const PFCandidateCol *fPFCandidates,
55 const Vertex *fVertex,
56 float deltaZCut, float ptCut, float etaCut,
57 float deltaR);
58 void RemoveParticleInIsoConeFromRecoil ( const Particle *p,
59 const PFCandidateCol *fPFCandidates,
60 const Vertex *fVertex,
61 float deltaZCut, float ptCut, float etaCut,
62 float deltaR);
63 Met GetMinimumMet (const Met *UncorrectedMet);
64 Met GetMinimumTrackMet (const Met *UncorrectedMet);
65 Met GetCorrectedMet() { return fCorrectedMet; }
66 Met GetCorrectedTrackMet() { return fCorrectedTrackMet; }
67 Met GetCHSMet() { return fCHSMet; }
68 Met GetNHSMet() { return fNHSMet; }
69 FourVectorM Recoil() { return fRecoil; }
70 FourVectorM ChargedRecoil() { return fChargedRecoil; }
71
72 template<class V>
73 double GetProjectedMet(const V *fV, const Met *UncorrectedMet);
74 template<class V>
75 double GetProjectedMet(const V *fV);
76 template<class V>
77 double GetProjectedTrackMet(const V *fV);
78
79 private:
80 Met fCorrectedMet;
81 Met fCorrectedTrackMet;
82 Met fCHSMet;
83 Met fNHSMet;
84 FourVectorM fRecoil;
85 FourVectorM fChargedRecoil;
86
87 ClassDef(MetTools, 0) // Met tools
88 };
89
90 template<class V>
91 double MetTools::GetProjectedMet(const V *fV, const Met *UncorrectedMet) {
92 double projectedMet = UncorrectedMet->Pt();
93 double minDPhi = 999;
94 for (UInt_t m = 0; m < fV->GetEntries(); ++m) {
95 if (fabs(MathUtils::DeltaPhi(UncorrectedMet->Phi(), fV->At(m)->Phi())) < minDPhi) {
96 minDPhi = fabs(MathUtils::DeltaPhi(UncorrectedMet->Phi(), fV->At(m)->Phi()));
97 }
98 }
99 if (minDPhi < TMath::Pi()/2.) return projectedMet = projectedMet * sin(minDPhi);
100 return projectedMet;
101 }
102
103 template<class V>
104 double MetTools::GetProjectedMet(const V *fV) {
105 double projectedMet = fCorrectedMet.Pt();
106 double minDPhi = 999;
107 for (UInt_t m = 0; m < fV->GetEntries(); ++m) {
108 if (fabs(MathUtils::DeltaPhi(fCorrectedMet.Phi(), fV->At(m)->Phi())) < minDPhi) {
109 minDPhi = fabs(MathUtils::DeltaPhi(fCorrectedMet.Phi(), fV->At(m)->Phi()));
110 }
111 }
112 if (minDPhi < TMath::Pi()/2.) return projectedMet = projectedMet * sin(minDPhi);
113 return projectedMet;
114 }
115
116 template<class V>
117 double MetTools::GetProjectedTrackMet(const V *fV) {
118 double projectedMet = fCorrectedTrackMet.Pt();
119 double minDPhi = 999;
120 for (UInt_t m = 0; m < fV->GetEntries(); ++m) {
121 if (fabs(MathUtils::DeltaPhi(fCorrectedTrackMet.Phi(), fV->At(m)->Phi())) < minDPhi) {
122 minDPhi = fabs(MathUtils::DeltaPhi(fCorrectedTrackMet.Phi(), fV->At(m)->Phi()));
123 }
124 }
125 if (minDPhi < TMath::Pi()/2.) return projectedMet = projectedMet * sin(minDPhi);
126 return projectedMet;
127 }
128
129 }
130
131 #endif