16 const DetId coreDet = vdetIds[trkIndex].detIdECAL;
19 std::cout <<
"DetId " << (
EBDetId)(coreDet) <<
" Flag " << vdetIds[trkIndex].okECAL << std::endl;
21 std::cout <<
"DetId " << (
EEDetId)(coreDet) <<
" Flag " << vdetIds[trkIndex].okECAL << std::endl;
24 double maxNearP = -1.0;
25 if (vdetIds[trkIndex].okECAL) {
26 std::vector<DetId> vdets =
spr::matrixECALIds(coreDet, ieta, iphi, geo, caloTopology, debug);
27 if (debug)
std::cout <<
"chargeIsolationEcal:: eta/phi/dets " << ieta <<
" " << iphi <<
" " << vdets.size() << std::endl;
29 for (
unsigned int indx=0; indx<vdetIds.size(); ++indx) {
30 if (indx != trkIndex && vdetIds[indx].
ok && vdetIds[indx].okECAL) {
31 const DetId anyCell = vdetIds[indx].detIdECAL;
33 const reco::Track* pTrack = &(*(vdetIds[indx].trkItr));
34 if (maxNearP < pTrack->
p()) maxNearP = pTrack->
p();
49 std::vector<DetId> vdets =
spr::matrixECALIds(coreDet, ieta, iphi, geo, caloTopology, debug);
50 if (debug)
std::cout <<
"chargeIsolation:: eta/phi/dets " << ieta <<
" " << iphi <<
" " << vdets.size() << std::endl;
52 double maxNearP = -1.0;
56 reco::TrackCollection::const_iterator trkItr2;
57 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
61 bool trkQuality = pTrack2->
quality(trackQuality_);
62 if ( (trkItr2 != trkItr) && trkQuality ) {
65 const GlobalPoint point2(info.first.x(),info.first.y(),info.first.z());
71 if (debug)
std::cout <<
"chargeIsolationEcal Cell " << (
EBDetId)(anyCell) <<
" pt " << pTrack2->
p() << std::endl;
72 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
77 if (debug)
std::cout <<
"chargeIsolationEcal Cell " << (
EEDetId)(anyCell) <<
" pt " << pTrack2->
p() << std::endl;
78 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
91 std::vector<DetId> dets(1,vdetIds[trkIndex].detIdHCAL);
93 std::cout <<
"DetId " << (
HcalDetId)(dets[0]) <<
" Flag " << vdetIds[trkIndex].okHCAL << std::endl;
96 double maxNearP = -1.0;
97 if (vdetIds[trkIndex].okHCAL) {
98 std::vector<DetId> vdets =
spr::matrixHCALIds(dets, topology, ieta, iphi,
false, debug);
99 if (debug)
std::cout <<
"chargeIsolationHcal:: eta/phi/dets " << ieta <<
" " << iphi <<
" " << vdets.size() << std::endl;
101 for (
unsigned indx = 0; indx<vdetIds.size(); ++indx) {
102 if (indx != trkIndex && vdetIds[indx].
ok && vdetIds[indx].okHCAL) {
103 const DetId anyCell = vdetIds[indx].detIdHCAL;
105 const reco::Track* pTrack = &(*(vdetIds[indx].trkItr));
106 if (debug)
std::cout <<
"chargeIsolationHcal Cell " << (
HcalDetId)(anyCell) <<
" pt " << pTrack->
p() << std::endl;
107 if (maxNearP < pTrack->
p()) maxNearP = pTrack->
p();
119 std::vector<DetId> dets(1,ClosestCell);
123 std::vector<DetId> vdets =
spr::matrixHCALIds(dets, topology, ieta, iphi,
false, debug);
124 std::vector<DetId>::iterator it;
127 for (
unsigned int i=0;
i<vdets.size();
i++) {
128 std::cout <<
"HcalDetId in " <<2*ieta+1 <<
"x" << 2*iphi+1 <<
" " << (
HcalDetId) vdets[
i] << std::endl;
132 double maxNearP = -1.0;
135 reco::TrackCollection::const_iterator trkItr2;
136 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
140 bool trkQuality = pTrack2->
quality(trackQuality_);
141 if ( (trkItr2 != trkItr) && trkQuality ) {
143 const GlobalPoint point2(info.first.x(),info.first.y(),info.first.z());
146 std::cout <<
"Track2 (p,eta,phi) " << pTrack2->
p() <<
" " << pTrack2->
eta() <<
" " << pTrack2->
phi() << std::endl;
152 if(maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
155 std::cout <<
"maxNearP " << maxNearP <<
" thisCell "
157 << info.first.x() <<
"," << info.first.y() <<
","
158 << info.first.z() <<
")" << std::endl;
169 bool isIsolated =
true;
170 for (
unsigned int i=0;
i<vdets.size();
i++){
171 if (anyCell == vdets[
i] ) {
181 double coneChargeIsolation(
const edm::Event&
iEvent,
const edm::EventSetup& iSetup, reco::TrackCollection::const_iterator trkItr,
edm::Handle<reco::TrackCollection> trkCollection,
TrackDetectorAssociator& associator,
TrackAssociatorParameters& parameters_,
std::string theTrackQuality,
int &nNearTRKs,
int &nLayers_maxNearP,
int &trkQual_maxNearP,
double &maxNearP_goodTrk,
const GlobalPoint& hpoint1,
const GlobalVector& trackMom,
double dR) {
186 maxNearP_goodTrk = -999.0;
187 double maxNearP = -999.0;
191 reco::TrackCollection::const_iterator trkItr2;
192 for( trkItr2 = trkCollection->begin();
193 trkItr2 != trkCollection->end(); ++trkItr2){
199 if (pTrack2->
quality(trackQuality_)) trkQual_maxNearP = 1;
205 if (trkItr2 != trkItr) {
220 if (isConeChargedIso==0) {
222 if(maxNearP<pTrack2->
p()) {
223 maxNearP=pTrack2->
p();
224 if (trkQual_maxNearP>0 && nLayers_maxNearP>7 && maxNearP_goodTrk<pTrack2->
p()) {
225 maxNearP_goodTrk=pTrack2->
p();
236 double chargeIsolationCone(
unsigned int trkIndex, std::vector<spr::propagatedTrackDirection> & trkDirs,
double dR,
int & nNearTRKs,
bool debug) {
238 double maxNearP = -1.0;
240 if (trkDirs[trkIndex].okHCAL) {
241 if (debug)
std::cout <<
"chargeIsolationCone with " << trkDirs.size() <<
" tracks " << std::endl;
242 for (
unsigned int indx=0; indx<trkDirs.size(); ++indx) {
243 if (indx != trkIndex && trkDirs[indx].
ok && trkDirs[indx].okHCAL) {
244 int isConeChargedIso =
spr::coneChargeIsolation(trkDirs[trkIndex].pointHCAL, trkDirs[indx].pointHCAL, trkDirs[trkIndex].directionHCAL, dR);
245 if (isConeChargedIso==0) {
247 const reco::Track* pTrack = &(*(trkDirs[indx].trkItr));
248 if (maxNearP < pTrack->
p()) maxNearP = pTrack->
p();
253 if (debug)
std::cout <<
"chargeIsolationCone Track " << trkDirs[trkIndex].okHCAL <<
" maxNearP " << maxNearP << std::endl;
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
double getDistInPlaneTrackDir(const GlobalPoint &caloPoint, const GlobalVector &caloVector, const GlobalPoint &rechitPoint, bool debug=false)
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
std::pair< math::XYZPoint, bool > propagateHCAL(const reco::Track *, const MagneticField *, bool debug=false)
static FreeTrajectoryState getFreeTrajectoryState(const edm::EventSetup &, const reco::Track &)
get FreeTrajectoryState from different track representations
double phi() const
azimuthal angle of momentum vector
double chargeIsolationCone(unsigned int trkIndex, std::vector< spr::propagatedTrackDirection > &trkDirs, double dR, int &nNearTRKs, bool debug=false)
int trackerLayersWithMeasurement() const
math::XYZPoint trkGlobPosAtHcal
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)
std::pair< math::XYZPoint, bool > propagateECAL(const reco::Track *, const MagneticField *, bool debug=false)
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
virtual DetId getClosestCell(const GlobalPoint &r) const
static TrackQuality qualityByName(const std::string &name)
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
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 &)
double chargeIsolationHcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const HcalTopology *topology, int ieta, int iphi, bool debug=false)
double coneChargeIsolation(const edm::Event &iEvent, const edm::EventSetup &iSetup, reco::TrackCollection::const_iterator trkItr, edm::Handle< reco::TrackCollection > trkCollection, TrackDetectorAssociator &associator, TrackAssociatorParameters ¶meters_, std::string theTrackQuality, int &nNearTRKs, int &nLayers_maxNearP, int &trkQual_maxNearP, double &maxNearP_goodTrk, const GlobalPoint &hpoint1, const GlobalVector &trackMom, double dR)