CMS 3D CMS Logo

EgammaHLTTrackIsolation.h

Go to the documentation of this file.
00001 #ifndef EgammaHLTAlgos_EgammaHLTTrackIsolation_h
00002 #define EgammaHLTAlgos_EgammaHLTTrackIsolation_h
00003 // -*- C++ -*-
00004 //
00005 // Package:     EgammaHLTAlgos
00006 // Class  :     EgammaHLTTrackIsolation
00007 // 
00015 //
00016 // Original Author:  Monica Vazquez Acosta - CERN
00017 //         Created:  Tue Jun 13 12:19:32 CEST 2006
00018 // $Id: EgammaHLTTrackIsolation.h,v 1.5 2009/01/20 11:31:29 covarell Exp $
00019 //
00020 
00021 
00022 #include "DataFormats/EgammaCandidates/interface/Electron.h"
00023 #include "DataFormats/EgammaCandidates/interface/ElectronFwd.h"
00024 #include "DataFormats/EgammaCandidates/interface/Photon.h"
00025 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
00026 #include "DataFormats/EgammaReco/interface/BasicCluster.h"
00027 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00028 #include "DataFormats/TrackReco/interface/Track.h"
00029 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
00030 
00031 #include "DataFormats/RecoCandidate/interface/RecoCandidate.h"
00032 
00033 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00034 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
00035 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
00036 
00037 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00038 #include "DataFormats/Math/interface/Vector3D.h"
00039 #include "DataFormats/Math/interface/Vector.h"
00040 #include "DataFormats/Math/interface/Point3D.h"
00041 
00042 
00043 
00044 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00045 
00046 
00047 
00048 class EgammaHLTTrackIsolation
00049 {
00050 
00051  public:
00052 
00053 
00054   EgammaHLTTrackIsolation(double egTrkIso_PtMin, 
00055                           double egTrkIso_ConeSize,
00056                           double egTrkIso_ZSpan,   
00057                           double egTrkIso_RSpan,  
00058                           double egTrkIso_VetoConeSize) :
00059     ptMin(egTrkIso_PtMin),
00060     conesize(egTrkIso_ConeSize),
00061     zspan(egTrkIso_ZSpan),
00062     rspan(egTrkIso_RSpan),
00063     vetoConesize(egTrkIso_VetoConeSize) {
00064       
00065       /*
00066         std::cout << "EgammaHLTTrackIsolation instance:"
00067         << " ptMin=" << ptMin << " "
00068         << " conesize="<< conesize << " "
00069         << " zspan=" << zspan << " "
00070         << " rspan=" << rspan << " "
00071         << " vetoConesize="<< vetoConesize
00072         << std::endl;    
00073       */
00074     }
00075 
00076 
00078   std::pair<int,float> electronIsolation(const reco::Track * const tr, const reco::TrackCollection* isoTracks);
00079   std::pair<int,float> electronIsolation(const reco::Track * const tr, const reco::ElectronCollection* allEle, const reco::TrackCollection* isoTracks);
00080   std::pair<int,float> electronIsolation(const reco::Track * const tr, const reco::TrackCollection* isoTracks, GlobalPoint vertex);
00081   
00085   std::pair<int,float> photonIsolation(const reco::RecoCandidate * const recocand, const reco::TrackCollection* isoTracks, bool useVertex);
00086   std::pair<int,float> photonIsolation(const reco::RecoCandidate * const recocand, const reco::TrackCollection* isoTracks, GlobalPoint vertex);
00087   std::pair<int,float> photonIsolation(const reco::RecoCandidate * const recocand, const reco::ElectronCollection* allEle, const reco::TrackCollection* isoTracks);  
00088 
00090   int electronTrackCount(const reco::Track * const tr, const reco::TrackCollection* isoTracks)
00091   {return electronIsolation(tr,isoTracks).first;}
00092   int electronTrackCount(const reco::Track * const tr, const reco::TrackCollection* isoTracks, GlobalPoint vertex)
00093   {return electronIsolation(tr,isoTracks,vertex).first;}
00094 
00098   int photonTrackCount(const reco::RecoCandidate * const recocand, const reco::TrackCollection* isoTracks, bool useVertex)
00099   {return photonIsolation(recocand,isoTracks,useVertex).first;}
00100   int photonTrackCount(const reco::RecoCandidate * const recocand, const reco::TrackCollection* isoTracks, GlobalPoint vertex)
00101   {return photonIsolation(recocand,isoTracks,vertex).first;}
00102   int photonTrackCount(const reco::RecoCandidate * const recocand, const reco::ElectronCollection* allEle, const reco::TrackCollection* isoTracks)
00103   {return photonIsolation(recocand,allEle,isoTracks).first;}
00104 
00106   float electronPtSum(const reco::Track * const tr, const reco::TrackCollection* isoTracks)
00107   {return electronIsolation(tr,isoTracks).second;}
00108   float electronPtSum(const reco::Track * const tr, const reco::TrackCollection* isoTracks, GlobalPoint vertex)
00109   {return electronIsolation(tr,isoTracks,vertex).second;}
00110   float electronPtSum(const reco::Track * const tr, const reco::ElectronCollection* allEle ,const reco::TrackCollection* isoTracks)
00111   {return electronIsolation(tr,allEle,isoTracks).second;} 
00112 
00116   float photonPtSum(const reco::RecoCandidate * const recocand, const reco::TrackCollection* isoTracks, bool useVertex)
00117   {return photonIsolation(recocand,isoTracks, useVertex).second;}
00118   float photonPtSum(const reco::RecoCandidate * const recocand, const reco::TrackCollection* isoTracks, GlobalPoint vertex)
00119   {return photonIsolation(recocand,isoTracks, vertex).second;}
00120   float photonPtSum(const reco::RecoCandidate * const recocand, const reco::ElectronCollection* allEle, const reco::TrackCollection* isoTracks)
00121   {return photonIsolation(recocand,allEle,isoTracks).second;}
00122 
00123 
00125   double getPtMin() { return ptMin;}
00127   double getConeSize() { return conesize; }
00129   double getZspan() {return zspan; }
00131   double getRspan() { return rspan; }
00133   double getvetoConesize() { return vetoConesize; }
00134 
00135    private:
00136   // Call track reconstruction
00137   std::pair<int,float> findIsoTracks(GlobalVector mom, GlobalPoint vtx, const reco::TrackCollection* isoTracks, bool isElectron, bool useVertex=true);
00138   std::pair<int,float> findIsoTracksWithoutEle(GlobalVector mom, GlobalPoint vtx, const reco::ElectronCollection* allEle, const reco::TrackCollection* isoTracks);
00139 
00140   // Parameters of isolation cone geometry.
00141   double ptMin;
00142   double conesize;
00143   double zspan;
00144   double rspan;
00145   double vetoConesize;
00146 
00147 };
00148 
00149 
00150 #endif

Generated on Tue Jun 9 17:43:22 2009 for CMSSW by  doxygen 1.5.4