CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
DTParametrizedDriftAlgo Class Reference

#include <DTParametrizedDriftAlgo.h>

Inheritance diagram for DTParametrizedDriftAlgo:
DTRecHitBaseAlgo

Public Member Functions

bool compute (const DTLayer *layer, const DTDigi &digi, LocalPoint &leftPoint, LocalPoint &rightPoint, LocalError &error) const override
 
bool compute (const DTLayer *layer, const DTRecHit1D &recHit1D, const float &angle, DTRecHit1D &newHit1D) const override
 
bool compute (const DTLayer *layer, const DTRecHit1D &recHit1D, const float &angle, const GlobalPoint &globPos, DTRecHit1D &newHit1D) const override
 
 DTParametrizedDriftAlgo (const edm::ParameterSet &config)
 Constructor. More...
 
void setES (const edm::EventSetup &setup) override
 Pass the Event Setup to the algo at each event. More...
 
 ~DTParametrizedDriftAlgo () override
 Destructor. More...
 
- Public Member Functions inherited from DTRecHitBaseAlgo
 DTRecHitBaseAlgo (const edm::ParameterSet &config)
 Constructor. More...
 
virtual edm::OwnVector< DTRecHit1DPairreconstruct (const DTLayer *layer, const DTLayerId &layerId, const DTDigiCollection::Range &digiRange)
 Build all hits in the range associated to the layerId, at the 1st step. More...
 
virtual ~DTRecHitBaseAlgo ()
 Destructor. More...
 

Private Member Functions

virtual bool compute (const DTLayer *layer, const DTWireId &wireId, const float digiTime, const float &angle, const GlobalPoint &globPos, LocalPoint &leftPoint, LocalPoint &rightPoint, LocalError &error, int step) const
 
virtual bool compute (const DTLayer *layer, const DTWireId &wireId, const float digiTime, const float &angle, const GlobalPoint &globPos, DTRecHit1D &newHit1D, int step) const
 

Private Attributes

const bool debug
 
const bool interpolate
 
const MagneticFieldmagField
 
const float maxTime
 
const float minTime
 

Additional Inherited Members

- Protected Attributes inherited from DTRecHitBaseAlgo
DTTTrigBaseSynctheSync
 

Detailed Description

Concrete implementation of DTRecHitBaseAlgo. Compute drift distance using the CIEMAT (by P.Garcia Abia and J. Puerta) parametrization of the cell behavior obtained with GARFIELD

Author
G. Cerminara - INFN Torino

Definition at line 16 of file DTParametrizedDriftAlgo.h.

Constructor & Destructor Documentation

DTParametrizedDriftAlgo::DTParametrizedDriftAlgo ( const edm::ParameterSet config)

Constructor.

Definition at line 28 of file DTParametrizedDriftAlgo.cc.

28  :
29  DTRecHitBaseAlgo(config),
30  interpolate(config.getParameter<bool>("interpolate")),
31  minTime(config.getParameter<double>("minTime")), // FIXME: Default was -3 ns
32  maxTime(config.getParameter<double>("maxTime")), // FIXME: Default was 415 ns
33  // Set verbose output
34  debug(config.getUntrackedParameter<bool>("debug","false"))
35  {}
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
DTRecHitBaseAlgo(const edm::ParameterSet &config)
Constructor.
DTParametrizedDriftAlgo::~DTParametrizedDriftAlgo ( )
override

Destructor.

Definition at line 39 of file DTParametrizedDriftAlgo.cc.

39 {}

Member Function Documentation

bool DTParametrizedDriftAlgo::compute ( const DTLayer layer,
const DTDigi digi,
LocalPoint leftPoint,
LocalPoint rightPoint,
LocalError error 
) const
overridevirtual

First step in computation of Left/Right hits from a Digi. The results are the local position (in DTLayer frame) of the Left and Right hit, and the error (which is common). The center of the wire is assumed as hit coordinate along y. Returns false on failure.

Implements DTRecHitBaseAlgo.

Referenced by setES().

