30 std::string cleaner =
conf_.
getParameter<std::string>(
"InOutRedundantSeedCleaner");
31 if (cleaner ==
"SeedCleanerByHitPosition") {
33 }
else if (cleaner ==
"CachingSeedCleanerByHitPosition") {
35 }
else if (cleaner ==
"CachingSeedCleanerBySharedInput") {
37 }
else if (cleaner ==
"none") {
40 throw cms::Exception(
"InOutRedundantSeedCleaner not found", cleaner);
62 std::vector<Trajectory> tmpO;
63 tmpO.erase(tmpO.begin(), tmpO.end() ) ;
65 std::vector<Trajectory>
result;
66 result.erase(result.begin(), result.end() ) ;
69 std::vector<Trajectory> rawResult;
76 for(TrajectorySeedCollection::const_iterator iSeed=inOutSeeds.begin(); iSeed!=inOutSeeds.end();iSeed++){
80 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder::tracks hits in the seed " << iSeed->nHits() <<
"\n";
81 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder::tracks seed starting state position " << iSeed->startingState().parameters().position() <<
" momentum " << iSeed->startingState().parameters().momentum() <<
" charge " << iSeed->startingState().parameters().charge() <<
"\n";
82 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder::tracks seed starting state para, vector " << iSeed->startingState().parameters().vector() <<
"\n";
86 std::vector<Trajectory> theTmpTrajectories;
90 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder::track returned " << theTmpTrajectories.size() <<
" trajectories for this seed " <<
"\n";
94 for(std::vector<Trajectory>::const_iterator it=theTmpTrajectories.begin(); it!=theTmpTrajectories.end(); it++){
96 rawResult.push_back(*it);
105 LogDebug(
"InOutConversionTrackFinder") <<
"InOutConversionTrackFinder::track Good seeds " << goodSeed <<
"\n" ;
106 LogDebug(
"InOutConversionTrackFinder") <<
"InOutConversionTrackFinder::track rawResult size after cleaning " << rawResult.size() <<
"\n";
111 std::vector<Trajectory> unsmoothedResult;
112 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder::track Start second cleaning " <<
"\n";
114 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder::track rawResult size after cleaning " << rawResult.size() <<
"\n";
119 for (std::vector<Trajectory>::const_iterator itraw = rawResult.begin(); itraw != rawResult.end(); itraw++) {
121 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder looping of rawResult after cleaning " << tra <<
"\n";
122 if((*itraw).isValid()) {
124 tmpO.push_back( *itraw );
125 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder::track rawResult num of valid recHits per trajectory " << (*itraw).foundHits() <<
"\n";
130 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder tmpO size " << tmpO.size() <<
" before sorting " <<
"\n";
138 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder tmpO after sorting " <<
"\n";
143 for (
int i=tmpO.size()-1;
i>=0;
i--) {
144 unsmoothedResult.push_back( tmpO[
i] );
146 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder unsmoothedResult size " << unsmoothedResult.size() <<
"\n";
154 for (std::vector<Trajectory>::const_iterator it = unsmoothedResult.begin(); it != unsmoothedResult.end(); it++) {
162 for (Trajectory::RecHitContainer::const_iterator hitIt = thits.begin(); hitIt != thits.end(); hitIt++) {
163 recHits.
push_back( (**hitIt).hit()->clone());
170 if (! initState.first.isValid() || initState.second == 0) {
176 if(
useSplitHits_ && (initState.second != thits.front()->det()) && thits.front()->det() ){
178 if (!propagated.
isValid())
continue;
180 thits.front()->det()->geographicalId().rawId());
183 initState.second->geographicalId().rawId());
185 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder::track Making the result: seed position " << it->seed().startingState().parameters().position() <<
" seed momentum " << it->seed().startingState().parameters().momentum() <<
" charge " << it->seed().startingState().parameters().charge () <<
"\n";
186 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder::track TSOS charge " << initState.first.charge() <<
"\n";
188 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder::track PTrajectoryStateOnDet* state position "
191 result.push_back(*it);
196 LogDebug(
"InOutConversionTrackFinder") <<
" InOutConversionTrackFinder::track Returning " << result.size() <<
" valid In Out Trajectories " <<
"\n";
T getParameter(std::string const &) const
const TrajectoryBuilder * theCkfTrajectoryBuilder_
TrajectoryCleanerBySharedHits * theTrajectoryCleaner_
edm::ESHandle< Propagator > thePropagator_
LocalPoint position() const
Local x and y position coordinates.
std::vector< TrackCandidate > TrackCandidateCollection
virtual void clean(TrajectoryPointerContainer &) const
virtual void done()=0
Tells the cleaner that the seeds are finished, and so it can clear any cache it has.
virtual void add(const Trajectory *traj)=0
Informs the cleaner that a new trajectory has been made, in case the cleaner keeps a local collection...
virtual bool good(const TrajectorySeed *seed)=0
Returns true if the seed is not overlapping with another trajectory.
TransientInitialStateEstimator * theInitialState_
virtual std::vector< Trajectory > tracks(const TrajectorySeedCollection seeds, TrackCandidateCollection &candidate) const
std::vector< TrajectorySeed > TrajectorySeedCollection
LocalVector momentum() const
Momentum vector in the local frame.
RedundantSeedCleaner * theSeedCleaner_
virtual TrajectoryContainer trajectories(const TrajectorySeed &) const =0
ConstRecHitContainer RecHitContainer
TrackCharge charge() const
Charge (-1, 0 or 1)
void precomputed_value_sort(RandomAccessIterator begin, RandomAccessIterator end, const Extractor &extr)
virtual ~InOutConversionTrackFinder()
InOutConversionTrackFinder(const edm::EventSetup &es, const edm::ParameterSet &config)
std::pair< TrajectoryStateOnSurface, const GeomDet * > innerState(const Trajectory &traj, bool doBackFit=true) const
virtual void init(const std::vector< Trajectory > *vect)=0
Provides the cleaner a pointer to the vector where trajectories are stored, in case it does not want ...
const LocalTrajectoryParameters & parameters() const