26 thePropagator(0),thePropagatorOp(0),theUpdator(0),theEstimator(0),RHBuilder(0),theSmoother(0),theFitter(0),tsTransform(),conf_(iConfig)
39 if(seedAlongMomentum) {
69 LogDebug(
"SimpleTrackRefitter") <<
"get also the TransientTrackingRecHitBuilder" <<
"\n";
76 LogDebug(
"SimpleTrackRefitter") <<
"get the fitter from the ES" <<
"\n";
82 LogDebug(
"SimpleTrackRefitter") <<
"get also the propagator" <<
"\n";
101 LogDebug(
"SimpleTrackRefitter") <<
"Start\n";
105 if((*i)->isValid()) {
106 if((*i)->geographicalId().rawId()!=ExcludedDetid) {
118 LogDebug(
"SimpleTrackRefitter") <<
"Transient rechit filled" <<
"\n";
122 for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.begin(); it!=tmp.end();it++){
123 if ((**it).isValid()) {
129 for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.end()-1; it!=tmp.begin()-1;it--){
130 if ((**it).isValid()) {
135 if ((*firstHit)->globalPosition().mag2() > ((*lastHit)->globalPosition().mag2()) ){
136 for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.end()-1;it!=tmp.begin()-1;it--){
142 std::vector<Trajectory> trajVec;
147 if(!firstState.isValid())
return trajVec;
150 LogDebug(
"SimpleTrackRefitter") <<
"initial TSOS\n" << theTSOS <<
"\n";
153 LogDebug(
"SimpleTrackRefitter") <<
" FITTER FOUND "<< trajVec.size() <<
" TRAJECTORIES" <<
"\n";
159 const uint32_t ExcludedDetid)
164 for (
unsigned int icosmhit=hits.
size()-1;icosmhit+1>0;icosmhit--){
175 trans_hits.push_back(&(*tmphit));
176 if (icosmhit<hits.
size()-1){
179 if(prSt.
isValid() && tmphit->isValid()) {
187 std::vector<Trajectory> smoothtraj;
189 tracker->
idToDet((*trans_hits.begin())->geographicalId())->surface()).isValid()){
192 tracker->
idToDet((*trans_hits.begin())->geographicalId())->surface()));
193 std::vector<Trajectory> fittraj=
theFitter->
fit(seed,trans_hits,startingState);
202 const uint32_t ExcludedDetid)
209 if((*i)->geographicalId().rawId() == ExcludedDetid) {
217 trans_hits.push_back(&(*tmphit));
221 if(prSt.
isValid() && tmphit->isValid()) {
229 std::vector<Trajectory> smoothtraj;
231 tracker->
idToDet((*trans_hits.begin())->geographicalId())->surface()).isValid()){
234 tracker->
idToDet((*trans_hits.begin())->geographicalId())->surface()));
235 std::vector<Trajectory> fittraj=
theFitter->
fit(seed,trans_hits,startingState);
255 if ( !seedMeas.empty()) {
256 for (std::vector<TrajectoryMeasurement>::const_iterator
i=seedMeas.begin();
i!=seedMeas.end();
i++){
265 std::vector<TrajectoryMeasurement>
result;
271 if (ihit == hitRange.second - 1) {
PropagationDirection direction() const
T getParameter(std::string const &) const
const TransientTrackingRecHitBuilder * RHBuilder
void initServices(const bool &seedAlongMomentum)
std::vector< Trajectory > refitTrack(const reco::Track &newTrack, const uint32_t ExcludedDetId=0)
The main methods.
TrajectoryStateOnSurface startingTSOS(const TrajectorySeed &seed) const
TrajectoryStateOnSurface TSOS
std::vector< ConstRecHitPointer > RecHitContainer
virtual TrajectoryContainer trajectories(const Trajectory &) const =0
const TrackerGeometry * tracker
uint32_t rawId() const
get the raw id
const MagneticField * magfield
void setServices(const edm::EventSetup &es)
recHitContainer::const_iterator const_iterator
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
virtual ~SimpleTrackRefitter()
Destructor.
std::pair< const_iterator, const_iterator > range
SimpleTrackRefitter(const edm::ParameterSet &)
Constructor.
const KFUpdator * theUpdator
const TrajectoryStateTransform tsTransform
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
tuple Chi2MeasurementEstimator
const Propagator * thePropagator
virtual const GeomDet * idToDet(DetId) const
virtual std::pair< bool, double > estimate(const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const
Trajectory createStartingTrajectory(const TrajectorySeed &seed) const
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
const TrajectoryFitter * theFitter
PTrajectoryStateOnDet const & startingState() const
std::vector< TrajectoryMeasurement > seedMeasurements(const TrajectorySeed &seed) const
const Chi2MeasurementEstimator * theEstimator
std::vector< std::vector< double > > tmp
virtual const MagneticField * magneticField() const =0
virtual std::vector< Trajectory > fit(const Trajectory &) const =0
const Propagator * thePropagatorOp
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const
CLHEP::HepSymMatrix AlgebraicSymMatrix
tuple KFTrajectorySmoother
DetId geographicalId() const
virtual const BoundPlane & surface() const
The nominal surface of the GeomDet.
const TrajectorySmoother * theSmoother
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.