1 #ifndef RecoMuon_MuonSeedGenerator_SETFilter_H
2 #define RecoMuon_MuonSeedGenerator_SETFilter_H
18 #include "CLHEP/Matrix/Vector.h"
19 #include "CLHEP/Vector/ThreeVector.h"
70 bool fwfit_SET( std::vector < SeedCandidate> & validSegmentsSet_in,
71 std::vector < SeedCandidate> & validSegmentsSet_out);
130 double findChi2(
double pX,
double pY,
double pZ,
131 const CLHEP::Hep3Vector& r3T,
135 bool detailedOutput);
137 double findMinChi2(
unsigned int iSet,
const CLHEP::Hep3Vector& r3T,
139 std::vector < TrajectoryStateOnSurface > &lastUpdatedTSOS_Vect,
143 const CLHEP::Hep3Vector& r3T,
147 bool detailedOutput);
151 const CLHEP::Hep3Vector& r3T,
155 std::vector <double> &quadratic_chi2);
159 unsigned int & high,
unsigned int & second_high,
unsigned int & low);
161 CLHEP::Hep3Vector
reflectFoot(std::vector <CLHEP::Hep3Vector> & feet,
162 unsigned int key_foot,
double scale );
164 void nDimContract(std::vector <CLHEP::Hep3Vector> & feet,
unsigned int low);
void nDimContract(std::vector< CLHEP::Hep3Vector > &feet, unsigned int low)
std::string thePropagatorName
the propagator name
bool transform(Trajectory::DataContainer &measurements_segments, TransientTrackingRecHit::ConstRecHitContainer &hitContainer, TrajectoryStateOnSurface &firstTSOS)
transforms "segment trajectory" to "rechit container"
TrajectoryStateOnSurface theLastUpdatedTSOS
the trajectory state on the last available surface
double chi2AtSpecificStep(CLHEP::Hep3Vector &foot, const CLHEP::Hep3Vector &r3T, SeedCandidate &muonCandidate, TrajectoryStateOnSurface &lastUpdatedTSOS, Trajectory::DataContainer &trajectoryMeasurementsInTheSet, bool detailedOutput)
bool transformLight(Trajectory::DataContainer &measurements_segments, TransientTrackingRecHit::ConstRecHitContainer &hitContainer, TrajectoryStateOnSurface &firstTSOS)
transforms "segment trajectory" to "segment container"
const Propagator * propagator() const
access at the propagator
FreeTrajectoryState lastUpdatedFTS() const
the last free trajectory state
CLHEP::Hep3Vector momentum
TrajectoryStateOnSurface theLastButOneUpdatedTSOS
the trajectory state on the last but one available surface
Trajectory::DataContainer trajectoryMeasurementsInTheSet
bool buildTrajectoryMeasurements(SeedCandidate *validSegmentsSet, Trajectory::DataContainer &finalCandidate)
from SeedCandidate to DataContainer only
double findMinChi2(unsigned int iSet, const CLHEP::Hep3Vector &r3T, SeedCandidate &muonCandidate, std::vector< TrajectoryStateOnSurface > &lastUpdatedTSOS_Vect, Trajectory::DataContainer &trajectoryMeasurementsInTheSet)
std::string theBWLightFitterName
void setLastButOneUpdatedTSOS(TrajectoryStateOnSurface tsos)
Set the last but one TSOS.
TrajectoryStateOnSurface lastUpdatedTSOS() const
the Trajectory state on the last surface of the fitting
std::vector< const DetLayer * > layers() const
return the layer used for the refit
int getTotalChamberUsed() const
int getDTChamberUsed() const
const DetLayer * lastDetLayer() const
return the last det layer
std::vector< TrajectoryMeasurement > DataContainer
bool fwfit_SET(std::vector< SeedCandidate > &validSegmentsSet_in, std::vector< SeedCandidate > &validSegmentsSet_out)
Perform the SET inner-outward fitting.
NavigationDirection theFitDirection
the propagation direction
PropagationDirection propagationDirection() const
Return the propagation direction.
virtual ~SETFilter()
Destructor.
FreeTrajectoryState const * freeTrajectoryState(bool withErrors=true) const
void refit(const TrajectoryStateOnSurface &initialState, const DetLayer *, Trajectory &trajectory)
Perform the inner-outward fitting.
int getCSCChamberUsed() const
bool useSegmentsInTrajectory
SETFilter(const edm::ParameterSet &par, const MuonServiceProxy *service)
Constructor.
std::vector< CLHEP::Hep3Vector > find3MoreStartingPoints(CLHEP::Hep3Vector &key_foot, const CLHEP::Hep3Vector &r3T, SeedCandidate &muonCandidate)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
void pickElements(std::vector< double > &chi2Feet, unsigned int &high, unsigned int &second_high, unsigned int &low)
std::vector< ConstRecHitPointer > ConstRecHitContainer
int getRPCChamberUsed() const
const MuonServiceProxy * theService
edm::ESHandle< TrajectoryFitter > theBWLightFitter
used in the SET BW fit
double findChi2(double pX, double pY, double pZ, const CLHEP::Hep3Vector &r3T, SeedCandidate &muonCandidate, TrajectoryStateOnSurface &lastUpdatedTSOS, Trajectory::DataContainer &trajectoryMeasurementsInTheSet, bool detailedOutput)
void incrementChamberCounters(const DetLayer *layer)
Increment the DT,CSC,RPC counters.
MuonTransientTrackingRecHit::MuonRecHitContainer theSet
std::vector< const DetLayer * > theDetLayers
the det layer used in the reconstruction
std::vector< MuonRecHitPointer > MuonRecHitContainer
std::pair< double, double > findParabolaMinimum(std::vector< double > &quadratic_var, std::vector< double > &quadratic_chi2)
void setLastUpdatedTSOS(TrajectoryStateOnSurface tsos)
Set the last TSOS.
virtual void setEvent(const edm::Event &event)
Pass the Event to the algo at each event.
CLHEP::Hep3Vector reflectFoot(std::vector< CLHEP::Hep3Vector > &feet, unsigned int key_foot, double scale)