CMS 3D CMS Logo

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

#include <MuonTrajectoryUpdator.h>

Classes

struct  RadiusComparatorInOut
 Ordering along increasing radius (for DT rechits) More...
 
struct  RadiusComparatorOutIn
 Ordering along decreasing radius (for DT rechits) More...
 
struct  ZedComparatorInOut
 Ordering along increasing zed (for CSC rechits) More...
 
struct  ZedComparatorOutIn
 Ordering along decreasing zed (for CSC rechits) More...
 

Public Member Functions

const MeasurementEstimatorestimator () const
 accasso at the propagator More...
 
NavigationDirection fitDirection ()
 get the fit direction More...
 
void makeFirstTime ()
 reset the theFirstTSOSFlag More...
 
double maxChi2 () const
 get the max chi2 allowed More...
 
const TrajectoryStateUpdatormeasurementUpdator () const
 
 MuonTrajectoryUpdator (const edm::ParameterSet &par, NavigationDirection fitDirection)
 Constructor from Propagator and Parameter set. More...
 
 MuonTrajectoryUpdator (NavigationDirection fitDirection, double chi2, int granularity)
 Constructor from Propagator, chi2 and the granularity flag. More...
 
void setFitDirection (NavigationDirection fitDirection)
 set fit direction More...
 
void setMaxChi2 (double chi2)
 set max chi2 More...
 
virtual std::pair< bool,
TrajectoryStateOnSurface
update (const TrajectoryMeasurement *measurement, Trajectory &trajectory, const Propagator *propagator)
 update the Trajectory with the TrajectoryMeasurement More...
 
virtual ~MuonTrajectoryUpdator ()
 Destructor. More...
 

Private Member Functions

TrajectoryStateOnSurface propagateState (const TrajectoryStateOnSurface &state, const TrajectoryMeasurement *measurement, const TransientTrackingRecHit::ConstRecHitPointer &current, const Propagator *propagator) const
 
void sort (TransientTrackingRecHit::ConstRecHitContainer &, const DetLayer *)
 
TrajectoryMeasurement updateMeasurement (const TrajectoryStateOnSurface &propagatedTSOS, const TrajectoryStateOnSurface &lastUpdatedTSOS, const TransientTrackingRecHit::ConstRecHitPointer &recHit, const double &chi2, const DetLayer *detLayer, const TrajectoryMeasurement *initialMeasurement)
 Return the trajectory measurement. It handles both the fw and the bw propagation. More...
 

Private Attributes

MeasurementEstimatortheEstimator
 
bool theFirstTSOSFlag
 
NavigationDirection theFitDirection
 
int theGranularity
 
double theMaxChi2
 the max chi2 allowed More...
 
bool theRescaleErrorFlag
 
double theRescaleFactor
 
bool theRPCExFlag
 
TrajectoryStateUpdatortheUpdator
 
bool useInvalidHits
 

Detailed Description

An updator for the Muon system This class update a trajectory with a muon chamber measurement. In spite of the name, it is NOT an updator, but has one. A muon RecHit is a segment (for DT and CSC) or a "hit" (RPC). This updator is suitable both for FW and BW filtering. The difference between the two fitter are two: the granularity of the updating (i.e.: segment position or 1D rechit position), which can be set via parameter set, and the propagation direction which is embeded in the propagator set in the c'tor.

Author
R. Bellan - INFN Torino ricca.nosp@m.rdo..nosp@m.bella.nosp@m.n@ce.nosp@m.rn.ch
S. Lacaprara - INFN Legnaro

An updator for the Muon system This class update a trajectory with a muon chamber measurement. In spite of the name, it is NOT an updator, but has one. A muon RecHit is a segment (for DT and CSC) or a "hit" (RPC). This updator is suitable both for FW and BW filtering. The difference between the two fitter are two: the granularity of the updating (i.e.: segment position or 1D rechit position), which can be set via parameter set, and the propagation direction which is embeded in the propagator set in the c'tor.

Author
R. Bellan - INFN Torino ricca.nosp@m.rdo..nosp@m.bella.nosp@m.n@ce.nosp@m.rn.ch
S. Lacaprara - INFN Legnaro

Modified by C. Calabria: GEM Implementation Modified by D. Nash: ME0 Implementation

Definition at line 32 of file MuonTrajectoryUpdator.h.

Constructor & Destructor Documentation

MuonTrajectoryUpdator::MuonTrajectoryUpdator ( const edm::ParameterSet par,
NavigationDirection  fitDirection 
)

