#include <RecoVertex/LinearizationPointFinders/interface/CrossingPtBasedLinearizationPointFinder.h>
Public Member Functions | ||||
virtual CrossingPtBasedLinearizationPointFinder * | clone () const | |||
Clone method. | ||||
CrossingPtBasedLinearizationPointFinder (const CrossingPtBasedLinearizationPointFinder &) | ||||
CrossingPtBasedLinearizationPointFinder (const RecTracksDistanceMatrix *m, const ModeFinder3d &algo, const signed int n_pairs=-1) | ||||
This constructor exploits the information stored in a RecTracksDistanceMatrix object. | ||||
CrossingPtBasedLinearizationPointFinder (const ModeFinder3d &algo, const signed int n_pairs=5) | ||||
| ||||
virtual GlobalPoint | getLinearizationPoint (const vector< FreeTrajectoryState > &) const | |||
virtual GlobalPoint | getLinearizationPoint (const vector< reco::TransientTrack > &) const | |||
Method giving back the Initial Linearization Point. | ||||
~CrossingPtBasedLinearizationPointFinder () | ||||
Protected Attributes | ||||
const RecTracksDistanceMatrix * | theMatrix | |||
signed int | theNPairs | |||
const bool | useMatrix | |||
Private Member Functions | ||||
GlobalPoint | find (const vector< pair< GlobalPoint, float > > &) const | |||
calls (*theAglo) (input) can optionally save input / output in .root file | ||||
vector< reco::TransientTrack > | getBestTracks (const vector< reco::TransientTrack > &) const | |||
GlobalPoint | useAllTracks (const vector< reco::TransientTrack > &) const | |||
GlobalPoint | useFullMatrix (const vector< reco::TransientTrack > &) const | |||
Private Attributes | ||||
ModeFinder3d * | theAlgo | |||
Classes | ||||
struct | CompareTwoTracks | |||
Private struct to order tracks by momentum. More... |
It works the following way: 1. Calculate in an optimal way 'n_pairs' different crossing points. Optimal in this context means the following: a. Try to use as many different tracks as possible; avoid using the same track all the time. b. Use the most energetic tracks. c. Try not to group the most energetic tracks together. Try to group more energetic tracks with less energetic tracks. We assume collimated bundles here, so this is why. d. Perform optimally. Do not sort more tracks (by total energy, see b) than necessary. e. If n_pairs >= (number of all possible combinations), do not leave any combinations out. ( a. and e. are almost but not entirely fulfilled in the current impl ) 2. Apply theAlgo on the n points.
Definition at line 26 of file CrossingPtBasedLinearizationPointFinder.h.
CrossingPtBasedLinearizationPointFinder::CrossingPtBasedLinearizationPointFinder | ( | const ModeFinder3d & | algo, | |
const signed int | n_pairs = 5 | |||
) |
n_pairs,: | how many track pairs will be considered (maximum) a value of -1 means full combinatorics. |
Definition at line 104 of file CrossingPtBasedLinearizationPointFinder.cc.
Referenced by clone().
00105 : 00106 useMatrix ( false ) , theNPairs ( n_pairs ), theMatrix ( 0 ), 00107 theAlgo ( algo.clone() ) 00108 {}
CrossingPtBasedLinearizationPointFinder::CrossingPtBasedLinearizationPointFinder | ( | const RecTracksDistanceMatrix * | m, | |
const ModeFinder3d & | algo, | |||
const signed int | n_pairs = -1 | |||
) |
This constructor exploits the information stored in a RecTracksDistanceMatrix object.
n_pairs,: | how many track pairs will be considered (maximum) a value of -1 means full combinatorics. |
Definition at line 110 of file CrossingPtBasedLinearizationPointFinder.cc.
00112 : 00113 useMatrix ( m->hasCrossingPoints() ) , 00114 theNPairs ( n_pairs ), theMatrix ( m ), theAlgo ( algo.clone() ) 00115 {}
CrossingPtBasedLinearizationPointFinder::CrossingPtBasedLinearizationPointFinder | ( | const CrossingPtBasedLinearizationPointFinder & | o | ) |
CrossingPtBasedLinearizationPointFinder::~CrossingPtBasedLinearizationPointFinder | ( | ) |
Definition at line 124 of file CrossingPtBasedLinearizationPointFinder.cc.
References theAlgo.
00125 { 00126 delete theAlgo; 00127 }
virtual CrossingPtBasedLinearizationPointFinder* CrossingPtBasedLinearizationPointFinder::clone | ( | ) | const [inline, virtual] |
Clone method.
Implements LinearizationPointFinder.
Reimplemented in FsmwLinearizationPointFinder, HSMLinearizationPointFinder, LMSLinearizationPointFinder, SMSLinearizationPointFinder, and SubsetHSMLinearizationPointFinder.
Definition at line 55 of file CrossingPtBasedLinearizationPointFinder.h.
References CrossingPtBasedLinearizationPointFinder().
00055 { 00056 return new CrossingPtBasedLinearizationPointFinder ( * this ); 00057 };
GlobalPoint CrossingPtBasedLinearizationPointFinder::find | ( | const vector< pair< GlobalPoint, float > > & | ) | const [private] |
calls (*theAglo) (input) can optionally save input / output in .root file
Referenced by useAllTracks().
vector<reco::TransientTrack> CrossingPtBasedLinearizationPointFinder::getBestTracks | ( | const vector< reco::TransientTrack > & | ) | const [private] |
virtual GlobalPoint CrossingPtBasedLinearizationPointFinder::getLinearizationPoint | ( | const vector< FreeTrajectoryState > & | ) | const [virtual] |
virtual GlobalPoint CrossingPtBasedLinearizationPointFinder::getLinearizationPoint | ( | const vector< reco::TransientTrack > & | ) | const [virtual] |
Method giving back the Initial Linearization Point.
GlobalPoint CrossingPtBasedLinearizationPointFinder::useAllTracks | ( | const vector< reco::TransientTrack > & | tracks | ) | const [private] |
Definition at line 152 of file CrossingPtBasedLinearizationPointFinder.cc.
References TwoTrackMinimumDistance::calculate(), end, find(), TwoTrackMinimumDistance::points(), StDecayID::status, v, x, and y.
00154 { 00155 vector< PointAndDistance > vgp; 00156 // vgp.reserve ( ( tracks.size() * ( tracks.size()-1 ) ) / 2 - 1 ); 00157 TwoTrackMinimumDistance ttmd; 00158 bool status; 00159 vector<reco::TransientTrack>::const_iterator end=tracks.end(); 00160 vector<reco::TransientTrack>::const_iterator endm1=(end-1); 00161 for ( std::vector<reco::TransientTrack>::const_iterator x=tracks.begin(); 00162 x!=endm1 ; ++x ) 00163 { 00164 for ( std::vector<reco::TransientTrack>::const_iterator y=x+1; 00165 y!=end; ++y ) 00166 { 00167 status = ttmd.calculate( (*x).impactPointState(), (*y).impactPointState() ); 00168 if (status) { 00169 std::pair < GlobalPoint, GlobalPoint > pts = ttmd.points(); 00170 std::pair < GlobalPoint , float > v ( ( pts.second + pts.first ) / 2. , 00171 ( pts.second - pts.first ).mag() ); 00172 vgp.push_back( v ); 00173 } // If sth goes wrong, we just dont add. Who cares? 00174 } 00175 } 00176 if (! vgp.size() ) 00177 { 00178 return FallbackLinearizationPointFinder().getLinearizationPoint ( tracks ); 00179 } 00180 return find ( vgp ); 00181 }
GlobalPoint CrossingPtBasedLinearizationPointFinder::useFullMatrix | ( | const vector< reco::TransientTrack > & | ) | const [private] |
Definition at line 68 of file CrossingPtBasedLinearizationPointFinder.h.
Referenced by ~CrossingPtBasedLinearizationPointFinder().
const RecTracksDistanceMatrix* CrossingPtBasedLinearizationPointFinder::theMatrix [protected] |
Definition at line 61 of file CrossingPtBasedLinearizationPointFinder.h.
signed int CrossingPtBasedLinearizationPointFinder::theNPairs [protected] |
Definition at line 60 of file CrossingPtBasedLinearizationPointFinder.h.
const bool CrossingPtBasedLinearizationPointFinder::useMatrix [protected] |
Definition at line 57 of file CrossingPtBasedLinearizationPointFinder.h.