#include <VertexFitterResult.h>
Public Types | |
typedef std::vector < reco::TransientTrack > | TTrackCont |
Public Member Functions | |
const float * | chi2Information () const |
void | fill (const TransientVertex &recv, const TrackingVertex *simv=0, reco::RecoToSimCollection *recSimColl=0, const float &time=0) |
void | fill (const TransientVertex &recVertex, const TTrackCont &recTrackV, const TrackingVertex *simv=0, reco::RecoToSimCollection *recSimColl=0, const float &time=0) |
const int * | numberRecTracks () |
const int * | numberSimTracks () |
const float * | recErrors (const int i) const |
const float * | recParameters (const int i) const |
const int * | recTrack_simIndex () |
const float * | recTrackWeight () |
const float * | recVertexErr () const |
const float * | recVertexPos () const |
const float * | refErrors (const int i) const |
const float * | refParameters (const int i) const |
void | reset () |
const float * | simParameters (const int i) const |
const int * | simTrack_recIndex () |
const float * | simVertexPos () const |
const float * | time () const |
const int * | trackInformation () const |
VertexFitterResult (const int maxTracks=100, TrackAssociatorByChi2 *associator=0) | |
const int * | vertexPresent () const |
~VertexFitterResult () | |
Private Member Functions | |
void | fillErrors (const PerigeeTrajectoryError &pte, float *errors[5], int trackNumber) |
void | fillParameters (const reco::TrackBase::ParameterVector &perigee, float *params[5], int trackNumber) |
void | fillParameters (const PerigeeTrajectoryParameters &ptp, float *params[5], int trackNumber) |
Private Attributes | |
TrackAssociatorByChi2 * | associatorForParamAtPca |
float | chi [3] |
float | fitTime |
int | numberOfRecTracks |
int | numberOfSimTracks |
float | recErr [3] |
float * | recErrs [5] |
int * | recIndex |
float * | recPars [5] |
float | recPos [3] |
float * | refErrs [5] |
float * | refPars [5] |
int * | simIndex |
float * | simPars [5] |
float | simPos [3] |
int | theMaxTracks |
int | tracks [3] |
float * | trackWeight |
int | vertex |
Very basic class containing only the positions of the simulated and reconstructed vertices, total chi**2, chi**2 probability and number of degrees of freedom. The only thing to be done is to call the method fill for each vertex.
Definition at line 24 of file VertexFitterResult.h.
typedef std::vector<reco::TransientTrack> VertexFitterResult::TTrackCont |
Definition at line 28 of file VertexFitterResult.h.
VertexFitterResult::VertexFitterResult | ( | const int | maxTracks = 100 , |
TrackAssociatorByChi2 * | associator = 0 |
||
) |
Definition at line 9 of file VertexFitterResult.cc.
References associatorForParamAtPca, i, numberOfRecTracks, numberOfSimTracks, recErrs, recIndex, recPars, refErrs, refPars, reset(), simIndex, simPars, theMaxTracks, and trackWeight.
: associatorForParamAtPca(associator) { theMaxTracks = maxTracks; if (associatorForParamAtPca==0) theMaxTracks=0; for ( int i=0; i<5; i++ ) { if ( maxTracks>0 ) { simPars[i] = new float[maxTracks]; recPars[i] = new float[maxTracks]; refPars[i] = new float[maxTracks]; recErrs[i] = new float[maxTracks]; refErrs[i] = new float[maxTracks]; } else { simPars[i] = 0; recPars[i] = 0; refPars[i] = 0; recErrs[i] = 0; refErrs[i] = 0; } } trackWeight = new float[maxTracks]; simIndex = new int[maxTracks]; recIndex = new int[maxTracks]; numberOfRecTracks=theMaxTracks; numberOfSimTracks=theMaxTracks; reset(); }
VertexFitterResult::~VertexFitterResult | ( | ) |
const float* VertexFitterResult::chi2Information | ( | ) | const [inline] |
Definition at line 46 of file VertexFitterResult.h.
References chi.
Referenced by SimpleVertexTree::SimpleVertexTree().
{return chi;}
void VertexFitterResult::fill | ( | const TransientVertex & | recVertex, |
const TTrackCont & | recTrackV, | ||
const TrackingVertex * | simv = 0 , |
||
reco::RecoToSimCollection * | recSimColl = 0 , |
||
const float & | time = 0 |
||
) |
Definition at line 64 of file VertexFitterResult.cc.
References associatorForParamAtPca, edm::RefVector< C, T, F >::begin(), chi, ChiSquaredProbability(), GlobalErrorBase< T, ErrorWeightType >::cxx(), GlobalErrorBase< T, ErrorWeightType >::cyy(), GlobalErrorBase< T, ErrorWeightType >::czz(), TrackingVertex::daughterTracks(), TrackingVertex::daughterTracks_begin(), TrackingVertex::daughterTracks_end(), TransientVertex::degreesOfFreedom(), edm::RefVector< C, T, F >::end(), fillErrors(), fillParameters(), spr::find(), fitTime, TransientVertex::isValid(), numberOfRecTracks, numberOfSimTracks, TransientVertex::originalTracks(), TrackAssociatorByChi2::parametersAtClosestApproach(), TrajectoryStateClosestToPoint::perigeeError(), TrackingVertex::position(), TransientVertex::position(), TransientVertex::positionError(), recErr, recErrs, recIndex, recPars, recPos, simIndex, simPars, simPos, mathSSE::sqrt(), theMaxTracks, time(), TransientVertex::totalChiSquared(), reco::TrackTransientTrack::trackBaseRef(), tracks, vertex, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
{ TrackingParticleRefVector simTrackV; Basic3DVector<double> vert; if (recVertex.isValid()) { recPos[0] = recVertex.position().x(); recPos[1] = recVertex.position().y(); recPos[2] = recVertex.position().z(); recErr[0] = sqrt(recVertex.positionError().cxx()); recErr[1] = sqrt(recVertex.positionError().cyy()); recErr[2] = sqrt(recVertex.positionError().czz()); vert = (Basic3DVector<double>) recVertex.position(); chi[0] = recVertex.totalChiSquared(); chi[1] = recVertex.degreesOfFreedom(); chi[2] = ChiSquaredProbability(recVertex.totalChiSquared(), recVertex.degreesOfFreedom()); vertex = 2; fitTime = time; tracks[1] = recVertex.originalTracks().size(); } if (simv!=0) { simPos[0] = simv->position().x(); simPos[1] = simv->position().y(); simPos[2] = simv->position().z(); simTrackV = simv->daughterTracks(); vertex += 1; for(TrackingVertex::tp_iterator simTrack = simv->daughterTracks_begin(); (simTrack != simv->daughterTracks_end() && (numberOfSimTracks<theMaxTracks)); simTrack++) { Basic3DVector<double> momAtVtx((**simTrack).momentum()); std::pair<bool, reco::TrackBase::ParameterVector> paramPair = associatorForParamAtPca->parametersAtClosestApproach(vert, momAtVtx, (float) (**simTrack).charge(), recTrackV.front().stateAtBeamLine().beamSpot()); if (paramPair.first) { fillParameters(paramPair.second, simPars, numberOfSimTracks); simIndex[numberOfSimTracks] = -1; ++numberOfSimTracks; } } tracks[0] = numberOfSimTracks; } // now store all the recTrack... for(TTrackCont::const_iterator recTrack =recTrackV.begin(); (recTrack != recTrackV.end() && (numberOfRecTracks<theMaxTracks)); recTrack++) { // std::cout << "Input; 1/Pt " << 1./(*recTrack).momentumAtVertex().transverse() << std::endl; //looking for sim tracks corresponding to our reconstructed tracks: simIndex[numberOfRecTracks] = -1; std::vector<std::pair<TrackingParticleRef, double> > simFound; try { const TrackTransientTrack* ttt = dynamic_cast<const TrackTransientTrack*>(recTrack->basicTransientTrack()); if ((ttt!=0) && (recSimColl!=0)) simFound = (*recSimColl)[ttt->trackBaseRef()]; // if (recSimColl!=0) simFound = (*recSimColl)[recTrack->persistentTrackRef()]; // if (recSimColl!=0) simFound = (*recSimColl)[recTrack]; } catch (cms::Exception e) { // LogDebug("TrackValidator") << "reco::Track #" << rT << " with pt=" << track->pt() // << " NOT associated to any TrackingParticle" << "\n"; // edm::LogError("TrackValidator") << e.what() << "\n"; } if(simFound.size() != 0) { //OK, it was associated, so get the state on the same surface as the 'SimState' TrackingParticleRefVector::const_iterator simTrackI = find(simTrackV.begin(), simTrackV.end(), simFound[0].first); if (simTrackI!=simTrackV.end()) ++tracks[2]; int simTrackIndex = simTrackI-simTrackV.begin(); if (simTrackIndex<numberOfSimTracks) { simIndex[numberOfRecTracks] = simTrackIndex; recIndex[simTrackIndex] = numberOfRecTracks; // cout << "Assoc; 1/Pt " << 1./(*recTrack).momentumAtVertex().transverse() << std::endl; } } TrajectoryStateClosestToPoint tscp = recTrack->trajectoryStateClosestToPoint(recVertex.position()); fillParameters(recTrack->track().parameters(), recPars, numberOfRecTracks); fillErrors(tscp.perigeeError(), recErrs, numberOfRecTracks); // trackWeight[numberOfRecTracks] = recVertex.trackWeight(*recTrack); // // if ((recVertex.isValid())&&(recVertex.hasRefittedTracks())) { // //looking for corresponding refitted tracks: // TrajectoryStateOnSurface refip; // RecTrackCont::iterator refTrackI = // find_if(refTracks.begin(), refTracks.end(), RecTrackMatch(*recTrack)); // if (refTrackI!=refTracks.end()) { // // If it was not found, it would mean that it was not used in the fit, // // or with a low weight such that the track was then discarded. // if(simFound.size() != 0) { // refip = refTrackI->stateOnSurface(simFound[0]->impactPointStateOnSurface().surface()); // } else { // refip = refTrackI->innermostState(); // } // // fillParameters(refip, refPars, numberOfRecTracks); // fillErrors(refip, refErrs, numberOfRecTracks); // } // } // ++numberOfRecTracks; } }
void VertexFitterResult::fill | ( | const TransientVertex & | recv, |
const TrackingVertex * | simv = 0 , |
||
reco::RecoToSimCollection * | recSimColl = 0 , |
||
const float & | time = 0 |
||
) |
Definition at line 55 of file VertexFitterResult.cc.
References TransientVertex::isValid(), and TransientVertex::originalTracks().
Referenced by SimpleVertexTree::fill().
{ TTrackCont recTrackV; if (recVertex.isValid()) recTrackV = recVertex.originalTracks(); fill(recVertex, recTrackV, simv, recSimColl, time); }
void VertexFitterResult::fillErrors | ( | const PerigeeTrajectoryError & | pte, |
float * | errors[5], | ||
int | trackNumber | ||
) | [private] |
Definition at line 203 of file VertexFitterResult.cc.
References PerigeeTrajectoryError::longitudinalImpactParameterError(), PerigeeTrajectoryError::phiError(), PerigeeTrajectoryError::thetaError(), PerigeeTrajectoryError::transverseCurvatureError(), and PerigeeTrajectoryError::transverseImpactParameterError().
Referenced by fill().
{ errors[0][trackNumber] = pte.transverseCurvatureError(); errors[1][trackNumber] = pte.thetaError(); errors[2][trackNumber] = pte.phiError(); errors[3][trackNumber] = pte.transverseImpactParameterError(); errors[4][trackNumber] = pte.longitudinalImpactParameterError(); }
void VertexFitterResult::fillParameters | ( | const PerigeeTrajectoryParameters & | ptp, |
float * | params[5], | ||
int | trackNumber | ||
) | [private] |
Definition at line 192 of file VertexFitterResult.cc.
References PerigeeTrajectoryParameters::vector_old().
{ const AlgebraicVector & perigee = ptp.vector_old(); params[0][trackNumber] = perigee[0]; params[1][trackNumber] = perigee[1]; params[2][trackNumber] = perigee[2]; params[3][trackNumber] = perigee[3]; params[4][trackNumber] = perigee[4]; }
void VertexFitterResult::fillParameters | ( | const reco::TrackBase::ParameterVector & | perigee, |
float * | params[5], | ||
int | trackNumber | ||
) | [private] |
Definition at line 182 of file VertexFitterResult.cc.
Referenced by fill().
{ params[0][trackNumber] = perigee[0]; params[1][trackNumber] = perigee[1]; params[2][trackNumber] = perigee[2]; params[3][trackNumber] = perigee[3]; params[4][trackNumber] = perigee[4]; }
const int* VertexFitterResult::numberRecTracks | ( | ) | [inline] |
Definition at line 51 of file VertexFitterResult.h.
References numberOfRecTracks.
Referenced by SimpleVertexTree::SimpleVertexTree().
{return &numberOfRecTracks;}
const int* VertexFitterResult::numberSimTracks | ( | ) | [inline] |
Definition at line 50 of file VertexFitterResult.h.
References numberOfSimTracks.
Referenced by SimpleVertexTree::SimpleVertexTree().
{return &numberOfSimTracks;}
const float* VertexFitterResult::recErrors | ( | const int | i | ) | const [inline] |
Definition at line 72 of file VertexFitterResult.h.
Referenced by SimpleVertexTree::SimpleVertexTree().
const float* VertexFitterResult::recParameters | ( | const int | i | ) | const [inline] |
Definition at line 57 of file VertexFitterResult.h.
Referenced by SimpleVertexTree::SimpleVertexTree().
const int* VertexFitterResult::recTrack_simIndex | ( | ) | [inline] |
Definition at line 55 of file VertexFitterResult.h.
References simIndex.
Referenced by SimpleVertexTree::SimpleVertexTree().
{return simIndex;}
const float* VertexFitterResult::recTrackWeight | ( | ) | [inline] |
Definition at line 56 of file VertexFitterResult.h.
References trackWeight.
Referenced by SimpleVertexTree::SimpleVertexTree().
{return trackWeight;}
const float* VertexFitterResult::recVertexErr | ( | ) | const [inline] |
Definition at line 44 of file VertexFitterResult.h.
References recErr.
Referenced by SimpleVertexTree::SimpleVertexTree().
{return recErr;}
const float* VertexFitterResult::recVertexPos | ( | ) | const [inline] |
Definition at line 43 of file VertexFitterResult.h.
References recPos.
Referenced by SimpleVertexTree::SimpleVertexTree().
{return recPos;}
const float* VertexFitterResult::refErrors | ( | const int | i | ) | const [inline] |
Definition at line 77 of file VertexFitterResult.h.
Referenced by SimpleVertexTree::SimpleVertexTree().
const float* VertexFitterResult::refParameters | ( | const int | i | ) | const [inline] |
Definition at line 62 of file VertexFitterResult.h.
Referenced by SimpleVertexTree::SimpleVertexTree().
void VertexFitterResult::reset | ( | void | ) |
Definition at line 213 of file VertexFitterResult.cc.
References chi, fitTime, i, j, numberOfRecTracks, numberOfSimTracks, recErr, recErrs, recIndex, recPars, recPos, refErrs, refPars, simIndex, simPars, simPos, tracks, trackWeight, and vertex.
Referenced by SimpleVertexTree::fill(), and VertexFitterResult().
{ for ( int i=0; i<3; ++i ) { simPos[i] = 0.; recPos[i] = 0.; recErr[i] = 0.; chi[i] = 0.; tracks[i] = 0; } vertex =0; fitTime = 0; for ( int j=0; j<numberOfRecTracks; ++j ) { for ( int i=0; i<5; ++i ) { recPars[i][j] = 0; refPars[i][j] = 0; recErrs[i][j] = 0; refErrs[i][j] = 0; } trackWeight[j] = 0; simIndex[j] = -1; } for ( int j=0; j<numberOfSimTracks; ++j ) { for ( int i=0; i<5; ++i ) { simPars[i][j] = 0; } recIndex[j] = -1; } numberOfRecTracks=0; numberOfSimTracks=0; }
const float* VertexFitterResult::simParameters | ( | const int | i | ) | const [inline] |
Definition at line 67 of file VertexFitterResult.h.
Referenced by SimpleVertexTree::SimpleVertexTree().
const int* VertexFitterResult::simTrack_recIndex | ( | ) | [inline] |
Definition at line 53 of file VertexFitterResult.h.
References recIndex.
Referenced by SimpleVertexTree::SimpleVertexTree().
{return recIndex;}
const float* VertexFitterResult::simVertexPos | ( | ) | const [inline] |
Definition at line 42 of file VertexFitterResult.h.
References simPos.
Referenced by SimpleVertexTree::SimpleVertexTree().
{return simPos;}
const float* VertexFitterResult::time | ( | ) | const [inline] |
Definition at line 48 of file VertexFitterResult.h.
References fitTime.
Referenced by fill(), and SimpleVertexTree::SimpleVertexTree().
{return &fitTime;}
const int* VertexFitterResult::trackInformation | ( | ) | const [inline] |
Definition at line 45 of file VertexFitterResult.h.
References tracks.
Referenced by SimpleVertexTree::SimpleVertexTree().
{return tracks;}
const int* VertexFitterResult::vertexPresent | ( | ) | const [inline] |
Definition at line 47 of file VertexFitterResult.h.
References vertex.
Referenced by SimpleVertexTree::SimpleVertexTree().
{return &vertex;}
Definition at line 114 of file VertexFitterResult.h.
Referenced by fill(), and VertexFitterResult().
float VertexFitterResult::chi[3] [private] |
Definition at line 119 of file VertexFitterResult.h.
Referenced by chi2Information(), fill(), and reset().
float VertexFitterResult::fitTime [private] |
Definition at line 122 of file VertexFitterResult.h.
int VertexFitterResult::numberOfRecTracks [private] |
Definition at line 130 of file VertexFitterResult.h.
Referenced by fill(), numberRecTracks(), reset(), and VertexFitterResult().
int VertexFitterResult::numberOfSimTracks [private] |
Definition at line 130 of file VertexFitterResult.h.
Referenced by fill(), numberSimTracks(), reset(), and VertexFitterResult().
float VertexFitterResult::recErr[3] [private] |
Definition at line 118 of file VertexFitterResult.h.
Referenced by fill(), recVertexErr(), and reset().
float* VertexFitterResult::recErrs[5] [private] |
Definition at line 128 of file VertexFitterResult.h.
Referenced by fill(), recErrors(), reset(), VertexFitterResult(), and ~VertexFitterResult().
int * VertexFitterResult::recIndex [private] |
Definition at line 132 of file VertexFitterResult.h.
Referenced by fill(), reset(), simTrack_recIndex(), VertexFitterResult(), and ~VertexFitterResult().
float* VertexFitterResult::recPars[5] [private] |
Definition at line 126 of file VertexFitterResult.h.
Referenced by fill(), recParameters(), reset(), VertexFitterResult(), and ~VertexFitterResult().
float VertexFitterResult::recPos[3] [private] |
Definition at line 117 of file VertexFitterResult.h.
Referenced by fill(), recVertexPos(), and reset().
float* VertexFitterResult::refErrs[5] [private] |
Definition at line 129 of file VertexFitterResult.h.
Referenced by refErrors(), reset(), VertexFitterResult(), and ~VertexFitterResult().
float* VertexFitterResult::refPars[5] [private] |
Definition at line 127 of file VertexFitterResult.h.
Referenced by refParameters(), reset(), VertexFitterResult(), and ~VertexFitterResult().
int* VertexFitterResult::simIndex [private] |
Definition at line 132 of file VertexFitterResult.h.
Referenced by fill(), recTrack_simIndex(), reset(), VertexFitterResult(), and ~VertexFitterResult().
float* VertexFitterResult::simPars[5] [private] |
Definition at line 125 of file VertexFitterResult.h.
Referenced by fill(), reset(), simParameters(), VertexFitterResult(), and ~VertexFitterResult().
float VertexFitterResult::simPos[3] [private] |
Definition at line 116 of file VertexFitterResult.h.
Referenced by fill(), reset(), and simVertexPos().
int VertexFitterResult::theMaxTracks [private] |
Definition at line 124 of file VertexFitterResult.h.
Referenced by fill(), and VertexFitterResult().
int VertexFitterResult::tracks[3] [private] |
Definition at line 120 of file VertexFitterResult.h.
Referenced by fill(), reset(), and trackInformation().
float* VertexFitterResult::trackWeight [private] |
Definition at line 131 of file VertexFitterResult.h.
Referenced by recTrackWeight(), reset(), VertexFitterResult(), and ~VertexFitterResult().
int VertexFitterResult::vertex [private] |
Definition at line 121 of file VertexFitterResult.h.
Referenced by fill(), reset(), and vertexPresent().