CMS 3D CMS Logo

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

#include <BasicMultiTrajectoryState.h>

Inheritance diagram for BasicMultiTrajectoryState:
BasicTrajectoryState ReferenceCountedPoolAllocated BlockWipedPoolAllocated

Public Member Functions

 BasicMultiTrajectoryState (const std::vector< TSOS > &tsvec)
 
 BasicMultiTrajectoryState ()
 
virtual bool canUpdateLocalParameters () const
 
const CartesianTrajectoryErrorcartesianError () const
 
TrackCharge charge () const
 
virtual BasicMultiTrajectoryStateclone () const
 
virtual std::vector
< TrajectoryStateOnSurface
components () const
 
const CurvilinearTrajectoryErrorcurvilinearError () const
 
FreeTrajectoryStatefreeTrajectoryState (bool withErrors=true) const
 
GlobalVector globalDirection () const
 
GlobalVector globalMomentum () const
 
const GlobalTrajectoryParametersglobalParameters () const
 
GlobalPoint globalPosition () const
 
bool hasError () const
 
bool isValid () const
 
LocalVector localDirection () const
 
const LocalTrajectoryErrorlocalError () const
 
LocalVector localMomentum () const
 
const LocalTrajectoryParameterslocalParameters () const
 
LocalPoint localPosition () const
 
const MagneticFieldmagneticField () const
 
void rescaleError (double factor)
 
double signedInverseMomentum () const
 
const Surfacesurface () const
 
virtual SurfaceSide surfaceSide () const
 Position relative to material, defined relative to momentum vector. More...
 
double transverseCurvature () const
 
virtual void update (const LocalTrajectoryParameters &p, const Surface &aSurface, const MagneticField *field, const SurfaceSide side)
 
virtual void update (const LocalTrajectoryParameters &p, const LocalTrajectoryError &err, const Surface &aSurface, const MagneticField *field, const SurfaceSide side, double weight)
 
double weight () const
 
- Public Member Functions inherited from BasicTrajectoryState
virtual ~BasicTrajectoryState ()
 
- Public Member Functions inherited from ReferenceCountedPoolAllocated
void addReference () const
 
const
ReferenceCountedPoolAllocated
operator= (const ReferenceCountedPoolAllocated &)
 
 ReferenceCountedPoolAllocated ()
 
 ReferenceCountedPoolAllocated (const ReferenceCountedPoolAllocated &iRHS)
 
unsigned int references () const
 
void removeReference () const
 
virtual ~ReferenceCountedPoolAllocated ()
 
- Public Member Functions inherited from BlockWipedPoolAllocated
virtual ~BlockWipedPoolAllocated ()
 

Private Types

typedef TrajectoryStateOnSurface TSOS
 

Private Member Functions

void checkCombinedState () const
 

Private Attributes

TSOS theCombinedState
 
bool theCombinedStateUp2Date
 
MultiTrajectoryStateCombiner theCombiner
 
std::vector< TSOStheStates
 

Additional Inherited Members

- Public Types inherited from BasicTrajectoryState
typedef BasicTrajectoryState BTSOS
 
typedef ProxyBase< BTSOS,
CopyUsingClone< BTSOS > > 
Proxy
 
typedef
ReferenceCountingPointer
< BasicTrajectoryState
RCPtr
 
typedef
SurfaceSideDefinition::SurfaceSide 
SurfaceSide
 
- Static Public Member Functions inherited from BlockWipedPoolAllocated
static BlockWipedAllocatorallocator (size_t s)
 
static void operator delete (void *p, size_t s)
 
static void * operator new (size_t s, void *p)
 
static void * operator new (size_t s)
 
static BlockWipedAllocator::Stat stat (size_t s)
 
static void usePool ()
 
- Static Public Attributes inherited from ReferenceCountedPoolAllocated
static int s_alive =0
 
static int s_referenced =0
 
- Static Public Attributes inherited from BlockWipedPoolAllocated
static int s_alive =0
 

Detailed Description

Definition at line 10 of file BasicMultiTrajectoryState.h.