Constructor from Propagator and Parameter set.

Definition at line 43 of file MuonTrajectoryUpdator.cc.

References edm::ParameterSet::getParameter(), theEstimator, theFirstTSOSFlag, theGranularity, theMaxChi2, theRescaleErrorFlag, theRescaleFactor, theRPCExFlag, theUpdator, and useInvalidHits.

45 
46  // The max allowed chi2 to accept a rechit in the fit
47  theMaxChi2 = par.getParameter<double>("MaxChi2");
49 
50  // The KF updator
51  theUpdator= new KFUpdator();
52 
53  // The granularity
54  theGranularity = par.getParameter<int>("Granularity");
55 
56  // Rescale the error of the first state?
57  theRescaleErrorFlag = par.getParameter<bool>("RescaleError");
58 
59  if(theRescaleErrorFlag)
60  // The rescale factor
61  theRescaleFactor = par.getParameter<double>("RescaleErrorFactor");
62 
63  // Use the invalid hits?
64  useInvalidHits = par.getParameter<bool>("UseInvalidHits");
65 
66  // Flag needed for the rescaling
67  theFirstTSOSFlag = true;
68 
69  // Exlude RPC from the fit?
70  theRPCExFlag = par.getParameter<bool>("ExcludeRPCFromFit");
71 }
T getParameter(std::string const &) const
NavigationDirection fitDirection()
get the fit direction
double theMaxChi2
the max chi2 allowed
TrajectoryStateUpdator * theUpdator
NavigationDirection theFitDirection
MeasurementEstimator * theEstimator
MuonTrajectoryUpdator::MuonTrajectoryUpdator ( NavigationDirection  fitDirection,
double  chi2,
int  granularity 
)

Constructor from Propagator, chi2 and the granularity flag.

Definition at line 73 of file MuonTrajectoryUpdator.cc.

References theEstimator, theMaxChi2, and theUpdator.

74  : theMaxChi2(chi2),
75  theGranularity(granularity),
78 
79  // The KF updator
80  theUpdator= new KFUpdator();
81 }
NavigationDirection fitDirection()
get the fit direction
double theMaxChi2
the max chi2 allowed
TrajectoryStateUpdator * theUpdator
NavigationDirection theFitDirection
MeasurementEstimator * theEstimator
MuonTrajectoryUpdator::~MuonTrajectoryUpdator ( )
virtual

Destructor.

Definition at line 84 of file MuonTrajectoryUpdator.cc.

References theEstimator, and theUpdator.

84  {
85  delete theEstimator;
86  delete theUpdator;
87 }
TrajectoryStateUpdator * theUpdator
MeasurementEstimator * theEstimator

Member Function Documentation

const MeasurementEstimator* MuonTrajectoryUpdator::estimator ( void  ) const
inline

accasso at the propagator

Definition at line 55 of file MuonTrajectoryUpdator.h.

References theEstimator.

Referenced by CosmicMuonTrajectoryBuilder::trajectories(), and update().

55 {return theEstimator;}
MeasurementEstimator * theEstimator
NavigationDirection MuonTrajectoryUpdator::fitDirection ( )
inline

get the fit direction

Definition at line 62 of file MuonTrajectoryUpdator.h.

References theFitDirection.

Referenced by setFitDirection(), and sort().

62 {return theFitDirection;}
NavigationDirection theFitDirection
void MuonTrajectoryUpdator::makeFirstTime ( )

reset the theFirstTSOSFlag

Definition at line 89 of file MuonTrajectoryUpdator.cc.

References theFirstTSOSFlag.

Referenced by CosmicMuonTrajectoryBuilder::build(), and StandAloneMuonFilter::reset().

89  {
90  theFirstTSOSFlag = true;
91 }
double MuonTrajectoryUpdator::maxChi2 ( ) const
inline

get the max chi2 allowed

Definition at line 59 of file MuonTrajectoryUpdator.h.

References theMaxChi2.

59 {return theMaxChi2 ;}
double theMaxChi2
the max chi2 allowed
const TrajectoryStateUpdator* MuonTrajectoryUpdator::measurementUpdator ( ) const
inline

Definition at line 56 of file MuonTrajectoryUpdator.h.

References theUpdator.

Referenced by update().

56 {return theUpdator;}
TrajectoryStateUpdator * theUpdator
TrajectoryStateOnSurface MuonTrajectoryUpdator::propagateState ( const TrajectoryStateOnSurface state,
const TrajectoryMeasurement measurement,
const TransientTrackingRecHit::ConstRecHitPointer current,
const Propagator propagator 
) const
private

