19 reco::TrackCollection::const_iterator trkItr,
31 double maxNearP = -1.0;
35 reco::TrackCollection::const_iterator trkItr2;
36 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
40 bool trkQuality = pTrack2->
quality(trackQuality_);
41 if ( (trkItr2 != trkItr) && trkQuality ) {
51 if (
debug)
std::cout <<
"chargeIsolation:: EB cell " << (
EBDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
54 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
59 if (
debug)
std::cout <<
"chargeIsolation:: EE cell " << (
EEDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
62 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
75 bool isIsolated =
false;
79 for (
int dx = -ieta; dx < ieta+1; ++dx) {
80 for (
int dy = -iphi; dy < iphi+1; ++dy) {
82 thisDet = navigator.
offsetBy(dx, dy);
85 if (thisDet !=
DetId(0)) {
86 if (thisDet == anyCell) {
98 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) {
103 std::vector<DetId> vdets =
spr::matrixECALIds(coreDet, ieta, iphi, geo, caloTopology, debug);
105 if (debug)
std::cout <<
"chargeIsolation:: eta/phi/dets " << ieta <<
" " << iphi <<
" " << vdets.size() << std::endl;
107 double maxNearP = -1.0;
111 reco::TrackCollection::const_iterator trkItr2;
112 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
116 bool trkQuality = pTrack2->
quality(trackQuality_);
117 if ( (trkItr2 != trkItr) && trkQuality ) {
127 if (debug)
std::cout <<
"chargeIsolation:: EB cell " << (
EBDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
130 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
135 if (debug)
std::cout <<
"chargeIsolation:: EE cell " << (
EEDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
138 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
149 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) {
151 std::vector<DetId> dets(1,ClosestCell);
156 std::vector<DetId> vdets =
spr::matrixHCALIds(dets, topology, ieta, iphi,
false, debug);
157 std::vector<DetId>::iterator it;
161 for (
unsigned int i=0;
i<vdets.size();
i++) {
162 std::cout <<
"HcalDetId in " <<2*ieta+1 <<
"x" << 2*iphi+1 <<
" " << (
HcalDetId) vdets[
i] << std::endl;
166 double maxNearP = -1.0;
169 reco::TrackCollection::const_iterator trkItr2;
170 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
174 bool trkQuality = pTrack2->
quality(trackQuality_);
175 if ( (trkItr2 != trkItr) && trkQuality ) {
182 std::cout <<
"Track2 (p,eta,phi) " << pTrack2->
p() <<
" " << pTrack2->
eta() <<
" " << pTrack2->
phi() << std::endl;
188 if (debug)
std::cout <<
"chargeIsolation:: HCAL cell " << (
HcalDetId)(anyCell) <<
" for pt " << pTrack2->
p() << std::endl;
191 if(maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
195 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)