CMS 3D CMS Logo

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

#include <MultiRefittedTS.h>

Inheritance diagram for MultiRefittedTS:
RefittedTrackState< 5 > ReferenceCounted

Public Types

typedef
ReferenceCountingPointer
< LinearizedTrackState< 5 > > 
RefCountedLinearizedTrackState
 
typedef
ReferenceCountingPointer
< RefittedTrackState< 5 > > 
RefCountedRefittedTrackState
 
- Public Types inherited from RefittedTrackState< 5 >
typedef ROOT::Math::SMatrix
< double, N, N,
ROOT::Math::MatRepSym< double,
N > > 
AlgebraicSymMatrixNN
 
typedef ROOT::Math::SVector
< double, N-2 > 
AlgebraicVectorM
 
typedef ROOT::Math::SVector
< double, N
AlgebraicVectorN
 

Public Member Functions

virtual std::vector
< ReferenceCountingPointer
< RefittedTrackState< 5 > > > 
components () const
 
virtual AlgebraicSymMatrixNN covariance () const
 
virtual FreeTrajectoryState freeTrajectoryState () const
 
virtual AlgebraicVectorM momentumVector () const
 
 MultiRefittedTS (const std::vector< RefCountedRefittedTrackState > &prtsComp, const Surface &referenceSurface)
 
 MultiRefittedTS (const std::vector< RefCountedRefittedTrackState > &prtsComp, const GlobalPoint &referencePosition)
 
virtual AlgebraicVectorN parameters () const
 
virtual GlobalPoint position () const
 
virtual
ReferenceCountingPointer
< RefittedTrackState< 5 > > 
stateWithNewWeight (const double newWeight) const
 
virtual TrajectoryStateOnSurface trajectoryStateOnSurface (const Surface &surface) const
 
virtual TrajectoryStateOnSurface trajectoryStateOnSurface (const Surface &surface, const Propagator &propagator) const
 
virtual reco::TransientTrack transientTrack () const
 
virtual double weight () const
 
virtual ~MultiRefittedTS ()
 
- Public Member Functions inherited from RefittedTrackState< 5 >
virtual ~RefittedTrackState ()
 

Private Types

typedef std::vector
< RefCountedRefittedTrackState
RTSvector
 

Private Member Functions

void computeFreeTrajectoryState () const
 

Private Attributes

FreeTrajectoryState fts
 
bool ftsAvailable
 
const GlobalPoint refPosition
 
ConstReferenceCountingPointer
< Surface
refSurface
 
const bool surf
 
RTSvector theComponents
 
double totalWeight
 
bool totalWeightAvailable
 

Detailed Description

Definition at line 17 of file MultiRefittedTS.h.

Member Typedef Documentation

Definition at line 22 of file MultiRefittedTS.h.

Definition at line 21 of file MultiRefittedTS.h.

Definition at line 121 of file MultiRefittedTS.h.

Constructor & Destructor Documentation

MultiRefittedTS::MultiRefittedTS ( const std::vector< RefCountedRefittedTrackState > &  prtsComp,
const Surface referenceSurface 
)

Constructor with a reference surface, to be used to assemble the TSOS components on one identical surface.

Definition at line 12 of file MultiRefittedTS.cc.

Referenced by stateWithNewWeight().

13  :
14  theComponents(prtsComp), ftsAvailable(false), refSurface(&referenceSurface),
15  surf(true) {}
RTSvector theComponents
ConstReferenceCountingPointer< Surface > refSurface
MultiRefittedTS::MultiRefittedTS ( const std::vector< RefCountedRefittedTrackState > &  prtsComp,
const GlobalPoint referencePosition 
)

Constructor with a reference position. The surface which is going to be usedto assemble the TSOS components will be the surface perpendicular to the PCA of the state with the highest weight to the reference point.

Definition at line 18 of file MultiRefittedTS.cc.