Propagate the state to the hit surface if it's a multi hit RecHit. i.e.: if "current" is a sub-rechit of the mesurement (i.e. a 1/2D RecHit) the state will be propagated to the surface where lies the "current" rechit

Definition at line 214 of file MuonTrajectoryUpdator.cc.

References TrajectoryMeasurement::predictedState(), Propagator::propagate(), TrajectoryMeasurement::recHit(), and TrajectoryStateOnSurface::surface().

Referenced by update().

217  {
218 
219  const TransientTrackingRecHit::ConstRecHitPointer mother = measurement->recHit();
220 
221  if( current->geographicalId() == mother->geographicalId() )
222  return measurement->predictedState();
223 
224  const TrajectoryStateOnSurface tsos =
225  propagator->propagate(state, current->det()->surface());
226  return tsos;
227 
228 }
TrajectoryStateOnSurface const & predictedState() const
ConstRecHitPointer const & recHit() const
const SurfaceType & surface() const
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:53
void MuonTrajectoryUpdator::setFitDirection ( NavigationDirection  fitDirection)
inline

set fit direction

Definition at line 68 of file MuonTrajectoryUpdator.h.

References fitDirection(), and theFitDirection.

Referenced by CosmicMuonTrajectoryBuilder::build(), and CosmicMuonTrajectoryBuilder::trajectories().

NavigationDirection fitDirection()
get the fit direction
NavigationDirection theFitDirection
void MuonTrajectoryUpdator::setMaxChi2 ( double  chi2)
inline

set max chi2

Definition at line 65 of file MuonTrajectoryUpdator.h.

References HLT_FULL_cff::chi2, and theMaxChi2.

65 {theMaxChi2 = chi2;}
double theMaxChi2
the max chi2 allowed
void MuonTrajectoryUpdator::sort ( TransientTrackingRecHit::ConstRecHitContainer recHitsForFit,
const DetLayer detLayer 
)
private

Definition at line 255 of file MuonTrajectoryUpdator.cc.

References GeomDetEnumerators::CSC, GeomDetEnumerators::DT, fitDirection(), GeomDetEnumerators::GEM, insideOut, GeomDetEnumerators::ME0, outsideIn, and DetLayer::subDetector().

Referenced by update().

256  {
257 
258  if(detLayer->subDetector()==GeomDetEnumerators::DT){
259  if(fitDirection() == insideOut)
260  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), RadiusComparatorInOut() );
261  else if(fitDirection() == outsideIn)
262  stable_sort(recHitsForFit.begin(),recHitsForFit.end(),RadiusComparatorOutIn() );
263  else
264  LogError("Muon|RecoMuon|MuonTrajectoryUpdator") <<"MuonTrajectoryUpdator::sort: Wrong propagation direction!!";
265  }
266 
267  else if(detLayer->subDetector()==GeomDetEnumerators::CSC){
268  if(fitDirection() == insideOut)
269  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), ZedComparatorInOut() );
270  else if(fitDirection() == outsideIn)
271  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), ZedComparatorOutIn() );
272  else
273  LogError("Muon|RecoMuon|MuonTrajectoryUpdator") <<"MuonTrajectoryUpdator::sort: Wrong propagation direction!!";
274  }
275 
276  else if(detLayer->subDetector()==GeomDetEnumerators::GEM){
277  if(fitDirection() == insideOut)
278  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), ZedComparatorInOut() );
279  else if(fitDirection() == outsideIn)
280  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), ZedComparatorOutIn() );
281  else
282  LogError("Muon|RecoMuon|MuonTrajectoryUpdator") <<"MuonTrajectoryUpdator::sort: Wrong propagation direction!!";
283  }
284  else if(detLayer->subDetector()==GeomDetEnumerators::ME0){
285  LogError("Muon|RecoMuon|MuonTrajectoryUpdator") <<"ME0s are sorted";
286  if(fitDirection() == insideOut)
287  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), ZedComparatorInOut() );
288  else if(fitDirection() == outsideIn)
289  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), ZedComparatorOutIn() );
290  else
291  LogError("Muon|RecoMuon|MuonTrajectoryUpdator") <<"MuonTrajectoryUpdator::sort: Wrong propagation direction!!";
292  }
293 }
NavigationDirection fitDirection()
get the fit direction
virtual SubDetector subDetector() const =0
The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap)
pair< bool, TrajectoryStateOnSurface > MuonTrajectoryUpdator::update ( const TrajectoryMeasurement measurement,
Trajectory trajectory,
const Propagator propagator 
)
virtual

