14 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) {
16 double maxNearP = -1.0;
20 reco::TrackCollection::const_iterator trkItr2;
21 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
25 bool trkQuality = pTrack2->
quality(trackQuality_);
26 if ( (trkItr2 != trkItr) && trkQuality ) {
35 if (debug)
std::cout <<
"chargeIsolation:: EB cell " << (
EBDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
37 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
41 if (debug)
std::cout <<
"chargeIsolation:: EE cell " << (
EEDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
43 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
56 bool isIsolated =
false;
60 for (
int dx = -ieta; dx < ieta+1; ++dx) {
61 for (
int dy = -iphi; dy < iphi+1; ++dy) {
63 thisDet = navigator.
offsetBy(dx, dy);
66 if (thisDet !=
DetId(0)) {
67 if (thisDet == anyCell) {
79 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) {
84 std::vector<DetId> vdets =
spr::matrixECALIds(coreDet, ieta, iphi, geo, caloTopology, debug);
85 if (debug)
std::cout <<
"chargeIsolation:: eta/phi/dets " << ieta <<
" " << iphi <<
" " << vdets.size() << std::endl;
87 double maxNearP = -1.0;
91 reco::TrackCollection::const_iterator trkItr2;
92 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
96 bool trkQuality = pTrack2->
quality(trackQuality_);
97 if ( (trkItr2 != trkItr) && trkQuality ) {
106 if (debug)
std::cout <<
"chargeIsolation:: EB cell " << (
EBDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
108 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
112 if (debug)
std::cout <<
"chargeIsolation:: EE cell " << (
EEDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
114 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
125 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) {
127 std::vector<DetId> dets(1,ClosestCell);
131 std::vector<DetId> vdets =
spr::matrixHCALIds(dets, topology, ieta, iphi,
false, debug);
132 std::vector<DetId>::iterator it;
135 for (
unsigned int i=0;
i<vdets.size();
i++) {
136 std::cout <<
"HcalDetId in " <<2*ieta+1 <<
"x" << 2*iphi+1 <<
" " << (
HcalDetId) vdets[
i] << std::endl;
140 double maxNearP = -1.0;
143 reco::TrackCollection::const_iterator trkItr2;
144 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
148 bool trkQuality = pTrack2->
quality(trackQuality_);
149 if ( (trkItr2 != trkItr) && trkQuality ) {
155 std::cout <<
"Track2 (p,eta,phi) " << pTrack2->
p() <<
" " << pTrack2->
eta() <<
" " << pTrack2->
phi() << std::endl;
160 if (debug)
std::cout <<
"chargeIsolation:: HCAL cell " << (
HcalDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
162 if(maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
165 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
static const double etaBEEcal
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)