CMS 3D CMS Logo

MultiVertexBSeeder.cc File Reference

#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::TransientTrackconvert (const vector< const reco::TransientTrack * > &ptrs)
bool element (const reco::TransientTrack &rt, const TransientVertex &rv)
GlobalPointoperator+= (GlobalPoint &a, const GlobalPoint &b)
GlobalPointoperator/= (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 ()


Function Documentation

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]

Definition at line 22 of file MultiVertexBSeeder.cc.

References i.

00024   {
00025     vector < reco::TransientTrack > ret;
00026     for ( vector< const reco::TransientTrack * >::const_iterator i=ptrs.begin(); 
00027           i!=ptrs.end() ; ++i )
00028     {
00029       ret.push_back ( **i );
00030     }
00031     return ret;
00032   }

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().

00046   {
00047     a = GlobalPoint ( a.x() / b, a.y() / b, a.z() / b );
00048     return a;
00049   }

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   }

int @15051::verbose (  )  [static]

Definition at line 34 of file MultiVertexBSeeder.cc.

00035   {
00036     return 0;
00037   }


Generated on Tue Jun 9 17:55:41 2009 for CMSSW by  doxygen 1.5.4