Skip to content

Commit c88bc2e

Browse files
authored
Merge pull request cms-sw#42984 from swagata87/cleanupPF
PF code clean up and refactor [ConvBremPFTrackFinder]
2 parents 5b09d14 + fe171cf commit c88bc2e

File tree

1 file changed

+73
-86
lines changed

1 file changed

+73
-86
lines changed

RecoParticleFlow/PFTracking/src/ConvBremPFTrackFinder.cc

Lines changed: 73 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "TMath.h"
1414
#include "RecoParticleFlow/PFClusterTools/interface/LinkByRecHit.h"
1515
#include "TMVA/MethodBDT.h"
16+
#include "DataFormats/Math/interface/deltaPhi.h"
1617

1718
using namespace edm;
1819
using namespace std;
@@ -42,13 +43,19 @@ void ConvBremPFTrackFinder::runConvBremFinder(const Handle<PFRecTrackCollection>
4243
const reco::PFClusterCollection& theEClus,
4344
const reco::GsfPFRecTrack& gsfpfrectk) {
4445
found_ = false;
45-
bool debug = false;
46-
bool debugRef = false;
4746

48-
if (debug)
49-
cout << "runConvBremFinder:: Entering " << endl;
47+
LogDebug("ConvBremPFTrackFinder") << "runConvBremFinder:: Entering ";
5048

5149
const reco::GsfTrackRef& refGsf = gsfpfrectk.gsfTrackRef();
50+
float refGsfEta = refGsf->eta();
51+
float refGsfPt = refGsf->pt();
52+
float refGsfPhi = refGsf->phi();
53+
float gsfR = sqrt(refGsf->innerPosition().x() * refGsf->innerPosition().x() +
54+
refGsf->innerPosition().y() * refGsf->innerPosition().y());
55+
// direction of the Gsf track
56+
GlobalVector direction(refGsf->innerMomentum().x(), refGsf->innerMomentum().y(), refGsf->innerMomentum().z());
57+
float refGsfPtMode = refGsf->ptMode();
58+
5259
const reco::PFRecTrackRef& pfTrackRef = gsfpfrectk.kfPFRecTrackRef();
5360
vector<PFBrem> primPFBrem = gsfpfrectk.PFRecBrem();
5461

@@ -70,10 +77,10 @@ void ConvBremPFTrackFinder::runConvBremFinder(const Handle<PFRecTrackCollection>
7077
TrackRef trackRef = pfRecTrRef->trackRef();
7178
reco::TrackBaseRef selTrackBaseRef(trackRef);
7279

73-
if (debug)
74-
cout << "runConvBremFinder:: pushing_back High Purity " << pft->trackRef()->pt() << " eta,phi "
75-
<< pft->trackRef()->eta() << ", " << pft->trackRef()->phi() << " Memory Address Ref " << &*trackRef
76-
<< " Memory Address BaseRef " << &*selTrackBaseRef << endl;
80+
LogDebug("ConvBremPFTrackFinder") << "runConvBremFinder:: pushing_back High Purity " << pft->trackRef()->pt()
81+
<< " eta,phi " << pft->trackRef()->eta() << ", " << pft->trackRef()->phi()
82+
<< " Memory Address Ref " << &*trackRef << " Memory Address BaseRef "
83+
<< &*selTrackBaseRef;
7784
AllPFRecTracks.push_back(pfRecTrRef);
7885
}
7986

@@ -98,26 +105,25 @@ void ConvBremPFTrackFinder::runConvBremFinder(const Handle<PFRecTrackCollection>
98105
for (unsigned iPF = 0; iPF < AllPFRecTracks.size(); iPF++) {
99106
reco::TrackBaseRef selTrackBaseRef(AllPFRecTracks[iPF]->trackRef());
100107

101-
if (debugRef)
102-
cout << "## Track 1 HP pt " << AllPFRecTracks[iPF]->trackRef()->pt() << " eta, phi "
103-
<< AllPFRecTracks[iPF]->trackRef()->eta() << ", " << AllPFRecTracks[iPF]->trackRef()->phi()
104-
<< " Memory Address Ref " << &(*AllPFRecTracks[iPF]->trackRef()) << " Memory Address BaseRef "
105-
<< &*selTrackBaseRef << endl;
106-
if (debugRef)
107-
cout << "** Track 2 CONV pt " << compPFTkRef->trackRef()->pt() << " eta, phi "
108-
<< compPFTkRef->trackRef()->eta() << ", " << compPFTkRef->trackRef()->phi() << " Memory Address Ref "
109-
<< &*compPFTkRef->trackRef() << " Memory Address BaseRef " << &*newTrackBaseRef << endl;
108+
LogDebug("ConvBremPFTrackFinder")
109+
<< "## Track 1 HP pt " << AllPFRecTracks[iPF]->trackRef()->pt() << " eta, phi "
110+
<< AllPFRecTracks[iPF]->trackRef()->eta() << ", " << AllPFRecTracks[iPF]->trackRef()->phi()
111+
<< " Memory Address Ref " << &(*AllPFRecTracks[iPF]->trackRef()) << " Memory Address BaseRef "
112+
<< &*selTrackBaseRef;
113+
LogDebug("ConvBremPFTrackFinder")
114+
<< "** Track 2 CONV pt " << compPFTkRef->trackRef()->pt() << " eta, phi "
115+
<< compPFTkRef->trackRef()->eta() << ", " << compPFTkRef->trackRef()->phi() << " Memory Address Ref "
116+
<< &*compPFTkRef->trackRef() << " Memory Address BaseRef " << &*newTrackBaseRef;
110117
//if(selTrackBaseRef == newTrackBaseRef || AllPFRecTracks[iPF]->trackRef()== compPFTkRef->trackRef()) {
111118
if (AllPFRecTracks[iPF]->trackRef() == compPFTkRef->trackRef()) {
112-
if (debugRef)
113-
cout << " SAME BREM REF " << endl;
119+
LogDebug("ConvBremPFTrackFinder") << " SAME BREM REF " << endl;
114120
notFound = false;
115121
}
116122
}
117123
if (notFound) {
118-
if (debug)
119-
cout << "runConvBremFinder:: pushing_back Conversions " << compPFTkRef->trackRef()->pt() << " eta,phi "
120-
<< compPFTkRef->trackRef()->eta() << " phi " << compPFTkRef->trackRef()->phi() << endl;
124+
LogDebug("ConvBremPFTrackFinder")
125+
<< "runConvBremFinder:: pushing_back Conversions " << compPFTkRef->trackRef()->pt() << " eta,phi "
126+
<< compPFTkRef->trackRef()->eta() << " phi " << compPFTkRef->trackRef()->phi();
121127
AllPFRecTracks.push_back(compPFTkRef);
122128
}
123129
}
@@ -145,10 +151,9 @@ void ConvBremPFTrackFinder::runConvBremFinder(const Handle<PFRecTrackCollection>
145151
notFound = false;
146152
}
147153
if (notFound) {
148-
if (debug)
149-
cout << "runConvBremFinder:: pushing_back displaced Vertex pt " << newPFRecTrackRef->trackRef()->pt()
150-
<< " eta,phi " << newPFRecTrackRef->trackRef()->eta() << ", " << newPFRecTrackRef->trackRef()->phi()
151-
<< endl;
154+
LogDebug("ConvBremPFTrackFinder")
155+
<< "runConvBremFinder:: pushing_back displaced Vertex pt " << newPFRecTrackRef->trackRef()->pt()
156+
<< " eta,phi " << newPFRecTrackRef->trackRef()->eta() << ", " << newPFRecTrackRef->trackRef()->phi();
152157
AllPFRecTracks.push_back(newPFRecTrackRef);
153158
}
154159
}
@@ -176,9 +181,9 @@ void ConvBremPFTrackFinder::runConvBremFinder(const Handle<PFRecTrackCollection>
176181
notFound = false;
177182
}
178183
if (notFound) {
179-
if (debug)
180-
cout << "runConvBremFinder:: pushing_back V0 " << newPFRecTrackRef->trackRef()->pt() << " eta,phi "
181-
<< newPFRecTrackRef->trackRef()->eta() << ", " << newPFRecTrackRef->trackRef()->phi() << endl;
184+
LogDebug("ConvBremPFTrackFinder")
185+
<< "runConvBremFinder:: pushing_back V0 " << newPFRecTrackRef->trackRef()->pt() << " eta,phi "
186+
<< newPFRecTrackRef->trackRef()->eta() << ", " << newPFRecTrackRef->trackRef()->phi();
182187
AllPFRecTracks.push_back(newPFRecTrackRef);
183188
}
184189
}
@@ -188,26 +193,27 @@ void ConvBremPFTrackFinder::runConvBremFinder(const Handle<PFRecTrackCollection>
188193
pfRecTrRef_vec_.clear();
189194

190195
for (unsigned iPF = 0; iPF < AllPFRecTracks.size(); iPF++) {
191-
double dphi = fabs(AllPFRecTracks[iPF]->trackRef()->phi() - refGsf->phi());
192-
if (dphi > TMath::Pi())
193-
dphi -= TMath::TwoPi();
194-
double deta = fabs(AllPFRecTracks[iPF]->trackRef()->eta() - refGsf->eta());
196+
double dphi = std::abs(::deltaPhi(AllPFRecTracks[iPF]->trackRef()->phi(), refGsfPhi));
197+
double deta = std::abs(AllPFRecTracks[iPF]->trackRef()->eta() - refGsfEta);
195198

196199
// limiting the phase space (just for saving cpu-time)
197-
if (fabs(dphi) > 1.0 || fabs(deta) > 0.4)
200+
if (std::abs(dphi) > 1.0 || std::abs(deta) > 0.4)
198201
continue;
199202

200-
double minDEtaBremKF = 1000.;
201-
double minDPhiBremKF = 1000.;
202-
double minDRBremKF = 1000.;
203-
double minDEtaBremKFPos = 1000.;
204-
double minDPhiBremKFPos = 1000.;
205-
double minDRBremKFPos = 1000.;
203+
double minDEtaBremKF = std::numeric_limits<double>::max();
204+
double minDPhiBremKF = std::numeric_limits<double>::max();
205+
double minDRBremKF2 = std::numeric_limits<double>::max();
206+
double minDEtaBremKFPos = std::numeric_limits<double>::max();
207+
double minDPhiBremKFPos = std::numeric_limits<double>::max();
208+
double minDRBremKFPos2 = std::numeric_limits<double>::max();
206209
reco::TrackRef trkRef = AllPFRecTracks[iPF]->trackRef();
207210

208211
double secEta = trkRef->innerMomentum().eta();
209212
double secPhi = trkRef->innerMomentum().phi();
210213

214+
double posEta = trkRef->innerPosition().eta();
215+
double posPhi = trkRef->innerPosition().phi();
216+
211217
for (unsigned ipbrem = 0; ipbrem < primPFBrem.size(); ipbrem++) {
212218
if (primPFBrem[ipbrem].indTrajPoint() == 99)
213219
continue;
@@ -218,36 +224,28 @@ void ConvBremPFTrackFinder::runConvBremFinder(const Handle<PFRecTrackCollection>
218224
double bremEta = atPrimECAL.momentum().Eta();
219225
double bremPhi = atPrimECAL.momentum().Phi();
220226

221-
double deta = fabs(bremEta - secEta);
222-
double dphi = fabs(bremPhi - secPhi);
223-
if (dphi > TMath::Pi())
224-
dphi -= TMath::TwoPi();
225-
double DR = sqrt(deta * deta + dphi * dphi);
227+
double deta = std::abs(bremEta - secEta);
228+
double dphi = std::abs(::deltaPhi(bremPhi, secPhi));
229+
double DR2 = deta * deta + dphi * dphi;
226230

227-
double detaPos = fabs(bremEta - trkRef->innerPosition().eta());
228-
double dphiPos = fabs(bremPhi - trkRef->innerPosition().phi());
229-
if (dphiPos > TMath::Pi())
230-
dphiPos -= TMath::TwoPi();
231-
double DRPos = sqrt(detaPos * detaPos + dphiPos * dphiPos);
231+
double detaPos = std::abs(bremEta - posEta);
232+
double dphiPos = std::abs(::deltaPhi(bremPhi, posPhi));
233+
double DRPos2 = detaPos * detaPos + dphiPos * dphiPos;
232234

233235
// find the closest track tangent
234-
if (DR < minDRBremKF) {
235-
minDRBremKF = DR;
236+
if (DR2 < minDRBremKF2) {
237+
minDRBremKF2 = DR2;
236238
minDEtaBremKF = deta;
237-
minDPhiBremKF = fabs(dphi);
239+
minDPhiBremKF = std::abs(dphi);
238240
}
239241

240-
if (DRPos < minDRBremKFPos) {
241-
minDRBremKFPos = DR;
242+
if (DRPos2 < minDRBremKFPos2) {
243+
minDRBremKFPos2 = DRPos2;
242244
minDEtaBremKFPos = detaPos;
243-
minDPhiBremKFPos = fabs(dphiPos);
245+
minDPhiBremKFPos = std::abs(dphiPos);
244246
}
245247
}
246248

247-
//gsfR
248-
float gsfR = sqrt(refGsf->innerPosition().x() * refGsf->innerPosition().x() +
249-
refGsf->innerPosition().y() * refGsf->innerPosition().y());
250-
251249
// secR
252250
secR = sqrt(trkRef->innerPosition().x() * trkRef->innerPosition().x() +
253251
trkRef->innerPosition().y() * trkRef->innerPosition().y());
@@ -256,11 +254,10 @@ void ConvBremPFTrackFinder::runConvBremFinder(const Handle<PFRecTrackCollection>
256254
// Moreover if the secR is internal with respect to the GSF track by two pixel layers discard it.
257255
if ((minDPhiBremKF < 0.1 || minDPhiBremKFPos < 0.1) && (minDEtaBremKF < 0.02 || minDEtaBremKFPos < 0.02) &&
258256
secR > (gsfR - 8)) {
259-
if (debug)
260-
cout << "runConvBremFinder:: OK Find track and BREM close "
261-
<< " MinDphi " << minDPhiBremKF << " MinDeta " << minDEtaBremKF << endl;
257+
LogDebug("ConvBremPFTrackFinder") << "runConvBremFinder:: OK Find track and BREM close "
258+
<< " MinDphi " << minDPhiBremKF << " MinDeta " << minDEtaBremKF;
262259

263-
float MinDist = 100000.;
260+
float MinDist = std::numeric_limits<float>::max();
264261
float EE_calib = 0.;
265262
PFRecTrack pfrectrack = *AllPFRecTracks[iPF];
266263
// Find and ECAL associated cluster
@@ -291,7 +288,7 @@ void ConvBremPFTrackFinder::runConvBremFinder(const Handle<PFRecTrackCollection>
291288
trkRef->innerMomentum().z() * trkRef->innerMomentum().z());
292289

293290
// maybe put innter momentum pt?
294-
ptRatioGsfKF = trkRef->pt() / (refGsf->ptMode());
291+
ptRatioGsfKF = trkRef->pt() / refGsfPtMode;
295292

296293
Vertex dummy;
297294
const Vertex* pv = &dummy;
@@ -309,9 +306,6 @@ void ConvBremPFTrackFinder::runConvBremFinder(const Handle<PFRecTrackCollection>
309306
dummy = Vertex(p, e, 0, 0, 0);
310307
}
311308

312-
// direction of the Gsf track
313-
GlobalVector direction(refGsf->innerMomentum().x(), refGsf->innerMomentum().y(), refGsf->innerMomentum().z());
314-
315309
TransientTrack transientTrack = builder_.build(*trkRef);
316310
sTIP = IPTools::signedTransverseImpactParameter(transientTrack, direction, *pv).second.significance();
317311

@@ -341,45 +335,38 @@ void ConvBremPFTrackFinder::runConvBremFinder(const Handle<PFRecTrackCollection>
341335

342336
nHITS1 = tmpSh;
343337

344-
TString weightfilepath = "";
345338
double mvaValue = -10;
346339
double cutvalue = -10;
347340

348341
float vars[6] = {secR, sTIP, nHITS1, Epout, detaBremKF, ptRatioGsfKF};
349-
if (refGsf->pt() < 20 && fabs(refGsf->eta()) < 1.479) {
342+
if (refGsfPt < 20 && std::abs(refGsfEta) < 1.479) {
350343
mvaValue = cache->gbrBarrelLowPt_->GetClassifier(vars);
351344
cutvalue = mvaBremConvCutBarrelLowPt_;
352345
}
353-
if (refGsf->pt() > 20 && fabs(refGsf->eta()) < 1.479) {
346+
if (refGsfPt > 20 && std::abs(refGsfEta) < 1.479) {
354347
mvaValue = cache->gbrBarrelHighPt_->GetClassifier(vars);
355348
cutvalue = mvaBremConvCutBarrelHighPt_;
356349
}
357-
if (refGsf->pt() < 20 && fabs(refGsf->eta()) > 1.479) {
350+
if (refGsfPt < 20 && std::abs(refGsfEta) > 1.479) {
358351
mvaValue = cache->gbrEndcapsLowPt_->GetClassifier(vars);
359352
cutvalue = mvaBremConvCutEndcapsLowPt_;
360353
}
361-
if (refGsf->pt() > 20 && fabs(refGsf->eta()) > 1.479) {
354+
if (refGsfPt > 20 && std::abs(refGsfEta) > 1.479) {
362355
mvaValue = cache->gbrEndcapsHighPt_->GetClassifier(vars);
363356
cutvalue = mvaBremConvCutEndcapsHighPt_;
364357
}
365358

366-
if (debug)
367-
cout << "Gsf track Pt, Eta " << refGsf->pt() << " " << refGsf->eta() << endl;
368-
if (debug)
369-
cout << "Cutvalue " << cutvalue << endl;
359+
LogDebug("ConvBremPFTrackFinder") << "Gsf track Pt, Eta " << refGsfPt << " " << refGsfEta;
360+
LogDebug("ConvBremPFTrackFinder") << "Cutvalue " << cutvalue;
370361

371362
if ((kfhitcounter - nHITS1) <= 3 && nHITS1 > 3)
372363
mvaValue = 2; // this means duplicates tracks, very likely not physical
373364

374-
if (debug)
375-
cout << " The input variables for conv brem tracks identification " << endl
376-
<< " secR " << secR << " gsfR " << gsfR << endl
377-
<< " N shared hits " << nHITS1 << endl
378-
<< " sTIP " << sTIP << endl
379-
<< " detaBremKF " << detaBremKF << endl
380-
<< " E/pout " << Epout << endl
381-
<< " ptRatioKFGsf " << ptRatioGsfKF << endl
382-
<< " ***** MVA ***** " << mvaValue << endl;
365+
LogDebug("ConvBremPFTrackFinder")
366+
<< " The input variables for conv brem tracks identification "
367+
<< " secR " << secR << " gsfR " << gsfR << " N shared hits " << nHITS1 << " sTIP " << sTIP
368+
<< " detaBremKF " << detaBremKF << " E/pout " << Epout << " ptRatioKFGsf " << ptRatioGsfKF
369+
<< " ***** MVA ***** " << mvaValue;
383370

384371
if (mvaValue > cutvalue) {
385372
found_ = true;

0 commit comments

Comments
 (0)