15 const DetId coreDet = vdetIds[trkIndex].detIdECAL;
18 std::cout <<
"DetId " << (
EBDetId)(coreDet) <<
" Flag " << vdetIds[trkIndex].okECAL << std::endl;
20 std::cout <<
"DetId " << (
EEDetId)(coreDet) <<
" Flag " << vdetIds[trkIndex].okECAL << std::endl;
23 double maxNearP = -1.0;
24 if (vdetIds[trkIndex].okECAL) {
25 std::vector<DetId> vdets =
spr::matrixECALIds(coreDet, ieta, iphi, geo, caloTopology, debug);
26 if (debug)
std::cout <<
"chargeIsolationEcal:: eta/phi/dets " << ieta <<
" " << iphi <<
" " << vdets.size() << std::endl;
28 for (
unsigned int indx=0; indx<vdetIds.size(); ++indx) {
29 if (indx != trkIndex && vdetIds[indx].
ok && vdetIds[indx].okECAL) {
30 const DetId anyCell = vdetIds[indx].detIdECAL;
32 const reco::Track* pTrack = &(*(vdetIds[indx].trkItr));
33 if (maxNearP < pTrack->
p()) maxNearP = pTrack->
p();
48 std::vector<DetId> vdets =
spr::matrixECALIds(coreDet, ieta, iphi, geo, caloTopology, debug);
49 if (debug)
std::cout <<
"chargeIsolation:: eta/phi/dets " << ieta <<
" " << iphi <<
" " << vdets.size() << std::endl;
51 double maxNearP = -1.0;
55 reco::TrackCollection::const_iterator trkItr2;
56 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
60 bool trkQuality = pTrack2->
quality(trackQuality_);
61 if ( (trkItr2 != trkItr) && trkQuality ) {
64 const GlobalPoint point2(info.first.x(),info.first.y(),info.first.z());
70 if (debug)
std::cout <<
"chargeIsolationEcal Cell " << (
EBDetId)(anyCell) <<
" pt " << pTrack2->
p() << std::endl;
71 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
76 if (debug)
std::cout <<
"chargeIsolationEcal Cell " << (
EEDetId)(anyCell) <<
" pt " << pTrack2->
p() << std::endl;
77 if (maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
90 std::vector<DetId> dets(1,vdetIds[trkIndex].detIdHCAL);
92 std::cout <<
"DetId " << (
HcalDetId)(dets[0]) <<
" Flag " << vdetIds[trkIndex].okHCAL << std::endl;
95 double maxNearP = -1.0;
96 if (vdetIds[trkIndex].okHCAL) {
97 std::vector<DetId> vdets =
spr::matrixHCALIds(dets, topology, ieta, iphi,
false, debug);
98 if (debug)
std::cout <<
"chargeIsolationHcal:: eta/phi/dets " << ieta <<
" " << iphi <<
" " << vdets.size() << std::endl;
100 for (
unsigned indx = 0; indx<vdetIds.size(); ++indx) {
101 if (indx != trkIndex && vdetIds[indx].
ok && vdetIds[indx].okHCAL) {
102 const DetId anyCell = vdetIds[indx].detIdHCAL;
104 const reco::Track* pTrack = &(*(vdetIds[indx].trkItr));
105 if (debug)
std::cout <<
"chargeIsolationHcal Cell " << (
HcalDetId)(anyCell) <<
" pt " << pTrack->
p() << std::endl;
106 if (maxNearP < pTrack->
p()) maxNearP = pTrack->
p();
118 std::vector<DetId> dets(1,ClosestCell);
122 std::vector<DetId> vdets =
spr::matrixHCALIds(dets, topology, ieta, iphi,
false, debug);
123 std::vector<DetId>::iterator it;
126 for (
unsigned int i=0;
i<vdets.size();
i++) {
127 std::cout <<
"HcalDetId in " <<2*ieta+1 <<
"x" << 2*iphi+1 <<
" " << (
HcalDetId) vdets[
i] << std::endl;
131 double maxNearP = -1.0;
134 reco::TrackCollection::const_iterator trkItr2;
135 for (trkItr2 = trkCollection->begin(); trkItr2 != trkCollection->end(); ++trkItr2) {
139 bool trkQuality = pTrack2->
quality(trackQuality_);
140 if ( (trkItr2 != trkItr) && trkQuality ) {
142 const GlobalPoint point2(info.first.x(),info.first.y(),info.first.z());
145 std::cout <<
"Track2 (p,eta,phi) " << pTrack2->
p() <<
" " << pTrack2->
eta() <<
" " << pTrack2->
phi() << std::endl;
151 if(maxNearP<pTrack2->
p()) maxNearP=pTrack2->
p();
154 std::cout <<
"maxNearP " << maxNearP <<
" thisCell "
156 << info.first.x() <<
"," << info.first.y() <<
","
157 << info.first.z() <<
")" << std::endl;
168 bool isIsolated =
true;
169 for (
unsigned int i=0;
i<vdets.size();
i++){
170 if (anyCell == vdets[
i] ) {
180 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) {
185 maxNearP_goodTrk = -999.0;
186 double maxNearP = -999.0;
190 reco::TrackCollection::const_iterator trkItr2;
191 for( trkItr2 = trkCollection->begin();
192 trkItr2 != trkCollection->end(); ++trkItr2){
198 if (pTrack2->
quality(trackQuality_)) trkQual_maxNearP = 1;
204 if (trkItr2 != trkItr) {
219 if (isConeChargedIso==0) {
221 if(maxNearP<pTrack2->
p()) {
222 maxNearP=pTrack2->
p();
223 if (trkQual_maxNearP>0 && nLayers_maxNearP>7 && maxNearP_goodTrk<pTrack2->
p()) {
224 maxNearP_goodTrk=pTrack2->
p();
235 double chargeIsolationCone(
unsigned int trkIndex, std::vector<spr::propagatedTrackDirection> & trkDirs,
double dR,
int & nNearTRKs,
bool debug) {
237 double maxNearP = -1.0;
239 if (trkDirs[trkIndex].okHCAL) {
240 if (debug)
std::cout <<
"chargeIsolationCone with " << trkDirs.size() <<
" tracks " << std::endl;
241 for (
unsigned int indx=0; indx<trkDirs.size(); ++indx) {
242 if (indx != trkIndex && trkDirs[indx].
ok && trkDirs[indx].okHCAL) {
243 int isConeChargedIso =
spr::coneChargeIsolation(trkDirs[trkIndex].pointHCAL, trkDirs[indx].pointHCAL, trkDirs[trkIndex].directionHCAL, dR);
244 if (isConeChargedIso==0) {
246 const reco::Track* pTrack = &(*(trkDirs[indx].trkItr));
247 if (maxNearP < pTrack->
p()) maxNearP = pTrack->
p();
252 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
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)