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

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 42 of file MuonTrajectoryUpdator.cc.

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

44 
45  // The max allowed chi2 to accept a rechit in the fit
46  theMaxChi2 = par.getParameter<double>("MaxChi2");
48 
49  // The KF updator
50  theUpdator= new KFUpdator();
51 
52  // The granularity
53  theGranularity = par.getParameter<int>("Granularity");
54 
55  // Rescale the error of the first state?
56  theRescaleErrorFlag = par.getParameter<bool>("RescaleError");
57 
58  if(theRescaleErrorFlag)
59  // The rescale factor
60  theRescaleFactor = par.getParameter<double>("RescaleErrorFactor");
61 
62  // Use the invalid hits?
63  useInvalidHits = par.getParameter<bool>("UseInvalidHits");
64 
65  // Flag needed for the rescaling
66  theFirstTSOSFlag = true;
67 
68  // Exlude RPC from the fit?
69  theRPCExFlag = par.getParameter<bool>("ExcludeRPCFromFit");
70 }
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 72 of file MuonTrajectoryUpdator.cc.

References Chi2MeasurementEstimatorESProducer_cfi::Chi2MeasurementEstimator, theEstimator, theMaxChi2, and theUpdator.

73  : theMaxChi2(chi2),
74  theGranularity(granularity),
77 
78  // The KF updator
79  theUpdator= new KFUpdator();
80 }
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 83 of file MuonTrajectoryUpdator.cc.

References theEstimator, and theUpdator.

83  {
84  delete theEstimator;
85  delete theUpdator;
86 }
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 88 of file MuonTrajectoryUpdator.cc.

References theFirstTSOSFlag.

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

88  {
89  theFirstTSOSFlag = true;
90 }
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 213 of file MuonTrajectoryUpdator.cc.

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

Referenced by update().

216  {
217 
218  const TransientTrackingRecHit::ConstRecHitPointer mother = measurement->recHit();
219 
220  if( current->geographicalId() == mother->geographicalId() )
221  return measurement->predictedState();
222 
223  const TrajectoryStateOnSurface tsos =
224  propagator->propagate(state, current->det()->surface());
225  return tsos;
226 
227 }
virtual FreeTrajectoryState propagate(const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest) const final
Definition: Propagator.h:119
TrajectoryStateOnSurface const & predictedState() const
ConstRecHitPointer const & recHit() const
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
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 theMaxChi2.

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

Definition at line 254 of file MuonTrajectoryUpdator.cc.

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

Referenced by update().

255  {
256 
257  if(detLayer->subDetector()==GeomDetEnumerators::DT){
258  if(fitDirection() == insideOut)
259  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), RadiusComparatorInOut() );
260  else if(fitDirection() == outsideIn)
261  stable_sort(recHitsForFit.begin(),recHitsForFit.end(),RadiusComparatorOutIn() );
262  else
263  LogError("Muon|RecoMuon|MuonTrajectoryUpdator") <<"MuonTrajectoryUpdator::sort: Wrong propagation direction!!";
264  }
265 
266  else if(detLayer->subDetector()==GeomDetEnumerators::CSC){
267  if(fitDirection() == insideOut)
268  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), ZedComparatorInOut() );
269  else if(fitDirection() == outsideIn)
270  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), ZedComparatorOutIn() );
271  else
272  LogError("Muon|RecoMuon|MuonTrajectoryUpdator") <<"MuonTrajectoryUpdator::sort: Wrong propagation direction!!";
273  }
274 
275  else if(detLayer->subDetector()==GeomDetEnumerators::GEM){
276  if(fitDirection() == insideOut)
277  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), ZedComparatorInOut() );
278  else if(fitDirection() == outsideIn)
279  stable_sort(recHitsForFit.begin(),recHitsForFit.end(), ZedComparatorOutIn() );
280  else
281  LogError("Muon|RecoMuon|MuonTrajectoryUpdator") <<"MuonTrajectoryUpdator::sort: Wrong propagation direction!!";
282  }
283 }
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 94 of file MuonTrajectoryUpdator.cc.

References MuonTransientTrackingRecHitBreaker::breakInSubRecHits(), MuonPatternRecoDumper::dumpTSOS(), MeasurementEstimator::estimate(), estimator(), TrajectoryStateOnSurface::globalDirection(), TrajectoryStateOnSurface::globalPosition(), MuonTransientTrackingRecHit::invalidateHit(), TrajectoryStateOnSurface::isValid(), TrajectoryMeasurement::layer(), LogTrace, measurementUpdator(), metname, 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().

