CMS 3D CMS Logo

DTRecHitBaseAlgo Class Reference

Abstract algorithmic class to compute drift distance and error form a DT digi. More...

#include <RecoLocalMuon/DTRecHit/interface/DTRecHitBaseAlgo.h>

Inheritance diagram for DTRecHitBaseAlgo:

DTLinearDriftAlgo DTLinearDriftFromDBAlgo DTNoDriftAlgo DTParametrizedDriftAlgo

List of all members.

Public Member Functions

virtual bool compute (const DTLayer *layer, const DTRecHit1D &recHit1D, const float &angle, const GlobalPoint &globPos, DTRecHit1D &newHit1D) const =0
 Third (and final) step in hits position computation, for algorithms which support it.
virtual bool compute (const DTLayer *layer, const DTRecHit1D &recHit1D, const float &angle, DTRecHit1D &newHit1D) const =0
 Second step in hit position computation, for algorithms which support it.
virtual bool compute (const DTLayer *layer, const DTDigi &digi, LocalPoint &leftPoint, LocalPoint &rightPoint, LocalError &error) const =0
 First step in computation of Left/Right hits from a Digi.
 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

DTTTrigBaseSynctheSync


Detailed Description

Abstract algorithmic class to compute drift distance and error form a DT digi.

Date
2007/03/10 16:14:40
Revision
1.7
Author:
N. Amapane & G. Cerminara - INFN Torino

Definition at line 35 of file DTRecHitBaseAlgo.h.


Constructor & Destructor Documentation

DTRecHitBaseAlgo::DTRecHitBaseAlgo ( const edm::ParameterSet config  ) 

Constructor.

Definition at line 21 of file DTRecHitBaseAlgo.cc.

References DBSPlugin::get(), edm::ParameterSet::getParameter(), and theSync.

00021                                                              {
00022   theSync = DTTTrigSyncFactory::get()->create(config.getParameter<string>("tTrigMode"),
00023                                               config.getParameter<ParameterSet>("tTrigModeConfig"));
00024 }

DTRecHitBaseAlgo::~DTRecHitBaseAlgo (  )  [virtual]

Destructor.

Definition at line 26 of file DTRecHitBaseAlgo.cc.

00026 {}


Member Function Documentation

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.

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 reconstruct(), and DTSegmentUpdator::updateHits().

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 compute(), DTEnums::Left, edm::OwnVector< T, P >::push_back(), HLT_VtxMuL3::result, DTEnums::Right, and DTRecHit1DPair::setPositionAndError().

Referenced by DTRecHitProducer::produce().

00032                                                                                                 {
00033   OwnVector<DTRecHit1DPair> result; 
00034 
00035   // Loop over all digis in the given range
00036   for (DTDigiCollection::const_iterator digi = digiRange.first;
00037        digi != digiRange.second;
00038        digi++) {
00039     // Get the wireId
00040     DTWireId wireId(layerId, (*digi).wire());
00041     
00042     LocalError tmpErr;
00043     LocalPoint lpoint, rpoint;
00044     // Call the compute method
00045     bool OK = compute(layer, *digi, lpoint, rpoint, tmpErr);
00046     if (!OK) continue;
00047 
00048     // Build a new pair of 1D rechit    
00049     DTRecHit1DPair*  recHitPair = new DTRecHit1DPair(wireId, *digi);
00050 
00051     // Set the position and the error of the 1D rechits
00052     recHitPair->setPositionAndError(DTEnums::Left, lpoint, tmpErr);
00053     recHitPair->setPositionAndError(DTEnums::Right, rpoint, tmpErr);        
00054 
00055     result.push_back(recHitPair);
00056   }
00057   return result;
00058 }

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 DTRecHitProducer::produce(), and DTSegmentUpdator::setES().


Member Data Documentation

DTTTrigBaseSync* DTRecHitBaseAlgo::theSync [protected]

Definition at line 94 of file DTRecHitBaseAlgo.h.

Referenced by DTLinearDriftFromDBAlgo::compute(), DTParametrizedDriftAlgo::compute(), DTLinearDriftAlgo::compute(), DTRecHitBaseAlgo(), DTParametrizedDriftAlgo::setES(), DTLinearDriftFromDBAlgo::setES(), and DTLinearDriftAlgo::setES().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:18:59 2009 for CMSSW by  doxygen 1.5.4