File indexing completed on 2023-03-17 10:40:38
0001
0002 #include "Alignment/ReferenceTrajectories/interface/BzeroReferenceTrajectory.h"
0003
0004 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
0005 #include "DataFormats/TrajectoryState/interface/LocalTrajectoryParameters.h"
0006
0007 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
0008 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
0009
0010 BzeroReferenceTrajectory::BzeroReferenceTrajectory(const TrajectoryStateOnSurface& tsos,
0011 const TransientTrackingRecHit::ConstRecHitContainer& recHits,
0012 const MagneticField* magField,
0013 const reco::BeamSpot& beamSpot,
0014 const ReferenceTrajectoryBase::Config& config)
0015 : ReferenceTrajectory(tsos.localParameters().mixedFormatVector().kSize, recHits.size(), config),
0016 theMomentumEstimate(config.momentumEstimate) {
0017
0018
0019
0020 theParameters = asHepVector(tsos.localParameters().mixedFormatVector());
0021 theParameters[0] = 1. / theMomentumEstimate;
0022
0023 LocalTrajectoryParameters locParamWithFixedMomentum(
0024 asSVector<5>(theParameters), tsos.localParameters().pzSign(), tsos.localParameters().charge());
0025
0026 const TrajectoryStateOnSurface refTsosWithFixedMomentum(
0027 locParamWithFixedMomentum, tsos.localError(), tsos.surface(), magField, surfaceSide(config.propDir));
0028
0029 if (config.hitsAreReverse) {
0030 TransientTrackingRecHit::ConstRecHitContainer fwdRecHits;
0031 fwdRecHits.reserve(recHits.size());
0032
0033 for (TransientTrackingRecHit::ConstRecHitContainer::const_reverse_iterator it = recHits.rbegin();
0034 it != recHits.rend();
0035 ++it)
0036 fwdRecHits.push_back(*it);
0037
0038 theValidityFlag = this->construct(refTsosWithFixedMomentum, fwdRecHits, magField, beamSpot);
0039 } else {
0040 theValidityFlag = this->construct(refTsosWithFixedMomentum, recHits, magField, beamSpot);
0041 }
0042
0043
0044 theParameters = theParameters.sub(2, 5);
0045 theDerivatives = theDerivatives.sub(1, theDerivatives.num_row(), 2, theDerivatives.num_col());
0046 }