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 Member Functions | Private Attributes
TwoBodyDecayTrajectory Class Reference

#include <TwoBodyDecayTrajectory.h>

Inheritance diagram for TwoBodyDecayTrajectory:
ReferenceTrajectoryBase ReferenceCounted

Public Types

typedef std::pair
< ConstRecHitContainer,
ConstRecHitContainer
ConstRecHitCollection
 
typedef
TransientTrackingRecHit::ConstRecHitContainer 
ConstRecHitContainer
 
- Public Types inherited from ReferenceTrajectoryBase
enum  MaterialEffects {
  none, multipleScattering, energyLoss, combined,
  breakPoints, brokenLinesCoarse, brokenLinesFine, localGBL,
  curvlinGBL
}
 
typedef
ReferenceCountingPointer
< ReferenceTrajectoryBase
ReferenceTrajectoryPtr
 

Public Member Functions

virtual TwoBodyDecayTrajectoryclone (void) const
 
const std::pair< int, int > numberOfRecHits (void)
 
 TwoBodyDecayTrajectory (const TwoBodyDecayTrajectoryState &trajectoryState, const ConstRecHitCollection &recHits, const MagneticField *magField, MaterialEffects materialEffects, PropagationDirection propDir, bool hitsAreReverse, const reco::BeamSpot &beamSpot, bool useRefittedState, bool constructTsosWithErrors)
 
 TwoBodyDecayTrajectory (void)
 
 ~TwoBodyDecayTrajectory (void)
 
- Public Member Functions inherited from ReferenceTrajectoryBase
const AlgebraicMatrixderivatives () const
 
const TMatrixD & gblExtDerivatives () const
 
const TVectorD & gblExtMeasurements () const
 
const TVectorD & gblExtPrecisions () const
 
std::vector< std::pair
< std::vector< GblPoint >
, TMatrixD > > & 
gblInput ()
 
bool isValid ()
 
const AlgebraicMatrixlocalToTrajectory () const
 
const AlgebraicSymMatrixmeasurementErrors () const
 
const AlgebraicVectormeasurements () const
 
int nominalField () const
 
unsigned int numberOfHitMeas () const
 
unsigned int numberOfHits () const
 
unsigned int numberOfPar () const
 
unsigned int numberOfVirtualMeas () const
 
unsigned int numberOfVirtualPar () const
 
const AlgebraicSymMatrixparameterErrors () const
 
bool parameterErrorsAvailable () const
 
const AlgebraicVectorparameters () const
 
const
TransientTrackingRecHit::ConstRecHitContainer
recHits () const
 
void setParameterErrors (const AlgebraicSymMatrix &error)
 
const AlgebraicSymMatrixtrajectoryPositionErrors () const
 
const AlgebraicVectortrajectoryPositions () const
 
const std::vector
< TrajectoryStateOnSurface > & 
trajectoryStates () const
 
const AlgebraicMatrixtrajectoryToCurv () const
 
virtual ~ReferenceTrajectoryBase ()
 

Private Member Functions

bool construct (const TwoBodyDecayTrajectoryState &state, const ConstRecHitCollection &recHits, const MagneticField *field, MaterialEffects materialEffects, PropagationDirection propDir, const reco::BeamSpot &beamSpot, bool useRefittedState, bool constructTsosWithErrors)
 
void constructSingleTsosWithErrors (const TrajectoryStateOnSurface &tsos, int iTsos, const MagneticField *field)
 
void constructTsosVecWithErrors (const ReferenceTrajectory &traj1, const ReferenceTrajectory &traj2, const MagneticField *field)
 

Private Attributes

std::pair< int, int > theNumberOfRecHits
 

Additional Inherited Members

- Protected Member Functions inherited from ReferenceTrajectoryBase
unsigned int numberOfUsedRecHits (const TransientTrackingRecHit::ConstRecHitContainer &recHits) const
 
 ReferenceTrajectoryBase (unsigned int nPar, unsigned int nHits, unsigned int nVirtualPar, unsigned int nVirtualMeas)
 
