CMS 3D CMS Logo

DAFTrackProducerAlgorithm.cc
Go to the documentation of this file.
26 
28  : conf_(conf), minHits_(conf.getParameter<int>("MinHits")) {}
29 
31  const MagneticField* theMF,
33  const MeasurementTrackerEvent* measTk,
34  const TrajectoryFitter* theFitter,
35  const TransientTrackingRecHitBuilder* builder,
36  const MultiRecHitCollector* measurementCollector,
38  const reco::BeamSpot& bs,
39  AlgoProductCollection& algoResults,
40  TrajAnnealingCollection& trajann,
41  bool TrajAnnSaving_,
42  AlgoProductCollection& algoResultsBeforeDAF,
43  AlgoProductCollection& algoResultsAfterDAF) const {
44  LogDebug("DAFTrackProducerAlgorithm") << "Size of map: " << TTmap.size() << "\n";
45 
46  int cont = 0;
47  int nTracksChanged = 0;
48 
49  for (TrajTrackAssociationCollection::const_iterator itTTmap = TTmap.begin(); itTTmap != TTmap.end(); itTTmap++) {
50  const edm::Ref<std::vector<Trajectory> > BeforeDAFTraj = itTTmap->key;
51  std::vector<TrajectoryMeasurement> BeforeDAFTrajMeas = BeforeDAFTraj->measurements();
52  const reco::TrackRef BeforeDAFTrack = itTTmap->val;
53 
54  float ndof = 0;
55  Trajectory CurrentTraj;
56 
57  if (BeforeDAFTraj->isValid()) {
58  LogDebug("DAFTrackProducerAlgorithm") << "The trajectory #" << cont + 1 << " is valid. \n";
59 
60  //getting the MultiRecHit collection and the trajectory with a first fit-smooth round
61  std::pair<TransientTrackingRecHit::RecHitContainer, TrajectoryStateOnSurface> hits =
62  collectHits(*BeforeDAFTraj, measurementCollector, &*measTk);
63 
64  //new initial fit
65  CurrentTraj = fit(hits, theFitter, *BeforeDAFTraj);
66 
67  //starting the annealing program
68  for (std::vector<double>::const_iterator ian = updator->getAnnealingProgram().begin();
69  ian != updator->getAnnealingProgram().end();
70  ian++) {
71  if (CurrentTraj.isValid()) {
72  LogDebug("DAFTrackProducerAlgorithm") << "Seed direction is " << CurrentTraj.seed().direction()
73  << ".Traj direction is " << CurrentTraj.direction() << std::endl;
74 
75  //updating MultiRecHits and fit-smooth again
76  std::pair<TransientTrackingRecHit::RecHitContainer, TrajectoryStateOnSurface> curiterationhits =
77  updateHits(CurrentTraj, updator, &*measTk, *ian);
78  if (curiterationhits.first.size() < 3) {
79  LogDebug("DAFTrackProducerAlgorithm")
80  << "Rejecting trajectory with " << curiterationhits.first.size() << " hits" << std::endl;
81  CurrentTraj = Trajectory();
82  break;
83  }
84 
85  CurrentTraj = fit(curiterationhits, theFitter, CurrentTraj);
86 
87  //saving trajectory for each annealing cycle ...
88  if (TrajAnnSaving_) {
89  TrajAnnealing temp(CurrentTraj, *ian);
90  trajann.push_back(temp);
91  }
92 
93  LogDebug("DAFTrackProducerAlgorithm") << "done annealing value " << (*ian);
94 
95  } else
96  break;
97  } //end annealing cycle
98 
99  int percOfHitsUnchangedAfterDAF =
100  (1. * checkHits(*BeforeDAFTraj, CurrentTraj) / (1. * BeforeDAFTrajMeas.size())) * 100.;
101  LogDebug("DAFTrackProducerAlgorithm")
102  << "Ended annealing program with " << percOfHitsUnchangedAfterDAF << " unchanged." << std::endl;
103 
104  //computing the ndof keeping into account the weights
105  ndof = calculateNdof(CurrentTraj);
106 
107  //checking if the trajectory has the minimum number of valid hits ( weight (>1e-6) )
108  //in order to remove tracks with too many outliers.
109  int goodHits = countingGoodHits(CurrentTraj);
110 
111  if (goodHits >= minHits_) {
112  bool ok = buildTrack(CurrentTraj, algoResults, ndof, bs, &BeforeDAFTrack);
113  // or filtered?
114  if (ok)
115  cont++;
116 
117  //saving tracks before and after DAF
118  if ((100. - percOfHitsUnchangedAfterDAF) > 0.) {
119  bool okBefore = buildTrack(*BeforeDAFTraj, algoResultsBeforeDAF, ndof, bs, &BeforeDAFTrack);
120  bool okAfter = buildTrack(CurrentTraj, algoResultsAfterDAF, ndof, bs, &BeforeDAFTrack);
121  if (okBefore && okAfter)
122  nTracksChanged++;
123  }
124  } else {
125  LogDebug("DAFTrackProducerAlgorithm") << "Rejecting trajectory with " << CurrentTraj.foundHits() << " hits";
126  }
127  } //end run on track collection
128  else {
129  LogDebug("DAFTrackProducerAlgorithm") << "Rejecting empty trajectory" << std::endl;
130  }
131  } //end run on track collection
132 
133  LogDebug("DAFTrackProducerAlgorithm") << "Number of Tracks found: " << cont << "\n";
134  LogDebug("DAFTrackProducerAlgorithm") << "Number of Tracks changed: " << nTracksChanged << "\n";
135 }
136 /*------------------------------------------------------------------------------------------------------*/
137 std::pair<TransientTrackingRecHit::RecHitContainer, TrajectoryStateOnSurface> DAFTrackProducerAlgorithm::collectHits(
138  const Trajectory vtraj,
139  const MultiRecHitCollector* measurementCollector,
140  const MeasurementTrackerEvent* measTk) const {
141  LogDebug("DAFTrackProducerAlgorithm") << "Calling DAFTrackProducerAlgorithm::collectHits";
142 
143  //getting the traj measurements from the MeasurementCollector
144  int nHits = 0;
146  std::vector<TrajectoryMeasurement> collectedmeas = measurementCollector->recHits(vtraj, measTk);
147 
148  //if the MeasurementCollector is empty, make an "empty" pair
149  //else taking the collected measured hits and building the pair
150  if (collectedmeas.empty())
152 
153  for (std::vector<TrajectoryMeasurement>::const_iterator iter = collectedmeas.begin(); iter != collectedmeas.end();
154  iter++) {
155  nHits++;
156  hits.push_back(iter->recHit());
157  }
158 
159  //TrajectoryStateWithArbitraryError() == Creates a TrajectoryState with the same parameters
160  // as the input one, but with "infinite" errors, i.e. errors so big that they don't
161  // bias a fit starting with this state.
162  //return std::make_pair(hits,TrajectoryStateWithArbitraryError()(collectedmeas.front().predictedState()));
163 
164  // I do not have to rescale the error because it is already rescaled in the fit code
165  TrajectoryStateOnSurface initialStateFromTrack = collectedmeas.front().predictedState();
166 
167  LogDebug("DAFTrackProducerAlgorithm")
168  << "Pair (hits, TSOS) with TSOS predicted(collectedmeas.front().predictedState())";
169  return std::make_pair(hits, initialStateFromTrack);
170 }
171 /*------------------------------------------------------------------------------------------------------*/
172 std::pair<TransientTrackingRecHit::RecHitContainer, TrajectoryStateOnSurface> DAFTrackProducerAlgorithm::updateHits(
173  const Trajectory vtraj,
175  const MeasurementTrackerEvent* theMTE,
176  double annealing) const {
177  LogDebug("DAFTrackProducerAlgorithm") << "Calling DAFTrackProducerAlgorithm::updateHits";
179  std::vector<TrajectoryMeasurement> vmeas = vtraj.measurements();
180  std::vector<TrajectoryMeasurement>::reverse_iterator imeas;
181  unsigned int hitcounter = 1;
182 
183  //I run inversely on the trajectory obtained and update the state
184  for (imeas = vmeas.rbegin(); imeas != vmeas.rend(); imeas++, hitcounter++) {
185  DetId id = imeas->recHit()->geographicalId();
186  MeasurementDetWithData measDet = theMTE->idToDet(id);
187 
189  TrajectoryStateOnSurface combtsos;
190  if (hitcounter == vmeas.size())
191  combtsos = imeas->predictedState(); //fwd
192  else if (hitcounter == 1)
193  combtsos = imeas->backwardPredictedState(); //bwd
194  else
195  combtsos = combiner(imeas->backwardPredictedState(), imeas->predictedState());
196 
197  PrintHit(&*imeas->recHit(), combtsos);
198  if (imeas->recHit()->isValid()) {
199  TransientTrackingRecHit::RecHitPointer updated = updator->update(imeas->recHit(), combtsos, measDet, annealing);
200  hits.push_back(updated);
201  } else {
202  hits.push_back(imeas->recHit());
203  }
204  }
205 
206  TrajectoryStateOnSurface updatedStateFromTrack = vmeas.back().predictedState();
207 
208  //return std::make_pair(hits,TrajectoryStateWithArbitraryError()(vmeas.back().updatedState()));
209  LogDebug("DAFTrackProducerAlgorithm") << "Pair (hits, TSOS) with TSOS predicted (vmeas.back().predictedState())";
210 
211  return std::make_pair(hits, updatedStateFromTrack);
212 }
213 /*------------------------------------------------------------------------------------------------------*/
215  const std::pair<TransientTrackingRecHit::RecHitContainer, TrajectoryStateOnSurface>& hits,
216  const TrajectoryFitter* theFitter,
217  Trajectory vtraj) const {
218  //creating a new trajectory starting from the direction of the seed of the input one and the hits
219  Trajectory newVec = theFitter->fitOne(TrajectorySeed({}, {}, vtraj.seed().direction()), hits.first, hits.second);
220 
221  if (newVec.isValid())
222  return newVec;
223  else {
224  LogDebug("DAFTrackProducerAlgorithm") << "Fit no valid.";
225  return Trajectory();
226  }
227 }
228 /*------------------------------------------------------------------------------------------------------*/
230  AlgoProductCollection& algoResults,
231  float ndof,
232  const reco::BeamSpot& bs,
233  const reco::TrackRef* BeforeDAFTrack) const {
234  LogDebug("DAFTrackProducerAlgorithm") << " BUILDER " << std::endl;
235  ;
236  TrajectoryStateOnSurface innertsos;
237 
238  if (vtraj.isValid()) {
239  std::unique_ptr<Trajectory> theTraj(new Trajectory(vtraj));
240 
241  if (vtraj.direction() == alongMomentum) {
242  //if (theTraj->direction() == oppositeToMomentum) {
243  innertsos = vtraj.firstMeasurement().updatedState();
244  } else {
245  innertsos = vtraj.lastMeasurement().updatedState();
246  }
247 
248  TSCBLBuilderNoMaterial tscblBuilder;
249  TrajectoryStateClosestToBeamLine tscbl = tscblBuilder(*(innertsos.freeState()), bs);
250 
251  if (tscbl.isValid() == false)
252  return false;
253 
255  math::XYZPoint pos(v.x(), v.y(), v.z());
257  math::XYZVector mom(p.x(), p.y(), p.z());
258 
259  // LogDebug("TrackProducer") <<v<<p<<std::endl;
260 
261  auto algo = (*BeforeDAFTrack)->algo();
262  std::unique_ptr<reco::Track> theTrack(new reco::Track(vtraj.chiSquared(),
263  ndof, //in the DAF the ndof is not-integer
264  pos,
265  mom,
266  tscbl.trackStateAtPCA().charge(),
268  algo));
269  theTrack->setQualityMask((*BeforeDAFTrack)->qualityMask());
270 
271  AlgoProduct aProduct{theTraj.release(), theTrack.release(), vtraj.direction(), 0};
272  algoResults.push_back(aProduct);
273 
274  return true;
275  } else {
276  LogDebug("DAFTrackProducerAlgorithm") << " BUILDER NOT POSSIBLE: traj is not valid" << std::endl;
277  ;
278  return false;
279  }
280 }
281 /*------------------------------------------------------------------------------------------------------*/
283  int ngoodhits = 0;
284  std::vector<TrajectoryMeasurement> vtm = traj.measurements();
285 
286  for (std::vector<TrajectoryMeasurement>::const_iterator tm = vtm.begin(); tm != vtm.end(); tm++) {
287  //if the rechit is valid
288  if (tm->recHit()->isValid()) {
289  SiTrackerMultiRecHit const& mHit = dynamic_cast<SiTrackerMultiRecHit const&>(*tm->recHit());
290  std::vector<const TrackingRecHit*> components = mHit.recHits();
291 
292  int iComp = 0;
293 
294  for (std::vector<const TrackingRecHit*>::const_iterator iter = components.begin(); iter != components.end();
295  iter++, iComp++) {
296  //if there is at least one component with weight higher than 1e-6 then the hit is not an outlier
297  if (mHit.weight(iComp) > 1e-6) {
298  ngoodhits++;
299  iComp++;
300  break;
301  }
302  }
303  }
304  }
305 
306  LogDebug("DAFTrackProducerAlgorithm") << "Original number of valid hits " << traj.foundHits()
307  << " -> hit with good weight (>1e-6) are " << ngoodhits;
308  return ngoodhits;
309 }
310 /*------------------------------------------------------------------------------------------------------*/
311 
313  std::vector<Trajectory>& input,
314  int minhits,
315  std::vector<Trajectory>& output,
316  const TransientTrackingRecHitBuilder* builder) const {
317  if (input.empty())
318  return;
319 
320  int ngoodhits = 0;
321  std::vector<TrajectoryMeasurement> vtm = input[0].measurements();
323 
324  //count the number of non-outlier and non-invalid hits
325  for (std::vector<TrajectoryMeasurement>::reverse_iterator tm = vtm.rbegin(); tm != vtm.rend(); tm++) {
326  //if the rechit is valid
327  if (tm->recHit()->isValid()) {
328  SiTrackerMultiRecHit const& mHit = dynamic_cast<SiTrackerMultiRecHit const&>(*tm->recHit());
329  std::vector<const TrackingRecHit*> components = mHit.recHits();
330  int iComp = 0;
331  bool isGood = false;
332  for (std::vector<const TrackingRecHit*>::const_iterator iter = components.begin(); iter != components.end();
333  iter++, iComp++) {
334  //if there is at least one component with weight higher than 1e-6 then the hit is not an outlier
335  if (mHit.weight(iComp) > 1e-6) {
336  ngoodhits++;
337  iComp++;
338  isGood = true;
339  break;
340  }
341  }
342  if (isGood) {
343  TkClonerImpl hc = static_cast<TkTransientTrackingRecHitBuilder const*>(builder)->cloner();
344  auto tempHit = hc.makeShared(tm->recHit(), tm->updatedState());
345  hits.push_back(tempHit);
346  } else
347  hits.push_back(std::make_shared<InvalidTrackingRecHit>(*tm->recHit()->det(), TrackingRecHit::missing));
348  } else {
349  TkClonerImpl hc = static_cast<TkTransientTrackingRecHitBuilder const*>(builder)->cloner();
350  auto tempHit = hc.makeShared(tm->recHit(), tm->updatedState());
351  hits.push_back(tempHit);
352  }
353  }
354 
355  LogDebug("DAFTrackProducerAlgorithm") << "Original number of valid hits " << input[0].foundHits()
356  << "; after filtering " << ngoodhits;
357  if (ngoodhits > input[0].foundHits())
358  edm::LogError("DAFTrackProducerAlgorithm")
359  << "Something wrong: the number of good hits from DAFTrackProducerAlgorithm::filter " << ngoodhits
360  << " is higher than the original one " << input[0].foundHits();
361 
362  if (ngoodhits < minhits)
363  return;
364 
365  TrajectoryStateOnSurface curstartingTSOS = input.front().lastMeasurement().updatedState();
366  LogDebug("DAFTrackProducerAlgorithm") << "starting tsos for final refitting " << curstartingTSOS;
367  //curstartingTSOS.rescaleError(100);
368 
369  output = fitter->fit(TrajectorySeed({}, {}, input.front().seed().direction()),
370  hits,
371  TrajectoryStateWithArbitraryError()(curstartingTSOS));
372 
373  LogDebug("DAFTrackProducerAlgorithm") << "After filtering " << output.size() << " trajectories";
374 }
375 /*------------------------------------------------------------------------------------------------------*/
377  if (!vtraj.isValid())
378  return 0;
379  float ndof = 0;
380  const std::vector<TrajectoryMeasurement>& meas = vtraj.measurements();
381  for (std::vector<TrajectoryMeasurement>::const_iterator iter = meas.begin(); iter != meas.end(); iter++) {
382  if (iter->recHit()->isValid()) {
383  SiTrackerMultiRecHit const& mHit = dynamic_cast<SiTrackerMultiRecHit const&>(*iter->recHit());
384  std::vector<const TrackingRecHit*> components = mHit.recHits();
385  int iComp = 0;
386  for (std::vector<const TrackingRecHit*>::const_iterator iter2 = components.begin(); iter2 != components.end();
387  iter2++, iComp++) {
388  if ((*iter2)->isValid())
389  ndof += ((*iter2)->dimension()) * mHit.weight(iComp);
390  }
391  }
392  }
393 
394  return ndof - 5;
395 }
396 //------------------------------------------------------------------------------------------------
397 int DAFTrackProducerAlgorithm::checkHits(Trajectory iInitTraj, const Trajectory iFinalTraj) const {
398  std::vector<TrajectoryMeasurement> initmeasurements = iInitTraj.measurements();
399  std::vector<TrajectoryMeasurement> finalmeasurements = iFinalTraj.measurements();
400  std::vector<TrajectoryMeasurement>::iterator jmeas;
401  int nSame = 0;
402  int ihit = 0;
403 
404  if (initmeasurements.empty() || finalmeasurements.empty()) {
405  LogDebug("DAFTrackProducerAlgorithm") << "Initial or Final Trajectory empty.";
406  return 0;
407  }
408 
409  if (initmeasurements.size() != finalmeasurements.size()) {
410  LogDebug("DAFTrackProducerAlgorithm")
411  << "Initial Trajectory size(" << initmeasurements.size() << " hits) "
412  << "is different to final traj size (" << finalmeasurements.size() << ")! No checkHits possible! ";
413  return 0;
414  }
415 
416  for (jmeas = initmeasurements.begin(); jmeas != initmeasurements.end(); jmeas++) {
417  const TrackingRecHit* initHit = jmeas->recHit()->hit();
418  if (!initHit->isValid() && ihit == 0)
419  continue;
420 
421  if (initHit->isValid()) {
422  TrajectoryMeasurement imeas = finalmeasurements.at(ihit);
423  const TrackingRecHit* finalHit = imeas.recHit()->hit();
424  const TrackingRecHit* MaxWeightHit = nullptr;
425  float maxweight = 0;
426 
427  const SiTrackerMultiRecHit* mrh = dynamic_cast<const SiTrackerMultiRecHit*>(finalHit);
428  if (mrh) {
429  std::vector<const TrackingRecHit*> components = mrh->recHits();
430  std::vector<const TrackingRecHit*>::const_iterator icomp;
431  int hitcounter = 0;
432 
433  for (icomp = components.begin(); icomp != components.end(); icomp++) {
434  if ((*icomp)->isValid()) {
435  double weight = mrh->weight(hitcounter);
436  if (weight > maxweight) {
437  MaxWeightHit = *icomp;
438  maxweight = weight;
439  }
440  }
441  hitcounter++;
442  }
443  if (!MaxWeightHit)
444  continue;
445 
446  auto myref1 = reinterpret_cast<const BaseTrackerRecHit*>(initHit)->firstClusterRef();
447  auto myref2 = reinterpret_cast<const BaseTrackerRecHit*>(MaxWeightHit)->firstClusterRef();
448 
449  if (myref1 == myref2) {
450  nSame++;
451  } else {
452  LogDebug("DAFTrackProducerAlgorithm") << "diverso hit!" << std::endl;
453  TrajectoryStateOnSurface dummState;
454  LogTrace("DAFTrackProducerAlgorithm") << " This hit was:\n ";
455  PrintHit(initHit, dummState);
456  LogTrace("DAFTrackProducerAlgorithm") << " instead now is:\n ";
457  PrintHit(MaxWeightHit, dummState);
458  }
459  }
460  } else {
461  TrajectoryMeasurement imeas = finalmeasurements.at(ihit);
462  const TrackingRecHit* finalHit = imeas.recHit()->hit();
463  if (!finalHit->isValid()) {
464  nSame++;
465  }
466  }
467 
468  ihit++;
469  }
470 
471  return nSame;
472 }
473 
475  if (hit->isValid()) {
476  LogTrace("DAFTrackProducerAlgorithm")
477  << " Valid Hit with DetId " << hit->geographicalId().rawId() << " and dim:" << hit->dimension()
478  << " local position " << hit->localPosition() << " global position " << hit->globalPosition() << " and r "
479  << hit->globalPosition().perp();
480  if (tsos.isValid())
481  LogTrace("DAFTrackProducerAlgorithm") << " TSOS combtsos " << tsos.localPosition();
482 
483  } else {
484  LogTrace("DAFTrackProducerAlgorithm") << " Invalid Hit with DetId " << hit->geographicalId().rawId();
485  }
486 }
Vector3DBase
Definition: Vector3DBase.h:8
TrajectoryStateCombiner.h
TSCBLBuilderNoMaterial.h
FreeTrajectoryState::momentum
GlobalVector momentum() const
Definition: FreeTrajectoryState.h:68
TrajectoryStateClosestToBeamLine
Definition: TrajectoryStateClosestToBeamLine.h:15
TrajAnnealing
Definition: TrajAnnealing.h:13
TrajectoryStateOnSurface.h
input
static const std::string input
Definition: EdmProvDump.cc:48
MessageLogger.h
DAFTrackProducerAlgorithm::minHits_
int minHits_
Definition: DAFTrackProducerAlgorithm.h:103
TkClonerImpl::makeShared
TrackingRecHit::ConstRecHitPointer makeShared(SiPixelRecHit const &hit, TrajectoryStateOnSurface const &tsos) const override
Definition: TkClonerImpl.cc:64
TrackingGeometry
Definition: TrackingGeometry.h:26
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
Trajectory::chiSquared
float chiSquared() const
Definition: Trajectory.h:241
Trajectory::direction
PropagationDirection const & direction() const
Definition: Trajectory.cc:133
DAFTrackProducerAlgorithm::TrajAnnealingCollection
std::vector< TrajAnnealing > TrajAnnealingCollection
Definition: DAFTrackProducerAlgorithm.h:40
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
DAFTrackProducerAlgorithm::DAFTrackProducerAlgorithm
DAFTrackProducerAlgorithm(const edm::ParameterSet &conf)
Definition: DAFTrackProducerAlgorithm.cc:27
mps_merge.weight
weight
Definition: mps_merge.py:88
TrackingRecHit::hit
virtual TrackingRecHit const * hit() const
Definition: TrackingRecHit.h:75
DAFTrackProducerAlgorithm::filter
void filter(const TrajectoryFitter *fitter, std::vector< Trajectory > &input, int minhits, std::vector< Trajectory > &output, const TransientTrackingRecHitBuilder *builder) const
Definition: DAFTrackProducerAlgorithm.cc:312
pos
Definition: PixelAliasList.h:18
FreeTrajectoryState::charge
TrackCharge charge() const
Definition: FreeTrajectoryState.h:69
generateEDF.cont
cont
load Luminosity info ##
Definition: generateEDF.py:628
SiTrackerMultiRecHit::recHits
std::vector< const TrackingRecHit * > recHits() const override
Access to component RecHits (if any)
Definition: SiTrackerMultiRecHit.cc:59
TrackingGeometry.h
TrackingRecHitFwd.h
TransientTrackingRecHit.h
DAFTrackProducerAlgorithm::AlgoProductCollection
typename Base::AlgoProductCollection AlgoProductCollection
Definition: DAFTrackProducerAlgorithm.h:38
TrajectoryMeasurement::updatedState
TrajectoryStateOnSurface const & updatedState() const
Definition: TrajectoryMeasurement.h:184
DAFTrackProducerAlgorithm::buildTrack
bool buildTrack(const Trajectory, AlgoProductCollection &algoResults, float, const reco::BeamSpot &, const reco::TrackRef *) const
Construct Tracks to be put in the event.
Definition: DAFTrackProducerAlgorithm.cc:229
FreeTrajectoryState::position
GlobalPoint position() const
Definition: FreeTrajectoryState.h:67
TrackingRecHit::RecHitPointer
std::shared_ptr< TrackingRecHit const > RecHitPointer
Definition: TrackingRecHit.h:24
Trajectory::foundHits
int foundHits() const
Definition: Trajectory.h:206
findQualityFiles.v
v
Definition: findQualityFiles.py:179
TTmap
std::map< reco::TransientTrack, AlgebraicMatrix33 > TTmap
Definition: TTtoTTmap.h:11
DAFTrackProducerAlgorithm.h
convertSQLiteXML.ok
bool ok
Definition: convertSQLiteXML.py:98
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
TrajectoryStateWithArbitraryError
Definition: TrajectoryStateWithArbitraryError.h:15
TkTransientTrackingRecHitBuilder.h
edm::Ref
Definition: AssociativeIterator.h:58
SiTrackerMultiRecHitUpdator
Definition: SiTrackerMultiRecHitUpdator.h:27
ndof
Definition: HIMultiTrackSelector.h:49
DetId
Definition: DetId.h:17
cmsdt::algo
algo
Definition: constants.h:171
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
cms::cuda::bs
bs
Definition: HistoContainer.h:76
TrajectoryStateOnSurface::freeState
FreeTrajectoryState const * freeState(bool withErrors=true) const
Definition: TrajectoryStateOnSurface.h:58
Track.h
TrackingRecHit::RecHitContainer
std::vector< ConstRecHitPointer > RecHitContainer
Definition: TrackingRecHit.h:31
nHits
const caConstants::TupleMultiplicity *__restrict__ const HitsOnGPU *__restrict__ double *__restrict__ float *__restrict__ double *__restrict__ uint32_t nHits
Definition: BrokenLineFitOnGPU.h:27
MultiRecHitCollector::recHits
virtual std::vector< TrajectoryMeasurement > recHits(const Trajectory &, const MeasurementTrackerEvent *theMTE) const =0
MultiRecHitCollector
Definition: MultiRecHitCollector.h:10
FreeTrajectoryState::curvilinearError
const CurvilinearTrajectoryError & curvilinearError() const
Definition: FreeTrajectoryState.h:89
reco::BeamSpot
Definition: BeamSpot.h:21
SiTrackerMultiRecHit.h
reco::Track
Definition: Track.h:27
TrajectoryStateWithArbitraryError.h
DAFTrackProducerAlgorithm::countingGoodHits
int countingGoodHits(const Trajectory traj) const
Definition: DAFTrackProducerAlgorithm.cc:282
TrajectoryFitter.h
MeasurementTrackerEvent::idToDet
MeasurementDetWithData idToDet(const DetId &id) const
Previous MeasurementDetSystem interface.
Definition: MeasurementTrackerEvent.h:76
SiTrackerMultiRecHit::weight
float weight(unsigned int i) const
Definition: SiTrackerMultiRecHit.h:52
Point3DBase< float, GlobalTag >
TrajAnnealing.h
DAFTrackProducerAlgorithm::collectHits
std::pair< TransientTrackingRecHit::RecHitContainer, TrajectoryStateOnSurface > collectHits(const Trajectory vtraj, const MultiRecHitCollector *measurementCollector, const MeasurementTrackerEvent *measTk) const
Definition: DAFTrackProducerAlgorithm.cc:137
edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >::const_iterator
friend struct const_iterator
Definition: AssociationMap.h:274
HLT_FULL_cff.updator
updator
Definition: HLT_FULL_cff.py:123
TrajectoryStateCombiner
Definition: TrajectoryStateCombiner.h:13
TrajectoryStateOnSurface::localPosition
LocalPoint localPosition() const
Definition: TrajectoryStateOnSurface.h:74
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
MeasurementTrackerEvent
Definition: MeasurementTrackerEvent.h:16
edm::ParameterSet
Definition: ParameterSet.h:47
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
TrajectorySeed::direction
PropagationDirection direction() const
Definition: TrajectorySeed.h:54
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >
Trajectory::lastMeasurement
TrajectoryMeasurement const & lastMeasurement() const
Definition: Trajectory.h:150
DAFTrackProducerAlgorithm::PrintHit
void PrintHit(const TrackingRecHit *const &hit, TrajectoryStateOnSurface &tsos) const
Definition: DAFTrackProducerAlgorithm.cc:474
TrackingRecHit::missing
Definition: TrackingRecHit.h:47
math::XYZVector
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
DAFTrackProducerAlgorithm::calculateNdof
float calculateNdof(const Trajectory vtraj) const
Definition: DAFTrackProducerAlgorithm.cc:376
createfilelist.int
int
Definition: createfilelist.py:10
TkCloner.h
DAFTrackProducerAlgorithm::runWithCandidate
void runWithCandidate(const TrackingGeometry *, const MagneticField *, const TrajTrackAssociationCollection &, const MeasurementTrackerEvent *measTk, const TrajectoryFitter *, const TransientTrackingRecHitBuilder *, const MultiRecHitCollector *measurementTracker, const SiTrackerMultiRecHitUpdator *, const reco::BeamSpot &, AlgoProductCollection &, TrajAnnealingCollection &, bool, AlgoProductCollection &, AlgoProductCollection &) const
Run the Final Fit taking TrackCandidates as input.
Definition: DAFTrackProducerAlgorithm.cc:30
DAFTrackProducerAlgorithm::checkHits
int checkHits(Trajectory iInitTraj, const Trajectory iFinalTraj) const
Definition: DAFTrackProducerAlgorithm.cc:397
TkClonerImpl.h
MagneticField.h
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
OmniClusterRef.h
TrajectoryFitter::fit
std::vector< Trajectory > fit(const Trajectory &traj, fitType type=standard) const
Definition: TrajectoryFitter.h:43
Trajectory::measurements
DataContainer const & measurements() const
Definition: Trajectory.h:178
TrackingRecHit
Definition: TrackingRecHit.h:21
DAFTrackProducerAlgorithm::updateHits
std::pair< TransientTrackingRecHit::RecHitContainer, TrajectoryStateOnSurface > updateHits(const Trajectory vtraj, const SiTrackerMultiRecHitUpdator *updator, const MeasurementTrackerEvent *theMTE, double annealing) const
Definition: DAFTrackProducerAlgorithm.cc:172
TrajectoryMeasurement::recHit
ConstRecHitPointer const & recHit() const
Definition: TrajectoryMeasurement.h:190
TrajectoryFitter
Definition: TrajectoryFitter.h:19
MultiRecHitCollector.h
TkClonerImpl
Definition: TkClonerImpl.h:12
Trajectory::firstMeasurement
TrajectoryMeasurement const & firstMeasurement() const
Definition: Trajectory.h:166
MeasurementDetWithData
Definition: MeasurementDetWithData.h:6
Trajectory
Definition: Trajectory.h:38
TSCBLBuilderNoMaterial
Definition: TSCBLBuilderNoMaterial.h:13
makeMuonMisalignmentScenario.components
string components
Definition: makeMuonMisalignmentScenario.py:58
TransverseImpactPointExtrapolator.h
Trajectory::seed
TrajectorySeed const & seed() const
Access to the seed used to reconstruct the Trajectory.
Definition: Trajectory.h:263
TrajectorySeed
Definition: TrajectorySeed.h:18
TrajectoryStateTransform.h
DAFTrackProducerAlgorithm::fit
Trajectory fit(const std::pair< TransientTrackingRecHit::RecHitContainer, TrajectoryStateOnSurface > &hits, const TrajectoryFitter *theFitter, Trajectory vtraj) const
accomplishes the fitting-smoothing step for each annealing value
Definition: DAFTrackProducerAlgorithm.cc:214
edm::Ref::key
key_type key() const
Accessor for product key.
Definition: Ref.h:250
TransientTrackingRecHitBuilder.h
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
TrajectoryStateClosestToBeamLine::isValid
bool isValid() const
Definition: TrajectoryStateClosestToBeamLine.h:50
heavyFlavorValidationHarvestingSequence_cff.combiner
combiner
Definition: heavyFlavorValidationHarvestingSequence_cff.py:107
TrackCandidate.h
TrajectoryStateClosestToBeamLine::trackStateAtPCA
FTS const & trackStateAtPCA() const
Definition: TrajectoryStateClosestToBeamLine.h:32
InvalidTrackingRecHit.h
TrajectoryFitter::fitOne
virtual Trajectory fitOne(const Trajectory &traj, fitType type=standard) const =0
MagneticField
Definition: MagneticField.h:19
TransientTrackingRecHitBuilder
Definition: TransientTrackingRecHitBuilder.h:6
TrajectoryMeasurement
Definition: TrajectoryMeasurement.h:25
SiTrackerMultiRecHit
Definition: SiTrackerMultiRecHit.h:13
TrackingRecHit::isValid
bool isValid() const
Definition: TrackingRecHit.h:141
alongMomentum
Definition: PropagationDirection.h:4
weight
Definition: weight.py:1
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
Trajectory::isValid
bool isValid() const
Definition: Trajectory.h:257
hit
Definition: SiStripHitEffFromCalibTree.cc:88
SiTrackerMultiRecHitUpdator.h
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37