This package contains implementations of various vertex fitting tools for the LVL2 reconstruction.
- Author
- Dmitr.nosp@m.y.Em.nosp@m.eliya.nosp@m.nov@.nosp@m.cern..nosp@m.ch
Introduction
The package defines and implements the following class:
- TrigL2Vertex - an extended TrigVertex class, contains a full covariance matrix of vertex and tracks. Note that the maximum number of tracks is limited to 9 so that the maximum size of the covariance is 30x30.
The package provides an abstract interface:
- ITrigVertexingTool - an auxiliary tool to be used in vertex fitting tools and applications in order to facilitate operations with TrigL2Vertex instances (e.g. TrigL2Vertex -> TrigVertex conversion, adding tracks to a vertex, setting constraints, etc.)
The list of vertex fitting tools is below:
- TrigVertexFitter this a first prototype of the LVL2 vertex fitter based on ITrigVertexFitter abstract interface. Note that this tool will become obsolete soon as it will be replaced by TrigL2VertexFitter
- TrigL2VertexFitter - an improved and extended fitter with capability of mass-constrained fitting. It uses TrigL2Vertex class as input/output
- TrigVertexingTool - a toolbox to facilitate handling of TrigL2Vertex class
How to use LVL2 vertexing tools:
- Example I : fitting Ds(phi pi) vertex with phi(KK)
StatusCode
sc = toolSvc()->retrieveTool(
"TrigL2VertexFitter",
"TrigL2VertexFitter",m_L2vertFitter);
log << MSG::FATAL <<
"Unable to locate TrigL2VertexFitter tool " <<
endmsg;
}
sc = toolSvc()->retrieveTool(
"TrigVertexingTool",
"TrigVertexingTool",m_vertexingTool);
log << MSG::FATAL <<
"Unable to locate TrigVertexingTool tool " <<
endmsg;
}
m_vertexingTool->addTrack((*track1),pL2Ds,
Trk::kaon);
m_vertexingTool->addTrack((*track2),pL2Ds,
Trk::kaon);
m_vertexingTool->addTrack((*track3),pL2Ds,
Trk::pion);
StatusCode
sc=m_L2vertFitter->fit(pL2Ds);
sc=m_vertexingTool->calculateInvariantMass(pL2Ds);
sc=m_vertexingTool->createMotherParticle(pL2Ds);
log << MSG::DEBUG <<
"Ds particle parameters"<<
endmsg;
log << MSG::DEBUG <<
"d0="<<pL2Ds->m_getMotherTrack()->a0()<<
" z0="<<pL2Ds->m_getMotherTrack()->z0()<<
" phi0="<<pL2Ds->m_getMotherTrack()->phi0()<<
" eta="<<pL2Ds->m_getMotherTrack()->eta()<<
" pT="<<pL2Ds->m_getMotherTrack()->pT()<<
endmsg;
TrigVertex* p_DsV=m_vertexingTool->createTrigVertex(pL2Ds);
if(p_DsV!=NULL){
log << MSG::DEBUG <<
"Ds vertex Fit: x= y= z=" << p_DsV->
x() <<
" " << p_DsV->
y() <<
" " << p_DsV->
z() <<
endmsg;
double chi2prob=1.0-Genfun::CumulativeChiSquare(p_DsV->
ndof())(p_DsV->
chi2());
log << MSG::DEBUG <<
"Chi2 probability of the Ds fit = " << chi2prob <<
endmsg;
}
}
}
}
delete pL2Ds;
encapsulates LVL2 vertex parameters (in the global reference frame), covariance matrix,...
double mass() const
vertex mass estimated after the vertex fit
double chi2() const
of the vertex fit
double x() const
x-position
int ndof() const
Number of degree-of-freedom of the vertex fit.
double z() const
z-position
double y() const
y-position
- Example II : Fitting vertex with a mass constraint: Ds -> phi(KK) + pi, where a mass constraint (with phi mass) is imposed on KK pair
double PHIMASS = 1020.0;
m_vertexingTool->addTrack((*track1),pL2V,
Trk::kaon);
m_vertexingTool->addTrack((*track2),pL2V,
Trk::kaon);
m_vertexingTool->addTrack((*track3),pL2V,
Trk::pion);
m_vertexingTool->setMassConstraint(pL2V,(*track1),(*track2),PHIMASS);
StatusCode
sc=m_L2vertFitter->fitWithConstraints(pL2V);