bool useRecHit (const TransientTrackingRecHit::ConstRecHitPointer &hitPtr) const
 
- Protected Attributes inherited from ReferenceTrajectoryBase
AlgebraicMatrix theDerivatives
 
TMatrixD theGblExtDerivatives
 
TVectorD theGblExtMeasurements
 
TVectorD theGblExtPrecisions
 
std::vector< std::pair
< std::vector< GblPoint >
, TMatrixD > > 
theGblInput
 
AlgebraicMatrix theInnerLocalToTrajectory
 
AlgebraicMatrix theInnerTrajectoryToCurvilinear
 
AlgebraicVector theMeasurements
 
AlgebraicSymMatrix theMeasurementsCov
 
int theNomField
 
unsigned int theNumberOfHits
 
unsigned int theNumberOfPars
 
unsigned int theNumberOfVirtualMeas
 
unsigned int theNumberOfVirtualPars
 
bool theParamCovFlag
 
AlgebraicSymMatrix theParameterCov
 
AlgebraicVector theParameters
 
TransientTrackingRecHit::ConstRecHitContainer theRecHits
 
AlgebraicSymMatrix theTrajectoryPositionCov
 
AlgebraicVector theTrajectoryPositions
 
std::vector
< TrajectoryStateOnSurface
theTsosVec
 
bool theValidityFlag
 
- Static Protected Attributes inherited from ReferenceTrajectoryBase
static const unsigned int nMeasPerHit = 2
 

Detailed Description

Definition at line 14 of file TwoBodyDecayTrajectory.h.

Member Typedef Documentation

Definition at line 20 of file TwoBodyDecayTrajectory.h.

Definition at line 19 of file TwoBodyDecayTrajectory.h.

Constructor & Destructor Documentation

TwoBodyDecayTrajectory::TwoBodyDecayTrajectory ( const TwoBodyDecayTrajectoryState trajectoryState,
const ConstRecHitCollection recHits,
const MagneticField magField,
MaterialEffects  materialEffects,
PropagationDirection  propDir,
bool  hitsAreReverse,
const reco::BeamSpot beamSpot,
bool  useRefittedState,
bool  constructTsosWithErrors 
)

Definition at line 15 of file TwoBodyDecayTrajectory.cc.

References construct(), and ReferenceTrajectoryBase::theValidityFlag.

26  TwoBodyDecayParameters::dimension, recHits.first.size() + recHits.second.size(),
27  (materialEffects >= breakPoints) ? 2*(recHits.first.size() + recHits.second.size())-4 : 0,
28  (materialEffects >= breakPoints) ? 2*(recHits.first.size() + recHits.second.size())-3 : 1 )
29 {
30  if ( hitsAreReverse )
31  {
32  TransientTrackingRecHit::ConstRecHitContainer::const_reverse_iterator itRecHits;
33  ConstRecHitCollection fwdRecHits;
34 
35  fwdRecHits.first.reserve( recHits.first.size() );
36  for ( itRecHits = recHits.first.rbegin(); itRecHits != recHits.first.rend(); ++itRecHits )
37  {
38  fwdRecHits.first.push_back( *itRecHits );
39  }
40 
41  fwdRecHits.second.reserve( recHits.second.size() );
42  for ( itRecHits = recHits.second.rbegin(); itRecHits != recHits.second.rend(); ++itRecHits )
43  {
44  fwdRecHits.second.push_back( *itRecHits );
45  }
46 
47  theValidityFlag = this->construct( trajectoryState, fwdRecHits, magField, materialEffects, propDir,
48  beamSpot, useRefittedState, constructTsosWithErrors );
49  }
50  else
51  {
52  theValidityFlag = this->construct( trajectoryState, recHits, magField, materialEffects, propDir,
53  beamSpot, useRefittedState, constructTsosWithErrors );
54  }
55 }
ReferenceTrajectoryBase(unsigned int nPar, unsigned int nHits, unsigned int nVirtualPar, unsigned int nVirtualMeas)
const TransientTrackingRecHit::ConstRecHitContainer & recHits() const
std::pair< ConstRecHitContainer, ConstRecHitContainer > ConstRecHitCollection
bool construct(const TwoBodyDecayTrajectoryState &state, const ConstRecHitCollection &recHits, const MagneticField *field, MaterialEffects materialEffects, PropagationDirection propDir, const reco::BeamSpot &beamSpot, bool useRefittedState, bool constructTsosWithErrors)
TwoBodyDecayTrajectory::TwoBodyDecayTrajectory ( void  )

