ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/interface/IsolationTools.h
Revision: 1.26
Committed: Tue May 22 23:47:02 2012 UTC (12 years, 11 months ago) by mingyang
Content type: text/plain
Branch: MAIN
Changes since 1.25: +36 -5 lines
Log Message:
Charged PFISO for Photon added

File Contents

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id: IsolationTools.h,v 1.25 2012/05/07 18:06:07 ceballos 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 BetaM(const TrackCol *tracks, const Muon *p, const Vertex *vertex,
68 Double_t ptMin, Double_t delta_z, Double_t extRadius,
69 Double_t intRadius);
70 static Double_t BetaE(const TrackCol *tracks, const Electron *p, const Vertex *vertex,
71 Double_t ptMin, Double_t delta_z, Double_t extRadius,
72 Double_t intRadius);
73
74 // method added by F.Stoeckli: computes the track isolation with NO constrint on the OV-track compatibility
75 static Double_t TrackIsolationNoPV(const mithep::Particle*, const BaseVertex*,
76 Double_t extRadius,
77 Double_t intRadius,
78 Double_t ptLow,
79 Double_t etaStrip,
80 Double_t maxD0,
81 mithep::TrackQuality::EQuality,
82 const mithep::Collection<mithep::Track> *tracks,
83 UInt_t maxNExpectedHitsInner = 999,
84 const mithep::DecayParticleCol *conversions = 0);
85
86 // methods for Hgg BaseLien Selection. These isolation are stupid, but what can we do.... ;(
87 static Double_t CiCTrackIsolation(const mithep::Photon*,
88 const BaseVertex*,
89 Double_t extRadius,
90 Double_t intRadius,
91 Double_t ptLow,
92 Double_t etaStrip,
93 Double_t maxD0,
94 Double_t maxDZ,
95 const mithep::Collection<mithep::Track> *tracks,
96 unsigned int* worstVtxIdx = NULL,
97 const mithep::Collection<mithep::Vertex> *vtxs = NULL,
98 const mithep::Collection<mithep::Electron> *eles = NULL,
99 bool print=false,
100 double* ptmax=NULL,
101 double* dRmax=NULL);
102
103 static Double_t PFChargedIsolation(const mithep::Photon*,
104 const BaseVertex*,
105 Double_t extRadius,
106 Double_t intRadius,
107 Double_t ptLow,
108 Double_t etaStrip,
109 Double_t maxD0,
110 Double_t maxDZ,
111 const PFCandidateCol *PFCands,
112 unsigned int* worstVtxIndex = NULL,
113 const mithep::Collection<mithep::Vertex> *vtxs = NULL,
114 const mithep::Collection<mithep::Electron> *eles = NULL,
115 bool print = NULL,
116 double* ptmax = NULL,
117 double* dRmax = NULL);
118
119 static Float_t PFChargedCount(const mithep::Photon*,
120 const BaseVertex*,
121 Double_t extRadius,
122 Double_t intRadius,
123 Double_t ptLow,
124 Double_t etaStrip,
125 Double_t maxD0,
126 Double_t maxDZ,
127 const PFCandidateCol *PFCands,
128 unsigned int* worstVtxIndex = NULL,
129 const mithep::Collection<mithep::Vertex> *vtxs = NULL,
130 const mithep::Collection<mithep::Electron> *eles = NULL,
131 bool print = NULL,
132 double* ptmax = NULL,
133 double* dRmax = NULL);
134
135 ClassDef(IsolationTools, 0) // Isolation tools
136 };
137 }
138 #endif