CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes
MuonCkfTrajectoryBuilder Class Reference

#include <MuonCkfTrajectoryBuilder.h>

Inheritance diagram for MuonCkfTrajectoryBuilder:
CkfTrajectoryBuilder BaseCkfTrajectoryBuilder TrajectoryBuilder

Public Member Functions

 MuonCkfTrajectoryBuilder (const edm::ParameterSet &conf, edm::ConsumesCollector &iC)
 
 ~MuonCkfTrajectoryBuilder () override
 
- Public Member Functions inherited from CkfTrajectoryBuilder
TempTrajectory buildTrajectories (const TrajectorySeed &, TrajectoryContainer &ret, unsigned int &nCandPerSeed, const TrajectoryFilter *) const override
 
 CkfTrajectoryBuilder (const edm::ParameterSet &conf, edm::ConsumesCollector iC)
 
 CkfTrajectoryBuilder (const edm::ParameterSet &conf, edm::ConsumesCollector iC, std::unique_ptr< TrajectoryFilter > filter)
 
void rebuildTrajectories (TempTrajectory const &startingTraj, const TrajectorySeed &, TrajectoryContainer &result) const override
 
TrajectoryContainer trajectories (const TrajectorySeed &seed) const override
 trajectories building starting from a seed More...
 
void trajectories (const TrajectorySeed &seed, TrajectoryContainer &ret) const override
 trajectories building starting from a seed More...
 
 ~CkfTrajectoryBuilder () override
 
- Public Member Functions inherited from BaseCkfTrajectoryBuilder
 BaseCkfTrajectoryBuilder (const edm::ParameterSet &conf, edm::ConsumesCollector iC, std::unique_ptr< TrajectoryFilter > filter, std::unique_ptr< TrajectoryFilter > inOutFilter=nullptr)
 
 BaseCkfTrajectoryBuilder (const BaseCkfTrajectoryBuilder &)=delete
 
const
TransientTrackingRecHitBuilder
hitBuilder () const
 
BaseCkfTrajectoryBuilderoperator= (const BaseCkfTrajectoryBuilder &)=delete
 
virtual void setDebugger (CkfDebugger *dbg) const
 
void setEvent (const edm::Event &event) const override
 
void setEvent (const edm::Event &iEvent, const edm::EventSetup &iSetup, const MeasurementTrackerEvent *data)
 
void setNavigationSchool (NavigationSchool const *nv)
 
void unset () const override
 
 ~BaseCkfTrajectoryBuilder () override
 
- Public Member Functions inherited from TrajectoryBuilder
virtual void rebuildSeedingRegion (const TrajectorySeed &, TrajectoryContainer &result) const
 
virtual ~TrajectoryBuilder ()
 

Protected Member Functions

void collectMeasurement (const DetLayer *layer, const std::vector< const DetLayer * > &nl, const TrajectoryStateOnSurface &currentState, std::vector< TM > &result, int &invalidHits, const Propagator *) const
 
void findCompatibleMeasurements (const TrajectorySeed &seed, const TempTrajectory &traj, std::vector< TrajectoryMeasurement > &result) const override
 