Definition at line 58 of file TwoBodyDecayTrajectory.cc.

Referenced by clone().

59  : ReferenceTrajectoryBase( 0, 0, 0, 0)
60 {}
ReferenceTrajectoryBase(unsigned int nPar, unsigned int nHits, unsigned int nVirtualPar, unsigned int nVirtualMeas)
TwoBodyDecayTrajectory::~TwoBodyDecayTrajectory ( void  )
inline

Definition at line 34 of file TwoBodyDecayTrajectory.h.

34 {}

Member Function Documentation

virtual TwoBodyDecayTrajectory* TwoBodyDecayTrajectory::clone ( void  ) const
inlinevirtual

Implements ReferenceTrajectoryBase.

Definition at line 36 of file TwoBodyDecayTrajectory.h.

References TwoBodyDecayTrajectory().

37  { return new TwoBodyDecayTrajectory( *this ); }
bool TwoBodyDecayTrajectory::construct ( const TwoBodyDecayTrajectoryState state,
const ConstRecHitCollection recHits,
const MagneticField field,
MaterialEffects  materialEffects,
PropagationDirection  propDir,
const reco::BeamSpot beamSpot,
bool  useRefittedState,
bool  constructTsosWithErrors 
)
private

Definition at line 63 of file TwoBodyDecayTrajectory.cc.

References cuy::col, constructTsosVecWithErrors(), TwoBodyDecayParameters::covariance(), TwoBodyDecayTrajectoryState::decayParameters(), TwoBodyDecayTrajectoryState::derivatives(), ReferenceTrajectoryBase::derivatives(), ReferenceTrajectoryBase::gblInput(), ReferenceTrajectoryBase::isValid(), ReferenceTrajectoryBase::localGBL, ReferenceTrajectoryBase::localToTrajectory(), TwoBodyDecayParameters::mass, ReferenceTrajectoryBase::measurementErrors(), ReferenceTrajectoryBase::measurements(), ReferenceTrajectoryBase::nominalField(), ReferenceTrajectoryBase::numberOfHitMeas(), ReferenceTrajectoryBase::numberOfHits(), ReferenceTrajectoryBase::numberOfPar(), ReferenceTrajectoryBase::numberOfVirtualMeas(), ReferenceTrajectoryBase::numberOfVirtualPar(), TwoBodyDecayParameters::parameters(), TwoBodyDecayTrajectoryState::particleMass(), TwoBodyDecayTrajectoryState::primaryMass(), TwoBodyDecayTrajectoryState::primaryWidth(), ReferenceTrajectoryBase::theDerivatives, ReferenceTrajectoryBase::theGblExtDerivatives, ReferenceTrajectoryBase::theGblExtMeasurements, ReferenceTrajectoryBase::theGblExtPrecisions, ReferenceTrajectoryBase::theGblInput, ReferenceTrajectoryBase::theMeasurements, ReferenceTrajectoryBase::theMeasurementsCov, ReferenceTrajectoryBase::theNomField, ReferenceTrajectoryBase::theNumberOfHits, ReferenceTrajectoryBase::theNumberOfPars, theNumberOfRecHits, ReferenceTrajectoryBase::theNumberOfVirtualMeas, ReferenceTrajectoryBase::theNumberOfVirtualPars, ReferenceTrajectoryBase::theParameters, ReferenceTrajectoryBase::theRecHits, ReferenceTrajectoryBase::theTrajectoryPositionCov, ReferenceTrajectoryBase::theTrajectoryPositions, ReferenceTrajectoryBase::theTsosVec, ReferenceTrajectoryBase::trajectoryPositions(), TwoBodyDecayTrajectoryState::trajectoryStates(), and ReferenceTrajectoryBase::trajectoryStates().