update the Trajectory with the TrajectoryMeasurement

Definition at line 95 of file MuonTrajectoryUpdator.cc.

References MuonTransientTrackingRecHitBreaker::breakInSubRecHits(), MuonPatternRecoDumper::dumpTSOS(), MeasurementEstimator::estimate(), estimator(), TrajectoryStateOnSurface::globalDirection(), TrajectoryStateOnSurface::globalPosition(), TrajectoryStateOnSurface::isValid(), TrajectoryMeasurement::layer(), LogTrace, measurementUpdator(), metname, eostools::move(), DetId::Muon, PV3DBase< T, PVType, FrameType >::perp(), TrajectoryMeasurement::predictedState(), propagateState(), Trajectory::push(), TrajectoryMeasurement::recHit(), TrajectoryStateOnSurface::rescaleError(), MuonSubdetId::RPC, sort(), MuonTransientTrackingRecHit::specificBuild(), AlCaHLTBitMon_QueryRunRegistry::string, theFirstTSOSFlag, theGranularity, theRescaleErrorFlag, theRescaleFactor, theRPCExFlag, TrajectoryStateUpdator::update(), updateMeasurement(), and useInvalidHits.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), Vispa.Gui.VispaWidget.VispaWidget::autosize(), CosmicMuonTrajectoryBuilder::build(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), progressbar.ProgressBar::finish(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), MatrixUtil.Steps::overwrite(), Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), Vispa.Gui.FindDialog.FindDialog::reset(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), Vispa.Gui.VispaWidget.VispaWidget::setText(), Vispa.Gui.VispaWidget.VispaWidget::setTitle(), Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), CosmicMuonTrajectoryBuilder::trajectories(), StandAloneMuonFilter::update(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

97  {
98 
99  const std::string metname = "Muon|RecoMuon|MuonTrajectoryUpdator";
100 
101  MuonPatternRecoDumper muonDumper;
102 
103  // Status of the updating
104  bool updated=false;
105 
106  if(!measurement) return pair<bool,TrajectoryStateOnSurface>(updated,TrajectoryStateOnSurface() );
107 
108  // measurement layer
109  const DetLayer* detLayer=measurement->layer();
110 
111  // these are the 4D segment for the CSC/DT and a point for the RPC
112  TransientTrackingRecHit::ConstRecHitPointer muonRecHit = measurement->recHit();
113 
114  // The KFUpdator takes TransientTrackingRecHits as arg.
117 
118  // sort the container in agreement with the porpagation direction
119  sort(recHitsForFit,detLayer);
120 
121  TrajectoryStateOnSurface lastUpdatedTSOS = measurement->predictedState();
122 
123  LogTrace(metname)<<"Number of rechits for the fit: "<<recHitsForFit.size()<<endl;
124 
125  TransientTrackingRecHit::ConstRecHitContainer::iterator recHit;
126  for(recHit = recHitsForFit.begin(); recHit != recHitsForFit.end(); ++recHit ) {
127  if ((*recHit)->isValid() ) {
128 
129  // propagate the TSOS onto the rechit plane
130  TrajectoryStateOnSurface propagatedTSOS = propagateState(lastUpdatedTSOS, measurement,
131  *recHit, propagator);
132 
133  if ( propagatedTSOS.isValid() ) {
134  pair<bool,double> thisChi2 = estimator()->estimate(propagatedTSOS, *((*recHit).get()));
135 
136  LogTrace(metname) << "Estimation for Kalman Fit. Chi2: " << thisChi2.second;
137 
138  // Is an RPC hit? Prepare the variable to possibly exluding it from the fit
139  bool wantIncludeThisHit = true;
140  if (theRPCExFlag &&
141  (*recHit)->geographicalId().det() == DetId::Muon &&
142  (*recHit)->geographicalId().subdetId() == MuonSubdetId::RPC){
143  wantIncludeThisHit = false;
144  LogTrace(metname) << "This is an RPC hit and the present configuration is such that it will be excluded from the fit";
145  }
146 
147 
148  // The Chi2 cut was already applied in the estimator, which
149  // returns 0 if the chi2 is bigger than the cut defined in its
150  // constructor
151  if (thisChi2.first) {
152  updated=true;
153  if (wantIncludeThisHit) { // This split is a trick to have the RPC hits counted as updatable (in used chamber counting), while are not actually included in the fit when the proper obtion is activated.
154 
155  LogTrace(metname) << endl
156  << " Kalman Start" << "\n" << "\n";
157  LogTrace(metname) << " Meas. Position : " << (**recHit).globalPosition() << "\n"
158  << " Pred. Position : " << propagatedTSOS.globalPosition()
159  << " Pred Direction : " << propagatedTSOS.globalDirection()<< endl;
160 
162  propagatedTSOS.rescaleError(theRescaleFactor);
163  theFirstTSOSFlag = false;
164  }
165 
166  lastUpdatedTSOS = measurementUpdator()->update(propagatedTSOS,*((*recHit).get()));
167 
168  LogTrace(metname) << " Fit Position : " << lastUpdatedTSOS.globalPosition()
169  << " Fit Direction : " << lastUpdatedTSOS.globalDirection()
170  << "\n"
171  << " Fit position radius : "
172  << lastUpdatedTSOS.globalPosition().perp()
173  << "filter updated" << endl;
174 
175  LogTrace(metname) << muonDumper.dumpTSOS(lastUpdatedTSOS);
176 
177  LogTrace(metname) << "\n\n Kalman End" << "\n" << "\n";
178 
179  TrajectoryMeasurement && updatedMeasurement = updateMeasurement( propagatedTSOS, lastUpdatedTSOS,
180  *recHit, thisChi2.second, detLayer,
181  measurement);
182  // FIXME: check!
183  trajectory.push(std::move(updatedMeasurement), thisChi2.second);
184  }
185  else {
186  LogTrace(metname) << " Compatible RecHit with good chi2 but made with RPC when it was decided to not include it in the fit"
187  << " --> trajectory NOT updated, invalid RecHit added." << endl;
188 
189  MuonTransientTrackingRecHit::MuonRecHitPointer invalidRhPtr = MuonTransientTrackingRecHit::specificBuild( (*recHit)->det(), (*recHit)->hit() );
190  invalidRhPtr->invalidateHit();
191  TrajectoryMeasurement invalidRhMeasurement(propagatedTSOS, propagatedTSOS, invalidRhPtr, thisChi2.second, detLayer);
192  trajectory.push(std::move(invalidRhMeasurement), thisChi2.second);
193  }
194  }
195  else {
196  if(useInvalidHits) {
197  LogTrace(metname) << " Compatible RecHit with too large chi2"
198  << " --> trajectory NOT updated, invalid RecHit added." << endl;
199 
200  MuonTransientTrackingRecHit::MuonRecHitPointer invalidRhPtr = MuonTransientTrackingRecHit::specificBuild( (*recHit)->det(), (*recHit)->hit() );
201  invalidRhPtr->invalidateHit();
202  TrajectoryMeasurement invalidRhMeasurement(propagatedTSOS, propagatedTSOS, invalidRhPtr, thisChi2.second, detLayer);
203  trajectory.push(std::move(invalidRhMeasurement), thisChi2.second);
204  }
205  }
206  }
207  }
208  }
209  recHitsForFit.clear();
210  return pair<bool,TrajectoryStateOnSurface>(updated,lastUpdatedTSOS);
211 }
TrajectoryStateOnSurface const & predictedState() const
const MeasurementEstimator * estimator() const
accasso at the propagator
T perp() const
Definition: PV3DBase.h:72
ConstRecHitPointer const & recHit() const
const std::string metname
GlobalPoint globalPosition() const
TrajectoryStateOnSurface propagateState(const TrajectoryStateOnSurface &state, const TrajectoryMeasurement *measurement, const TransientTrackingRecHit::ConstRecHitPointer &current, const Propagator *propagator) const
static TransientTrackingRecHit::ConstRecHitContainer breakInSubRecHits(TransientTrackingRecHit::ConstRecHitPointer, int granularity)
takes a muon rechit and returns its sub-rechits given a certain granularity
void sort(TransientTrackingRecHit::ConstRecHitContainer &, const DetLayer *)
std::string dumpTSOS(const TrajectoryStateOnSurface &tsos) const
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const =0
std::shared_ptr< MuonTransientTrackingRecHit > MuonRecHitPointer
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
def move
Definition: eostools.py:510
TrajectoryMeasurement updateMeasurement(const TrajectoryStateOnSurface &propagatedTSOS, const TrajectoryStateOnSurface &lastUpdatedTSOS, const TransientTrackingRecHit::ConstRecHitPointer &recHit, const double &chi2, const DetLayer *detLayer, const TrajectoryMeasurement *initialMeasurement)
Return the trajectory measurement. It handles both the fw and the bw propagation. ...
const DetLayer * layer() const
virtual HitReturnType estimate(const TrajectoryStateOnSurface &ts, const TrackingRecHit &hit) const =0
#define LogTrace(id)
std::vector< ConstRecHitPointer > ConstRecHitContainer
const TrajectoryStateUpdator * measurementUpdator() const
static const int RPC
Definition: MuonSubdetId.h:14
static MuonRecHitPointer specificBuild(const GeomDet *geom, const TrackingRecHit *rh)
void push(const TrajectoryMeasurement &tm)
Definition: Trajectory.cc:35
GlobalVector globalDirection() const
TrajectoryMeasurement MuonTrajectoryUpdator::updateMeasurement ( const TrajectoryStateOnSurface propagatedTSOS,
const TrajectoryStateOnSurface lastUpdatedTSOS,
const TransientTrackingRecHit::ConstRecHitPointer recHit,
const double &  chi2,
const DetLayer detLayer,
const TrajectoryMeasurement initialMeasurement 
)
private

