13 double chargeIsolation(
const edm::Event&
iEvent,
const edm::EventSetup& iSetup,
CaloNavigator<DetId>& theNavigator, reco::TrackCollection::const_iterator trkItr,
edm::Handle<reco::TrackCollection> trkCollection,
const CaloSubdetectorGeometry* gEB,
const CaloSubdetectorGeometry* gEE,
TrackDetectorAssociator& associator,
TrackAssociatorParameters& parameters_,
int ieta,
int iphi,
std::string theTrackQuality,
bool debug) {
15 double maxNearP = -1.0;
19 reco::TrackCollection::const_iterator trkItr2;
20 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
24 bool trkQuality = pTrack2->
quality(trackQuality_);
25 if ( (trkItr2 != trkItr) && trkQuality ) {
34 if (debug)
std::cout <<
"chargeIsolation:: EB cell " << (
EBDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
36 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
40 if (debug)
std::cout <<
"chargeIsolation:: EE cell " << (
EEDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
42 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
55 bool isIsolated =
false;
59 for (
int dx = -ieta; dx < ieta+1; ++dx) {
60 for (
int dy = -iphi; dy < iphi+1; ++dy) {
62 thisDet = navigator.
offsetBy(dx, dy);
65 if (thisDet !=
DetId(0)) {
66 if (thisDet == anyCell) {
78 double chargeIsolationEcal(
const edm::Event&
iEvent,
const edm::EventSetup& iSetup,
const DetId& coreDet, reco::TrackCollection::const_iterator trkItr,
edm::Handle<reco::TrackCollection> trkCollection,
const CaloGeometry* geo,
const CaloTopology* caloTopology,
TrackDetectorAssociator& associator,
TrackAssociatorParameters& parameters_,
int ieta,
int iphi,
std::string& theTrackQuality,
bool debug) {
83 std::vector<DetId> vdets =
spr::matrixECALIds(coreDet, ieta, iphi, geo, caloTopology, debug);
84 if (debug)
std::cout <<
"chargeIsolation:: eta/phi/dets " << ieta <<
" " << iphi <<
" " << vdets.size() << std::endl;
86 double maxNearP = -1.0;
90 reco::TrackCollection::const_iterator trkItr2;
91 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
95 bool trkQuality = pTrack2->
quality(trackQuality_);
96 if ( (trkItr2 != trkItr) && trkQuality ) {
105 if (debug)
std::cout <<
"chargeIsolation:: EB cell " << (
EBDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
107 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
111 if (debug)
std::cout <<
"chargeIsolation:: EE cell " << (
EEDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
113 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
124 double chargeIsolationHcal(
const edm::Event&
iEvent,
const edm::EventSetup& iSetup, reco::TrackCollection::const_iterator trkItr,
edm::Handle<reco::TrackCollection> trkCollection,
const DetId ClosestCell,
const HcalTopology*
topology,
const CaloSubdetectorGeometry* gHB,
TrackDetectorAssociator& associator,
TrackAssociatorParameters& parameters_,
int ieta,
int iphi,
std::string& theTrackQuality,
bool debug) {
126 std::vector<DetId> dets(1,ClosestCell);
130 std::vector<DetId> vdets =
spr::matrixHCALIds(dets, topology, ieta, iphi,
false, debug);
131 std::vector<DetId>::iterator it;
134 for (
unsigned int i=0;
i<vdets.size();
i++) {
135 std::cout <<
"HcalDetId in " <<2*ieta+1 <<
"x" << 2*iphi+1 <<
" " << (
HcalDetId) vdets[
i] << std::endl;
139 double maxNearP = -1.0;
142 reco::TrackCollection::const_iterator trkItr2;
143 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
147 bool trkQuality = pTrack2->
quality(trackQuality_);
148 if ( (trkItr2 != trkItr) && trkQuality ) {
154 std::cout <<
"Track2 (p,eta,phi) " << pTrack2->
p() <<
" " << pTrack2->
eta() <<
" " << pTrack2->
phi() << std::endl;
159 if (debug)
std::cout <<
"chargeIsolation:: HCAL cell " << (
HcalDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
161 if(maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
164 std::cout <<
"maxNearP " << maxNearP <<
" thisCell "
virtual DetId getClosestCell(const GlobalPoint &r) const
double p() const
momentum vector magnitude
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
CaloTopology const * topology(0)
void matrixECALIds(const DetId &det, int ieta, int iphi, const CaloGeometry *geo, const CaloTopology *caloTopology, std::vector< DetId > &vdets, bool debug=false, bool igNoreTransition=true)
virtual DetId getClosestCell(const GlobalPoint &r) const
bool chargeIsolation(const DetId anyCell, std::vector< DetId > &vdets)
TrackQuality
track quality
static FreeTrajectoryState getFreeTrajectoryState(const edm::EventSetup &, const reco::Track &)
get FreeTrajectoryState from different track representations
double phi() const
azimuthal angle of momentum vector
math::XYZPoint trkGlobPosAtHcal
T offsetBy(int deltaX, int deltaY) const
Free movement of arbitray steps.
double chargeIsolationEcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, bool debug=false)
double eta() const
pseudorapidity of momentum vector
Abs< T >::type abs(const T &t)
virtual DetId getClosestCell(const GlobalPoint &r) const
void home() const
move the navigator back to the starting point
static TrackQuality qualityByName(const std::string &name)
bool quality(const TrackQuality) const
Track quality.
std::vector< DetId > matrixHCALIds(std::vector< DetId > &dets, const HcalTopology *topology, int ieta, int iphi, bool includeHO=false, bool debug=false)
TrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const AssociatorParameters &)
math::XYZPoint trkGlobPosAtEcal
Track position at different parts of the calorimeter.
double chargeIsolationHcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const HcalTopology *topology, int ieta, int iphi, bool debug=false)