Referenced by TwoBodyDecayTrajectory().

71 {
72  const TwoBodyDecayTrajectoryState::TsosContainer& tsos = state.trajectoryStates( useRefittedState );
74  double mass = state.particleMass();
75 
76  //
77  // first track
78  //
79 
80  // construct a trajectory (hits should be already in correct order)
81  ReferenceTrajectory trajectory1( tsos.first, recHits.first, false, field, materialEffects,
82  propDir, mass, false, beamSpot);
83 
84  // check if construction of trajectory was successful
85  if ( !trajectory1.isValid() ) return false;
86 
87  //
88  // second track
89  //
90 
91  ReferenceTrajectory trajectory2( tsos.second, recHits.second, false, field, materialEffects,
92  propDir, mass, false, beamSpot );
93 
94  if ( !trajectory2.isValid() ) return false;
95 
96  //
97  // combine both tracks
98  //
99  unsigned int nLocal = deriv.first.num_row();
100  unsigned int nTbd = deriv.first.num_col();
101 
102  if (materialEffects >= localGBL) {
103  // GBL trajectory inputs
104  // convert to TMatrix
105  TMatrixD tbdToLocal1(nLocal, nTbd);
106  for (unsigned int row = 0; row < nLocal; ++row) {
107  for (unsigned int col = 0; col < nTbd; ++col) {
108  tbdToLocal1(row,col) = deriv.first[row][col];
109  }
110  }
111  // add first body
112  theGblInput.push_back(std::make_pair(trajectory1.gblInput().front().first,
113  trajectory1.gblInput().front().second*tbdToLocal1));
114  // convert to TMatrix
115  TMatrixD tbdToLocal2(nLocal, nTbd);
116  for (unsigned int row = 0; row < nLocal; ++row) {
117  for (unsigned int col = 0; col < nTbd; ++col) {
118  tbdToLocal2(row,col) = deriv.second[row][col];
119  }
120  }
121  // add second body
122  theGblInput.push_back(std::make_pair(trajectory2.gblInput().front().first,
123  trajectory2.gblInput().front().second*tbdToLocal2));
124  // add virtual mass measurement
125  theGblExtDerivatives.ResizeTo(1,nTbd);
127  theGblExtMeasurements.ResizeTo(1);
129  theGblExtPrecisions.ResizeTo(1);
130  theGblExtPrecisions(0) = 1.0 / (state.primaryWidth() * state.primaryWidth());
131  // nominal field
132  theNomField = trajectory1.nominalField();
133  } else {
134  unsigned int nHitMeas1 = trajectory1.numberOfHitMeas();
135  unsigned int nVirtualMeas1 = trajectory1.numberOfVirtualMeas();
136  unsigned int nPar1 = trajectory1.numberOfPar();
137  unsigned int nVirtualPar1 = trajectory1.numberOfVirtualPar();
138 
139  // derivatives of the trajectory w.r.t. to the decay parameters
140  AlgebraicMatrix fullDeriv1 = trajectory1.derivatives().sub(1,nHitMeas1+nVirtualMeas1,1,nLocal) * trajectory1.localToTrajectory() * deriv.first;
141 
142  unsigned int nHitMeas2 = trajectory2.numberOfHitMeas();
143  unsigned int nVirtualMeas2 = trajectory2.numberOfVirtualMeas();
144  unsigned int nPar2 = trajectory2.numberOfPar();
145  unsigned int nVirtualPar2 = trajectory2.numberOfVirtualPar();
146 
147  AlgebraicMatrix fullDeriv2 = trajectory2.derivatives().sub(1,nHitMeas2+nVirtualMeas2,1,nLocal) * trajectory2.localToTrajectory() * deriv.second;
148 
149  theNumberOfRecHits.first = recHits.first.size();
150  theNumberOfRecHits.second = recHits.second.size();
151 
152  theNumberOfHits = trajectory1.numberOfHits() + trajectory2.numberOfHits();
153  theNumberOfPars = nPar1 + nPar2;
154  theNumberOfVirtualPars = nVirtualPar1 + nVirtualPar2;
155  theNumberOfVirtualMeas = nVirtualMeas1 + nVirtualMeas2 + 1; // add virtual mass measurement
156 
157  // hit measurements from trajectory 1
158  int rowOffset = 1;
159  int colOffset = 1;
160  theDerivatives.sub( rowOffset, colOffset, fullDeriv1.sub( 1, nHitMeas1, 1, nTbd ) );
161  colOffset += nTbd;
162  theDerivatives.sub( rowOffset, colOffset, trajectory1.derivatives().sub( 1, nHitMeas1, nLocal + 1, nPar1 + nVirtualPar1 ) );
163  // hit measurements from trajectory 2
164  rowOffset += nHitMeas1;
165  colOffset = 1;
166  theDerivatives.sub( rowOffset, colOffset, fullDeriv2.sub( 1, nHitMeas2, 1, nTbd ) );
167  colOffset += (nPar1 + nVirtualPar1 + nTbd - nLocal);
168  theDerivatives.sub( rowOffset, colOffset, trajectory2.derivatives().sub( 1, nHitMeas2, nLocal + 1, nPar2 + nVirtualPar2 ) );
169  // MS measurements from trajectory 1
170  rowOffset += nHitMeas2;
171  colOffset = 1;
172  theDerivatives.sub( rowOffset, colOffset, fullDeriv1.sub(nHitMeas1 + 1, nHitMeas1 + nVirtualMeas1, 1, nTbd ) );
173  colOffset += nTbd;
174  theDerivatives.sub( rowOffset, colOffset, trajectory1.derivatives().sub(nHitMeas1 + 1, nHitMeas1 + nVirtualMeas1, nLocal + 1, nPar1 + nVirtualPar1 ) );
175  // MS measurements from trajectory 2
176  rowOffset += nVirtualMeas1;
177  colOffset = 1;
178  theDerivatives.sub( rowOffset, colOffset, fullDeriv2.sub(nHitMeas2 + 1, nHitMeas2 + nVirtualMeas2, 1, nTbd ) );
179  colOffset += (nPar1 + nVirtualPar1 + nTbd - nLocal);
180  theDerivatives.sub( rowOffset, colOffset, trajectory2.derivatives().sub(nHitMeas2 + 1, nHitMeas2 + nVirtualMeas2, nLocal + 1, nPar2 + nVirtualPar2 ) );
181 
182  theMeasurements.sub( 1, trajectory1.measurements().sub( 1, nHitMeas1 ) );
183  theMeasurements.sub( nHitMeas1 + 1, trajectory2.measurements().sub( 1, nHitMeas2 ) );
184  theMeasurements.sub( nHitMeas1 + nHitMeas2 + 1, trajectory1.measurements().sub(nHitMeas1 + 1, nHitMeas1 + nVirtualMeas1 ) );
185  theMeasurements.sub( nHitMeas1 + nHitMeas2 + nVirtualMeas1 + 1, trajectory2.measurements().sub(nHitMeas2 + 1, nHitMeas2 + nVirtualMeas2 ) );
186 
187  theMeasurementsCov.sub( 1, trajectory1.measurementErrors().sub( 1, nHitMeas1 ) );
188  theMeasurementsCov.sub( nHitMeas1 + 1, trajectory2.measurementErrors().sub( 1, nHitMeas2 ) );
189  theMeasurementsCov.sub( nHitMeas1 + nHitMeas2 + 1, trajectory1.measurementErrors().sub(nHitMeas1 + 1, nHitMeas1 + nVirtualMeas1 ) );
190  theMeasurementsCov.sub( nHitMeas1 + nHitMeas2 + nVirtualMeas1 + 1, trajectory2.measurementErrors().sub(nHitMeas2 + 1, nHitMeas2 + nVirtualMeas2 ) );
191 
192  theTrajectoryPositions.sub( 1, trajectory1.trajectoryPositions() );
193  theTrajectoryPositions.sub( nHitMeas1 + 1, trajectory2.trajectoryPositions() );
194 
195  theTrajectoryPositionCov = state.decayParameters().covariance().similarity( theDerivatives.sub(1, nHitMeas1 + nHitMeas2, 1, 9) );
196 
198 
199  // add virtual mass measurement
200  rowOffset += nVirtualMeas2;
201  int indMass = rowOffset-1;
203  theMeasurementsCov[indMass][indMass] = state.primaryWidth() * state.primaryWidth();
205  }
206 
207  theRecHits.insert( theRecHits.end(), recHits.first.begin(), recHits.first.end() );
208  theRecHits.insert( theRecHits.end(), recHits.second.begin(), recHits.second.end() );
209 
210  if ( constructTsosWithErrors )
211  {
212  constructTsosVecWithErrors( trajectory1, trajectory2, field );
213  }
214  else
215  {
216  theTsosVec.insert( theTsosVec.end(),
217  trajectory1.trajectoryStates().begin(),
218  trajectory1.trajectoryStates().end() );
219 
220  theTsosVec.insert( theTsosVec.end(),
221  trajectory2.trajectoryStates().begin(),
222  trajectory2.trajectoryStates().end() );
223  }
224 
225  return true;
226 }
const AlgebraicVector & parameters(void) const
Get decay parameters.
const TransientTrackingRecHit::ConstRecHitContainer & recHits() const
std::vector< std::pair< std::vector< GblPoint >, TMatrixD > > theGblInput
const TsosContainer & trajectoryStates(bool useRefittedState=true) const
AlgebraicSymMatrix theTrajectoryPositionCov
const Derivatives & derivatives(void) const
CLHEP::HepMatrix AlgebraicMatrix
std::pair< TrajectoryStateOnSurface, TrajectoryStateOnSurface > TsosContainer
std::pair< int, int > theNumberOfRecHits
TransientTrackingRecHit::ConstRecHitContainer theRecHits
AlgebraicSymMatrix theMeasurementsCov
const TwoBodyDecayParameters & decayParameters(void) const
std::pair< AlgebraicMatrix, AlgebraicMatrix > Derivatives
void constructTsosVecWithErrors(const ReferenceTrajectory &traj1, const ReferenceTrajectory &traj2, const MagneticField *field)
const AlgebraicSymMatrix & covariance(void) const
Get error matrix.
std::vector< TrajectoryStateOnSurface > theTsosVec
int col
Definition: cuy.py:1008
void TwoBodyDecayTrajectory::constructSingleTsosWithErrors ( const TrajectoryStateOnSurface tsos,
int  iTsos,
const MagneticField field 
)
private

