CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
ConvBremPFTrackFinder Class Reference

#include <ConvBremPFTrackFinder.h>

Public Member Functions

 ConvBremPFTrackFinder (const TransientTrackBuilder &builder, double mvaBremConvCutBarrelLowPt, double mvaBremConvCutBarrelHighPt, double mvaBremConvCutEndcapsLowPt, double mvaBremConvCutEndcapsHighPt)
 
bool foundConvBremPFRecTrack (const edm::Handle< reco::PFRecTrackCollection > &thePfRecTrackCol, const edm::Handle< reco::VertexCollection > &primaryVertex, const edm::Handle< reco::PFDisplacedTrackerVertexCollection > &pfNuclears, const edm::Handle< reco::PFConversionCollection > &pfConversions, const edm::Handle< reco::PFV0Collection > &pfV0, const convbremhelpers::HeavyObjectCache *cache, bool useNuclear, bool useConversions, bool useV0, const reco::PFClusterCollection &theEClus, const reco::GsfPFRecTrack &gsfpfrectk)
 
const std::vector< reco::PFRecTrackRef > & getConvBremPFRecTracks ()
 
 ~ConvBremPFTrackFinder ()
 

Private Member Functions

void runConvBremFinder (const edm::Handle< reco::PFRecTrackCollection > &thePfRecTrackCol, const edm::Handle< reco::VertexCollection > &primaryVertex, const edm::Handle< reco::PFDisplacedTrackerVertexCollection > &pfNuclears, const edm::Handle< reco::PFConversionCollection > &pfConversions, const edm::Handle< reco::PFV0Collection > &pfV0, const convbremhelpers::HeavyObjectCache *cache, bool useNuclear, bool useConversions, bool useV0, const reco::PFClusterCollection &theEClus, const reco::GsfPFRecTrack &gsfpfrectk)
 

Private Attributes

TransientTrackBuilder builder_
 
float detaBremKF
 
float Epout
 
bool found_
 
double mvaBremConvCutBarrelHighPt_
 
double mvaBremConvCutBarrelLowPt_
 
double mvaBremConvCutEndcapsHighPt_
 
double mvaBremConvCutEndcapsLowPt_
 
float nHITS1
 
std::vector< reco::PFRecTrackRefpfRecTrRef_vec_
 
float ptRatioGsfKF
 
float secPin
 
float secPout
 
float secR
 
float sTIP
 

Detailed Description

Definition at line 35 of file ConvBremPFTrackFinder.h.

Constructor & Destructor Documentation

ConvBremPFTrackFinder::ConvBremPFTrackFinder ( const TransientTrackBuilder builder,
double  mvaBremConvCutBarrelLowPt,
double  mvaBremConvCutBarrelHighPt,
double  mvaBremConvCutEndcapsLowPt,
double  mvaBremConvCutEndcapsHighPt 
)

Definition at line 21 of file ConvBremPFTrackFinder.cc.

26  : builder_(builder),
27  mvaBremConvCutBarrelLowPt_(mvaBremConvCutBarrelLowPt),
28  mvaBremConvCutBarrelHighPt_(mvaBremConvCutBarrelHighPt),
29  mvaBremConvCutEndcapsLowPt_(mvaBremConvCutEndcapsLowPt),
30  mvaBremConvCutEndcapsHighPt_(mvaBremConvCutEndcapsHighPt) {}
TransientTrackBuilder builder_
ConvBremPFTrackFinder::~ConvBremPFTrackFinder ( )

Definition at line 31 of file ConvBremPFTrackFinder.cc.

31 {}

Member Function Documentation

