Go to the documentation of this file.00001 #include "RecoHI/HiEgammaAlgos/interface/TxyCalculator.h"
00002 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00003 #include "Geometry/Records/interface/IdealGeometryRecord.h"
00004 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
00005 #include "DataFormats/Common/interface/Handle.h"
00006 #include "DataFormats/EgammaReco/interface/BasicCluster.h"
00007 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
00008 #include "DataFormats/Candidate/interface/Candidate.h"
00009
00010 using namespace edm;
00011 using namespace reco;
00012
00013 TxyCalculator::TxyCalculator(const edm::Event &iEvent, const edm::EventSetup &iSetup, edm::InputTag trackLabel)
00014 {
00015
00016 iEvent.getByLabel(trackLabel, recCollection);
00017 }
00018
00019
00020 int TxyCalculator::getNumAllTracks(double ptCut)
00021 {
00022 using namespace edm;
00023 using namespace reco;
00024
00025 int nTracks = 0;
00026
00027 for(reco::TrackCollection::const_iterator
00028 recTrack = recCollection->begin(); recTrack!= recCollection->end(); recTrack++)
00029 {
00030 double pt = recTrack->pt();
00031 if ( pt > ptCut)
00032 nTracks = nTracks +1;
00033 }
00034 return nTracks;
00035 }
00036
00037
00038 int TxyCalculator::getNumLocalTracks(const reco::SuperClusterRef p, double detaCut, double ptCut)
00039 {
00040 using namespace edm;
00041 using namespace reco;
00042
00043 int nTracks = 0;
00044
00045 double eta1 = p->eta();
00046 double phi1 = p->phi();
00047
00048 for(reco::TrackCollection::const_iterator
00049 recTrack = recCollection->begin(); recTrack!= recCollection->end(); recTrack++)
00050 {
00051 double pt = recTrack->pt();
00052 if ( (pt > ptCut) && ( fabs(eta1 - recTrack->eta()) < detaCut) && ( fabs(calcDphi(recTrack->phi(),phi1)) < 3.141592/2. ) )
00053 nTracks= nTracks +1;
00054 }
00055 return nTracks;
00056 }
00057
00058 double TxyCalculator::getTxy(const reco::SuperClusterRef p, double x, double y)
00059 {
00060 using namespace edm;
00061 using namespace reco;
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 double eta1 = p->eta();
00073 double phi1 = p->phi();
00074
00075 float txy = 0;
00076
00077 for(reco::TrackCollection::const_iterator
00078 recTrack = recCollection->begin(); recTrack!= recCollection->end(); recTrack++)
00079 {
00080 double pt = recTrack->pt();
00081 double eta2 = recTrack->eta();
00082 double phi2 = recTrack->phi();
00083
00084 if(dRDistance(eta1,phi1,eta2,phi2) >= 0.1 * x)
00085 continue;
00086
00087 if(pt > y * 0.4)
00088 txy = txy + 1;
00089 }
00090
00091 return txy;
00092 }
00093