Definition at line 251 of file TwoBodyDecayTrajectory.cc.

References alignCSCRings::e, TrajectoryStateOnSurface::localParameters(), LocalTrajectoryParameters::momentum(), ReferenceTrajectoryBase::nMeasPerHit, AlCaHLTBitMon_ParallelJobs::p, LocalTrajectoryParameters::signedInverseMomentum(), TrajectoryStateOnSurface::surface(), TrajectoryStateOnSurface::surfaceSide(), ReferenceTrajectoryBase::theTrajectoryPositionCov, ReferenceTrajectoryBase::theTsosVec, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by constructTsosVecWithErrors().

254 {
255  AlgebraicSymMatrix55 localErrors;
256  const double coeff = 1e-2;
257 
258  double invP = tsos.localParameters().signedInverseMomentum();
260 
261  // rough estimate for the errors of q/p, dx/dz and dy/dz, assuming that
262  // sigma(px) = sigma(py) = sigma(pz) = coeff*p.
263  float dpinv = coeff*( fabs(p.x()) + fabs(p.y()) + fabs(p.z()) )*invP*invP;
264  float dxdir = coeff*( fabs(p.x()) + fabs(p.z()) )/p.z()/p.z();
265  float dydir = coeff*( fabs(p.y()) + fabs(p.z()) )/p.z()/p.z();
266  localErrors[0][0] = dpinv*dpinv;
267  localErrors[1][1] = dxdir*dxdir;
268  localErrors[2][2] = dydir*dydir;
269 
270  // exact values for the errors on local x and y
271  localErrors[3][3] = theTrajectoryPositionCov[nMeasPerHit*iTsos][nMeasPerHit*iTsos];
272  localErrors[3][4] = theTrajectoryPositionCov[nMeasPerHit*iTsos][nMeasPerHit*iTsos+1];
273  localErrors[4][4] = theTrajectoryPositionCov[nMeasPerHit*iTsos+1][nMeasPerHit*iTsos+1];
274 
275  // construct tsos with local errors
277  LocalTrajectoryError( localErrors ),
278  tsos.surface(),
279  field,
280  tsos.surfaceSide() );
281 }
const LocalTrajectoryParameters & localParameters() const
static const unsigned int nMeasPerHit
T y() const
Definition: PV3DBase.h:63
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
float signedInverseMomentum() const
Signed inverse momentum q/p (zero for neutrals).
AlgebraicSymMatrix theTrajectoryPositionCov
const SurfaceType & surface() const
SurfaceSide surfaceSide() const
Position relative to material, defined relative to momentum vector.
T z() const
Definition: PV3DBase.h:64
LocalVector momentum() const
Momentum vector in the local frame.
std::vector< TrajectoryStateOnSurface > theTsosVec
T x() const
Definition: PV3DBase.h:62
void TwoBodyDecayTrajectory::constructTsosVecWithErrors ( const ReferenceTrajectory traj1,
const ReferenceTrajectory traj2,
const MagneticField field 
)
private

