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