3 #ifndef VertexFitterLCFI_h
4 #define VertexFitterLCFI_h 1
10 #include <zvtop/include/VertexFitterKalman.h>
11 #include <util/inc/util.h>
14 using namespace lcfiplus;
18 template<
class Iterator>
21 Vertex* operator() (Iterator tracksBegin, Iterator tracksEnd,
Vertex* pointConstraint = 0) {
24 vector<vertex_lcfi::TrackState*> trackStates;
25 map<vertex_lcfi::TrackState*, const Track*> trackMap;
27 for (Iterator it = tracksBegin; it != tracksEnd; it++) {
28 vertex_lcfi::Track* ptr = lcfi.lcfiTrack(*it);
29 vertex_lcfi::TrackState* pstate = ptr->makeState();
30 trackStates.push_back(pstate);
31 trackMap[pstate] = *it;
34 vertex_lcfi::ZVTOP::VertexFitterKalman kalman;
42 vertex_lcfi::util::Vector3 vtxpos;
43 vertex_lcfi::util::Matrix3x3 vtxerr;
46 map<vertex_lcfi::TrackState*, double> chi2map;
48 vertex_lcfi::ZVTOP::InteractionPoint* ipConst = 0;
49 if (pointConstraint) {
50 vertex_lcfi::util::SymMatrix3x3 pcerr;
51 vertex_lcfi::util::Vector3 pc;
53 pc(0) = pointConstraint->getX();
54 pc(1) = pointConstraint->getY();
55 pc(2) = pointConstraint->getZ();
57 pcerr(0,0) = pointConstraint->getCov()[Vertex::xx];
58 pcerr(0,1) = pointConstraint->getCov()[Vertex::xy];
59 pcerr(0,2) = pointConstraint->getCov()[Vertex::xz];
60 pcerr(1,1) = pointConstraint->getCov()[Vertex::yy];
61 pcerr(1,2) = pointConstraint->getCov()[Vertex::yz];
62 pcerr(2,2) = pointConstraint->getCov()[Vertex::zz];
64 ipConst =
new vertex_lcfi::ZVTOP::InteractionPoint(pc,pcerr);
67 kalman.fitVertex(trackStates,ipConst, vtxpos, vtxerr, chi2fit, chi2map, chi2ip);
69 chi2fit -= ipConst->chi2(vtxpos);
72 double prob = vertex_lcfi::util::prob(chi2fit, trackStates.size() * 2 - 3);
88 Vertex* vtx =
new Vertex(chi2fit, prob,vtxpos(0), vtxpos(1), vtxpos(2),cov,
false);
89 for (
unsigned int i=0; i<trackStates.size(); i++) {
90 vtx->
add(trackMap[trackStates[i]], chi2map[trackStates[i]]);
Definition: lcfiplus.h:771
VertexFitterLCFI< vector< const Track * >::const_iterator > VertexFitterLCFI_V
Definition: VertexFitterLCFI.h:97
VertexFitterLCFI< list< const Track * >::const_iterator > VertexFitterLCFI_L
Definition: VertexFitterLCFI.h:98
Definition: LcfiInterface.h:49
Definition: VertexFitterLCFI.h:19
void add(const Track *trk)
Definition: lcfiplus.cc:827
cov
Definition: lcfiplus.h:26