ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/interface/MetTools.h
(Generate patch)

Comparing UserCode/MitPhysics/Utils/interface/MetTools.h (file contents):
Revision 1.1 by mzanetti, Mon Mar 14 18:05:56 2011 UTC vs.
Revision 1.10 by ceballos, Sat Jul 7 11:33:58 2012 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines