--- UserCode/MitPhysics/Utils/interface/IsolationTools.h 2011/05/12 23:16:11 1.14 +++ UserCode/MitPhysics/Utils/interface/IsolationTools.h 2012/05/22 23:47:02 1.26 @@ -1,5 +1,5 @@ //-------------------------------------------------------------------------------------------------- -// $Id: IsolationTools.h,v 1.14 2011/05/12 23:16:11 ceballos Exp $ +// $Id: IsolationTools.h,v 1.26 2012/05/22 23:47:02 mingyang Exp $ // // IsolationTools // @@ -13,6 +13,7 @@ #include #include "MitAna/DataTree/interface/Track.h" +#include "MitAna/DataTree/interface/Photon.h" #include "MitAna/DataTree/interface/BasicCluster.h" #include "MitAna/DataTree/interface/SuperCluster.h" #include "MitAna/DataTree/interface/CaloTower.h" @@ -22,6 +23,8 @@ #include "MitAna/DataTree/interface/PFCandidateCol.h" #include "MitAna/DataTree/interface/TrackCol.h" #include "MitAna/DataTree/interface/DecayParticleCol.h" +#include "MitAna/DataTree/interface/PileupEnergyDensityCol.h" +#include "MitPhysics/Utils/interface/ElectronTools.h" namespace mithep { @@ -39,21 +42,29 @@ namespace mithep static Double_t CaloTowerEmIsolation(const ThreeVector *p, Double_t extRadius, Double_t intRadius, Double_t etLow, const mithep::Collection *caloTowers); - static Double_t PFMuonIsolation(const Muon *p, const PFCandidateCol *PFCands, - const Vertex *vertex, Double_t delta_z, Double_t ptMin, - Double_t extRadius, Double_t intRadius); + static Double_t PFRadialMuonIsolation(const Muon *p, const PFCandidateCol *PFCands, + Double_t ptMin = 1.0, Double_t extRadius = 0.3); static Double_t PFMuonIsolation(const Muon *p, const PFCandidateCol *PFCands, const Vertex *vertex, - const MuonCol *goodMuons, const ElectronCol *goodElectrons, - Double_t delta_z = 0.2, Double_t ptMin = 1.0, Double_t extRadius = 0.4, - Double_t intRadius = 0.0, int isoType = 0, Double_t beta = 1.0); + Double_t delta_z = 0.1, Double_t ptMin = 1.0, + Double_t extRadius = 0.4, Double_t intRadiusGamma = 0.07, Double_t intRadius = 0.0); + static Double_t PFMuonIsolation(const Muon *p, const PFCandidateCol *PFCands, + const MuonCol *goodMuons, const ElectronCol *goodElectrons, + const Vertex *vertex, Double_t delta_z, Double_t ptMin, + Double_t extRadius, Double_t intRadiusGamma, Double_t intRadius); static Double_t PFElectronIsolation(const Electron *p, const PFCandidateCol *PFCands, const Vertex *vertex, Double_t delta_z, Double_t ptMin, - Double_t extRadius, Double_t intRadius); - static Double_t PFElectronIsolation(const Electron *p, const PFCandidateCol *PFCands, const Vertex *vertex, - const MuonCol *goodMuons, const ElectronCol *goodElectrons, - Double_t delta_z = 0.2 , Double_t ptMin = 1.0,Double_t extRadius = 0.4, - Double_t intRadius = 0.0, int isoType = 0, Double_t beta = 1.0); - static Double_t BetaM(const TrackCol *tracks, const Muon *p, const Vertex *vertex, + Double_t extRadius, Double_t intRadius, Int_t PFCandidateType = -1); + static Double_t PFElectronIsolation(const Electron *p, const PFCandidateCol *PFCands, + const MuonCol *goodMuons, const ElectronCol *goodElectrons, + const Vertex *vertex, Double_t delta_z, Double_t ptMin, + Double_t extRadius, Double_t intRadius, Int_t PFCandidateType = -1); + static Double_t PFElectronIsolation2012(const Electron *ele, const Vertex *vertex, + const PFCandidateCol *PFCands, + const PileupEnergyDensityCol *PileupEnergyDensity, + ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaTarget, + const ElectronCol *goodElectrons, + const MuonCol *goodMuons, Double_t dRMax = 0.4, Bool_t isDebug = kFALSE); + static Double_t BetaM(const TrackCol *tracks, const Muon *p, const Vertex *vertex, Double_t ptMin, Double_t delta_z, Double_t extRadius, Double_t intRadius); static Double_t BetaE(const TrackCol *tracks, const Electron *p, const Vertex *vertex, @@ -72,7 +83,56 @@ namespace mithep UInt_t maxNExpectedHitsInner = 999, const mithep::DecayParticleCol *conversions = 0); - ClassDef(IsolationTools, 0) // Isolation tools - }; + // methods for Hgg BaseLien Selection. These isolation are stupid, but what can we do.... ;( + static Double_t CiCTrackIsolation(const mithep::Photon*, + const BaseVertex*, + Double_t extRadius, + Double_t intRadius, + Double_t ptLow, + Double_t etaStrip, + Double_t maxD0, + Double_t maxDZ, + const mithep::Collection *tracks, + unsigned int* worstVtxIdx = NULL, + const mithep::Collection *vtxs = NULL, + const mithep::Collection *eles = NULL, + bool print=false, + double* ptmax=NULL, + double* dRmax=NULL); + + static Double_t PFChargedIsolation(const mithep::Photon*, + const BaseVertex*, + Double_t extRadius, + Double_t intRadius, + Double_t ptLow, + Double_t etaStrip, + Double_t maxD0, + Double_t maxDZ, + const PFCandidateCol *PFCands, + unsigned int* worstVtxIndex = NULL, + const mithep::Collection *vtxs = NULL, + const mithep::Collection *eles = NULL, + bool print = NULL, + double* ptmax = NULL, + double* dRmax = NULL); + + static Float_t PFChargedCount(const mithep::Photon*, + const BaseVertex*, + Double_t extRadius, + Double_t intRadius, + Double_t ptLow, + Double_t etaStrip, + Double_t maxD0, + Double_t maxDZ, + const PFCandidateCol *PFCands, + unsigned int* worstVtxIndex = NULL, + const mithep::Collection *vtxs = NULL, + const mithep::Collection *eles = NULL, + bool print = NULL, + double* ptmax = NULL, + double* dRmax = NULL); + + ClassDef(IsolationTools, 0) // Isolation tools + }; } #endif