Return the trajectory measurement. It handles both the fw and the bw propagation.

Definition at line 231 of file MuonTrajectoryUpdator.cc.

Referenced by update().

235  {
236  return TrajectoryMeasurement(propagatedTSOS, lastUpdatedTSOS,
237  recHit,chi2,detLayer);
238 
239  // // FIXME: put a better check! One could fit in first out-in and then in - out
240  // if(propagator()->propagationDirection() == alongMomentum)
241  // return TrajectoryMeasurement(propagatedTSOS, lastUpdatedTSOS,
242  // recHit,thisChi2.second,detLayer);
243 
244  // // FIXME: Check this carefully!!
245  // else if(propagator()->propagationDirection() == oppositeToMomentum)
246  // return TrajectoryMeasurement(initialMeasurement->forwardPredictedState(),
247  // propagatedTSOS, lastUpdatedTSOS,
248  // recHit,thisChi2.second,detLayer);
249  // else{
250  // LogError("MuonTrajectoryUpdator::updateMeasurement") <<"Wrong propagation direction!!";
251  // }
252 }

Member Data Documentation

MeasurementEstimator* MuonTrajectoryUpdator::theEstimator
private
bool MuonTrajectoryUpdator::theFirstTSOSFlag
private

Definition at line 149 of file MuonTrajectoryUpdator.h.