bool ConvBremPFTrackFinder::foundConvBremPFRecTrack ( const edm::Handle< reco::PFRecTrackCollection > &  thePfRecTrackCol,
const edm::Handle< reco::VertexCollection > &  primaryVertex,
const edm::Handle< reco::PFDisplacedTrackerVertexCollection > &  pfNuclears,
const edm::Handle< reco::PFConversionCollection > &  pfConversions,
const edm::Handle< reco::PFV0Collection > &  pfV0,
const convbremhelpers::HeavyObjectCache cache,
bool  useNuclear,
bool  useConversions,
bool  useV0,
const reco::PFClusterCollection theEClus,
const reco::GsfPFRecTrack gsfpfrectk 
)
inline

Definition at line 44 of file ConvBremPFTrackFinder.h.

References found_, and runConvBremFinder().

54  {
55  found_ = false;
56  runConvBremFinder(thePfRecTrackCol,
57  primaryVertex,
58  pfNuclears,
59  pfConversions,
60  pfV0,
61  cache,
62  useNuclear,
64  useV0,
65  theEClus,
66  gsfpfrectk);
67  return found_;
68  };
void runConvBremFinder(const edm::Handle< reco::PFRecTrackCollection > &thePfRecTrackCol, const edm::Handle< reco::VertexCollection > &primaryVertex, const edm::Handle< reco::PFDisplacedTrackerVertexCollection > &pfNuclears, const edm::Handle< reco::PFConversionCollection > &pfConversions, const edm::Handle< reco::PFV0Collection > &pfV0, const convbremhelpers::HeavyObjectCache *cache, bool useNuclear, bool useConversions, bool useV0, const reco::PFClusterCollection &theEClus, const reco::GsfPFRecTrack &gsfpfrectk)
const std::vector<reco::PFRecTrackRef>& ConvBremPFTrackFinder::getConvBremPFRecTracks ( )
inline
void ConvBremPFTrackFinder::runConvBremFinder ( const edm::Handle< reco::PFRecTrackCollection > &  thePfRecTrackCol,
const edm::Handle< reco::VertexCollection > &  primaryVertex,
const edm::Handle< reco::PFDisplacedTrackerVertexCollection > &  pfNuclears,
const edm::Handle< reco::PFConversionCollection > &  pfConversions,
const edm::Handle< reco::PFV0Collection > &  pfV0,
const convbremhelpers::HeavyObjectCache cache,
bool  useNuclear,
bool  useConversions,
bool  useV0,
const reco::PFClusterCollection theEClus,
const reco::GsfPFRecTrack gsfpfrectk 
)
private

Definition at line 33 of file ConvBremPFTrackFinder.cc.

References TrackingRecHit::all, HLT_2018_cff::applyCrackCorrections, TransientTrackBuilder::build(), builder_, reco::PFTrack::calculatePositionREP(), reco::PFCluster::calculatePositionREP(), gather_cfg::cout, debug, detaBremKF, MillePedeFileConverter_cfg::e, reco::PFTrajectoryPoint::ECALEntrance, reco::PFTrajectoryPoint::ECALShowerMax, Epout, PVValHelper::eta, reco::PFTrack::extrapolatedPoint(), found_, convbremhelpers::HeavyObjectCache::gbrBarrelHighPt_, convbremhelpers::HeavyObjectCache::gbrBarrelLowPt_, convbremhelpers::HeavyObjectCache::gbrEndcapsHighPt_, convbremhelpers::HeavyObjectCache::gbrEndcapsLowPt_, reco::GsfPFRecTrack::gsfTrackRef(), mps_fire::i, edm::Ref< C, T, F >::isNonnull(), reco::PFTrajectoryPoint::isValid(), reco::GsfPFRecTrack::kfPFRecTrackRef(), reco::PFTrajectoryPoint::momentum(), mvaBremConvCutBarrelHighPt_, mvaBremConvCutBarrelLowPt_, mvaBremConvCutEndcapsHighPt_, mvaBremConvCutEndcapsLowPt_, nHITS1, notFound, AlCaHLTBitMon_ParallelJobs::p, convbremhelpers::HeavyObjectCache::pfcalib_, reco::GsfPFRecTrack::PFRecBrem(), pfRecTrRef_vec_, phi, Pi, BeamMonitor_cff::primaryVertex, edm::Handle< T >::product(), ptRatioGsfKF, MetAnalyzer::pv(), secPin, secPout, secR, IPTools::signedTransverseImpactParameter(), findQualityFiles::size, mathSSE::sqrt(), sTIP, LinkByRecHit::testTrackAndClusterByRecHit(), TwoPi, and HltBtagValidation_cff::Vertex.

