CMS 3D CMS Logo

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, ConstRecHitContainerConstRecHitCollection
 
typedef TransientTrackingRecHit::ConstRecHitContainer ConstRecHitContainer
 
- Public Types inherited from ReferenceTrajectoryBase
enum  MaterialEffects {
  none, multipleScattering, energyLoss, combined,
  breakPoints, brokenLinesCoarse, brokenLinesFine, localGBL,
  curvlinGBL
}
 
typedef ReferenceCountingPointer< ReferenceTrajectoryBaseReferenceTrajectoryPtr
 

Public Member Functions

virtual TwoBodyDecayTrajectoryclone (void) const
 
const std::pair< int, int > numberOfRecHits (void)
 
 TwoBodyDecayTrajectory (const TwoBodyDecayTrajectoryState &tsos, const ConstRecHitCollection &recHits, const MagneticField *magField, const reco::BeamSpot &beamSpot, const ReferenceTrajectoryBase::Config &config)
 
 TwoBodyDecayTrajectory (void)
 
 ~TwoBodyDecayTrajectory (void)
 
- Public Member Functions inherited from ReferenceTrajectoryBase
const AlgebraicMatrixderivatives () const
 
const Eigen::MatrixXd & gblExtDerivatives () const
 
const Eigen::VectorXd & gblExtMeasurements () const
 
const Eigen::VectorXd & gblExtPrecisions () const
 
std::vector< std::pair< std::vector< gbl::GblPoint >, Eigen::MatrixXd > > & 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::ConstRecHitContainerrecHits () 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, const reco::BeamSpot &beamSpot)
 
void constructSingleTsosWithErrors (const TrajectoryStateOnSurface &tsos, int iTsos, const MagneticField *field)
 
void constructTsosVecWithErrors (const ReferenceTrajectory &traj1, const ReferenceTrajectory &traj2, const MagneticField *field)
 

Private Attributes

const bool constructTsosWithErrors_
 
const MaterialEffects materialEffects_
 
const PropagationDirection propDir_
 
std::pair< int, int > theNumberOfRecHits
 
const bool useRefittedState_
 

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
 
Eigen::MatrixXd theGblExtDerivatives
 
Eigen::VectorXd theGblExtMeasurements
 
Eigen::VectorXd theGblExtPrecisions
 
std::vector< std::pair< std::vector< gbl::GblPoint >, Eigen::MatrixXd > > 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< TrajectoryStateOnSurfacetheTsosVec
 
bool theValidityFlag
 
- Static Protected Attributes inherited from ReferenceTrajectoryBase
static 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 tsos,
const ConstRecHitCollection recHits,
const MagneticField magField,
const reco::BeamSpot beamSpot,
const ReferenceTrajectoryBase::Config config 
)

Definition at line 15 of file TwoBodyDecayTrajectory.cc.

References construct(), ReferenceTrajectoryBase::Config::hitsAreReverse, and ReferenceTrajectoryBase::theValidityFlag.

19  :
21  TwoBodyDecayParameters::dimension, recHits.first.size() + recHits.second.size(),
22  (config.materialEffects >= breakPoints) ? 2*(recHits.first.size() + recHits.second.size())-4 : 0,
23  (config.materialEffects >= breakPoints) ? 2*(recHits.first.size() + recHits.second.size())-3 : 1 ),
25  propDir_(config.propDir),
28 
29 {
30  if ( config.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(tsos, fwdRecHits, magField, beamSpot);
48  }
49  else
50  {
51  theValidityFlag = this->construct(tsos, recHits, magField, beamSpot);
52  }
53 }
bool construct(const TwoBodyDecayTrajectoryState &state, const ConstRecHitCollection &recHits, const MagneticField *field, const reco::BeamSpot &beamSpot)
ReferenceTrajectoryBase(unsigned int nPar, unsigned int nHits, unsigned int nVirtualPar, unsigned int nVirtualMeas)
const TransientTrackingRecHit::ConstRecHitContainer & recHits() const
const PropagationDirection propDir_
std::pair< ConstRecHitContainer, ConstRecHitContainer > ConstRecHitCollection
const MaterialEffects materialEffects_
TwoBodyDecayTrajectory::TwoBodyDecayTrajectory ( void  )

Definition at line 56 of file TwoBodyDecayTrajectory.cc.

57  : ReferenceTrajectoryBase( 0, 0, 0, 0),
60  useRefittedState_(false),
62 {}
ReferenceTrajectoryBase(unsigned int nPar, unsigned int nHits, unsigned int nVirtualPar, unsigned int nVirtualMeas)
const PropagationDirection propDir_
const MaterialEffects materialEffects_
TwoBodyDecayTrajectory::~TwoBodyDecayTrajectory ( void  )
inline

Definition at line 30 of file TwoBodyDecayTrajectory.h.

30 {}