Member Typedef Documentation

Definition at line 12 of file BasicMultiTrajectoryState.h.

Constructor & Destructor Documentation

BasicMultiTrajectoryState::BasicMultiTrajectoryState ( const std::vector< TSOS > &  tsvec)

Definition at line 8 of file BasicMultiTrajectoryState.cc.

References edm::hlt::Exception, i, and theStates.

8  :
10 {
11  theStates.reserve(tsvec.size());
12  for (std::vector<TSOS>::const_iterator i=tsvec.begin(); i!=tsvec.end(); i++) {
13  if (!i->isValid()) {
14  throw cms::Exception("LogicError") << "MultiTrajectoryState constructed with invalid state";
15  }
16  if (i->hasError() != tsvec.front().hasError()) {
17  throw cms::Exception("LogicError") << "MultiTrajectoryState mixes states with and without errors";
18  }
19  if ( &i->surface() != &tsvec.front().surface()) {
20  throw cms::Exception("LogicError") << "MultiTrajectoryState mixes states with different surfaces";
21  }
22  if ( i->surfaceSide() != tsvec.front().surfaceSide()) {
23  throw cms::Exception("LogicError")
24  << "MultiTrajectoryState mixes states defined before and after material";
25  }
26  if ( i->localParameters().pzSign()*tsvec.front().localParameters().pzSign()<0. ) {
27  throw cms::Exception("LogicError")
28  << "MultiTrajectoryState mixes states with different signs of local p_z";
29  }
30  if ( i==tsvec.begin() ) {
31  // only accept planes!!
32  const BoundPlane* bp = dynamic_cast<const BoundPlane*>(&i->surface());
33  if ( bp==0 )
34  throw cms::Exception("LogicError") << "MultiTrajectoryState constructed on cylinder";
35  }
36  theStates.push_back( *i);
37  }
38 }
int i
Definition: DBlmapReader.cc:9
BasicMultiTrajectoryState::BasicMultiTrajectoryState ( )
inline

Definition at line 18 of file BasicMultiTrajectoryState.h.

Referenced by clone().

18 {}

Member Function Documentation

virtual bool BasicMultiTrajectoryState::canUpdateLocalParameters ( ) const
inlinevirtual

Implements BasicTrajectoryState.

Definition at line 132 of file BasicMultiTrajectoryState.h.

132 { return false; }
const CartesianTrajectoryError& BasicMultiTrajectoryState::cartesianError ( ) const
inlinevirtual
TrackCharge BasicMultiTrajectoryState::charge ( void  ) const
inlinevirtual
void BasicMultiTrajectoryState::checkCombinedState ( ) const
private
virtual BasicMultiTrajectoryState* BasicMultiTrajectoryState::clone ( void  ) const
inlinevirtual

Implements BasicTrajectoryState.

Definition at line 121 of file BasicMultiTrajectoryState.h.

References BasicMultiTrajectoryState().

121  {
122  return new BasicMultiTrajectoryState(*this);
123  }
virtual std::vector<TrajectoryStateOnSurface> BasicMultiTrajectoryState::components ( ) const
inlinevirtual

Reimplemented from BasicTrajectoryState.

Definition at line 125 of file BasicMultiTrajectoryState.h.

References theStates.

125  {
126  return theStates;
127  }
const CurvilinearTrajectoryError& BasicMultiTrajectoryState::curvilinearError ( ) const
inlinevirtual
FreeTrajectoryState* BasicMultiTrajectoryState::freeTrajectoryState ( bool  withErrors = true) const
inlinevirtual

Implements BasicTrajectoryState.

Definition at line 72 of file BasicMultiTrajectoryState.h.

References checkCombinedState(), TrajectoryStateOnSurface::freeTrajectoryState(), and theCombinedState.