19  :
20  theComponents(prtsComp), ftsAvailable(false), refPosition(referencePosition),
21  surf(false) {}
const GlobalPoint refPosition
RTSvector theComponents
virtual MultiRefittedTS::~MultiRefittedTS ( )
inlinevirtual

Definition at line 39 of file MultiRefittedTS.h.

39 {}

Member Function Documentation

virtual std::vector<ReferenceCountingPointer<RefittedTrackState<5> > > MultiRefittedTS::components ( ) const
inlinevirtual

Implements RefittedTrackState< 5 >.

Definition at line 99 of file MultiRefittedTS.h.

References theComponents.

100  {
101  return theComponents;
102  }
RTSvector theComponents
void MultiRefittedTS::computeFreeTrajectoryState ( ) const
private

Definition at line 33 of file MultiRefittedTS.cc.

References TransverseImpactPointExtrapolator::extrapolate(), freeTrajectoryState(), TrajectoryStateOnSurface::freeTrajectoryState(), fts, ftsAvailable, refPosition, surf, TrajectoryStateOnSurface::surface(), theComponents, and trajectoryStateOnSurface().

Referenced by freeTrajectoryState().

34 {
35  if (surf) {
37  } else {
38  double maxWeight = -1.;
39  RTSvector::const_iterator maxIt;
40  for (RTSvector::const_iterator it = theComponents.begin();
41  it != theComponents.end(); it++) {
42  if ( (**it).weight() > maxWeight ) {
43  maxWeight = (**it).weight();
44  maxIt = it;
45  }
46  }
47 
48  TransverseImpactPointExtrapolator tipe(&((**maxIt).freeTrajectoryState().parameters().magneticField()));
49  TrajectoryStateOnSurface initialTSOS = tipe.extrapolate((**maxIt).freeTrajectoryState(), refPosition);
50 
52  }
53  ftsAvailable = true;
54 }
virtual TrajectoryStateOnSurface trajectoryStateOnSurface(const Surface &surface) const
FreeTrajectoryState * freeTrajectoryState(bool withErrors=true) const
FreeTrajectoryState fts
const GlobalPoint refPosition
const Surface & surface() const
virtual FreeTrajectoryState freeTrajectoryState() const
RTSvector theComponents
MultiRefittedTS::AlgebraicSymMatrixNN MultiRefittedTS::covariance ( void  ) const
virtual

The covariance matrix. Not possible yet for a multi-state, throws an exception.

The covariance matrix

Implements RefittedTrackState< 5 >.

Definition at line 72 of file MultiRefittedTS.cc.

73 {
74  throw VertexException
75  ("MultiRefittedTS::freeTrajectoryState(): Don't know how to do that yet...");
76 }
Common base class.
FreeTrajectoryState MultiRefittedTS::freeTrajectoryState ( ) const
virtual

Returns a FreeTrajectoryState. It will be the FTS of the single, collapsed state.

Transformation into a FreeTrajectoryState

Implements RefittedTrackState< 5 >.

Definition at line 27 of file MultiRefittedTS.cc.

References computeFreeTrajectoryState(), fts, and ftsAvailable.

Referenced by computeFreeTrajectoryState(), and transientTrack().

28 {
30  return fts;
31 }
void computeFreeTrajectoryState() const
FreeTrajectoryState fts
MultiRefittedTS::AlgebraicVectorM MultiRefittedTS::momentumVector ( ) const
virtual

Vector containing the parameters describing the momentum as the vertex. These are (signed transverse curvature, theta, phi). Not possible yet for a multi-state, throws an exception.

Vector containing the parameters describing the momentum as the vertex. These are (signed transverse curvature, theta, phi)

Implements RefittedTrackState< 5 >.

Definition at line 93 of file MultiRefittedTS.cc.

94 {
95  throw VertexException
96  ("MultiRefittedTS::freeTrajectoryState(): Don't know how to do that yet...");
97 }
Common base class.
MultiRefittedTS::AlgebraicVectorN MultiRefittedTS::parameters ( void  ) const
virtual

