CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
BasicMultiTrajectoryState.h
Go to the documentation of this file.
1 #ifndef BasicMultiTrajectoryState_H
2 #define BasicMultiTrajectoryState_H
3 
9 
11 
13 
14 public:
15 
16  BasicMultiTrajectoryState( const std::vector<TSOS>& tsvec);
17 
19 
20  bool isValid() const { return !theStates.empty() && theStates.front().isValid();}
21 
22  bool hasError() const {
23  if (isValid()) return theStates.front().hasError();
24  return false;
25  }
26 
30  }
31 
35  }
36 
40  }
41 
45  }
46 
47  TrackCharge charge() const {
49  return theCombinedState.charge();
50  }
51 
52  double signedInverseMomentum() const {
55  }
56 
57  double transverseCurvature() const {
60  }
61 
65  }
66 
70  }
71 
72  FreeTrajectoryState* freeTrajectoryState(bool withErrors = true) const {
74  return theCombinedState.freeTrajectoryState(withErrors);
75  }
76 
77  const MagneticField* magneticField() const;
78 
82  }
83 
87  }
88 
92  }
93 
97  }
98 
101  return theCombinedState.localError();
102  }
103 
104  const Surface& surface() const {
105  if (!isValid())
106  throw cms::Exception("LogicError")
107  << "surface() called for invalid MultiTrajectoryState";
108  return theStates.front().surface();
109  }
110 
111  double weight() const;
112 
119  void rescaleError(double factor);
120 
121  virtual BasicMultiTrajectoryState* clone() const {
122  return new BasicMultiTrajectoryState(*this);
123  }
124 
125  virtual std::vector<TrajectoryStateOnSurface> components() const {
126  return theStates;
127  }
128 
130  virtual SurfaceSide surfaceSide() const;
131 
132  virtual bool canUpdateLocalParameters() const { return false; }
133  virtual void update( const LocalTrajectoryParameters& p,
134  const Surface& aSurface,
135  const MagneticField* field,
136  const SurfaceSide side ) ;
137  virtual void update( const LocalTrajectoryParameters& p,
138  const LocalTrajectoryError& err,
139  const Surface& aSurface,
140  const MagneticField* field,
141  const SurfaceSide side,
142  double weight ) ;
143 private:
144 
145  std::vector<TSOS> theStates;
146 
150 
151  void checkCombinedState() const;
152 
153 };
154 
155 #endif
SurfaceSideDefinition::SurfaceSide SurfaceSide
const LocalTrajectoryParameters & localParameters() const
virtual BasicMultiTrajectoryState * clone() const
LocalVector localDirection() const
FreeTrajectoryState * freeTrajectoryState(bool withErrors=true) const
const CurvilinearTrajectoryError & curvilinearError() const
GlobalPoint globalPosition() const
LocalVector localMomentum() const
virtual std::vector< TrajectoryStateOnSurface > components() const
int TrackCharge
Definition: TrackCharge.h:4
const MagneticField * magneticField() const
const CartesianTrajectoryError & cartesianError() const
const GlobalTrajectoryParameters & globalParameters() const
TrajectoryStateOnSurface TSOS
virtual void update(const LocalTrajectoryParameters &p, const Surface &aSurface, const MagneticField *field, const SurfaceSide side)
const LocalTrajectoryError & localError() const
const CartesianTrajectoryError & cartesianError() const
const LocalTrajectoryError & localError() const
const GlobalTrajectoryParameters & globalParameters() const
GlobalVector globalDirection() const
MultiTrajectoryStateCombiner theCombiner
const Surface & surface() const
GlobalVector globalMomentum() const
virtual bool canUpdateLocalParameters() const
FreeTrajectoryState * freeTrajectoryState(bool withErrors=true) const
GlobalVector globalMomentum() const
const CurvilinearTrajectoryError & curvilinearError() const
GlobalVector globalDirection() const
const LocalTrajectoryParameters & localParameters() const
virtual SurfaceSide surfaceSide() const
Position relative to material, defined relative to momentum vector.