72  {
74  return theCombinedState.freeTrajectoryState(withErrors);
75  }
FreeTrajectoryState * freeTrajectoryState(bool withErrors=true) const
GlobalVector BasicMultiTrajectoryState::globalDirection ( ) const
inlinevirtual
GlobalVector BasicMultiTrajectoryState::globalMomentum ( ) const
inlinevirtual
const GlobalTrajectoryParameters& BasicMultiTrajectoryState::globalParameters ( void  ) const
inlinevirtual
GlobalPoint BasicMultiTrajectoryState::globalPosition ( ) const
inlinevirtual
bool BasicMultiTrajectoryState::hasError ( void  ) const
inlinevirtual

Implements BasicTrajectoryState.

Definition at line 22 of file BasicMultiTrajectoryState.h.

References isValid(), and theStates.

22  {
23  if (isValid()) return theStates.front().hasError();
24  return false;
25  }
bool BasicMultiTrajectoryState::isValid ( void  ) const
inlinevirtual

Implements BasicTrajectoryState.

Definition at line 20 of file BasicMultiTrajectoryState.h.

References theStates.

Referenced by hasError(), and surface().

20 { return !theStates.empty() && theStates.front().isValid();}
LocalVector BasicMultiTrajectoryState::localDirection ( ) const
inlinevirtual
const LocalTrajectoryError& BasicMultiTrajectoryState::localError ( ) const
inlinevirtual
LocalVector BasicMultiTrajectoryState::localMomentum ( ) const
inlinevirtual
const LocalTrajectoryParameters& BasicMultiTrajectoryState::localParameters ( ) const
inlinevirtual
LocalPoint BasicMultiTrajectoryState::localPosition ( ) const
inlinevirtual
const MagneticField * BasicMultiTrajectoryState::magneticField ( ) const
virtual

Implements BasicTrajectoryState.

Definition at line 79 of file BasicMultiTrajectoryState.cc.

References theStates.

80 {
81  //
82  // Magnetic field should be identical in all components:
83  // avoid forcing the combination of states and take value from 1st component!
84  //
85  if (theStates.empty()) {
86  edm::LogError("BasicMultiTrajectoryState")
87  << "Asking for magneticField of empty MultiTrajectoryState, returning null pointer!";
88  return 0;
89  }
90  return theStates.front().magneticField();
91 }
void BasicMultiTrajectoryState::rescaleError ( double  factor)
virtual

Rescaling the error of the mixture with a given factor. Please note that this rescaling is imposed on each of the components of the mixture and does therefore not exactly correspond to rescaling theCombinedState with the same factor.

Implements BasicTrajectoryState.

Definition at line 65 of file BasicMultiTrajectoryState.cc.

References theCombinedStateUp2Date, and theStates.

65  {
66 
67  if (theStates.empty()) {
68  edm::LogError("BasicMultiTrajectoryState") << "Trying to rescale errors of empty MultiTrajectoryState!";
69  return;
70  }
71 
72  for (std::vector<TSOS>::iterator it = theStates.begin(); it != theStates.end(); it++) {
73  it->rescaleError(factor);
74  }
76 }
double BasicMultiTrajectoryState::signedInverseMomentum ( ) const
inlinevirtual
const Surface& BasicMultiTrajectoryState::surface ( ) const
inlinevirtual

Implements BasicTrajectoryState.

Definition at line 104 of file BasicMultiTrajectoryState.h.

References edm::hlt::Exception, isValid(), and theStates.

104  {
105  if (!isValid())
106  throw cms::Exception("LogicError")
107  << "surface() called for invalid MultiTrajectoryState";
108  return theStates.front().surface();
109  }
SurfaceSide BasicMultiTrajectoryState::surfaceSide ( ) const
virtual

Position relative to material, defined relative to momentum vector.

Implements BasicTrajectoryState.

Definition at line 94 of file BasicMultiTrajectoryState.cc.

References SurfaceSideDefinition::atCenterOfSurface, and theStates.

