CMS 3D CMS Logo

ConvBremSeedProducer.cc
Go to the documentation of this file.
49 
50 #include "TMath.h"
51 
52 #include <memory>
53 
55 public:
56  explicit ConvBremSeedProducer(const edm::ParameterSet&);
57 
58  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
59 
60 private:
61  void beginRun(const edm::Run&, const edm::EventSetup&) override;
62  void produce(edm::Event&, const edm::EventSetup&) override;
63  void endRun(const edm::Run&, const edm::EventSetup&) override;
64  void initializeLayerMap();
65  std::vector<const DetLayer*> theLayerMap;
67  const ParticlePropagator& pp,
68  const MagneticField* field) const;
69  const DetLayer* detLayer(const TrackerLayer& layer, float zpos) const;
70 
71  bool isGsfTrack(const reco::Track&, const TrackingRecHit*);
72 
73  int GoodCluster(const BaseParticlePropagator& bpg,
74  const reco::PFClusterCollection& pfc,
75  float minep,
76  bool sec = false);
77 
78  std::vector<bool> sharedHits(const std::vector<std::pair<TrajectorySeed, std::pair<GlobalVector, float> > >&);
79 
89  std::vector<const DetLayer*> layerMap_;
93 };
94 
97 
99  // convBremSeeds
101  desc.add<edm::InputTag>("pixelRecHits", edm::InputTag("gsPixelRecHits"));
102  desc.add<edm::InputTag>("matchedrecHits", edm::InputTag("gsStripRecHits", "matchedRecHit"));
103  desc.add<std::string>("TTRHBuilder", "WithTrackAngle");
104  desc.add<edm::InputTag>("rphirecHits", edm::InputTag("gsStripRecHits", "rphiRecHit"));
105  desc.add<edm::InputTag>("PFClusters", edm::InputTag("particleFlowClusterECAL"));
106  desc.add<edm::InputTag>("PFRecTrackLabel", edm::InputTag("pfTrackElec"));
107 }
108 
109 using namespace edm;
110 using namespace std;
111 using namespace reco;
112 
114  : conf_(iConfig), fieldMap_(nullptr), layerMap_(56, static_cast<const DetLayer*>(nullptr)), negLayerOffset_(27) {
115  produces<ConvBremSeedCollection>();
116 }
117 
119  LogDebug("ConvBremSeedProducerProducer") << "START event: " << iEvent.id().event() << " in run " << iEvent.id().run();
120 
121  constexpr float pfmass = 0.0005;
122 
124 
127  iEvent.getByLabel(conf_.getParameter<InputTag>("PFClusters"), PfC);
128  const PFClusterCollection& PPP = *(PfC.product());
129 
132  iEvent.getByLabel(conf_.getParameter<InputTag>("pixelRecHits"), pixelHits);
133 
136  iEvent.getByLabel(conf_.getParameter<InputTag>("rphirecHits"), rphirecHits);
138  iEvent.getByLabel(conf_.getParameter<InputTag>("matchedrecHits"), matchedrecHits);
139 
140  //GSFPFRECTRACKS
141  Handle<GsfPFRecTrackCollection> thePfRecTrackCollection;
142  iEvent.getByLabel(conf_.getParameter<InputTag>("PFRecTrackLabel"), thePfRecTrackCollection);
143  const GsfPFRecTrackCollection PfRTkColl = *(thePfRecTrackCollection.product());
144 
146  auto output = std::make_unique<ConvBremSeedCollection>();
147 
149  vector<pair<TrajectorySeed, pair<GlobalVector, float> > > unclean;
150  //TRIPLET OF MODULES TO BE USED FOR SEEDING
151  vector<vector<long int> > tripl;
152  //LAYER MAP
154 
156 
157  for (unsigned int ipft = 0; ipft < PfRTkColl.size(); ipft++) {
158  GsfPFRecTrackRef pft(thePfRecTrackCollection, ipft);
159  LogDebug("ConvBremSeedProducerProducer") << "NEW GsfPFRecTRACK ";
160  float eta_br = 0;
161  unclean.clear();
162  tripl.clear();
163  vector<int> gc;
164  auto const& gsfRecHits = *pft->gsfTrackRef();
165  float pfoutenergy = sqrt((pfmass * pfmass) + pft->gsfTrackRef()->outerMomentum().Mag2());
166  XYZTLorentzVector mom = XYZTLorentzVector(pft->gsfTrackRef()->outerMomentum().x(),
167  pft->gsfTrackRef()->outerMomentum().y(),
168  pft->gsfTrackRef()->outerMomentum().z(),
169  pfoutenergy);
170  XYZTLorentzVector pos = XYZTLorentzVector(pft->gsfTrackRef()->outerPosition().x(),
171  pft->gsfTrackRef()->outerPosition().y(),
172  pft->gsfTrackRef()->outerPosition().z(),
173  0.);
174  BaseParticlePropagator theOutParticle =
175  BaseParticlePropagator(RawParticle(mom, pos, pft->gsfTrackRef()->charge()), 0, 0, B_.z());
176 
178  gc.push_back(GoodCluster(theOutParticle, PPP, 0.5));
179 
180  vector<PFBrem> brem = (*pft).PFRecBrem();
181  vector<PFBrem>::iterator ib = brem.begin();
182  vector<PFBrem>::iterator ib_end = brem.end();
183  LogDebug("ConvBremSeedProducerProducer") << "NUMBER OF BREMS " << brem.size();
184 
186  for (; ib != ib_end; ++ib) {
187  XYZTLorentzVector mom = pft->trajectoryPoint(ib->indTrajPoint()).momentum();
188  XYZTLorentzVector pos = XYZTLorentzVector(pft->trajectoryPoint(ib->indTrajPoint()).position().x(),
189  pft->trajectoryPoint(ib->indTrajPoint()).position().y(),
190  pft->trajectoryPoint(ib->indTrajPoint()).position().z(),
191  0);
192 
194  if (pos.Rho() > 80)
195  continue;
196  if ((pos.Rho() > 5) && (fabs(ib->SigmaDeltaP() / ib->DeltaP()) > 3))
197  continue;
198  if (fabs(ib->DeltaP()) < 3)
199  continue;
200  eta_br = mom.eta();
201  vector<vector<long int> > Idd;
202 
203  BaseParticlePropagator p(RawParticle(mom, pos, 0.), 0, 0, B_.z());
204  gc.push_back(GoodCluster(p, PPP, 0.2));
205 
206  ParticlePropagator PP(p, fieldMap_, nullptr);
207 
209  list<TrackerLayer>::const_iterator cyliter = geometry_->cylinderBegin();
210  for (; cyliter != geometry_->cylinderEnd(); ++cyliter) {
212  if (!(cyliter->sensitive()))
213  continue;
214  PP.setPropagationConditions(*cyliter);
215  PP.propagate();
216  if (PP.getSuccess() == 0)
217  continue;
218 
221  AnalyticalPropagator alongProp(&mf, anyDirection);
223  const DetLayer* tkLayer = detLayer(*cyliter, PP.particle().Z());
224  if (&(*tkLayer) == nullptr)
225  continue;
226  TrajectoryStateOnSurface trajState = makeTrajectoryState(tkLayer, PP, &mf);
227 
228  auto compat = tkLayer->compatibleDets(trajState, alongProp, est);
229  vector<long int> temp;
230  if (compat.empty())
231  continue;
232 
233  for (auto i = compat.begin(); i != compat.end(); i++) {
234  long int detid = i->first->geographicalId().rawId();
235 
237  auto DetMatch = (rphirecHits.product())->find((detid));
238  auto MDetMatch = (matchedrecHits.product())->find((detid));
239 
240  long int DetID = (DetMatch != rphirecHits->end()) ? detid : 0;
241 
242  if ((MDetMatch != matchedrecHits->end()) && !MDetMatch->empty()) {
243  long int pii = MDetMatch->begin()->monoId();
244  auto CDetMatch = (rphirecHits.product())->find((pii));
245  DetID = (CDetMatch != rphirecHits->end()) ? pii : 0;
246  }
247 
248  temp.push_back(DetID);
249 
250  } else {
251  auto DetMatch = (pixelHits.product())->find((detid));
252  long int DetID = (DetMatch != pixelHits->end()) ? detid : 0;
253  temp.push_back(DetID);
254  }
255  }
256 
257  Idd.push_back(temp);
258 
259  } //END TRACKER LAYER LOOP
260  if (Idd.size() < 2)
261  continue;
262 
264  for (unsigned int i = 0; i < Idd.size() - 2; i++) {
265  for (unsigned int i1 = 0; i1 < Idd[i].size(); i1++) {
266  for (unsigned int i2 = 0; i2 < Idd[i + 1].size(); i2++) {
267  for (unsigned int i3 = 0; i3 < Idd[i + 2].size(); i3++) {
268  if ((Idd[i][i1] != 0) && (Idd[i + 1][i2] != 0) && (Idd[i + 2][i3] != 0)) {
269  vector<long int> tmp;
270  tmp.push_back(Idd[i][i1]);
271  tmp.push_back(Idd[i + 1][i2]);
272  tmp.push_back(Idd[i + 2][i3]);
273 
274  bool newTrip = true;
275  for (unsigned int iv = 0; iv < tripl.size(); iv++) {
276  if ((tripl[iv][0] == tmp[0]) && (tripl[iv][1] == tmp[1]) && (tripl[iv][2] == tmp[2]))
277  newTrip = false;
278  }
279  if (newTrip) {
280  tripl.push_back(tmp);
281  }
282  }
283  }
284  }
285  }
286  }
287  } //END BREM LOOP
288 
289  float sineta_brem = sinh(eta_br);
290 
291  //OUTPUT COLLECTION
293  iSetup.get<IdealMagneticFieldRecord>().get(bfield);
294  float nomField = bfield->nominalValue();
295 
297  OwnVector<TrackingRecHit> loc_hits;
298  for (unsigned int i = 0; i < tripl.size(); i++) {
299  auto DetMatch1 = (rphirecHits.product())->find(tripl[i][0]);
300  auto DetMatch2 = (rphirecHits.product())->find(tripl[i][1]);
301  auto DetMatch3 = (rphirecHits.product())->find(tripl[i][2]);
302  if ((DetMatch1 == rphirecHits->end()) || (DetMatch2 == rphirecHits->end()) || (DetMatch3 == rphirecHits->end()))
303  continue;
304  auto DetSet1 = *DetMatch1;
305  auto DetSet2 = *DetMatch2;
306  auto DetSet3 = *DetMatch3;
307 
308  for (auto it1 = DetSet1.begin(); it1 != DetSet1.end(); ++it1) {
309  GlobalPoint gp1 = tracker_->idToDet(tripl[i][0])->surface().toGlobal(it1->localPosition());
310 
311  bool tak1 = isGsfTrack(gsfRecHits, &(*it1));
312 
313  for (auto it2 = DetSet2.begin(); it2 != DetSet2.end(); ++it2) {
314  GlobalPoint gp2 = tracker_->idToDet(tripl[i][1])->surface().toGlobal(it2->localPosition());
315  bool tak2 = isGsfTrack(gsfRecHits, &(*it2));
316 
317  for (auto it3 = DetSet3.begin(); it3 != DetSet3.end(); ++it3) {
318  // ips++;
319  GlobalPoint gp3 = tracker_->idToDet(tripl[i][2])->surface().toGlobal(it3->localPosition());
320  bool tak3 = isGsfTrack(gsfRecHits, &(*it3));
321 
322  FastHelix helix(gp3, gp2, gp1, nomField, &*bfield);
323  GlobalVector gv = helix.stateAtVertex().momentum();
324  GlobalVector gv_corr(gv.x(), gv.y(), gv.perp() * sineta_brem);
325  float ene = sqrt(gv_corr.mag2() + (pfmass * pfmass));
326 
327  GlobalPoint gp = helix.stateAtVertex().position();
328  float ch = helix.stateAtVertex().charge();
329 
330  XYZTLorentzVector mom = XYZTLorentzVector(gv.x(), gv.y(), gv_corr.z(), ene);
331  XYZTLorentzVector pos = XYZTLorentzVector(gp.x(), gp.y(), gp.z(), 0.);
332  BaseParticlePropagator theOutParticle(RawParticle(mom, pos, ch), 0, 0, B_.z());
333  int bgc = GoodCluster(theOutParticle, PPP, 0.3, true);
334 
335  if (gv.perp() < 0.5)
336  continue;
337 
338  if (tak1 + tak2 + tak3 > 2)
339  continue;
340 
341  if (bgc == -1)
342  continue;
343  bool clTak = false;
344  for (unsigned int igcc = 0; igcc < gc.size(); igcc++) {
345  if (clTak)
346  continue;
347  if (bgc == gc[igcc])
348  clTak = true;
349  }
350  if (clTak)
351  continue;
352 
353  GlobalTrajectoryParameters Gtp(gp1, gv, int(ch), &(*magfield_));
354  glob_hits.clear();
355  loc_hits.clear();
356  glob_hits.push_back(hitBuilder_->build(it1->clone()));
357  glob_hits.push_back(hitBuilder_->build(it2->clone()));
358  glob_hits.push_back(hitBuilder_->build(it3->clone()));
359 
361 
363  TrajectoryStateOnSurface updatedState;
364 
365  for (int ih = 0; ih < 3; ih++) {
367  (ih == 0) ? propagator_->propagate(CSeed, tracker_->idToDet(tripl[i][ih])->surface())
368  : propagator_->propagate(updatedState, tracker_->idToDet(tripl[i][ih])->surface());
369 
370  if (!state.isValid()) {
371  ih = 3;
372  continue;
373  }
374 
375  updatedState = kfUpdator_->update(state, *glob_hits[ih]);
376  loc_hits.push_back(glob_hits[ih]->hit()->clone());
377  if (ih == 2) {
378  PTrajectoryStateOnDet const& PTraj =
379  trajectoryStateTransform::persistentState(updatedState, tripl[i][2]);
380  // output->push_back(Trajectoryseed(PTraj,loc_hits,alongMomentum));
381  unclean.push_back(make_pair(TrajectorySeed(PTraj, loc_hits, alongMomentum), make_pair(gv_corr, ch)));
382  }
383  // }
384  }
385  }
386  }
387  }
388  }
389  vector<bool> inPhot = sharedHits(unclean);
390  for (unsigned int iu = 0; iu < unclean.size(); iu++) {
391  if (inPhot[iu])
392  output->push_back(ConvBremSeed(unclean[iu].first, pft));
393  }
394 
395  } //END GSF TRACK COLLECTION LOOP
396  LogDebug("ConvBremSeedProducerProducer") << "END";
397  iEvent.put(std::move(output));
398 }
399 
403  geomSearchTracker_ = track.product();
404 
405  ESHandle<TrackerInteractionGeometry> theTrackerInteractionGeometry;
406  iSetup.get<TrackerInteractionGeometryRecord>().get(theTrackerInteractionGeometry);
407  geometry_ = theTrackerInteractionGeometry.product();
408 
411  tracker_ = tracker.product();
412 
415  magfield_ = magfield.product();
416  B_ = magfield_->inTesla(GlobalPoint(0, 0, 0));
417 
419  iSetup.get<MagneticFieldMapRecord>().get(fieldMap);
420  fieldMap_ = fieldMap.product();
421 
423  iSetup.get<TransientRecHitRecord>().get(conf_.getParameter<string>("TTRHBuilder"), hitBuilder);
424  hitBuilder_ = hitBuilder.product();
425 
427  kfUpdator_ = new KFUpdator();
428 }
429 
431  delete propagator_;
432  delete kfUpdator_;
433 }
434 
436  // These are the BoundSurface&, the BoundDisk* and the BoundCylinder* for that layer
437  // const BoundSurface& theSurface = layer.surface();
438  // BoundDisk* theDisk = layer.disk(); // non zero for endcaps
439  // BoundCylinder* theCylinder = layer.cylinder(); // non zero for barrel
440  // int theLayer = layer.layerNumber(); // 1->3 PixB, 4->5 PixD,
441  // // 6->9 TIB, 10->12 TID,
442  // // 13->18 TOB, 19->27 TEC
443 
446 
447  const std::vector<const BarrelDetLayer*>& barrelLayers = geomSearchTracker_->barrelLayers();
448  LogDebug("FastTracker") << "Barrel DetLayer dump: ";
449  for (auto bl = barrelLayers.begin(); bl != barrelLayers.end(); ++bl) {
450  LogDebug("FastTracker") << "radius " << (**bl).specificSurface().radius();
451  }
452 
453  const std::vector<const ForwardDetLayer*>& posForwardLayers = geomSearchTracker_->posForwardLayers();
454  LogDebug("FastTracker") << "Positive Forward DetLayer dump: ";
455  for (auto fl = posForwardLayers.begin(); fl != posForwardLayers.end(); ++fl) {
456  LogDebug("FastTracker") << "Z pos " << (**fl).surface().position().z() << " radii "
457  << (**fl).specificSurface().innerRadius() << ", " << (**fl).specificSurface().outerRadius();
458  }
459 
460  const float rTolerance = 1.5;
461  const float zTolerance = 3.;
462 
463  LogDebug("FastTracker") << "Dump of TrackerInteractionGeometry cylinders:";
464  for (std::list<TrackerLayer>::const_iterator i = geometry_->cylinderBegin(); i != geometry_->cylinderEnd(); ++i) {
465  const BoundCylinder* cyl = i->cylinder();
466  const BoundDisk* disk = i->disk();
467 
468  LogDebug("FastTracker") << "Famos Layer no " << i->layerNumber() << " is sensitive? " << i->sensitive() << " pos "
469  << i->surface().position();
470  if (!i->sensitive())
471  continue;
472 
473  if (cyl != nullptr) {
474  LogDebug("FastTracker") << " cylinder radius " << cyl->radius();
475  bool found = false;
476 
477  for (auto bl = barrelLayers.begin(); bl != barrelLayers.end(); ++bl) {
478  if (fabs(cyl->radius() - (**bl).specificSurface().radius()) < rTolerance) {
479  layerMap_[i->layerNumber()] = *bl;
480  found = true;
481  LogDebug("FastTracker") << "Corresponding DetLayer found with radius " << (**bl).specificSurface().radius();
482 
483  break;
484  }
485  }
486  if (!found) {
487  LogError("FastTracker") << "FAILED to find a corresponding DetLayer!";
488  }
489  } else {
490  LogDebug("FastTracker") << " disk radii " << disk->innerRadius() << ", " << disk->outerRadius();
491 
492  bool found = false;
493 
494  for (auto fl = posForwardLayers.begin(); fl != posForwardLayers.end(); ++fl) {
495  if (fabs(disk->position().z() - (**fl).surface().position().z()) < zTolerance) {
496  layerMap_[i->layerNumber()] = *fl;
497  found = true;
498  LogDebug("FastTracker") << "Corresponding DetLayer found with Z pos " << (**fl).surface().position().z()
499  << " and radii " << (**fl).specificSurface().innerRadius() << ", "
500  << (**fl).specificSurface().outerRadius();
501  break;
502  }
503  }
504  if (!found) {
505  LogError("FastTracker") << "FAILED to find a corresponding DetLayer!";
506  }
507  }
508  }
509 }
510 const DetLayer* ConvBremSeedProducer::detLayer(const TrackerLayer& layer, float zpos) const {
511  if (zpos > 0 || !layer.forward())
512  return layerMap_[layer.layerNumber()];
513  else
514  return layerMap_[layer.layerNumber() + negLayerOffset_];
515 }
516 
518  const ParticlePropagator& pp,
519  const MagneticField* field) const {
520  GlobalPoint pos(pp.particle().X(), pp.particle().Y(), pp.particle().Z());
521  GlobalVector mom(pp.particle().Px(), pp.particle().Py(), pp.particle().Pz());
522 
523  auto plane = layer->surface().tangentPlane(pos);
524 
525  return TrajectoryStateOnSurface(GlobalTrajectoryParameters(pos, mom, TrackCharge(pp.particle().charge()), field),
526  *plane);
527 }
529  bool istaken = false;
530  for (auto const& hit : tkv.recHits()) {
531  if (istaken || !hit->isValid())
532  continue;
533  istaken = hit->sharesInput(h, TrackingRecHit::all);
534  }
535  return istaken;
536 }
537 vector<bool> ConvBremSeedProducer::sharedHits(const vector<pair<TrajectorySeed, pair<GlobalVector, float> > >& unclean) {
538  vector<bool> goodseed;
539  goodseed.clear();
540  if (unclean.size() < 2) {
541  for (unsigned int i = 0; i < unclean.size(); i++)
542  goodseed.push_back(true);
543  } else {
544  for (unsigned int i = 0; i < unclean.size(); i++)
545  goodseed.push_back(true);
546 
547  for (unsigned int iu = 0; iu < unclean.size() - 1; iu++) {
548  if (!goodseed[iu])
549  continue;
550  for (unsigned int iu2 = iu + 1; iu2 < unclean.size(); iu2++) {
551  if (!goodseed[iu])
552  continue;
553  if (!goodseed[iu2])
554  continue;
555  // if (unclean[iu].second.second *unclean[iu2].second.second >0)continue;
556 
557  unsigned int shar = 0;
558  for (auto const& sh : unclean[iu].first.recHits()) {
559  for (auto const& sh2 : unclean[iu2].first.recHits()) {
560  if (sh.sharesInput(&sh2, TrackingRecHit::all))
561 
562  shar++;
563  }
564  }
565  if (shar >= 2) {
566  if (unclean[iu].second.first.perp() < unclean[iu2].second.first.perp())
567  goodseed[iu] = false;
568  else
569  goodseed[iu2] = false;
570  }
571  }
572  }
573  }
574  return goodseed;
575 }
576 
578  const PFClusterCollection& pfc,
579  float minep,
580  bool sec) {
581  BaseParticlePropagator bpg = ubpg;
582  bpg.propagateToEcalEntrance(false);
583  float dr = 1000;
584  float de = 1000;
585  float df = 1000;
586  int ibest = -1;
587 
588  if (bpg.getSuccess() != 0) {
589  for (unsigned int i = 0; i < pfc.size(); i++) {
590  float tmp_ep = pfc[i].energy() / bpg.particle().momentum().e();
591  float tmp_phi = fabs(pfc[i].position().phi() - bpg.particle().vertex().phi());
592  if (tmp_phi > TMath::TwoPi())
593  tmp_phi -= TMath::TwoPi();
594  float tmp_eta = fabs(pfc[i].position().eta() - bpg.particle().vertex().eta());
595  float tmp_dr = sqrt(pow(tmp_phi, 2) + pow(tmp_eta, 2));
596  bool isBet = (tmp_dr < dr);
597  if (sec)
598  isBet = (tmp_phi < df);
599  if ((isBet) && (tmp_ep > minep) && (tmp_ep < 10)) {
600  dr = tmp_dr;
601  de = tmp_eta;
602  df = tmp_phi;
603  ibest = i;
604  }
605  }
606  bool isBad = (dr > 0.1);
607  if (sec)
608  isBad = ((df > 0.25) || (de > 0.5));
609 
610  if (isBad)
611  ibest = -1;
612  }
613  return ibest;
614 }
Vector3DBase
Definition: Vector3DBase.h:8
reco::ConvBremSeed
Definition: ConvBremSeed.h:24
ConfigurationDescriptions.h
reco::PFClusterCollection
std::vector< PFCluster > PFClusterCollection
collection of PFCluster objects
Definition: PFClusterFwd.h:9
TrackerGeometry::idToDet
const TrackerGeomDet * idToDet(DetId) const override
Definition: TrackerGeometry.cc:193
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
KFUpdator::update
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
Definition: KFUpdator.cc:177
testProducerWithPsetDescEmpty_cfi.i2
i2
Definition: testProducerWithPsetDescEmpty_cfi.py:46
ConvBremSeedProducer::makeTrajectoryState
TrajectoryStateOnSurface makeTrajectoryState(const DetLayer *layer, const ParticlePropagator &pp, const MagneticField *field) const
Definition: ConvBremSeedProducer.cc:517
MagneticField::inTesla
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
testProducerWithPsetDescEmpty_cfi.i3
i3
Definition: testProducerWithPsetDescEmpty_cfi.py:47
RawParticle
Definition: RawParticle.h:37
mps_fire.i
i
Definition: mps_fire.py:428
anyDirection
Definition: PropagationDirection.h:4
ConvBremSeedProducer::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: ConvBremSeedProducer.cc:98
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
BaseParticlePropagator::propagateToEcalEntrance
bool propagateToEcalEntrance(bool first=true)
Definition: BaseParticlePropagator.cc:450
MessageLogger.h
TwoPi
const double TwoPi
Definition: CosmicMuonParameters.h:19
TrackCharge
int TrackCharge
Definition: TrackCharge.h:4
TrackerGeometry.h
PFBrem.h
BaseParticlePropagator::particle
RawParticle const & particle() const
The particle being propagated.
Definition: BaseParticlePropagator.h:164
edm::Handle::product
T const * product() const
Definition: Handle.h:70
reco::GsfPFRecTrackCollection
std::vector< GsfPFRecTrack > GsfPFRecTrackCollection
collection of GsfPFRecTrack objects
Definition: GsfPFRecTrackFwd.h:9
FastHelix.h
ESHandle.h
DetLayer::subDetector
virtual SubDetector subDetector() const =0
The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel,...
ConvBremSeedProducer::magfield_
const MagneticField * magfield_
Definition: ConvBremSeedProducer.cc:84
DetLayer
Definition: DetLayer.h:21
RawParticle::momentum
const XYZTLorentzVector & momentum() const
the momentum fourvector
Definition: RawParticle.h:321
PropagatorWithMaterial::propagate
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:50
GlobalTrajectoryParameters::position
GlobalPoint position() const
Definition: GlobalTrajectoryParameters.h:60
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
FastHelix
Definition: FastHelix.h:26
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
SiStripMatchedRecHit2DCollection.h
TrackerInteractionGeometry::cylinderEnd
std::list< TrackerLayer >::const_iterator cylinderEnd() const
Returns the last pointer in the cylinder list.
Definition: TrackerInteractionGeometry.h:40
edm::Run
Definition: Run.h:45
TrackerInteractionGeometryRecord
Definition: TrackerInteractionGeometryRecord.h:26
RawParticle::vertex
const XYZTLorentzVector & vertex() const
the vertex fourvector
Definition: RawParticle.h:320
edm
HLT enums.
Definition: AlignableModifier.h:19
ConvBremSeedProducer::hitBuilder_
const TransientTrackingRecHitBuilder * hitBuilder_
Definition: ConvBremSeedProducer.cc:88
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
gpuVertexFinder::iv
int32_t *__restrict__ iv
Definition: gpuClusterTracksDBSCAN.h:42
trajectoryStateTransform::persistentState
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
Definition: TrajectoryStateTransform.cc:14
TransientRecHitRecord.h
pos
Definition: PixelAliasList.h:18
ConvBremSeed.h
MagneticFieldMap
Definition: MagneticFieldMap.h:18
testProducerWithPsetDescEmpty_cfi.i1
i1
Definition: testProducerWithPsetDescEmpty_cfi.py:45
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
AlignmentTrackSelector_cfi.matchedrecHits
matchedrecHits
Definition: AlignmentTrackSelector_cfi.py:64
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
TransientRecHitRecord
Definition: TransientRecHitRecord.h:14
GlobalTrajectoryParameters::charge
TrackCharge charge() const
Definition: GlobalTrajectoryParameters.h:72
BaseParticlePropagator.h
TrackerRecoGeometryRecord.h
ConvBremSeedProducer::geomSearchTracker_
const GeometricSearchTracker * geomSearchTracker_
Definition: ConvBremSeedProducer.cc:81
EDProducer.h
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:222
TrackingRecHitFwd.h
GeometricSearchDet::compatibleDets
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
Definition: GeometricSearchDet.cc:35
MagneticFieldMapRecord.h
BaseParticlePropagator::getSuccess
int getSuccess() const
Has propagation been performed and was barrel or endcap reached ?
Definition: BaseParticlePropagator.h:296
TrackerRecoGeometryRecord
Definition: TrackerRecoGeometryRecord.h:14
ConvBremSeedProducer::initializeLayerMap
void initializeLayerMap()
Definition: ConvBremSeedProducer.cc:435
XYZTLorentzVector
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:25
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
TransientTrackingRecHitBuilder::build
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
watchdog.const
const
Definition: watchdog.py:83
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
edm::Handle
Definition: AssociativeIterator.h:50
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
ParticlePropagator::setPropagationConditions
void setPropagationConditions(const TrackerLayer &, bool firstLoop=true)
Definition: ParticlePropagator.cc:169
BoundDisk
ConvBremSeedProducer::fieldMap_
const MagneticFieldMap * fieldMap_
Definition: ConvBremSeedProducer.cc:85
BaseParticlePropagator
Definition: BaseParticlePropagator.h:82
TkTransientTrackingRecHitBuilder.h
edm::Ref< GsfPFRecTrackCollection >
ConvBremSeedProducer::geometry_
const TrackerInteractionGeometry * geometry_
Definition: ConvBremSeedProducer.cc:82
ConvBremSeedProducer
Definition: ConvBremSeedProducer.cc:54
RawParticle::Z
double Z() const
z of vertex
Definition: RawParticle.h:288
AlgebraicMatrixID
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
Definition: AlgebraicROOTObjects.h:72
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
GeometricSearchTracker.h
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
MakerMacros.h
InsideBoundsMeasurementEstimator.h
PropagatorWithMaterial
Definition: PropagatorWithMaterial.h:25
TrackingRecHit.h
h
Track.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
CurvilinearTrajectoryError
Definition: CurvilinearTrajectoryError.h:27
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
FastHelix::stateAtVertex
GlobalTrajectoryParameters stateAtVertex() const
Definition: FastHelix.h:59
Surface.h
clone
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
PVValHelper::eta
Definition: PVValidationHelpers.h:70
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
TrackerInteractionGeometry.h
BaseParticlePropagator::getMagneticField
double getMagneticField() const
Get the magnetic field.
Definition: BaseParticlePropagator.h:302
Surface::toGlobal
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
reco::Track
Definition: Track.h:27
IdealMagneticFieldRecord.h
edm::ESHandle< MagneticField >
MagneticField::nominalValue
int nominalValue() const
The nominal field value for this map in kGauss.
Definition: MagneticField.h:49
ConvBremSeedProducer::GoodCluster
int GoodCluster(const BaseParticlePropagator &bpg, const reco::PFClusterCollection &pfc, float minep, bool sec=false)
Definition: ConvBremSeedProducer.cc:577
PFCluster.h
GeometricSearchTracker::barrelLayers
std::vector< BarrelDetLayer const * > const & barrelLayers() const
Definition: GeometricSearchTracker.h:38
reco::Track::recHits
auto recHits() const
Access to reconstructed hits on the track.
Definition: Track.h:85
GlobalTrajectoryParameters
Definition: GlobalTrajectoryParameters.h:15
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
Point3DBase< float, GlobalTag >
TrackerInteractionGeometry
Definition: TrackerInteractionGeometry.h:23
ParameterSetDescription.h
ConvBremSeedProducer::tracker_
const TrackerGeometry * tracker_
Definition: ConvBremSeedProducer.cc:83
TrajectorySeed.h
ParticlePropagator.h
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:112
GlobalTrajectoryParameters::momentum
GlobalVector momentum() const
Definition: GlobalTrajectoryParameters.h:65
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
AnalyticalPropagator_cfi.AnalyticalPropagator
AnalyticalPropagator
Definition: AnalyticalPropagator_cfi.py:3
ConvBremSeedProducer::detLayer
const DetLayer * detLayer(const TrackerLayer &layer, float zpos) const
Definition: ConvBremSeedProducer.cc:510
PbPb_ZMuSkimMuonDPG_cff.tracker
tracker
Definition: PbPb_ZMuSkimMuonDPG_cff.py:60
runTauDisplay.gp
gp
Definition: runTauDisplay.py:431
ConvBremSeedProducer::kfUpdator_
const KFUpdator * kfUpdator_
Definition: ConvBremSeedProducer.cc:87
ConvBremSeedProducer::beginRun
void beginRun(const edm::Run &, const edm::EventSetup &) override
Definition: ConvBremSeedProducer.cc:400
TrackerDigiGeometryRecord.h
SiPixelRecHitCollection.h
ConvBremSeedProducer::endRun
void endRun(const edm::Run &, const edm::EventSetup &) override
Definition: ConvBremSeedProducer.cc:430
ConvBremSeedProducer::negLayerOffset_
int negLayerOffset_
Definition: ConvBremSeedProducer.cc:90
KFUpdator.h
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
ConvBremSeedProducer::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: ConvBremSeedProducer.cc:118
TrackingRecHit::all
Definition: TrackingRecHit.h:59
Event.h
TrackingRecHit::ConstRecHitContainer
std::vector< ConstRecHitPointer > ConstRecHitContainer
Definition: TrackingRecHit.h:32
PropagatorWithMaterial.h
BaseParticlePropagator::propagate
bool propagate()
Definition: BaseParticlePropagator.cc:34
ConvBremSeedProducer::sharedHits
std::vector< bool > sharedHits(const std::vector< std::pair< TrajectorySeed, std::pair< GlobalVector, float > > > &)
Definition: ConvBremSeedProducer.cc:537
TrackerLayer
Definition: TrackerLayer.h:13
math::XYZVector
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
ConvBremSeedProducer::ConvBremSeedProducer
ConvBremSeedProducer(const edm::ParameterSet &)
Definition: ConvBremSeedProducer.cc:113
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
ParticlePropagator
Definition: ParticlePropagator.h:28
GeomDetEnumerators::isTrackerPixel
bool isTrackerPixel(GeomDetEnumerators::SubDetector m)
Definition: GeomDetEnumerators.cc:68
iEvent
int iEvent
Definition: GenABIO.cc:224
TrackerInteractionGeometry::cylinderBegin
std::list< TrackerLayer >::const_iterator cylinderBegin() const
Returns the first pointer in the cylinder list.
Definition: TrackerInteractionGeometry.h:37
PFClusterFwd.h
GsfTrack.h
SiStripRecHit2DCollection.h
ConvBremSeedProducer::B_
math::XYZVector B_
B field.
Definition: ConvBremSeedProducer.cc:92
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
BarrelDetLayer.h
edm::stream::EDProducer
Definition: EDProducer.h:38
cuy.ib
ib
Definition: cuy.py:662
MagneticField.h
MagneticFieldMapRecord
Definition: MagneticFieldMapRecord.h:27
edm::EventSetup
Definition: EventSetup.h:58
AnalyticalPropagator.h
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
get
#define get
TrajectorySeedCollection.h
fileinputsource_cfi.sec
sec
Definition: fileinputsource_cfi.py:94
ConvBremSeedProducer::isGsfTrack
bool isGsfTrack(const reco::Track &, const TrackingRecHit *)
Definition: ConvBremSeedProducer.cc:528
TrackingRecHit
Definition: TrackingRecHit.h:21
DDAxes::phi
TangentPlane.h
InsideBoundsMeasurementEstimator
Definition: InsideBoundsMeasurementEstimator.h:6
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
writedatasetfile.run
run
Definition: writedatasetfile.py:27
RunInfoPI::state
state
Definition: RunInfoPayloadInspectoHelper.h:16
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
hgcalPerformanceValidation.df
df
Definition: hgcalPerformanceValidation.py:733
edmNew::DetSetVector::end
const_iterator end(bool update=false) const
Definition: DetSetVectorNew.h:535
ForwardDetLayer.h
flavorHistoryFilter_cfi.dr
dr
Definition: flavorHistoryFilter_cfi.py:37
GeometricSearchTracker
Definition: GeometricSearchTracker.h:15
GeometricSearchTracker::posForwardLayers
std::vector< ForwardDetLayer const * > const & posForwardLayers() const
Definition: GeometricSearchTracker.h:42
AlignmentTrackSelector_cfi.rphirecHits
rphirecHits
Definition: AlignmentTrackSelector_cfi.py:63
ConvBremSeedProducer::layerMap_
std::vector< const DetLayer * > layerMap_
Definition: ConvBremSeedProducer.cc:89
ConvBremSeedProducer::conf_
edm::ParameterSet conf_
Definition: ConvBremSeedProducer.cc:80
ConvBremSeedFwd.h
DetLayer.h
TrajectorySeed
Definition: TrajectorySeed.h:18
BoundCylinder
ConvBremSeedProducer::theLayerMap
std::vector< const DetLayer * > theLayerMap
Definition: ConvBremSeedProducer.cc:65
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
TrajectoryStateTransform.h
edm::OwnVector::push_back
void push_back(D *&d)
Definition: OwnVector.h:326
GsfPFRecTrackFwd.h
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
PTrajectoryStateOnDet
Definition: PTrajectoryStateOnDet.h:10
ParameterSet.h
createTree.pp
pp
Definition: createTree.py:17
GsfPFRecTrack.h
edm::Event
Definition: Event.h:73
LocalMagneticField.h
MagneticField
Definition: MagneticField.h:19
AlgebraicSymMatrix55
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
Definition: AlgebraicROOTObjects.h:23
TransientTrackingRecHitBuilder
Definition: TransientTrackingRecHitBuilder.h:6
volumeBasedMagneticField_160812_cfi.magfield
magfield
Definition: volumeBasedMagneticField_160812_cfi.py:11
edm::OwnVector::clear
void clear()
Definition: OwnVector.h:481
LocalMagneticField
Definition: LocalMagneticField.h:15
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
edm::InputTag
Definition: InputTag.h:15
alongMomentum
Definition: PropagationDirection.h:4
KFUpdator
Definition: KFUpdator.h:32
hit
Definition: SiStripHitEffFromCalibTree.cc:88
edm::OwnVector< TrackingRecHit >
ConvBremSeedProducer::propagator_
const PropagatorWithMaterial * propagator_
Definition: ConvBremSeedProducer.cc:86
TrackerInteractionGeometryRecord.h
TrackerGeometry
Definition: TrackerGeometry.h:14