#include <DTRecHitBaseAlgo.h>
Public Member Functions | |
virtual bool | compute (const DTLayer *layer, const DTDigi &digi, LocalPoint &leftPoint, LocalPoint &rightPoint, LocalError &error) const =0 |
virtual bool | compute (const DTLayer *layer, const DTRecHit1D &recHit1D, const float &angle, const GlobalPoint &globPos, DTRecHit1D &newHit1D) const =0 |
virtual bool | compute (const DTLayer *layer, const DTRecHit1D &recHit1D, const float &angle, DTRecHit1D &newHit1D) const =0 |
DTRecHitBaseAlgo (const edm::ParameterSet &config) | |
Constructor. | |
virtual edm::OwnVector < DTRecHit1DPair > | reconstruct (const DTLayer *layer, const DTLayerId &layerId, const DTDigiCollection::Range &digiRange) |
Build all hits in the range associated to the layerId, at the 1st step. | |
virtual void | setES (const edm::EventSetup &setup)=0 |
Pass the Event Setup to the algo at each event. | |
virtual | ~DTRecHitBaseAlgo () |
Destructor. | |
Protected Attributes | |
DTTTrigBaseSync * | theSync |
Abstract algorithmic class to compute drift distance and error form a DT digi
Definition at line 35 of file DTRecHitBaseAlgo.h.
DTRecHitBaseAlgo::DTRecHitBaseAlgo | ( | const edm::ParameterSet & | config | ) |
Constructor.
Definition at line 21 of file DTRecHitBaseAlgo.cc.
References reco::get(), and edm::ParameterSet::getParameter().
{ theSync = DTTTrigSyncFactory::get()->create(config.getParameter<string>("tTrigMode"), config.getParameter<ParameterSet>("tTrigModeConfig")); }
DTRecHitBaseAlgo::~DTRecHitBaseAlgo | ( | ) | [virtual] |
virtual bool DTRecHitBaseAlgo::compute | ( | const DTLayer * | layer, |
const DTDigi & | digi, | ||
LocalPoint & | leftPoint, | ||
LocalPoint & | rightPoint, | ||
LocalError & | error | ||
) | const [pure virtual] |
First step in computation of Left/Right hits from a Digi. The results are the local position (in MuBarLayer frame) of the Left and Right hit, and the error (which is common). Returns false on failure.
Implemented in DTLinearDriftAlgo, DTLinearDriftFromDBAlgo, DTNoDriftAlgo, and DTParametrizedDriftAlgo.
Referenced by DTSegmentUpdator::updateHits().
virtual bool DTRecHitBaseAlgo::compute | ( | const DTLayer * | layer, |
const DTRecHit1D & | recHit1D, | ||
const float & | angle, | ||
const GlobalPoint & | globPos, | ||
DTRecHit1D & | newHit1D | ||
) | const [pure virtual] |
Third (and final) step in hits position computation, for algorithms which support it. In addition the the angle, also the global position of the hit is given as input. This allows to get the magnetic field at the hit position (and not only that at the center of the wire). Also the position along the wire is available and can be used to correct the drift time for particle TOF and propagation of signal along the wire.
Implemented in DTLinearDriftAlgo, DTLinearDriftFromDBAlgo, DTNoDriftAlgo, and DTParametrizedDriftAlgo.
virtual bool DTRecHitBaseAlgo::compute | ( | const DTLayer * | layer, |
const DTRecHit1D & | recHit1D, | ||
const float & | angle, | ||
DTRecHit1D & | newHit1D | ||
) | const [pure virtual] |
Second step in hit position computation, for algorithms which support it. The impact angle is given as input, and it's used to improve the hit position (and relative error). The angle is defined in radians, with respect to the perpendicular to the layer plane. Given the local direction, angle=atan(dir.x()/-dir.z()) . This can be used when a SL segment is built, so the impact angle is known but the position along wire is not.
Implemented in DTLinearDriftAlgo, DTLinearDriftFromDBAlgo, DTNoDriftAlgo, and DTParametrizedDriftAlgo.
OwnVector< DTRecHit1DPair > DTRecHitBaseAlgo::reconstruct | ( | const DTLayer * | layer, |
const DTLayerId & | layerId, | ||
const DTDigiCollection::Range & | digiRange | ||
) | [virtual] |
Build all hits in the range associated to the layerId, at the 1st step.
Reimplemented in DTNoDriftAlgo.
Definition at line 30 of file DTRecHitBaseAlgo.cc.
References bookConverter::compute(), DTEnums::Left, edm::OwnVector< T, P >::push_back(), query::result, DTEnums::Right, and DTRecHit1DPair::setPositionAndError().
{ OwnVector<DTRecHit1DPair> result; // Loop over all digis in the given range for (DTDigiCollection::const_iterator digi = digiRange.first; digi != digiRange.second; digi++) { // Get the wireId DTWireId wireId(layerId, (*digi).wire()); LocalError tmpErr; LocalPoint lpoint, rpoint; // Call the compute method bool OK = compute(layer, *digi, lpoint, rpoint, tmpErr); if (!OK) continue; // Build a new pair of 1D rechit DTRecHit1DPair* recHitPair = new DTRecHit1DPair(wireId, *digi); // Set the position and the error of the 1D rechits recHitPair->setPositionAndError(DTEnums::Left, lpoint, tmpErr); recHitPair->setPositionAndError(DTEnums::Right, rpoint, tmpErr); result.push_back(recHitPair); } return result; }
virtual void DTRecHitBaseAlgo::setES | ( | const edm::EventSetup & | setup | ) | [pure virtual] |
Pass the Event Setup to the algo at each event.
Implemented in DTLinearDriftAlgo, DTLinearDriftFromDBAlgo, DTNoDriftAlgo, and DTParametrizedDriftAlgo.
Referenced by DTSegmentUpdator::setES().
DTTTrigBaseSync* DTRecHitBaseAlgo::theSync [protected] |
Definition at line 94 of file DTRecHitBaseAlgo.h.
Referenced by DTLinearDriftFromDBAlgo::compute(), DTLinearDriftAlgo::compute(), DTLinearDriftFromDBAlgo::setES(), and DTLinearDriftAlgo::setES().