95 {
96  //
97  // SurfaceSide should be identical in all components:
98  // avoid forcing the combination of states and take value from 1st component!
99  //
100  if (theStates.empty()) {
101  edm::LogError("BasicMultiTrajectoryState")
102  << "Asking for magneticField of empty MultiTrajectoryState, returning atCenterOfSurface!";
103  return atCenterOfSurface;
104  }
105  return theStates.front().surfaceSide();
106 }
double BasicMultiTrajectoryState::transverseCurvature ( ) const
inlinevirtual
void BasicMultiTrajectoryState::update ( const LocalTrajectoryParameters p,
const Surface aSurface,
const MagneticField field,
const SurfaceSide  side 
)
virtual

Implements BasicTrajectoryState.

Definition at line 110 of file BasicMultiTrajectoryState.cc.

References edm::hlt::Exception.

Referenced by python.Vispa.Gui.VispaWidget.VispaWidget::autosize(), python.Vispa.Views.LineDecayView.LineDecayContainer::createObject(), python.Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), python.Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), python.Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), python.Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), python.Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), python.Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), python.Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), python.Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), python.Vispa.Gui.FindDialog.FindDialog::reset(), python.Vispa.Gui.PortConnection.PointToPointConnection::select(), python.Vispa.Gui.VispaWidget.VispaWidget::select(), python.Vispa.Views.LineDecayView.LineDecayContainer::select(), python.Vispa.Gui.VispaWidget.VispaWidget::setText(), python.Vispa.Gui.VispaWidget.VispaWidget::setTitle(), python.Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), python.Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and python.Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

114 {
115  throw cms::Exception("LogicError",
116  "BasicMultiTrajectoryState::update(LocalTrajectoryParameters, Surface, ...) called even if canUpdateLocalParameters() is false");
117 }
void BasicMultiTrajectoryState::update ( const LocalTrajectoryParameters p,
const LocalTrajectoryError err,
const Surface aSurface,
const MagneticField field,
const SurfaceSide  side,
double  weight 
)
virtual

Implements BasicTrajectoryState.

Definition at line 121 of file BasicMultiTrajectoryState.cc.

References edm::hlt::Exception.

Referenced by python.Vispa.Gui.VispaWidget.VispaWidget::autosize(), python.Vispa.Views.LineDecayView.LineDecayContainer::createObject(), python.Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), python.Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), python.Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), python.Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), python.Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), python.Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), python.Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), python.Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), python.Vispa.Gui.FindDialog.FindDialog::reset(), python.Vispa.Gui.PortConnection.PointToPointConnection::select(), python.Vispa.Gui.VispaWidget.VispaWidget::select(), python.Vispa.Views.LineDecayView.LineDecayContainer::select(), python.Vispa.Gui.VispaWidget.VispaWidget::setText(), python.Vispa.Gui.VispaWidget.VispaWidget::setTitle(), python.Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), python.Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and python.Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

127 {
128  throw cms::Exception("LogicError",
129  "BasicMultiTrajectoryState::update(LocalTrajectoryParameters, LocalTrajectoryError, ...) called even if canUpdateLocalParameters() is false");
130 }
double BasicMultiTrajectoryState::weight ( ) const
virtual

Reimplemented from BasicTrajectoryState.

Definition at line 49 of file BasicMultiTrajectoryState.cc.

References theStates.

49  {
50 
51  if (theStates.empty()) {
52  edm::LogError("BasicMultiTrajectoryState")
53  << "Asking for weight of empty MultiTrajectoryState, returning zero!";
54  return 0.;
55  }
56 
57  double sumw = 0.;
58  for (std::vector<TSOS>::const_iterator it = theStates.begin(); it != theStates.end(); it++) {
59  sumw += it->weight();
60  }
61  return sumw;
62 }

Member Data Documentation

TSOS BasicMultiTrajectoryState::theCombinedState
mutableprivate
bool BasicMultiTrajectoryState::theCombinedStateUp2Date
mutableprivate

Definition at line 148 of file BasicMultiTrajectoryState.h.

Referenced by checkCombinedState(), and rescaleError().

MultiTrajectoryStateCombiner BasicMultiTrajectoryState::theCombiner
private

Definition at line 149 of file BasicMultiTrajectoryState.h.

Referenced by checkCombinedState().

std::vector<TSOS> BasicMultiTrajectoryState::theStates
private