37 declareInterface< ITrigPrimaryVertexFitter >(
this );
54 return StatusCode::SUCCESS;
60 return StatusCode::SUCCESS;
77 std::vector<TrigPrimaryVertexTrack*> tracks;
98 memset(&pV->
m_Gk[0][0],0,
sizeof(pV->
m_Gk));
105 for(std::vector<TrigPrimaryVertexTrack*>::iterator it=tracks.begin();it!=tracks.end();++it)
107 if(!(*it)->isActive())
110 double dchi2=(*it)->getChi2Distance(pV);
120 (*it)->updateVertex(pV);
125 ATH_MSG_DEBUG(
"Skipping track "<<(*it)->getIndex()<<
"due to large dchi2="<<dchi2 );
138 cv[0]=pV->
m_Gk[0][0];cv[1]=pV->
m_Gk[0][1];cv[2]=pV->
m_Gk[1][1];
139 cv[3]=pV->
m_Gk[0][2];cv[4]=pV->
m_Gk[1][2];cv[5]=pV->
m_Gk[2][2];
142 output_tc.
reserve(tracks.size());
144 for(std::vector<TrigPrimaryVertexTrack*>::iterator it=tracks.begin();it!=tracks.end();++it) {
145 if ((*it)->isActive())
154 for(std::vector<TrigPrimaryVertexTrack*>::iterator it=tracks.begin();it!=tracks.end();++it)
177 std::vector<TrigPrimaryVertexTrack*> tracks;
187 tracks.push_back(pT);
188 Chi2V.push_back(-100.0);
200 memset(&pV->
m_Gk[0][0],0,
sizeof(pV->
m_Gk));
206 for(std::vector<TrigPrimaryVertexTrack*>::iterator it=tracks.begin();it!=tracks.end();++it)
208 double dchi2=(*it)->getChi2Distance(pV);
219 for(std::vector<TrigPrimaryVertexTrack*>::iterator it=tracks.begin();
220 it!=tracks.end();++it)
delete (*it);
226 memset(&pV->
m_Gk[0][0],0,
sizeof(pV->
m_Gk));
228 for(std::vector<TrigPrimaryVertexTrack*>::iterator it=tracks.begin();it!=tracks.end();++it)
230 double dchi2=(*it)->getChi2Distance(pV);
231 ATH_MSG_DEBUG(
"Track "<<(*it)->getIndex()<<
" dchi2="<<dchi2 );
247 memset(&pV->
m_Gk[0][0],0,
sizeof(pV->
m_Gk));
248 pV->
m_Gk[0][0]=100.0;
249 pV->
m_Gk[1][1]=100.0;
254 for(std::vector<TrigPrimaryVertexTrack*>::iterator it=tracks.begin();it!=tracks.end();++it)
256 double dchi2=(*it)->getChi2Distance(pV);
257 Chi2V[(*it)->getIndex()-1]=dchi2;
267 (*it)->updateVertex(pV);
271 ATH_MSG_DEBUG(
"Skipping track "<<(*it)->getIndex()<<
"due to large dchi2="<<dchi2 );
276 for(std::vector<TrigPrimaryVertexTrack*>::iterator it=tracks.begin();it!=tracks.end();++it)
287 cv[0]=pV->
m_Gk[0][0];cv[1]=pV->
m_Gk[0][1];cv[2]=pV->
m_Gk[1][1];
288 cv[3]=pV->
m_Gk[0][2];cv[4]=pV->
m_Gk[1][2];cv[5]=pV->
m_Gk[2][2];
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
DataModel_detail::const_iterator< DataVector > const_iterator
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
void clear()
Erase all the elements in the collection.
double * getParametersVector()
returns vector of vertex fit parameters: vertex position + refitted track momenta at-perigee (sic !...
double m_Gk[MAX_SIZE_VERT_COVM][MAX_SIZE_VERT_COVM]
TrigPrimaryVertexFitter(const std::string &, const std::string &, const IInterface *)
virtual TrigVertex * fit(const TrackCollection *, TrackCollection &, double z=0.0) const
virtual ~TrigPrimaryVertexFitter()
virtual StatusCode initialize()
virtual StatusCode finalize()
encapsulates LVL2 vertex parameters (in the global reference frame), covariance matrix,...
double chi2(TH1 *h0, TH1 *h1)
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
bool operator()(TrigPrimaryVertexTrack *pA, TrigPrimaryVertexTrack *pB)