Vector containing the refitted track parameters. Not possible yet for a multi-state, throws an exception.

Vector containing the refitted track parameters.
These are (signed transverse curvature, theta, phi, (signed) transverse , longitudinal impact parameter)

Implements RefittedTrackState< 5 >.

Definition at line 62 of file MultiRefittedTS.cc.

63 {
64  throw VertexException
65  ("MultiRefittedTS::freeTrajectoryState(): Don't know how to do that yet...");
66 }
Common base class.
GlobalPoint MultiRefittedTS::position ( ) const
virtual

Position at which the momentum is defined. Not possible yet for a multi-state, throws an exception.

Position at which the momentum is defined.

Implements RefittedTrackState< 5 >.

Definition at line 82 of file MultiRefittedTS.cc.

83 {
84  throw VertexException
85  ("MultiRefittedTS::freeTrajectoryState(): Don't know how to do that yet...");
86 }
Common base class.
ReferenceCountingPointer< RefittedTrackState< 5 > > MultiRefittedTS::stateWithNewWeight ( const double  newWeight) const
virtual

This method is meant to returns a new refitted state of the same type, but with another weight. As we can have several components, each component of the new multi-state will be reweighted so that the sum of all weights is equal to the specified weight. The current state is unchanged.

Implements RefittedTrackState< 5 >.

Definition at line 117 of file MultiRefittedTS.cc.

References MultiRefittedTS(), refPosition, refSurface, surf, theComponents, and weight().

118 {
119  if (weight() < DBL_MIN) {
120  throw VertexException
121  ("MultiRefittedTS::stateWithNewWeight(): Can not reweight multi-state with total weight < DBL_MIN");
122  }
123  double factor = newWeight/weight();
124 
125  RTSvector reWeightedRTSC;
126  reWeightedRTSC.reserve(theComponents.size());
127 
128  for (RTSvector::const_iterator it = theComponents.begin();
129  it != theComponents.end(); it++) {
130  reWeightedRTSC.push_back((**it).stateWithNewWeight((**it).weight()*factor));
131  }
132  if (surf) {
133  return RefCountedRefittedTrackState(new MultiRefittedTS(reWeightedRTSC, *refSurface));
134  } else {
135  return RefCountedRefittedTrackState(new MultiRefittedTS(reWeightedRTSC, refPosition));
136  }
137 }
MultiRefittedTS(const std::vector< RefCountedRefittedTrackState > &prtsComp, const Surface &referenceSurface)
virtual double weight() const
Common base class.
ReferenceCountingPointer< RefittedTrackState< 5 > > RefCountedRefittedTrackState
const GlobalPoint refPosition
std::vector< RefCountedRefittedTrackState > RTSvector
RTSvector theComponents
ConstReferenceCountingPointer< Surface > refSurface
TrajectoryStateOnSurface MultiRefittedTS::trajectoryStateOnSurface ( const Surface surface) const
virtual

Returns a multi-state TSOS at a given surface

Transformation into a TSOS at a given surface

Implements RefittedTrackState< 5 >.

Definition at line 142 of file MultiRefittedTS.cc.

References theComponents.

Referenced by computeFreeTrajectoryState().

144 {
145  vector<TrajectoryStateOnSurface> tsosComponents;
146  tsosComponents.reserve(theComponents.size());
147  for (RTSvector::const_iterator it = theComponents.begin();
148  it != theComponents.end(); it++) {
149  tsosComponents.push_back((**it).trajectoryStateOnSurface(surface));
150  }
151 // #ifndef CMS_NO_COMPLEX_RETURNS
152  return TrajectoryStateOnSurface(new BasicMultiTrajectoryState(tsosComponents));
153 // #else
154 // TrajectoryStateOnSurface result(new BasicMultiTrajectoryState(tsosComponents));
155 // return result;
156 // #endif
157 }
RTSvector theComponents
TrajectoryStateOnSurface MultiRefittedTS::trajectoryStateOnSurface ( const Surface surface,
const Propagator propagator 
) const
virtual