Referenced by makeFirstTime(), MuonTrajectoryUpdator(), and update().

NavigationDirection MuonTrajectoryUpdator::theFitDirection
private

Definition at line 146 of file MuonTrajectoryUpdator.h.

Referenced by fitDirection(), and setFitDirection().

int MuonTrajectoryUpdator::theGranularity
private

the granularity if 0 4D-segments are used both for the DT and CSC, if 1 2D-segments are used for the DT and the 2D-points for the CSC if 2 the 1D rec hit for the DT are used, while the 2D rechit for the CSC are used Maybe in a second step there will be more than 3 option i.e. max granularity for DT but not for the CSC and the viceversa

Definition at line 94 of file MuonTrajectoryUpdator.h.

Referenced by MuonTrajectoryUpdator(), and update().

double MuonTrajectoryUpdator::theMaxChi2
private

the max chi2 allowed

Definition at line 86 of file MuonTrajectoryUpdator.h.

Referenced by maxChi2(), MuonTrajectoryUpdator(), and setMaxChi2().

bool MuonTrajectoryUpdator::theRescaleErrorFlag
private

Definition at line 150 of file MuonTrajectoryUpdator.h.

Referenced by MuonTrajectoryUpdator(), and update().

double MuonTrajectoryUpdator::theRescaleFactor
private

Definition at line 151 of file MuonTrajectoryUpdator.h.

Referenced by MuonTrajectoryUpdator(), and update().

bool MuonTrajectoryUpdator::theRPCExFlag
private

Definition at line 156 of file MuonTrajectoryUpdator.h.

Referenced by MuonTrajectoryUpdator(), and update().

TrajectoryStateUpdator* MuonTrajectoryUpdator::theUpdator
private
bool MuonTrajectoryUpdator::useInvalidHits
private

Definition at line 154 of file MuonTrajectoryUpdator.h.

Referenced by MuonTrajectoryUpdator(), and update().