bool DTParametrizedDriftAlgo::compute ( const DTLayer layer,
const DTRecHit1D recHit1D,
const float &  angle,
DTRecHit1D newHit1D 
) const
overridevirtual

Second step. 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. NOTE: Only position and error of the new hit are modified

Implements DTRecHitBaseAlgo.

bool DTParametrizedDriftAlgo::compute ( const DTLayer layer,
const DTRecHit1D recHit1D,
const float &  angle,
const GlobalPoint globPos,
DTRecHit1D newHit1D 
) const
overridevirtual

Third (and final) step in hits position computation. 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. NOTE: Only position and error of the new hit are modified

Implements DTRecHitBaseAlgo.

virtual bool DTParametrizedDriftAlgo::compute ( const DTLayer layer,
const DTWireId wireId,
const float  digiTime,
const float &  angle,
const GlobalPoint globPos,
LocalPoint leftPoint,
LocalPoint rightPoint,
LocalError error,
int  step 
) const
privatevirtual
virtual bool DTParametrizedDriftAlgo::compute ( const DTLayer layer,
const DTWireId wireId,
const float  digiTime,
const float &  angle,
const GlobalPoint globPos,
DTRecHit1D newHit1D,
int  step 
) const
privatevirtual
void DTParametrizedDriftAlgo::setES ( const edm::EventSetup setup)
overridevirtual

Pass the Event Setup to the algo at each event.

Implements DTRecHitBaseAlgo.

Definition at line 43 of file DTParametrizedDriftAlgo.cc.

References funct::abs(), angle(), compute(), DTTime2DriftParametrization::computeDriftDistance_mean(), gather_cfg::cout, debug, DTRecHit1D::digiTime(), shallow::drift(), relativeConstraints::error, Exception, alignBH_cfg::fixed, edm::EventSetup::get(), DTLayer::id(), interpolate, MagneticField::inTesla(), DTTopology::isWireValid(), DTEnums::Left, DTRecHit1D::localPosition(), DTRecHit1D::lrSide(), M_PI, magField, seedCreatorFromRegionConsecutiveHitsEDProducer_cff::magneticField, maxTime, DTTTrigBaseSync::offset(), DTEnums::Right, DTTTrigBaseSync::setES(), DTRecHit1D::setPositionAndError(), DTLayer::specificTopology(), mathSSE::sqrt(), DTSuperLayerId::superlayer(), DTRecHitBaseAlgo::theSync, DTDigi::time(), GeomDet::toGlobal(), GeomDet::toLocal(), csvLumiCalc::unit, DTTime2DriftParametrization::drift_distance::v_drift, DTChamberId::wheel(), makeMuonMisalignmentScenario::wheel, DTDigi::wire(), DTWireId::wire(), DTRecHit1D::wireId(), DTTopology::wirePosition(), PV3DBase< T, PVType, FrameType >::x(), DTTime2DriftParametrization::drift_distance::x_drift, DTTime2DriftParametrization::drift_distance::x_width_m, DTTime2DriftParametrization::drift_distance::x_width_p, PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

43  {
44  theSync->setES(setup);
45  // Access the magnetic field
47  setup.get<IdealMagneticFieldRecord>().get(magneticField);
49 }
const MagneticField * magField
virtual void setES(const edm::EventSetup &setup)=0
Pass the Event Setup to the synchronization module at each event.
DTTTrigBaseSync * theSync
const T & get() const
Definition: EventSetup.h:55

Member Data Documentation

const bool DTParametrizedDriftAlgo::debug
private
const bool DTParametrizedDriftAlgo::interpolate
private

Definition at line 71 of file DTParametrizedDriftAlgo.h.

Referenced by setES().

const MagneticField* DTParametrizedDriftAlgo::magField
private

Definition at line 104 of file DTParametrizedDriftAlgo.h.

Referenced by setES().

const float DTParametrizedDriftAlgo::maxTime
private

Definition at line 77 of file DTParametrizedDriftAlgo.h.

Referenced by setES().

const float DTParametrizedDriftAlgo::minTime
private

Definition at line 74 of file DTParametrizedDriftAlgo.h.