Returns a multi-state TSOS at a given surface, with a given propagator

Implements RefittedTrackState< 5 >.

Definition at line 159 of file MultiRefittedTS.cc.

References theComponents.

161 { //fixme... is the propagation done correctly? Is there a gsf propagator?
162  vector<TrajectoryStateOnSurface> tsosComponents;
163  tsosComponents.reserve(theComponents.size());
164  for (RTSvector::const_iterator it = theComponents.begin();
165  it != theComponents.end(); it++) {
166  tsosComponents.push_back((**it).trajectoryStateOnSurface(surface, propagator));
167  }
168 // #ifndef CMS_NO_COMPLEX_RETURNS
169  return TrajectoryStateOnSurface(new BasicMultiTrajectoryState(tsosComponents));
170 // #else
171 // TrajectoryStateOnSurface result(new BasicMultiTrajectoryState(tsosComponents));
172 // return result;
173 // #endif
174 }
RTSvector theComponents
reco::TransientTrack MultiRefittedTS::transientTrack ( ) const
virtual

Returns a new reco::Track, which can then be made persistent. The parameters are taken from FTS described above.

Implements RefittedTrackState< 5 >.

Definition at line 176 of file MultiRefittedTS.cc.

References TransientTrackFromFTSFactory::build(), and freeTrajectoryState().

177 {
179  return factory.build(freeTrajectoryState());
180 }
reco::TransientTrack build(const FreeTrajectoryState &fts) const
virtual FreeTrajectoryState freeTrajectoryState() const
double MultiRefittedTS::weight ( void  ) const
virtual

The weight of this component in a mixture

Implements RefittedTrackState< 5 >.

Definition at line 99 of file MultiRefittedTS.cc.

References gather_cfg::cout, theComponents, totalWeight, and totalWeightAvailable.

Referenced by stateWithNewWeight().

100 {
102  {
103  totalWeight = 0.;
104  if (theComponents.empty()) {
105  cout << "Asking for weight of empty MultiRefittedTS, returning zero!" << endl;
106  }
107  for (RTSvector::const_iterator it = theComponents.begin();
108  it != theComponents.end(); it++) {
109  totalWeight += (**it).weight();
110  }
111  }
112  return totalWeight;
113 }
tuple cout
Definition: gather_cfg.py:121
RTSvector theComponents

Member Data Documentation

FreeTrajectoryState MultiRefittedTS::fts
mutableprivate

Definition at line 126 of file MultiRefittedTS.h.

Referenced by computeFreeTrajectoryState(), and freeTrajectoryState().

bool MultiRefittedTS::ftsAvailable
mutableprivate

Definition at line 124 of file MultiRefittedTS.h.

Referenced by computeFreeTrajectoryState(), and freeTrajectoryState().

const GlobalPoint MultiRefittedTS::refPosition
private

Definition at line 127 of file MultiRefittedTS.h.

Referenced by computeFreeTrajectoryState(), and stateWithNewWeight().

ConstReferenceCountingPointer<Surface> MultiRefittedTS::refSurface
private

Definition at line 128 of file MultiRefittedTS.h.

Referenced by stateWithNewWeight().

const bool MultiRefittedTS::surf
private

Definition at line 129 of file MultiRefittedTS.h.

Referenced by computeFreeTrajectoryState(), and stateWithNewWeight().

RTSvector MultiRefittedTS::theComponents
mutableprivate
double MultiRefittedTS::totalWeight
mutableprivate

Definition at line 125 of file MultiRefittedTS.h.

Referenced by weight().

bool MultiRefittedTS::totalWeightAvailable
mutableprivate

Definition at line 124 of file MultiRefittedTS.h.

Referenced by weight().