3 #ifndef VertexFinderTearDown_h 
    4 #define VertexFinderTearDown_h 1 
   20   bool operator() (
const pair<const Track*, double>& p1, 
const pair<const Track*, double>& p2) {
 
   21     return p1.second > p2.second;
 
   33 template<
template<
class T, 
class Allocator=allocator<T> > 
class Container = std::vector, 
template<
class Iterator> 
class VertexFitter = 
VertexFitterLCFI >
 
   36   Vertex* operator () (
const Container<const Track*>& tracks, 
const Container<const Track*>* fixedTracks = 0,
 
   37                        double chiSquareThreshold = 9.0, Container<const Track*>* residual = 0, 
Vertex* pointConstraint = 0) {
 
   39     list<const Track*>trackList;
 
   40     trackList.resize(tracks.size() + (fixedTracks ? fixedTracks->size() : 0));
 
   41     list<const Track*>::iterator listIt = copy(tracks.begin(), tracks.end(), trackList.begin());
 
   43       copy(fixedTracks->begin(), fixedTracks->end(), listIt);
 
   48     while (trackList.size() >= 2) {
 
   49       resultVertex = VertexFitter<list<const Track*>::iterator>() (trackList.begin(), trackList.end(), pointConstraint);
 
   51       if (fixedTracks && find(fixedTracks->begin(), fixedTracks->end(), worstTrack) != fixedTracks->end()) {
 
   53         vector<pair<const Track*, double> > vpair;
 
   55         vpair.resize(mpair.size());
 
   56         partial_sort_copy(mpair.begin(), mpair.end(), vpair.begin(), vpair.end(), 
SortTracksByChi2());
 
   58         unsigned int nworst = 1;
 
   60           worstTrack = vpair[nworst++].first;
 
   61         } 
while (nworst < vpair.size() && find(fixedTracks->begin(), fixedTracks->end(), worstTrack) != fixedTracks->end());
 
   63         cout << 
"The worst track is fixed, " << nworst << 
"th track will be removed." << endl;
 
   67       if (worstChi2 > chiSquareThreshold) {
 
   68         trackList.remove(worstTrack);
 
   70           residual->push_back(worstTrack);
 
Definition: lcfiplus.h:771
 
Definition: lcfiplus.h:384
 
Definition: VertexFinderTearDown.h:34
 
const map< const lcfiplus::Track *, double > & getTracksChi2Map() const 
Definition: lcfiplus.h:826
 
double getChi2Track(const Track *tr) const 
Definition: lcfiplus.h:829
 
vector< lcfiplus::Vertex * > * findTearDownVertices(const Event &evt, const Jet &jet)
Definition: VertexFinderTearDown.cc:11
 
lcfiplus::Vertex * findPrimaryVertex(TrackVec &tracks, double chi2=9.0, bool beamspotConstraint=true, bool smearBeamspot=true)
Definition: VertexFinderTearDown.cc:48
 
Definition: VertexFitterLCFI.h:19
 
Definition: VertexFinderTearDown.h:18
 
Definition: lcfiplus.h:980
 
const Track * getWorstTrack() const 
Definition: lcfiplus.cc:835
 
const vector< const Track * > TrackVec
Definition: lcfiplus.h:72
 
Definition: lcfiplus.h:291