#include "RecoVertex/MultiVertexFit/interface/MultiVertexBSeeder.h"
#include "RecoVertex/KalmanVertexFit/interface/KalmanVertexFitter.h"
#include "TrackingTools/PatternTools/interface/TwoTrackMinimumDistance.h"
#include "RecoVertex/VertexTools/interface/FsmwModeFinder3d.h"
#include "CommonTools/Clustering1D/interface/FsmwClusterizer1D.h"
#include "CommonTools/Clustering1D/interface/OutermostClusterizer1D.h"
#include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
Go to the source code of this file.
Functions | |
vector< Cluster1D < reco::TransientTrack > > | computeIPs (const vector< reco::TransientTrack > &trks) |
GlobalVector | computeJetDirection (const vector< reco::TransientTrack > &trks) |
GlobalPoint | computeJetOrigin (const vector< reco::TransientTrack > &trks) |
GlobalTrajectoryParameters | computeJetTrajectory (const vector< reco::TransientTrack > &trks) |
GlobalPoint | computePos (const GlobalTrajectoryParameters &jet, double s) |
vector< reco::TransientTrack > | convert (const vector< const reco::TransientTrack * > &ptrs) |
bool | element (const reco::TransientTrack &rt, const TransientVertex &rv) |
GlobalPoint & | operator+= (GlobalPoint &a, const GlobalPoint &b) |
GlobalPoint & | operator/= (GlobalPoint &a, float b) |
TransientVertex | pseudoVertexFit (const Cluster1D< reco::TransientTrack > &src, bool ascending=false, bool kalmanfit=false) |
GlobalPoint | toPoint (const GlobalVector &v) |
GlobalVector | toVector (const GlobalPoint &v) |
int | verbose () |
vector< Cluster1D < reco::TransientTrack > > @15051::computeIPs | ( | const vector< reco::TransientTrack > & | trks | ) | [static] |
Definition at line 121 of file MultiVertexBSeeder.cc.
References TwoTrackMinimumDistance::calculate(), computeJetTrajectory(), d, i, metsig::jet, muonGeometry::mag(), TwoTrackMinimumDistance::points(), FreeTrajectoryState::position(), s, StDecayID::status, and w.
00123 { 00124 GlobalTrajectoryParameters jet = computeJetTrajectory ( trks ); 00125 FreeTrajectoryState axis ( jet ); 00126 TwoTrackMinimumDistance ttmd; 00127 vector < Cluster1D < reco::TransientTrack > > pts; 00128 for ( vector< reco::TransientTrack >::const_iterator i=trks.begin(); 00129 i!=trks.end() ; ++i ) 00130 { 00131 bool status = ttmd.calculate( axis,*( i->impactPointState().freeState() ) ); 00132 pair < GlobalPoint, GlobalPoint > pt = ttmd.points(); 00133 double d = ( pt.first - pt.second ).mag(); 00134 double w = 1. / ( 0.002 + d ); // hard coded weights 00135 double s = ( pt.first - axis.position() ).mag(); 00136 Measurement1D ms ( s, 1.0 ); 00137 vector < const reco::TransientTrack * > trk; 00138 trk.push_back ( &(*i) ); 00139 pts.push_back ( Cluster1D < reco::TransientTrack > ( ms, trk, w ) ); 00140 } 00141 /* 00142 #ifdef MVBS_DEBUG 00143 map < string, harvest::MultiType > attrs; 00144 attrs["point:mag"]=0.5; 00145 attrs["point:color"]="khaki"; 00146 DebuggingHarvester("out.txt").save ( pts, jet, attrs, "ip" ); 00147 #endif 00148 */ 00149 return pts; 00150 }
GlobalVector @15051::computeJetDirection | ( | const vector< reco::TransientTrack > & | trks | ) | [static] |
Definition at line 85 of file MultiVertexBSeeder.cc.
References f, i, iggi_31X_cfg::input, PV3DBase< T, PVType, FrameType >::mag(), toPoint(), and toVector().
Referenced by computeJetTrajectory().
00086 { 00087 FsmwModeFinder3d f; 00088 vector< ModeFinder3d::PointAndDistance> input; 00089 for ( vector< reco::TransientTrack >::const_iterator i=trks.begin(); 00090 i!=trks.end() ; ++i ) 00091 { 00092 input.push_back ( ModeFinder3d::PointAndDistance ( 00093 toPoint ( i->impactPointState().globalMomentum() ), 1. ) ); 00094 } 00095 GlobalPoint pt ( f(input) ); 00096 pt/=pt.mag(); 00097 return toVector ( pt ); 00098 }
GlobalPoint @15051::computeJetOrigin | ( | const vector< reco::TransientTrack > & | trks | ) | [static] |
Definition at line 72 of file MultiVertexBSeeder.cc.
References f, i, and iggi_31X_cfg::input.
Referenced by computeJetTrajectory().
00073 { 00074 FsmwModeFinder3d f; 00075 vector< ModeFinder3d::PointAndDistance> input; 00076 for ( vector< reco::TransientTrack >::const_iterator i=trks.begin(); 00077 i!=trks.end() ; ++i ) 00078 { 00079 input.push_back ( ModeFinder3d::PointAndDistance 00080 ( i->impactPointState().globalPosition(), 1. ) ); 00081 } 00082 return f(input); 00083 }
GlobalTrajectoryParameters @15051::computeJetTrajectory | ( | const vector< reco::TransientTrack > & | trks | ) | [static] |
construct a trajectory at the mean of the impact points of all tracks, momentum = total momentum of all tracks
Definition at line 100 of file MultiVertexBSeeder.cc.
References computeJetDirection(), and computeJetOrigin().
Referenced by computeIPs().
00101 { 00108 if ( trks.size() == 0 ) return GlobalTrajectoryParameters(); 00109 00110 GlobalVector mom = computeJetDirection ( trks ); 00111 GlobalPoint pos = computeJetOrigin ( trks ); 00112 00113 GlobalTrajectoryParameters ret ( pos, mom, 0, 00114 &(trks[0].impactPointState().globalParameters().magneticField()) ); 00115 #ifdef MVBS_DEBUG 00116 DebuggingHarvester("out.txt").save ( ret , "p<sub>tot</sub>" ); 00117 #endif 00118 return ret; 00119 }
GlobalPoint @15051::computePos | ( | const GlobalTrajectoryParameters & | jet, | |
double | s | |||
) | [static] |
Definition at line 152 of file MultiVertexBSeeder.cc.
References GlobalTrajectoryParameters::momentum(), and GlobalTrajectoryParameters::position().
00154 { 00155 GlobalPoint ret = jet.position(); 00156 ret += s * jet.momentum(); 00157 return ret; 00158 }
vector< reco::TransientTrack > @15051::convert | ( | const vector< const reco::TransientTrack * > & | ptrs | ) | [static] |
bool @15051::element | ( | const reco::TransientTrack & | rt, | |
const TransientVertex & | rv | |||
) | [static] |
Definition at line 51 of file MultiVertexBSeeder.cc.
References i, and TransientVertex::originalTracks().
Referenced by CSCBaseElectronicsSim::add(), DTTSPhi::addTracoT(), CSCBaseElectronicsSim::amplifySignal(), HLTBJetDQMSource::book(), PFRecoTauAlgorithm::buildPFTau(), TCnaViewEB::CorrelationsBetweenCrystals(), TCnaViewEB::CorrelationsBetweenTowers(), TCnaViewEB::CovariancesBetweenCrystals(), TCnaViewEB::CovariancesBetweenTowers(), HcalHLXMaskDbInterface::createHeader(), RPCPatternsParser::endElement(), SiStripRawToClustersLazyUnpacker::fill(), SiPixelActionExecutor::fillLayout(), SiPixelDBErrorParametrization::getError(), PixelErrorParametrization::getError(), Ig2DModel::Ig2DModel(), HcalPatternSource::loadPatternFile(), XMLDocument::makeElement(), HcalDQMDbInterface::makeMapDataset(), XMLDocument::makeMapDataset(), XMLDocument::newElement(), XMLDocument::newValue(), ElementsInAnnulus< T, M, N, std::pair< math::XYZPoint, float > >::operator()(), ElementsInCone< XYZVectorD, Angle< XYZVectorD, XYZPointD >, pair< XYZPointD, float > >::operator()(), ElementsInCone< T, M, std::pair< math::XYZPoint, float > >::operator()(), ElementsInAnnulus< XYZVectorD, DeltaR< XYZVectorD >, Angle< XYZVectorD >, std::vector< Track > >::operator()(), TauConeIsolationAlgo< T, C, M >::operator()(), SummaryPlotXmlParser::parseXML(), IgQtAppDumpStateInfo::populate(), and CSCBaseElectronicsSim::simulate().
00052 { 00053 const vector < reco::TransientTrack > trks = rv.originalTracks(); 00054 for ( vector< reco::TransientTrack >::const_iterator i=trks.begin(); i!=trks.end() ; ++i ) 00055 { 00056 if ( rt == ( *i ) ) return true; 00057 }; 00058 return false; 00059 }
GlobalPoint& @15051::operator+= | ( | GlobalPoint & | a, | |
const GlobalPoint & | b | |||
) | [inline, static] |
Definition at line 39 of file MultiVertexBSeeder.cc.
References PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
Referenced by lat::ITERATOR_BASE(), and lat::XTypeInfo::ITERATOR_BASE().
00040 { 00041 a = GlobalPoint ( a.x() + b.x(), a.y() + b.y(), a.z() + b.z() ); 00042 return a; 00043 }
GlobalPoint& @15051::operator/= | ( | GlobalPoint & | a, | |
float | b | |||
) | [inline, static] |
Definition at line 45 of file MultiVertexBSeeder.cc.
References PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
TransientVertex @15051::pseudoVertexFit | ( | const Cluster1D< reco::TransientTrack > & | src, | |
bool | ascending = false , |
|||
bool | kalmanfit = false | |||
) | [static] |
Definition at line 160 of file MultiVertexBSeeder.cc.
References convert(), i, mp, TransientVertex::position(), funct::pow(), r, Cluster1D< T >::tracks(), v, w, and TransientVertex::weightMap().
00162 { 00163 // cout << "[MultiVertexBSeeder] debug: pseudoVertexFit with " << flush; 00164 vector < const reco::TransientTrack * > trkptrs=src.tracks(); 00165 vector < reco::TransientTrack > trks = convert ( trkptrs ); 00166 // cout << trks.size() << " tracks."; 00167 GlobalPoint gp; 00168 GlobalError ge; 00169 if ( kalmanfit ) 00170 { 00171 TransientVertex v = KalmanVertexFitter().vertex ( trks ); 00172 gp=v.position(); 00173 } 00174 TransientVertex ret = TransientVertex ( gp, ge, trks, -1. ); 00175 TransientVertex::TransientTrackToFloatMap mp; 00176 float w=1.0; float r=0.5; 00177 if ( ascending ) { w = pow ( (float) 0.5, (int) (trks.size()-1) ); r=2.0; }; 00178 for ( vector< reco::TransientTrack >::const_iterator i=trks.begin(); 00179 i!=trks.end() ; ++i ) 00180 { 00181 mp[*i]=w; 00182 w*=r; 00183 } 00184 ret.weightMap ( mp ); 00185 // cout << "[MultiVertexBSeeder] debug: return pseudoVertexFit with " << endl; 00186 return ret; 00187 }
GlobalPoint @15051::toPoint | ( | const GlobalVector & | v | ) | [static] |
Definition at line 61 of file MultiVertexBSeeder.cc.
References PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
Referenced by computeJetDirection().
00062 { 00063 return GlobalPoint ( v.x(), v.y(), v.z() ); 00064 }
GlobalVector @15051::toVector | ( | const GlobalPoint & | v | ) | [static] |
Definition at line 66 of file MultiVertexBSeeder.cc.
References PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
Referenced by computeJetDirection().
00067 { 00068 return GlobalVector ( v.x(), v.y(), v.z() ); 00069 }