CMS 3D CMS Logo

TrajAnnealing.cc
Go to the documentation of this file.
5 
6 TrajAnnealing::TrajAnnealing(const Trajectory& traj, float ann) {
7  traj_ = traj;
8  annealing_ = ann;
9 
10  const Trajectory::DataContainer& measurements = traj_.measurements();
11  if (measurements.size() > 2) {
12  Trajectory::DataContainer::const_iterator ibegin, iend;
13  int increment(0);
14  if (traj.direction() == alongMomentum) {
15  ibegin = measurements.begin() + 1;
16  iend = measurements.end() - 1;
17  increment = 1;
18  } else {
19  ibegin = measurements.end() - 2;
20  iend = measurements.begin();
21  increment = -1;
22  }
23 
24  for (Trajectory::DataContainer::const_iterator imeas = ibegin; imeas != iend; imeas += increment) {
25  theHits_.push_back(imeas->recHit());
26  if (imeas->recHit()->isValid()) {
27  SiTrackerMultiRecHit const& mHit = dynamic_cast<SiTrackerMultiRecHit const&>(*imeas->recHit());
28  std::vector<const TrackingRecHit*> components = mHit.recHits();
29  int iComp = 0;
30  for (std::vector<const TrackingRecHit*>::const_iterator iter = components.begin(); iter != components.end();
31  iter++, iComp++) {
32  theWeights.push_back(mHit.weight(iComp));
33  }
34  }
35  }
36  }
37 }
38 
39 std::pair<float, std::vector<float> > TrajAnnealing::getAnnealingWeight(const TrackingRecHit& aRecHit) const {
40  if (!aRecHit.isValid()) {
41  std::vector<float> dumpyVec = {0.0};
42  return make_pair(0.0, dumpyVec);
43  }
44 
45  SiTrackerMultiRecHit const& mHit = dynamic_cast<SiTrackerMultiRecHit const&>(aRecHit);
46  return make_pair(mHit.getAnnealingFactor(), mHit.weights());
47 }
TrajAnnealing::theWeights
std::vector< float > theWeights
Definition: TrajAnnealing.h:28
TrajAnnealing::theHits_
TrackingRecHit::RecHitContainer theHits_
Definition: TrajAnnealing.h:29
TrajAnnealing::TrajAnnealing
TrajAnnealing()
Definition: TrajAnnealing.h:15
Trajectory::direction
PropagationDirection const & direction() const
Definition: Trajectory.cc:133
SiTrackerMultiRecHit::recHits
std::vector< const TrackingRecHit * > recHits() const override
Access to component RecHits (if any)
Definition: SiTrackerMultiRecHit.cc:59
TrajectoryMeasurement.h
Trajectory::DataContainer
std::vector< TrajectoryMeasurement > DataContainer
Definition: Trajectory.h:40
SiTrackerMultiRecHit.h
TrajAnnealing::annealing_
float annealing_
Definition: TrajAnnealing.h:27
SiTrackerMultiRecHit::weight
float weight(unsigned int i) const
Definition: SiTrackerMultiRecHit.h:52
TrajAnnealing.h
TrajAnnealing::traj_
Trajectory traj_
Definition: TrajAnnealing.h:26
SiTrackerMultiRecHit::getAnnealingFactor
virtual double getAnnealingFactor() const
Definition: SiTrackerMultiRecHit.h:56
SiTrackerMultiRecHit::weights
std::vector< float > const & weights() const
Definition: SiTrackerMultiRecHit.h:47
TrajAnnealing::getAnnealingWeight
std::pair< float, std::vector< float > > getAnnealingWeight(const TrackingRecHit &aRecHit) const
Definition: TrajAnnealing.cc:39
Trajectory::measurements
DataContainer const & measurements() const
Definition: Trajectory.h:178
TrackingRecHit
Definition: TrackingRecHit.h:21
Trajectory.h
Trajectory
Definition: Trajectory.h:38
makeMuonMisalignmentScenario.components
string components
Definition: makeMuonMisalignmentScenario.py:58
SiTrackerMultiRecHit
Definition: SiTrackerMultiRecHit.h:13
TrackingRecHit::isValid
bool isValid() const
Definition: TrackingRecHit.h:141
alongMomentum
Definition: PropagationDirection.h:4