Referenced by foundConvBremPFRecTrack(), and getConvBremPFRecTracks().

43  {
44  found_ = false;
45  bool debug = false;
46  bool debugRef = false;
47 
48  if (debug)
49  cout << "runConvBremFinder:: Entering " << endl;
50 
51  const reco::GsfTrackRef& refGsf = gsfpfrectk.gsfTrackRef();
52  const reco::PFRecTrackRef& pfTrackRef = gsfpfrectk.kfPFRecTrackRef();
53  vector<PFBrem> primPFBrem = gsfpfrectk.PFRecBrem();
54 
55  const PFRecTrackCollection& PfRTkColl = *(thePfRecTrackCol.product());
56  reco::PFRecTrackCollection::const_iterator pft = PfRTkColl.begin();
57  reco::PFRecTrackCollection::const_iterator pftend = PfRTkColl.end();
58  //PFEnergyCalibration pfcalib_;
59 
60  vector<PFRecTrackRef> AllPFRecTracks;
61  AllPFRecTracks.clear();
62  unsigned int ipft = 0;
63 
64  for (; pft != pftend; ++pft, ipft++) {
65  // do not consider the kf track already associated to the seed
66  if (pfTrackRef.isNonnull())
67  if (pfTrackRef->trackRef() == pft->trackRef())
68  continue;
69 
70  PFRecTrackRef pfRecTrRef(thePfRecTrackCol, ipft);
71  TrackRef trackRef = pfRecTrRef->trackRef();
72  reco::TrackBaseRef selTrackBaseRef(trackRef);
73 
74  if (debug)
75  cout << "runConvBremFinder:: pushing_back High Purity " << pft->trackRef()->pt() << " eta,phi "
76  << pft->trackRef()->eta() << ", " << pft->trackRef()->phi() << " Memory Address Ref " << &*trackRef
77  << " Memory Address BaseRef " << &*selTrackBaseRef << endl;
78  AllPFRecTracks.push_back(pfRecTrRef);
79  }
80 
81  if (useConversions) {
82  const PFConversionCollection& PfConvColl = *(pfConversions.product());
83  for (unsigned i = 0; i < PfConvColl.size(); i++) {
84  reco::PFConversionRef convRef(pfConversions, i);
85 
86  unsigned int trackSize = (convRef->pfTracks()).size();
87  if (convRef->pfTracks().size() < 2)
88  continue;
89  for (unsigned iTk = 0; iTk < trackSize; iTk++) {
90  PFRecTrackRef compPFTkRef = convRef->pfTracks()[iTk];
91  reco::TrackBaseRef newTrackBaseRef(compPFTkRef->trackRef());
92  // do not consider the kf track already associated to the seed
93  if (pfTrackRef.isNonnull()) {
94  reco::TrackBaseRef primaryTrackBaseRef(pfTrackRef->trackRef());
95  if (primaryTrackBaseRef == newTrackBaseRef)
96  continue;
97  }
98  bool notFound = true;
99  for (unsigned iPF = 0; iPF < AllPFRecTracks.size(); iPF++) {
100  reco::TrackBaseRef selTrackBaseRef(AllPFRecTracks[iPF]->trackRef());
101 
102  if (debugRef)
103  cout << "## Track 1 HP pt " << AllPFRecTracks[iPF]->trackRef()->pt() << " eta, phi "
104  << AllPFRecTracks[iPF]->trackRef()->eta() << ", " << AllPFRecTracks[iPF]->trackRef()->phi()
105  << " Memory Address Ref " << &(*AllPFRecTracks[iPF]->trackRef()) << " Memory Address BaseRef "
106  << &*selTrackBaseRef << endl;
107  if (debugRef)
108  cout << "** Track 2 CONV pt " << compPFTkRef->trackRef()->pt() << " eta, phi "
109  << compPFTkRef->trackRef()->eta() << ", " << compPFTkRef->trackRef()->phi() << " Memory Address Ref "
110  << &*compPFTkRef->trackRef() << " Memory Address BaseRef " << &*newTrackBaseRef << endl;
111  //if(selTrackBaseRef == newTrackBaseRef || AllPFRecTracks[iPF]->trackRef()== compPFTkRef->trackRef()) {
112  if (AllPFRecTracks[iPF]->trackRef() == compPFTkRef->trackRef()) {
113  if (debugRef)
114  cout << " SAME BREM REF " << endl;
115  notFound = false;
116  }
117  }
118  if (notFound) {
119  if (debug)
120  cout << "runConvBremFinder:: pushing_back Conversions " << compPFTkRef->trackRef()->pt() << " eta,phi "
121  << compPFTkRef->trackRef()->eta() << " phi " << compPFTkRef->trackRef()->phi() << endl;
122  AllPFRecTracks.push_back(compPFTkRef);
123  }
124  }
125  }
126  }
127 
128  if (useNuclear) {
129  const PFDisplacedTrackerVertexCollection& PfNuclColl = *(pfNuclears.product());
130  for (unsigned i = 0; i < PfNuclColl.size(); i++) {
131  const reco::PFDisplacedTrackerVertexRef dispacedVertexRef(pfNuclears, i);
132  unsigned int trackSize = dispacedVertexRef->pfRecTracks().size();
133  for (unsigned iTk = 0; iTk < trackSize; iTk++) {
134  reco::PFRecTrackRef newPFRecTrackRef = dispacedVertexRef->pfRecTracks()[iTk];
135  reco::TrackBaseRef newTrackBaseRef(newPFRecTrackRef->trackRef());
136  // do not consider the kf track already associated to the seed
137  if (pfTrackRef.isNonnull()) {
138  reco::TrackBaseRef primaryTrackBaseRef(pfTrackRef->trackRef());
139  if (primaryTrackBaseRef == newTrackBaseRef)
140  continue;
141  }
142  bool notFound = true;
143  for (unsigned iPF = 0; iPF < AllPFRecTracks.size(); iPF++) {
144  reco::TrackBaseRef selTrackBaseRef(AllPFRecTracks[iPF]->trackRef());
145  if (selTrackBaseRef == newTrackBaseRef)
146  notFound = false;
147  }
148  if (notFound) {
149  if (debug)
150  cout << "runConvBremFinder:: pushing_back displaced Vertex pt " << newPFRecTrackRef->trackRef()->pt()
151  << " eta,phi " << newPFRecTrackRef->trackRef()->eta() << ", " << newPFRecTrackRef->trackRef()->phi()
152  << endl;
153  AllPFRecTracks.push_back(newPFRecTrackRef);
154  }
155  }
156  }
157  }
158 
159  if (useV0) {
160  const PFV0Collection& PfV0Coll = *(pfV0.product());
161  for (unsigned i = 0; i < PfV0Coll.size(); i++) {
162  reco::PFV0Ref v0Ref(pfV0, i);
163  unsigned int trackSize = (v0Ref->pfTracks()).size();
164  for (unsigned iTk = 0; iTk < trackSize; iTk++) {
165  reco::PFRecTrackRef newPFRecTrackRef = (v0Ref->pfTracks())[iTk];
166  reco::TrackBaseRef newTrackBaseRef(newPFRecTrackRef->trackRef());
167  // do not consider the kf track already associated to the seed
168  if (pfTrackRef.isNonnull()) {
169  reco::TrackBaseRef primaryTrackBaseRef(pfTrackRef->trackRef());
170  if (primaryTrackBaseRef == newTrackBaseRef)
171  continue;
172  }
173  bool notFound = true;
174  for (unsigned iPF = 0; iPF < AllPFRecTracks.size(); iPF++) {
175  reco::TrackBaseRef selTrackBaseRef(AllPFRecTracks[iPF]->trackRef());
176  if (selTrackBaseRef == newTrackBaseRef)
177  notFound = false;
178  }
179  if (notFound) {
180  if (debug)
181  cout << "runConvBremFinder:: pushing_back V0 " << newPFRecTrackRef->trackRef()->pt() << " eta,phi "
182  << newPFRecTrackRef->trackRef()->eta() << ", " << newPFRecTrackRef->trackRef()->phi() << endl;
183  AllPFRecTracks.push_back(newPFRecTrackRef);
184  }
185  }
186  }
187  }
188 
189  pfRecTrRef_vec_.clear();
190 
191  for (unsigned iPF = 0; iPF < AllPFRecTracks.size(); iPF++) {
192  double dphi = fabs(AllPFRecTracks[iPF]->trackRef()->phi() - refGsf->phi());
193  if (dphi > TMath::Pi())
194  dphi -= TMath::TwoPi();
195  double deta = fabs(AllPFRecTracks[iPF]->trackRef()->eta() - refGsf->eta());
196 
197  // limiting the phase space (just for saving cpu-time)
198  if (fabs(dphi) > 1.0 || fabs(deta) > 0.4)
199  continue;
200 
201  double minDEtaBremKF = 1000.;
202  double minDPhiBremKF = 1000.;
203  double minDRBremKF = 1000.;
204  double minDEtaBremKFPos = 1000.;
205  double minDPhiBremKFPos = 1000.;
206  double minDRBremKFPos = 1000.;
207  reco::TrackRef trkRef = AllPFRecTracks[iPF]->trackRef();
208 
209  double secEta = trkRef->innerMomentum().eta();
210  double secPhi = trkRef->innerMomentum().phi();
211 
212  for (unsigned ipbrem = 0; ipbrem < primPFBrem.size(); ipbrem++) {
213  if (primPFBrem[ipbrem].indTrajPoint() == 99)
214  continue;
215  const reco::PFTrajectoryPoint& atPrimECAL =
216  primPFBrem[ipbrem].extrapolatedPoint(reco::PFTrajectoryPoint::ECALEntrance);
217  if (!atPrimECAL.isValid())
218  continue;
219  double bremEta = atPrimECAL.momentum().Eta();
220  double bremPhi = atPrimECAL.momentum().Phi();
221 
222  double deta = fabs(bremEta - secEta);
223  double dphi = fabs(bremPhi - secPhi);
224  if (dphi > TMath::Pi())
225  dphi -= TMath::TwoPi();
226  double DR = sqrt(deta * deta + dphi * dphi);
227 
228  double detaPos = fabs(bremEta - trkRef->innerPosition().eta());
229  double dphiPos = fabs(bremPhi - trkRef->innerPosition().phi());
230  if (dphiPos > TMath::Pi())
231  dphiPos -= TMath::TwoPi();
232  double DRPos = sqrt(detaPos * detaPos + dphiPos * dphiPos);
233 
234  // find the closest track tangent
235  if (DR < minDRBremKF) {
236  minDRBremKF = DR;
237  minDEtaBremKF = deta;
238  minDPhiBremKF = fabs(dphi);
239  }
240 
241  if (DRPos < minDRBremKFPos) {
242  minDRBremKFPos = DR;
243  minDEtaBremKFPos = detaPos;
244  minDPhiBremKFPos = fabs(dphiPos);
245  }
246  }
247 
248  //gsfR
249  float gsfR = sqrt(refGsf->innerPosition().x() * refGsf->innerPosition().x() +
250  refGsf->innerPosition().y() * refGsf->innerPosition().y());
251 
252  // secR
253  secR = sqrt(trkRef->innerPosition().x() * trkRef->innerPosition().x() +
254  trkRef->innerPosition().y() * trkRef->innerPosition().y());
255 
256  // apply loose selection (to be parallel) between the secondary track and brem-tangents.
257  // Moreover if the secR is internal with respect to the GSF track by two pixel layers discard it.
258  if ((minDPhiBremKF < 0.1 || minDPhiBremKFPos < 0.1) && (minDEtaBremKF < 0.02 || minDEtaBremKFPos < 0.02) &&
259  secR > (gsfR - 8)) {
260  if (debug)
261  cout << "runConvBremFinder:: OK Find track and BREM close "
262  << " MinDphi " << minDPhiBremKF << " MinDeta " << minDEtaBremKF << endl;
263 
264  float MinDist = 100000.;
265  float EE_calib = 0.;
266  PFRecTrack pfrectrack = *AllPFRecTracks[iPF];
267  pfrectrack.calculatePositionREP();
268  // Find and ECAL associated cluster
269  for (PFClusterCollection::const_iterator clus = theEClus.begin(); clus != theEClus.end(); clus++) {
270  // Removed unusd variable, left this in case it has side effects
271  clus->position();
272  double dist = -1.;
273  PFCluster clust = *clus;
274  clust.calculatePositionREP();
276  ? LinkByRecHit::testTrackAndClusterByRecHit(pfrectrack, clust)
277  : -1.;
278 
279  if (dist > 0.) {
280  bool applyCrackCorrections = false;
281  vector<double> ps1Ene(0);
282  vector<double> ps2Ene(0);
283  double ps1, ps2;
284  ps1 = ps2 = 0.;
285  if (dist < MinDist) {
286  MinDist = dist;
287  EE_calib = cache->pfcalib_->energyEm(*clus, ps1Ene, ps2Ene, ps1, ps2, applyCrackCorrections);
288  }
289  }
290  }
291  if (MinDist > 0. && MinDist < 100000.) {
292  // compute all the input variables for conv brem selection
293 
294  secPout = sqrt(trkRef->outerMomentum().x() * trkRef->outerMomentum().x() +
295  trkRef->outerMomentum().y() * trkRef->outerMomentum().y() +
296  trkRef->outerMomentum().z() * trkRef->outerMomentum().z());
297 
298  secPin = sqrt(trkRef->innerMomentum().x() * trkRef->innerMomentum().x() +
299  trkRef->innerMomentum().y() * trkRef->innerMomentum().y() +
300  trkRef->innerMomentum().z() * trkRef->innerMomentum().z());
301 
302  // maybe put innter momentum pt?
303  ptRatioGsfKF = trkRef->pt() / (refGsf->ptMode());
304 
305  Vertex dummy;
306  const Vertex* pv = &dummy;
308  if (!primaryVertex->empty()) {
309  pv = &*primaryVertex->begin();
310  // we always use the first vertex (at the moment)
312  } else { // create a dummy PV
314  e(0, 0) = 0.0015 * 0.0015;
315  e(1, 1) = 0.0015 * 0.0015;
316  e(2, 2) = 15. * 15.;
317  Vertex::Point p(0, 0, 0);
318  dummy = Vertex(p, e, 0, 0, 0);
319  }
320 
321  // direction of the Gsf track
322  GlobalVector direction(refGsf->innerMomentum().x(), refGsf->innerMomentum().y(), refGsf->innerMomentum().z());
323 
324  TransientTrack transientTrack = builder_.build(*trkRef);
325  sTIP = IPTools::signedTransverseImpactParameter(transientTrack, direction, *pv).second.significance();
326 
327  Epout = EE_calib / secPout;
328 
329  // eta distance brem-secondary kf track
330  detaBremKF = minDEtaBremKF;
331 
332  // Number of commont hits
333  unsigned int tmpSh = 0;
334  //uint ish=0;
335  int kfhitcounter = 0;
336  for (auto const& nhit : refGsf->recHits())
337  if (nhit->isValid()) {
338  kfhitcounter = 0;
339  for (auto const& ihit : trkRef->recHits())
340  if (ihit->isValid()) {
341  // method 1
342  if (nhit->sharesInput(ihit, TrackingRecHit::all))
343  tmpSh++;
344  kfhitcounter++;
345  // method 2 to switch in case of problem with rechit collections
346  // if((ihit->geographicalId()==nhit->geographicalId())&&
347  // ((nhit->localPosition()-ihit->localPosition()).mag()<0.01)) ish++;
348  }
349  }
350 
351  nHITS1 = tmpSh;
352 
353  TString weightfilepath = "";
354  double mvaValue = -10;
355  double cutvalue = -10;
356 
357  float vars[6] = {secR, sTIP, nHITS1, Epout, detaBremKF, ptRatioGsfKF};
358  if (refGsf->pt() < 20 && fabs(refGsf->eta()) < 1.479) {
359  mvaValue = cache->gbrBarrelLowPt_->GetClassifier(vars);
360  cutvalue = mvaBremConvCutBarrelLowPt_;
361  }
362  if (refGsf->pt() > 20 && fabs(refGsf->eta()) < 1.479) {
363  mvaValue = cache->gbrBarrelHighPt_->GetClassifier(vars);
364  cutvalue = mvaBremConvCutBarrelHighPt_;
365  }
366  if (refGsf->pt() < 20 && fabs(refGsf->eta()) > 1.479) {
367  mvaValue = cache->gbrEndcapsLowPt_->GetClassifier(vars);
368  cutvalue = mvaBremConvCutEndcapsLowPt_;
369  }
370  if (refGsf->pt() > 20 && fabs(refGsf->eta()) > 1.479) {
371  mvaValue = cache->gbrEndcapsHighPt_->GetClassifier(vars);
372  cutvalue = mvaBremConvCutEndcapsHighPt_;
373  }
374 
375  if (debug)
376  cout << "Gsf track Pt, Eta " << refGsf->pt() << " " << refGsf->eta() << endl;
377  if (debug)
378  cout << "Cutvalue " << cutvalue << endl;
379 
380  if ((kfhitcounter - nHITS1) <= 3 && nHITS1 > 3)
381  mvaValue = 2; // this means duplicates tracks, very likely not physical
382 
383  if (debug)
384  cout << " The input variables for conv brem tracks identification " << endl
385  << " secR " << secR << " gsfR " << gsfR << endl
386  << " N shared hits " << nHITS1 << endl
387  << " sTIP " << sTIP << endl
388  << " detaBremKF " << detaBremKF << endl
389  << " E/pout " << Epout << endl
390  << " ptRatioKFGsf " << ptRatioGsfKF << endl
391  << " ***** MVA ***** " << mvaValue << endl;
392 
393  if (mvaValue > cutvalue) {
394  found_ = true;
395  pfRecTrRef_vec_.push_back(AllPFRecTracks[iPF]);
396  }
397  } // end MinDIST
398  } // end selection kf - brem tangents
399  } // loop on the kf tracks
400 }
size
Write out results.
const double TwoPi
const double Pi
reconstructed track used as an input to particle flow
Definition: PFRecTrack.h:22
std::unique_ptr< const GBRForest > gbrEndcapsHighPt_
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
Definition: PFCluster.h:46
std::unique_ptr< const GBRForest > gbrEndcapsLowPt_
std::pair< bool, Measurement1D > signedTransverseImpactParameter(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:57
std::unique_ptr< const GBRForest > gbrBarrelLowPt_
reco::TransientTrack build(const reco::Track *p) const
const std::vector< reco::PFBrem > & PFRecBrem() const
Definition: GsfPFRecTrack.h:45
math::Error< dimension >::type Error
covariance error matrix (3x3)
Definition: Vertex.h:43
std::vector< PFConversion > PFConversionCollection
collection of PFConversion objects
void calculatePositionREP()
computes posrep_ once and for all
Definition: PFCluster.h:99
const reco::GsfTrackRef & gsfTrackRef() const
Definition: GsfPFRecTrack.h:34
T sqrt(T t)
Definition: SSEVec.h:19
TransientTrackBuilder builder_
def pv(vc)
Definition: MetAnalyzer.py:7
std::vector< reco::PFRecTrackRef > pfRecTrRef_vec_
math::XYZPoint Point
point in the space
Definition: Vertex.h:39
const reco::PFTrajectoryPoint & extrapolatedPoint(unsigned layerid) const
Definition: PFTrack.cc:58
std::vector< PFV0 > PFV0Collection
collection of PFV0 objects
Definition: PFV0Fwd.h:9
const math::XYZTLorentzVector & momentum() const
4-momenta quadrivector
#define debug
Definition: HDRShower.cc:19
bool isValid() const
is this point valid ?
const edm::Ref< std::vector< PFRecTrack > > & kfPFRecTrackRef() const
Definition: GsfPFRecTrack.h:37
T const * product() const
Definition: Handle.h:69
void calculatePositionREP()
Definition: PFTrack.cc:52
static const GlobalPoint notFound(0, 0, 0)
std::unique_ptr< const PFEnergyCalibration > pfcalib_
A PFTrack holds several trajectory points, which basically contain the position and momentum of a tra...
vars
Definition: DeepTauId.cc:158
primaryVertex
hltOfflineBeamSpot for HLTMON
static double testTrackAndClusterByRecHit(const reco::PFRecTrack &track, const reco::PFCluster &cluster, bool isBrem=false, bool debug=false)
Definition: LinkByRecHit.cc:16
std::vector< PFRecTrack > PFRecTrackCollection
collection of PFRecTrack objects
Definition: PFRecTrackFwd.h:9
std::vector< PFDisplacedTrackerVertex > PFDisplacedTrackerVertexCollection
collection of DisplacedTrackerVertexs
std::unique_ptr< const GBRForest > gbrBarrelHighPt_

Member Data Documentation

TransientTrackBuilder ConvBremPFTrackFinder::builder_
private

Definition at line 86 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

float ConvBremPFTrackFinder::detaBremKF
private

Definition at line 91 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

float ConvBremPFTrackFinder::Epout
private

Definition at line 91 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

bool ConvBremPFTrackFinder::found_
private

Definition at line 85 of file ConvBremPFTrackFinder.h.

Referenced by foundConvBremPFRecTrack(), and runConvBremFinder().

double ConvBremPFTrackFinder::mvaBremConvCutBarrelHighPt_
private

Definition at line 87 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

double ConvBremPFTrackFinder::mvaBremConvCutBarrelLowPt_
private

Definition at line 87 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

double ConvBremPFTrackFinder::mvaBremConvCutEndcapsHighPt_
private

Definition at line 87 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

double ConvBremPFTrackFinder::mvaBremConvCutEndcapsLowPt_
private

Definition at line 87 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

float ConvBremPFTrackFinder::nHITS1
private

Definition at line 93 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

std::vector<reco::PFRecTrackRef> ConvBremPFTrackFinder::pfRecTrRef_vec_
private

Definition at line 90 of file ConvBremPFTrackFinder.h.

Referenced by getConvBremPFRecTracks(), and runConvBremFinder().

float ConvBremPFTrackFinder::ptRatioGsfKF
private

Definition at line 91 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

float ConvBremPFTrackFinder::secPin
private

Definition at line 91 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

float ConvBremPFTrackFinder::secPout
private

Definition at line 91 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

float ConvBremPFTrackFinder::secR
private

Definition at line 91 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().

float ConvBremPFTrackFinder::sTIP
private

Definition at line 91 of file ConvBremPFTrackFinder.h.

Referenced by runConvBremFinder().