void setEvent_ (const edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
- Protected Member Functions inherited from CkfTrajectoryBuilder
unsigned int limitedCandidates (const TrajectorySeed &seed, TempTrajectory &startingTraj, TrajectoryContainer &result) const
 
unsigned int limitedCandidates (const std::shared_ptr< const TrajectorySeed > &sharedSeed, TempTrajectoryContainer &candidates, TrajectoryContainer &result) const
 
void setEvent_ (const edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
void updateTrajectory (TempTrajectory &traj, TM &&tm) const
 
- Protected Member Functions inherited from BaseCkfTrajectoryBuilder
void addToResult (std::shared_ptr< const TrajectorySeed > const &seed, TempTrajectory &traj, TrajectoryContainer &result, bool inOut=false) const
 
void addToResult (TempTrajectory const &traj, TempTrajectoryContainer &result, bool inOut=false) const
 
virtual bool analyzeMeasurementsDebugger (Trajectory &traj, const std::vector< TrajectoryMeasurement > &meas, const MeasurementTrackerEvent *theMeasurementTracker, const Propagator *theForwardPropagator, const Chi2MeasurementEstimatorBase *theEstimator, const TransientTrackingRecHitBuilder *theTTRHBuilder) const
 
virtual bool analyzeMeasurementsDebugger (TempTrajectory &traj, const std::vector< TrajectoryMeasurement > &meas, const MeasurementTrackerEvent *theMeasurementTracker, const Propagator *theForwardPropagator, const Chi2MeasurementEstimatorBase *theEstimator, const TransientTrackingRecHitBuilder *theTTRHBuilder) const
 
const PropagatorbackwardPropagator (const TrajectorySeed &seed) const
 
TempTrajectory createStartingTrajectory (const TrajectorySeed &seed) const
 
virtual void fillSeedHistoDebugger (std::vector< TrajectoryMeasurement >::iterator begin, std::vector< TrajectoryMeasurement >::iterator end) const
 
StateAndLayers findStateAndLayers (const TrajectorySeed &seed, const TempTrajectory &traj) const
 
const PropagatorforwardPropagator (const TrajectorySeed &seed) const
 
void moveToResult (TempTrajectory &&traj, TempTrajectoryContainer &result, bool inOut=false) const
 
bool qualityFilter (const TempTrajectory &traj, bool inOut=false) const
 
void setData (const MeasurementTrackerEvent *data)
 
bool toBeContinued (TempTrajectory &traj, bool inOut=false) const
 

Protected Attributes

const double theDeltaEta
 
const double theDeltaPhi
 
edm::ESWatcher
< BaseCkfTrajectoryBuilder::Chi2MeasurementEstimatorRecord
theEstimatorWatcher
 
std::unique_ptr
< Chi2MeasurementEstimatorBase
theEtaPhiEstimator
 
const edm::ESGetToken
< Propagator,
TrackingComponentsRecord
thePropagatorToken
 
const PropagatortheProximityPropagator
 
const std::string theProximityPropagatorName
 
double theRescaleErrorIfFail
 
bool theUseSeedLayer
 
- Protected Attributes inherited from CkfTrajectoryBuilder
bool theAlwaysUseInvalidHits
 
bool theIntermediateCleaning
 
float theLostHitPenalty
 
int theMaxCand
 set Event for the internal MeasurementTracker data member More...
 
- Protected Attributes inherited from BaseCkfTrajectoryBuilder
const
Chi2MeasurementEstimatorBase
theEstimator = nullptr
 
const MeasurementTrackerEventtheMeasurementTracker = nullptr
 
const NavigationSchooltheNavigationSchool = nullptr
 
const PropagatorthePropagatorAlong = nullptr
 
const PropagatorthePropagatorOpposite = nullptr
 
const
TransientTrackingRecHitBuilder
theTTRHBuilder = nullptr
 
const TrajectoryStateUpdatortheUpdator = nullptr
 

Additional Inherited Members

- Public Types inherited from CkfTrajectoryBuilder
typedef std::vector
< TempTrajectory
TempTrajectoryContainer
 
typedef std::vector< TrajectoryTrajectoryContainer
 
- Public Types inherited from BaseCkfTrajectoryBuilder
typedef std::vector
< TempTrajectory
TempTrajectoryContainer
 
typedef std::vector< TrajectoryTrajectoryContainer
 
typedef
TrajectoryContainer::iterator 
TrajectoryIterator
 
- Public Types inherited from TrajectoryBuilder
typedef std::vector< TrajectoryTrajectoryContainer
 
typedef
TrajectoryContainer::iterator 
TrajectoryIterator
 
- Protected Types inherited from BaseCkfTrajectoryBuilder
typedef TrackingComponentsRecord Chi2MeasurementEstimatorRecord
 
typedef FreeTrajectoryState FTS
 
typedef std::pair< TSOS,
std::vector< const DetLayer * > > 
StateAndLayers
 
typedef TrajectoryMeasurement TM
 
typedef TrajectoryStateOnSurface TSOS
 
- Static Protected Member Functions inherited from BaseCkfTrajectoryBuilder
static std::unique_ptr
< TrajectoryFilter
createTrajectoryFilter (const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
 

Detailed Description

Definition at line 8 of file MuonCkfTrajectoryBuilder.h.

Constructor & Destructor Documentation

MuonCkfTrajectoryBuilder::MuonCkfTrajectoryBuilder ( const edm::ParameterSet conf,
edm::ConsumesCollector iC 
)

Definition at line 18 of file MuonCkfTrajectoryBuilder.cc.

References edm::ParameterSet::getParameter(), theRescaleErrorIfFail, and theUseSeedLayer.

19  : CkfTrajectoryBuilder(conf, iC),
20  theDeltaEta(conf.getParameter<double>("deltaEta")),
21  theDeltaPhi(conf.getParameter<double>("deltaPhi")),
22  theProximityPropagatorName(conf.getParameter<std::string>("propagatorProximity")),
23  theProximityPropagator(nullptr),
25  theEtaPhiEstimator(nullptr) {
26  //and something specific to me ?
27  theUseSeedLayer = conf.getParameter<bool>("useSeedLayer");
28  theRescaleErrorIfFail = conf.getParameter<double>("rescaleErrorIfFail");
29 }
const Propagator * theProximityPropagator
const edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropagatorToken
CkfTrajectoryBuilder(const edm::ParameterSet &conf, edm::ConsumesCollector iC)
const std::string theProximityPropagatorName
std::unique_ptr< Chi2MeasurementEstimatorBase > theEtaPhiEstimator
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
MuonCkfTrajectoryBuilder::~MuonCkfTrajectoryBuilder ( )
override

Definition at line 31 of file MuonCkfTrajectoryBuilder.cc.

31 {}

Member Function Documentation

void MuonCkfTrajectoryBuilder::collectMeasurement ( const DetLayer layer,
const std::vector< const DetLayer * > &  nl,
const TrajectoryStateOnSurface currentState,
std::vector< TM > &  result,
int &  invalidHits,
const Propagator prop 
) const
protected

Definition at line 73 of file MuonCkfTrajectoryBuilder.cc.

References PrintoutHelper::dumpMeasurements(), TransverseImpactPointExtrapolator::extrapolate(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), TrajectoryStateOnSurface::isValid(), LogDebug, MeasurementTrackerEvent::measurementTracker(), BaseCkfTrajectoryBuilder::theEstimator, theEtaPhiEstimator, BaseCkfTrajectoryBuilder::theMeasurementTracker, and createJobs::tmp.

Referenced by findCompatibleMeasurements().

78  {
79  for (std::vector<const DetLayer*>::const_iterator il = nl.begin(); il != nl.end(); il++) {
80  TSOS stateToUse = currentState;
81 
82  if (layer == (*il)) {
83  LogDebug("CkfPattern") << " self propagating in findCompatibleMeasurements.\n from: \n" << stateToUse;
84  //self navigation case
85  // go to a middle point first
87  GlobalPoint center(0, 0, 0);
88  stateToUse = middle.extrapolate(stateToUse, center, *prop);
89 
90  if (!stateToUse.isValid())
91  continue;
92  LogDebug("CkfPattern") << "to: " << stateToUse;
93  }
94 
96  std::vector<TM> tmp = layerMeasurements.measurements((**il), stateToUse, *prop, *theEstimator);
97 
98  if (tmp.size() == 1 && theEtaPhiEstimator) {
99  LogDebug("CkfPattern") << "only an invalid hit is found. trying differently";
100  tmp = layerMeasurements.measurements((**il), stateToUse, *prop, *theEtaPhiEstimator);
101  }
102  LogDebug("CkfPattern") << tmp.size() << " measurements returned by LayerMeasurements";
103 
104  if (!tmp.empty()) {
105  // FIXME durty-durty-durty cleaning: never do that please !
106  /* for (vector<TM>::iterator it = tmp.begin(); it!=tmp.end(); ++it)
107  {if (it->recHit()->det()==0) it=tmp.erase(it)--;}*/
108 
109  if (result.empty())
110  result = tmp;
111  else {
112  // keep one dummy TM at the end, skip the others
113  result.insert(result.end() - invalidHits, tmp.begin(), tmp.end());
114  }
115  invalidHits++;
116  }
117  }
118 
119  LogDebug("CkfPattern") << "starting from:\n"
120  << "x: " << currentState.globalPosition() << "\n"
121  << "p: " << currentState.globalMomentum() << "\n"
123 }
GlobalPoint globalPosition() const
static std::string dumpMeasurements(const std::vector< TrajectoryMeasurement > &v)
tuple result
Definition: mps_fire.py:311
const MeasurementTracker & measurementTracker() const
const MeasurementTrackerEvent * theMeasurementTracker
std::unique_ptr< Chi2MeasurementEstimatorBase > theEtaPhiEstimator
TrajectoryStateOnSurface extrapolate(const FreeTrajectoryState &fts, const GlobalPoint &vtx) const
extrapolation with default (=geometrical) propagator
GlobalVector globalMomentum() const
tmp
align.sh
Definition: createJobs.py:716
const Chi2MeasurementEstimatorBase * theEstimator
#define LogDebug(id)
void MuonCkfTrajectoryBuilder::findCompatibleMeasurements ( const TrajectorySeed seed,
const TempTrajectory traj,
std::vector< TrajectoryMeasurement > &  result 
) const
overrideprotectedvirtual

Reimplemented from CkfTrajectoryBuilder.

Definition at line 125 of file MuonCkfTrajectoryBuilder.cc.

References alongMomentum, collectMeasurement(), PTrajectoryStateOnDet::detId(), GeometricSearchTracker::detLayer(), TempTrajectory::direction(), TempTrajectory::empty(), BaseCkfTrajectoryBuilder::forwardPropagator(), TrajectoryStateOnSurface::freeState(), g, MeasurementTrackerEvent::geometricSearchTracker(), MeasurementTrackerEvent::geomTracker(), mps_fire::i, gpuClustering::id, TrackerGeometry::idToDet(), insideOut, cmsLHEtoEOSManager::l, TempTrajectory::lastLayer(), TempTrajectory::lastMeasurement(), LogDebug, HLT_FULL_cff::magneticField, NavigationSchool::nextLayers(), outsideIn, TrajectoryMeasurement::recHit(), TrajectoryStateOnSurface::rescaleError(), mps_fire::result, TrajectorySeed::startingState(), BaseCkfTrajectoryBuilder::theMeasurementTracker, BaseCkfTrajectoryBuilder::theNavigationSchool, theProximityPropagator, theRescaleErrorIfFail, theUseSeedLayer, trajectoryStateTransform::transientState(), and TrajectoryMeasurement::updatedState().

127  {
128  int invalidHits = 0;
129 
130  std::vector<const DetLayer*> nl;
131 
132  if (traj.empty()) {
133  LogDebug("CkfPattern") << "using JR patch for no measurement case";
134  //what if there are no measurement on the Trajectory
135 
136  //set the currentState to be the one from the trajectory seed starting point
137  PTrajectoryStateOnDet ptod = seed.startingState();
138  DetId id(ptod.detId());
140  const Surface* surface = &g->surface();
141 
142  TrajectoryStateOnSurface currentState(
144 
145  //set the next layers to be that one the state is on
147 
148  if (theUseSeedLayer) {
149  {
150  //get the measurements on the layer first
151  LogDebug("CkfPattern") << "using the layer of the seed first.";
152  nl.push_back(l);
153  collectMeasurement(l, nl, currentState, result, invalidHits, theProximityPropagator);
154  }
155 
156  //if fails: try to rescale locally the state to find measurements
157  if ((unsigned int)invalidHits == result.size() && theRescaleErrorIfFail != 1.0 && !result.empty()) {
158  result.clear();
159  LogDebug("CkfPattern") << "using a rescale by " << theRescaleErrorIfFail << " to find measurements.";
160  TrajectoryStateOnSurface rescaledCurrentState = currentState;
161  rescaledCurrentState.rescaleError(theRescaleErrorIfFail);
162  invalidHits = 0;
163  collectMeasurement(l, nl, rescaledCurrentState, result, invalidHits, theProximityPropagator);
164  }
165  }
166 
167  //if fails: go to next layers
168  if (result.empty() || (unsigned int)invalidHits == result.size()) {
169  result.clear();
170  LogDebug("CkfPattern") << "Need to go to next layer to get measurements";
171  //the following will "JUMP" the first layer measurements
172  nl = theNavigationSchool->nextLayers(*l, *currentState.freeState(), traj.direction());
173  if (nl.empty()) {
174  LogDebug("CkfPattern") << " there was no next layer with wellInside. Use the next with no check.";
175  //means you did not get any compatible layer on the next 1/2 tracker layer.
176  // use the next layers with no checking
178  }
179  invalidHits = 0;
180  collectMeasurement(l, nl, currentState, result, invalidHits, forwardPropagator(seed));
181  }
182 
183  //if fails: this is on the next layers already, try rescaling locally the state
184  if (!result.empty() && (unsigned int)invalidHits == result.size() && theRescaleErrorIfFail != 1.0) {
185  result.clear();
186  LogDebug("CkfPattern") << "using a rescale by " << theRescaleErrorIfFail
187  << " to find measurements on next layers.";
188  TrajectoryStateOnSurface rescaledCurrentState = currentState;
189  rescaledCurrentState.rescaleError(theRescaleErrorIfFail);
190  invalidHits = 0;
191  collectMeasurement(l, nl, rescaledCurrentState, result, invalidHits, forwardPropagator(seed));
192  }
193 
194  } else //regular case
195  {
196  TSOS currentState(traj.lastMeasurement().updatedState());
197 
198  nl = theNavigationSchool->nextLayers(*traj.lastLayer(), *currentState.freeState(), traj.direction());
199  if (nl.empty()) {
200  LogDebug("CkfPattern") << " no next layers... going " << traj.direction() << "\n from: \n"
201  << currentState
202  << "\n from detId: " << traj.lastMeasurement().recHit()->geographicalId().rawId();
203  return;
204  }
205 
206  collectMeasurement(traj.lastLayer(), nl, currentState, result, invalidHits, forwardPropagator(seed));
207  }
208 
209  // sort the final result, keep dummy measurements at the end
210  if (result.size() > 1) {
211  sort(result.begin(), result.end() - invalidHits, TrajMeasLessEstim());
212  }
213 
214 #ifdef DEBUG_INVALID
215  bool afterInvalid = false;
216  for (std::vector<TM>::const_iterator i = result.begin(); i != result.end(); i++) {
217  if (!i->recHit().isValid())
218  afterInvalid = true;
219  if (afterInvalid && i->recHit().isValid()) {
220  edm::LogError("CkfPattern") << "CkfTrajectoryBuilder error: valid hit after invalid!";
221  }
222  }
223 #endif
224 
225  //analyseMeasurements( result, traj);
226 }
const Propagator * theProximityPropagator
ConstRecHitPointer const & recHit() const
bool empty() const
True if trajectory has no measurements.
uint16_t *__restrict__ id
const Propagator * forwardPropagator(const TrajectorySeed &seed) const
tuple magneticField
Log< level::Error, false > LogError
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
tuple result
Definition: mps_fire.py:311
const TrajectoryMeasurement & lastMeasurement() const
PropagationDirection direction() const
const DetLayer * detLayer(const DetId &id) const
obsolete method. Use idToLayer() instead.
unsigned int detId() const
const TrackerGeomDet * idToDet(DetId) const override
const MeasurementTrackerEvent * theMeasurementTracker
Definition: DetId.h:17
void collectMeasurement(const DetLayer *layer, const std::vector< const DetLayer * > &nl, const TrajectoryStateOnSurface &currentState, std::vector< TM > &result, int &invalidHits, const Propagator *) const
const TrackerGeometry * geomTracker() const
PTrajectoryStateOnDet const & startingState() const
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field)
std::vector< const DetLayer * > nextLayers(const DetLayer &detLayer, Args &&...args) const
const NavigationSchool * theNavigationSchool
TrajectoryStateOnSurface const & updatedState() const
const DetLayer * lastLayer() const
Redundant method, returns the layer of lastMeasurement() .
const GeometricSearchTracker * geometricSearchTracker() const
#define LogDebug(id)
void MuonCkfTrajectoryBuilder::setEvent_ ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprotectedvirtual

Implements BaseCkfTrajectoryBuilder.

Definition at line 33 of file MuonCkfTrajectoryBuilder.cc.

References edm::ESWatcher< T >::check(), edm::EventSetup::getData(), CkfTrajectoryBuilder::setEvent_(), theDeltaEta, theDeltaPhi, BaseCkfTrajectoryBuilder::theEstimator, theEstimatorWatcher, theEtaPhiEstimator, thePropagatorToken, and theProximityPropagator.

33  {
34  CkfTrajectoryBuilder::setEvent_(iEvent, iSetup);
35 
37 
38  // theEstimator is set for this event in the base class
39  if (theEstimatorWatcher.check(iSetup) && theDeltaEta > 0 && theDeltaPhi > 0)
40  theEtaPhiEstimator = std::make_unique<EtaPhiEstimator>(theDeltaEta, theDeltaPhi, theEstimator);
41 }
const Propagator * theProximityPropagator
const edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropagatorToken
bool getData(T &iHolder) const
Definition: EventSetup.h:128
std::unique_ptr< Chi2MeasurementEstimatorBase > theEtaPhiEstimator
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
edm::ESWatcher< BaseCkfTrajectoryBuilder::Chi2MeasurementEstimatorRecord > theEstimatorWatcher
void setEvent_(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
const Chi2MeasurementEstimatorBase * theEstimator

Member Data Documentation

const double MuonCkfTrajectoryBuilder::theDeltaEta
protected

Definition at line 30 of file MuonCkfTrajectoryBuilder.h.

Referenced by setEvent_().

const double MuonCkfTrajectoryBuilder::theDeltaPhi
protected

Definition at line 31 of file MuonCkfTrajectoryBuilder.h.

Referenced by setEvent_().

edm::ESWatcher<BaseCkfTrajectoryBuilder::Chi2MeasurementEstimatorRecord> MuonCkfTrajectoryBuilder::theEstimatorWatcher
protected

Definition at line 35 of file MuonCkfTrajectoryBuilder.h.

Referenced by setEvent_().

std::unique_ptr<Chi2MeasurementEstimatorBase> MuonCkfTrajectoryBuilder::theEtaPhiEstimator
protected

Definition at line 36 of file MuonCkfTrajectoryBuilder.h.

Referenced by collectMeasurement(), and setEvent_().

const edm::ESGetToken<Propagator, TrackingComponentsRecord> MuonCkfTrajectoryBuilder::thePropagatorToken
protected

Definition at line 34 of file MuonCkfTrajectoryBuilder.h.

Referenced by setEvent_().

const Propagator* MuonCkfTrajectoryBuilder::theProximityPropagator
protected

Definition at line 33 of file MuonCkfTrajectoryBuilder.h.

Referenced by findCompatibleMeasurements(), and setEvent_().

const std::string MuonCkfTrajectoryBuilder::theProximityPropagatorName
protected

Definition at line 32 of file MuonCkfTrajectoryBuilder.h.

double MuonCkfTrajectoryBuilder::theRescaleErrorIfFail
protected
bool MuonCkfTrajectoryBuilder::theUseSeedLayer
protected