Member Function Documentation

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

Implements ReferenceTrajectoryBase.

Definition at line 32 of file TwoBodyDecayTrajectory.h.

33  { return new TwoBodyDecayTrajectory( *this ); }
bool TwoBodyDecayTrajectory::construct ( const TwoBodyDecayTrajectoryState state,
const ConstRecHitCollection recHits,
const MagneticField field,
const reco::BeamSpot beamSpot 
)
private

Definition at line 65 of file TwoBodyDecayTrajectory.cc.

References cuy::col, mps_alisetup::config, constructTsosVecWithErrors(), constructTsosWithErrors_, TwoBodyDecayParameters::covariance(), TwoBodyDecayTrajectoryState::decayParameters(), TwoBodyDecayTrajectoryState::derivatives(), ReferenceTrajectoryBase::derivatives(), ReferenceTrajectoryBase::gblInput(), ReferenceTrajectoryBase::Config::hitsAreReverse, ReferenceTrajectoryBase::isValid(), ReferenceTrajectoryBase::localGBL, ReferenceTrajectoryBase::localToTrajectory(), ResonanceBuilder::mass, TwoBodyDecayParameters::mass, materialEffects_, ReferenceTrajectoryBase::measurementErrors(), ReferenceTrajectoryBase::measurements(), ReferenceTrajectoryBase::nominalField(), ReferenceTrajectoryBase::numberOfHitMeas(), ReferenceTrajectoryBase::numberOfHits(), ReferenceTrajectoryBase::numberOfPar(), ReferenceTrajectoryBase::numberOfVirtualMeas(), ReferenceTrajectoryBase::numberOfVirtualPar(), TwoBodyDecayParameters::parameters(), TwoBodyDecayTrajectoryState::particleMass(), TwoBodyDecayTrajectoryState::primaryMass(), TwoBodyDecayTrajectoryState::primaryWidth(), propDir_, 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(), ReferenceTrajectoryBase::trajectoryStates(), ReferenceTrajectoryBase::Config::useBeamSpot, and useRefittedState_.

Referenced by TwoBodyDecayTrajectory().

69 {
72  double mass = state.particleMass();
73 
74  //
75  // first track
76  //
77 
78  // construct a trajectory (hits should be already in correct order)
80  config.useBeamSpot = false;
81  config.hitsAreReverse = false;
82 
83  ReferenceTrajectory trajectory1(tsos.first, recHits.first, field, beamSpot, config);
84 
85  // check if construction of trajectory was successful
86  if ( !trajectory1.isValid() ) return false;
87 
88  //
89  // second track
90  //
91 
92  ReferenceTrajectory trajectory2(tsos.second, recHits.second, field, beamSpot, config);
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 Eigen::MatrixXd
105  Eigen::MatrixXd 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 Eigen::MatrixXd
115  Eigen::MatrixXd 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.resize(1,nTbd);
127  theGblExtMeasurements.resize(1);
129  theGblExtPrecisions.resize(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 
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
Definition: config.py:1
const PropagationDirection propDir_
const TsosContainer & trajectoryStates(bool useRefittedState=true) const
AlgebraicSymMatrix theTrajectoryPositionCov
std::vector< std::pair< std::vector< gbl::GblPoint >, Eigen::MatrixXd > > theGblInput
const Derivatives & derivatives(void) const
CLHEP::HepMatrix AlgebraicMatrix
std::pair< TrajectoryStateOnSurface, TrajectoryStateOnSurface > TsosContainer
const MaterialEffects materialEffects_
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.
col
Definition: cuy.py:1008
std::vector< TrajectoryStateOnSurface > theTsosVec
void TwoBodyDecayTrajectory::constructSingleTsosWithErrors ( const TrajectoryStateOnSurface tsos,
int  iTsos,
const MagneticField field 
)
private

Definition at line 251 of file TwoBodyDecayTrajectory.cc.

References MillePedeFileConverter_cfg::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
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 37 of file TwoBodyDecayTrajectory.h.

References ecalDrivenElectronSeedsParameters_cff::beamSpot.

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

Member Data Documentation

const bool TwoBodyDecayTrajectory::constructTsosWithErrors_
private

Definition at line 57 of file TwoBodyDecayTrajectory.h.

Referenced by construct().

const MaterialEffects TwoBodyDecayTrajectory::materialEffects_
private

Definition at line 54 of file TwoBodyDecayTrajectory.h.

Referenced by construct().

const PropagationDirection TwoBodyDecayTrajectory::propDir_
private

Definition at line 55 of file TwoBodyDecayTrajectory.h.

Referenced by construct().

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

Definition at line 59 of file TwoBodyDecayTrajectory.h.

Referenced by construct().

const bool TwoBodyDecayTrajectory::useRefittedState_
private

Definition at line 56 of file TwoBodyDecayTrajectory.h.

Referenced by construct().