96  {
97 
98  const std::string metname = "Muon|RecoMuon|MuonTrajectoryUpdator";
99 
100  MuonPatternRecoDumper muonDumper;
101 
102  // Status of the updating
103  bool updated=false;
104 
105  if(!measurement) return pair<bool,TrajectoryStateOnSurface>(updated,TrajectoryStateOnSurface() );
106 
107  // measurement layer
108  const DetLayer* detLayer=measurement->layer();
109 
110  // these are the 4D segment for the CSC/DT and a point for the RPC
111  TransientTrackingRecHit::ConstRecHitPointer muonRecHit = measurement->recHit();
112 
113  // The KFUpdator takes TransientTrackingRecHits as arg.
116 
117  // sort the container in agreement with the porpagation direction
118  sort(recHitsForFit,detLayer);
119 
120  TrajectoryStateOnSurface lastUpdatedTSOS = measurement->predictedState();
121 
122  LogTrace(metname)<<"Number of rechits for the fit: "<<recHitsForFit.size()<<endl;
123 
124  TransientTrackingRecHit::ConstRecHitContainer::iterator recHit;
125  for(recHit = recHitsForFit.begin(); recHit != recHitsForFit.end(); ++recHit ) {
126  if ((*recHit)->isValid() ) {
127 
128  // propagate the TSOS onto the rechit plane
129  TrajectoryStateOnSurface propagatedTSOS = propagateState(lastUpdatedTSOS, measurement,
130  *recHit, propagator);
131 
132  if ( propagatedTSOS.isValid() ) {
133  pair<bool,double> thisChi2 = estimator()->estimate(propagatedTSOS, *((*recHit).get()));
134 
135  LogTrace(metname) << "Estimation for Kalman Fit. Chi2: " << thisChi2.second;
136 
137  // Is an RPC hit? Prepare the variable to possibly exluding it from the fit
138  bool wantIncludeThisHit = true;
139  if (theRPCExFlag &&
140  (*recHit)->geographicalId().det() == DetId::Muon &&
141  (*recHit)->geographicalId().subdetId() == MuonSubdetId::RPC){
142  wantIncludeThisHit = false;
143  LogTrace(metname) << "This is an RPC hit and the present configuration is such that it will be excluded from the fit";
144  }
145 
146 
147  // The Chi2 cut was already applied in the estimator, which
148  // returns 0 if the chi2 is bigger than the cut defined in its
149  // constructor
150  if (thisChi2.first) {
151  updated=true;
152  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.
153 
154  LogTrace(metname) << endl
155  << " Kalman Start" << "\n" << "\n";
156  LogTrace(metname) << " Meas. Position : " << (**recHit).globalPosition() << "\n"
157  << " Pred. Position : " << propagatedTSOS.globalPosition()
158  << " Pred Direction : " << propagatedTSOS.globalDirection()<< endl;
159 
161  propagatedTSOS.rescaleError(theRescaleFactor);
162  theFirstTSOSFlag = false;
163  }
164 
165  lastUpdatedTSOS = measurementUpdator()->update(propagatedTSOS,*((*recHit).get()));
166 
167  LogTrace(metname) << " Fit Position : " << lastUpdatedTSOS.globalPosition()
168  << " Fit Direction : " << lastUpdatedTSOS.globalDirection()
169  << "\n"
170  << " Fit position radius : "
171  << lastUpdatedTSOS.globalPosition().perp()
172  << "filter updated" << endl;
173 
174  LogTrace(metname) << muonDumper.dumpTSOS(lastUpdatedTSOS);
175 
176  LogTrace(metname) << "\n\n Kalman End" << "\n" << "\n";
177 
178  TrajectoryMeasurement && updatedMeasurement = updateMeasurement( propagatedTSOS, lastUpdatedTSOS,
179  *recHit, thisChi2.second, detLayer,
180  measurement);
181  // FIXME: check!
182  trajectory.push(std::move(updatedMeasurement), thisChi2.second);
183  }
184  else {
185  LogTrace(metname) << " Compatible RecHit with good chi2 but made with RPC when it was decided to not include it in the fit"
186  << " --> trajectory NOT updated, invalid RecHit added." << endl;
187 
188  MuonTransientTrackingRecHit::MuonRecHitPointer invalidRhPtr = MuonTransientTrackingRecHit::specificBuild( (*recHit)->det(), (*recHit)->hit() );
189  invalidRhPtr->invalidateHit();
190  TrajectoryMeasurement invalidRhMeasurement(propagatedTSOS, propagatedTSOS, invalidRhPtr, thisChi2.second, detLayer);
191  trajectory.push(std::move(invalidRhMeasurement), thisChi2.second);
192  }
193  }
194  else {
195  if(useInvalidHits) {
196  LogTrace(metname) << " Compatible RecHit with too large chi2"
197  << " --> trajectory NOT updated, invalid RecHit added." << endl;
198 
199  MuonTransientTrackingRecHit::MuonRecHitPointer invalidRhPtr = MuonTransientTrackingRecHit::specificBuild( (*recHit)->det(), (*recHit)->hit() );
200  invalidRhPtr->invalidateHit();
201  TrajectoryMeasurement invalidRhMeasurement(propagatedTSOS, propagatedTSOS, invalidRhPtr, thisChi2.second, detLayer);
202  trajectory.push(std::move(invalidRhMeasurement), thisChi2.second);
203  }
204  }
205  }
206  }
207  }
208  recHitsForFit.clear();
209  return pair<bool,TrajectoryStateOnSurface>(updated,lastUpdatedTSOS);
210 }
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< TrackingRecHit const > ConstRecHitPointer
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:30
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 230 of file MuonTrajectoryUpdator.cc.

Referenced by update().

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

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().