ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/interface/IsolationTools.h
Revision: 1.28
Committed: Thu Jul 12 17:05:50 2012 UTC (12 years, 9 months ago) by fabstoec
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_029c, Mit_029b, Mit_029a, HEAD
Changes since 1.27: +13 -6 lines
Error occurred while calculating annotation data.
Log Message:
added 2012 Hgg LeptonTag

File Contents

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id: IsolationTools.h,v 1.27 2012/05/25 19:41:11 bendavid Exp $
3 //
4 // IsolationTools
5 //
6 // Isolation functions to compute various kinds of isolation.
7 //
8 // Authors: S.Xie
9 //--------------------------------------------------------------------------------------------------
10
11 #ifndef MITPHYSICS_UTILS_ISOLATIONTOOLS_H
12 #define MITPHYSICS_UTILS_ISOLATIONTOOLS_H
13
14 #include <TMath.h>
15 #include "MitAna/DataTree/interface/Track.h"
16 #include "MitAna/DataTree/interface/Photon.h"
17 #include "MitAna/DataTree/interface/BasicCluster.h"
18 #include "MitAna/DataTree/interface/SuperCluster.h"
19 #include "MitAna/DataTree/interface/CaloTower.h"
20 #include "MitAna/DataTree/interface/VertexCol.h"
21 #include "MitAna/DataTree/interface/MuonCol.h"
22 #include "MitAna/DataTree/interface/ElectronCol.h"
23 #include "MitAna/DataTree/interface/PFCandidateCol.h"
24 #include "MitAna/DataTree/interface/TrackCol.h"
25 #include "MitAna/DataTree/interface/DecayParticleCol.h"
26 #include "MitAna/DataTree/interface/PileupEnergyDensityCol.h"
27 #include "MitPhysics/Utils/interface/ElectronTools.h"
28
29 namespace mithep
30 {
31 class IsolationTools {
32 public:
33 static Double_t TrackIsolation(const mithep::Track *p, Double_t extRadius,
34 Double_t intRadius, Double_t ptLow, Double_t maxVtxZDist,
35 const mithep::Collection<mithep::Track> *tracks);
36 static Double_t EcalIsolation(const SuperCluster *sc, Double_t coneSize, Double_t etLow,
37 const mithep::Collection<mithep::BasicCluster> *basicClusters);
38 static Double_t CaloTowerHadIsolation(const ThreeVector *p, Double_t extRadius,
39 Double_t intRadius, Double_t etLow,
40 const mithep::Collection<mithep::CaloTower>
41 *caloTowers);
42 static Double_t CaloTowerEmIsolation(const ThreeVector *p, Double_t extRadius,
43 Double_t intRadius, Double_t etLow,
44 const mithep::Collection<mithep::CaloTower> *caloTowers);
45 static Double_t PFRadialMuonIsolation(const Muon *p, const PFCandidateCol *PFCands,
46 Double_t ptMin = 1.0, Double_t extRadius = 0.3);
47 static Double_t PFMuonIsolation(const Muon *p, const PFCandidateCol *PFCands, const Vertex *vertex,
48 Double_t delta_z = 0.1, Double_t ptMin = 1.0,
49 Double_t extRadius = 0.4, Double_t intRadiusGamma = 0.07, Double_t intRadius = 0.0);
50 static Double_t PFMuonIsolation(const Muon *p, const PFCandidateCol *PFCands,
51 const MuonCol *goodMuons, const ElectronCol *goodElectrons,
52 const Vertex *vertex, Double_t delta_z, Double_t ptMin,
53 Double_t extRadius, Double_t intRadiusGamma, Double_t intRadius);
54 static Double_t PFElectronIsolation(const Electron *p, const PFCandidateCol *PFCands,
55 const Vertex *vertex, Double_t delta_z, Double_t ptMin,
56 Double_t extRadius, Double_t intRadius, Int_t PFCandidateType = -1);
57 static Double_t PFElectronIsolation(const Electron *p, const PFCandidateCol *PFCands,
58 const MuonCol *goodMuons, const ElectronCol *goodElectrons,
59 const Vertex *vertex, Double_t delta_z, Double_t ptMin,
60 Double_t extRadius, Double_t intRadius, Int_t PFCandidateType = -1);
61 static Double_t PFElectronIsolation2012(const Electron *ele, const Vertex *vertex,
62 const PFCandidateCol *PFCands,
63 const PileupEnergyDensityCol *PileupEnergyDensity,
64 ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaTarget,
65 const ElectronCol *goodElectrons,
66 const MuonCol *goodMuons, Double_t dRMax = 0.4, Bool_t isDebug = kFALSE);
67 static Double_t PFElectronIsolation2012LepTag(const Electron *ele, const Vertex *vertex,
68 const PFCandidateCol *PFCands,
69 const PileupEnergyDensityCol *PileupEnergyDensity,
70 ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaTarget,
71 const ElectronCol *goodElectrons,
72 const MuonCol *goodMuons, Double_t dRMax = 0.3, Bool_t isDebug=kFALSE);
73 static Double_t BetaM(const TrackCol *tracks, const Muon *p, const Vertex *vertex,
74 Double_t ptMin, Double_t delta_z, Double_t extRadius,
75 Double_t intRadius);
76 static Double_t BetaMwithPUCorrection(const PFCandidateCol *PFNoPileUP, const PFCandidateCol *PFPileUP, const Muon *p, Double_t extRadius);
77 static Double_t BetaE(const TrackCol *tracks, const Electron *p, const Vertex *vertex,
78 Double_t ptMin, Double_t delta_z, Double_t extRadius,
79 Double_t intRadius);
80
81 // method added by F.Stoeckli: computes the track isolation with NO constrint on the OV-track compatibility
82 static Double_t TrackIsolationNoPV(const mithep::Particle*, const BaseVertex*,
83 Double_t extRadius,
84 Double_t intRadius,
85 Double_t ptLow,
86 Double_t etaStrip,
87 Double_t maxD0,
88 mithep::TrackQuality::EQuality,
89 const mithep::Collection<mithep::Track> *tracks,
90 UInt_t maxNExpectedHitsInner = 999,
91 const mithep::DecayParticleCol *conversions = 0);
92
93 // methods for Hgg BaseLien Selection. These isolation are stupid, but what can we do.... ;(
94 static Double_t CiCTrackIsolation(const mithep::Photon*,
95 const BaseVertex*,
96 Double_t extRadius,
97 Double_t intRadius,
98 Double_t ptLow,
99 Double_t etaStrip,
100 Double_t maxD0,
101 Double_t maxDZ,
102 const mithep::Collection<mithep::Track> *tracks,
103 unsigned int* worstVtxIdx = NULL,
104 const mithep::Collection<mithep::Vertex> *vtxs = NULL,
105 const mithep::Collection<mithep::Electron> *eles = NULL,
106 bool print=false,
107 double* ptmax=NULL,
108 double* dRmax=NULL);
109
110 static Double_t PFChargedIsolation(const mithep::Photon *p,
111 const BaseVertex *theVtx,
112 Double_t extRadius,
113 Double_t intRadius,
114 const PFCandidateCol *PFCands,
115 unsigned int* worstVtxIndex = NULL,
116 const mithep::Collection<mithep::Vertex> *vtxs = NULL,
117 bool print = NULL);
118
119 static Double_t PFGammaIsolation(const mithep::Photon *p,
120 Double_t extRadius,
121 Double_t intRadius,
122 const PFCandidateCol *PFCands);
123
124 static Double_t PFNeutralHadronIsolation(const mithep::Photon *p,
125 Double_t extRadius,
126 Double_t intRadius,
127 const PFCandidateCol *PFCands);
128
129 static Float_t PFChargedCount(const mithep::Photon*,
130 const BaseVertex*,
131 Double_t extRadius,
132 Double_t intRadius,
133 Double_t ptLow,
134 Double_t etaStrip,
135 Double_t maxD0,
136 Double_t maxDZ,
137 const PFCandidateCol *PFCands,
138 unsigned int* worstVtxIndex = NULL,
139 const mithep::Collection<mithep::Vertex> *vtxs = NULL,
140 const mithep::Collection<mithep::Electron> *eles = NULL,
141 bool print = NULL,
142 double* ptmax = NULL,
143 double* dRmax = NULL);
144
145 ClassDef(IsolationTools, 0) // Isolation tools
146 };
147 }
148 #endif