Definition at line 229 of file TwoBodyDecayTrajectory.cc.

References constructSingleTsosWithErrors(), and ReferenceTrajectoryBase::trajectoryStates().

Referenced by construct().

232 {
233  int iTsos = 0;
234 
235  std::vector< TrajectoryStateOnSurface >::const_iterator itTsos;
236 
237  for ( itTsos = traj1.trajectoryStates().begin(); itTsos != traj1.trajectoryStates().end(); itTsos++ )
238  {
239  constructSingleTsosWithErrors( *itTsos, iTsos, field );
240  iTsos++;
241  }
242 
243  for ( itTsos = traj2.trajectoryStates().begin(); itTsos != traj2.trajectoryStates().end(); itTsos++ )
244  {
245  constructSingleTsosWithErrors( *itTsos, iTsos, field );
246  iTsos++;
247  }
248 }
void constructSingleTsosWithErrors(const TrajectoryStateOnSurface &tsos, int iTsos, const MagneticField *field)
const std::vector< TrajectoryStateOnSurface > & trajectoryStates() const
const std::pair< int, int > TwoBodyDecayTrajectory::numberOfRecHits ( void  )
inline

Number of RecHits belonging to the first and second track.

Definition at line 41 of file TwoBodyDecayTrajectory.h.

References theNumberOfRecHits.

41 { return theNumberOfRecHits; }
std::pair< int, int > theNumberOfRecHits

Member Data Documentation

std::pair< int, int > TwoBodyDecayTrajectory::theNumberOfRecHits
private

Definition at line 62 of file TwoBodyDecayTrajectory.h.

Referenced by construct(), and numberOfRecHits().