From 38aa188f20ed8a0f1ae84cb8cbe9463bc58453a7 Mon Sep 17 00:00:00 2001 From: Stewart Martin-Haugh <Stewart.Martin-Haugh@cern.ch> Date: Wed, 13 Jul 2016 14:32:27 +0200 Subject: [PATCH] 'Fix CMakeLists.txt, clean-up requirements file' (FTK_RecTools-00-00-09) * Fix CMakeLists.txt, clean-up requirements file * FTK_RecTools-00-00-09 Former-commit-id: aeafcd87f8de75b753b2eb2f157de5f0d10a6ff6 --- Trigger/TrigFTK/FTK_RecTools/CMakeLists.txt | 8 +-- .../FTK_RecTools/FTK_VertexFinderTool.h | 27 ++++++++-- Trigger/TrigFTK/FTK_RecTools/cmt/requirements | 13 ++--- .../FTK_RecTools/src/FTK_VertexFinderTool.cxx | 52 ++++++++++++------- 4 files changed, 66 insertions(+), 34 deletions(-) diff --git a/Trigger/TrigFTK/FTK_RecTools/CMakeLists.txt b/Trigger/TrigFTK/FTK_RecTools/CMakeLists.txt index 05aa3e31775..65db7b7b8ac 100644 --- a/Trigger/TrigFTK/FTK_RecTools/CMakeLists.txt +++ b/Trigger/TrigFTK/FTK_RecTools/CMakeLists.txt @@ -14,7 +14,9 @@ atlas_depends_on_subdirs( PUBLIC Tracking/TrkEvent/VxVertex Trigger/TrigFTK/FTK_DataProviderInterfaces Trigger/TrigFTK/FTK_RecToolInterfaces - Trigger/TrigFTK/TrigFTK_RawData ) + Trigger/TrigFTK/TrigFTK_RawData + Event/xAOD/xAODTracking + Tracking/TrkVertexFitter/TrkVxEdmCnv ) # External dependencies: find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) @@ -24,10 +26,10 @@ atlas_add_library( FTK_RecToolsLib src/*.cxx PUBLIC_HEADERS FTK_RecTools INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps GaudiKernel TrkTrack VxVertex FTK_DataProviderInterfaces TrigFTK_RawData ) + LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps GaudiKernel TrkTrack VxVertex FTK_DataProviderInterfaces TrigFTK_RawData xAODTracking TrkVxEdmCnvLib) atlas_add_component( FTK_RecTools src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps GaudiKernel TrkTrack VxVertex FTK_DataProviderInterfaces TrigFTK_RawData FTK_RecToolsLib ) + LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps GaudiKernel TrkTrack VxVertex FTK_DataProviderInterfaces TrigFTK_RawData xAODTracking TrkVxEdmCnvLib FTK_RecToolsLib ) diff --git a/Trigger/TrigFTK/FTK_RecTools/FTK_RecTools/FTK_VertexFinderTool.h b/Trigger/TrigFTK/FTK_RecTools/FTK_RecTools/FTK_VertexFinderTool.h index ec9179ec86d..22292907d63 100644 --- a/Trigger/TrigFTK/FTK_RecTools/FTK_RecTools/FTK_VertexFinderTool.h +++ b/Trigger/TrigFTK/FTK_RecTools/FTK_RecTools/FTK_VertexFinderTool.h @@ -27,13 +27,27 @@ #include "FTK_RecToolInterfaces/IFTK_VertexFinderTool.h" #include "FTK_DataProviderInterfaces/IFTK_UncertaintyTool.h" +#include "TrkVxEdmCnv/IVxCandidateXAODVertex.h" #include "TrigFTK_RawData/FTK_RawTrack.h" #include "TrigFTK_RawData/FTK_RawTrackContainer.h" #include "TrkTrack/TrackCollection.h" -#include "VxVertex/VxContainer.h" +#include "VxVertex/VxContainer.h" +//#include "xAODTracking/Vertex.h" +//#include "xAODTracking/TrackParticle.h" +//#include "xAODTracking/VertexContainer.h" +//#include "xAODTracking/TrackParticleContainer.h" +#include "xAODTracking/VertexFwd.h" +//#include "xAODTracking/TrackParticleFwd.h" +#include "xAODTracking/VertexContainerFwd.h" +//#include "xAODTracking/TrackParticleContainerFwd.h" +//#include "Tracking/TrkVertexFitter/TrkVxEdmCnv/TrkVxEdmCnv/IVxCandidateXAODVertex.h" class VxContainer; using std::vector; +namespace Trk { + class Track; +// class Trk::IVxCandidateXAODVertex; +} class FTK_VertexFinderTool : public AthAlgTool, virtual public IFTK_VertexFinderTool { //struct to hold track parameters @@ -84,9 +98,10 @@ class FTK_VertexFinderTool : public AthAlgTool, virtual public IFTK_VertexFinder // // Get the element of the covariance matrix for id0th and id1th track parameter // - VxContainer* findVertex(const FTK_RawTrackContainer* trks); - VxContainer* findVertex(const TrackCollection* trks); - +// VxContainer* findVertex(const FTK_RawTrackContainer* trks); +// VxContainer* findVertex(const TrackCollection* trks); + xAOD::VertexContainer* findVertex(const FTK_RawTrackContainer* trks); + xAOD::VertexContainer* findVertex(const TrackCollection* trks); private: bool m_barrelOnly; @@ -95,15 +110,17 @@ class FTK_VertexFinderTool : public AthAlgTool, virtual public IFTK_VertexFinder double m_chi2cut; double m_constTrkPt; double m_constTrkEta; + double m_z0errfactor; // // Helper functions with the uncerianties // - VxContainer* findVertex(vector<MyTrack> trks); + xAOD::VertexContainer* findVertex(vector<MyTrack> trks); double ctheta2eta(double cot); vector<MyTrack> getTracks(const FTK_RawTrackContainer* trks); vector<MyTrack> getTracks(const TrackCollection* trks); //tool handel ToolHandle<IFTK_UncertaintyTool> m_uncertaintyTool; + ToolHandle<Trk::IVxCandidateXAODVertex> m_VertexEdmFactory; }; diff --git a/Trigger/TrigFTK/FTK_RecTools/cmt/requirements b/Trigger/TrigFTK/FTK_RecTools/cmt/requirements index 45495e383f4..5ea66ffdaa1 100644 --- a/Trigger/TrigFTK/FTK_RecTools/cmt/requirements +++ b/Trigger/TrigFTK/FTK_RecTools/cmt/requirements @@ -10,20 +10,21 @@ use AtlasROOT AtlasROOT-* External use AthenaBaseComps AthenaBaseComps-* Control use PyJobTransforms PyJobTransforms-* Tools use FTK_RecToolInterfaces FTK_RecToolInterfaces-* Trigger/TrigFTK -use AtlasReconstructionRunTime AtlasReconstructionRunTime-* -use AtlasPolicy AtlasPolicy-* +#use AtlasReconstructionRunTime AtlasReconstructionRunTime-* +#use AtlasPolicy AtlasPolicy-* use GaudiInterface GaudiInterface-* External -use TrigFTK_RawData TrigFTK_RawData-* Trigger/TrigFTK +use TrigFTK_RawData TrigFTK_RawData-* Trigger/TrigFTK use FTK_DataProviderInterfaces FTK_DataProviderInterfaces-* Trigger/TrigFTK ########use FTK_DataProviderSvc FTK_DataProviderSvc-* Trigger/TrigFTK #TrkTrack and VxVertec need to be public for Collection typedef -use TrkTrack TrkTrack-* Tracking/TrkEvent -use VxVertex VxVertex-* Tracking/TrkEvent +use TrkTrack TrkTrack-* Tracking/TrkEvent +use VxVertex VxVertex-* Tracking/TrkEvent +use xAODTracking xAODTracking-* Event/xAOD +use TrkVxEdmCnv TrkVxEdmCnv-* Tracking/TrkVertexFitter private - # Add transform apply_pattern declare_job_transforms tfs='*_tf.py' jo='skeleton.*.py' #end_private diff --git a/Trigger/TrigFTK/FTK_RecTools/src/FTK_VertexFinderTool.cxx b/Trigger/TrigFTK/FTK_RecTools/src/FTK_VertexFinderTool.cxx index 3cae2180d97..43aa3230f37 100644 --- a/Trigger/TrigFTK/FTK_RecTools/src/FTK_VertexFinderTool.cxx +++ b/Trigger/TrigFTK/FTK_RecTools/src/FTK_VertexFinderTool.cxx @@ -33,15 +33,12 @@ #include "VxVertex/VxTrackAtVertex.h" #include "TrigFTK_RawData/FTK_RawTrackContainer.h" -//#include "CLHEP/Matrix/SymMatrix.h" -//#include "CLHEP/Matrix/Vector.h" -//#include "TrkTrack/Track.h" -//#include "TrkEventPrimitives/FitQuality.h" -//#include "TrkTrackSummary/TrackSummary.h" -//#include "TrkParameters/TrackParameters.h" -//#include "TrkParticleBase/TrackParticleBase.h" -//#include "TrkEventPrimitives/ParamDefs.h" +#include "xAODTracking/TrackParticleAuxContainer.h" +#include "xAODTracking/TrackParticleContainer.h" +#include "xAODTracking/VertexContainer.h" +#include "xAODTracking/VertexAuxContainer.h" #include "VxVertex/VxCandidate.h" +#include "TrkVxEdmCnv/IVxCandidateXAODVertex.h" #include <map> #include <vector> #include <utility> @@ -52,7 +49,6 @@ using std::cout; using std::endl; using std::vector; using std::iterator; using Trk::RecVertex;using Trk::VxTrackAtVertex; - FTK_VertexFinderTool::FTK_VertexFinderTool(const std::string& t, const std::string& n, const IInterface* p ): @@ -63,7 +59,9 @@ FTK_VertexFinderTool::FTK_VertexFinderTool(const std::string& t, m_chi2cut(5.), m_constTrkPt(1.), m_constTrkEta(1.1), - m_uncertaintyTool("FTK_UncertaintyTool",this) + m_z0errfactor(1.0), + m_uncertaintyTool("FTK_UncertaintyTool",this), + m_VertexEdmFactory("VertexInternalEdmFactory",this) { declareInterface< IFTK_VertexFinderTool >( this ); declareProperty( "HasIBL", m_hasIBL); @@ -73,6 +71,8 @@ FTK_VertexFinderTool::FTK_VertexFinderTool(const std::string& t, declareProperty( "ConstTrkPt", m_constTrkPt); declareProperty( "ConstTrkEta", m_constTrkEta); declareProperty("UncertaintyTool",m_uncertaintyTool); + declareProperty("VertexInternalEdmFactory",m_VertexEdmFactory); + declareProperty( "z0ErrFactor", m_z0errfactor); } StatusCode FTK_VertexFinderTool::initialize() { @@ -80,6 +80,11 @@ StatusCode FTK_VertexFinderTool::initialize() { StatusCode sc = AlgTool::initialize(); MsgStream athenaLog(msgSvc(), name()); + if ( m_VertexEdmFactory.retrieve().isFailure() ) { + ATH_MSG_ERROR("Failed to retrievel tool " << m_VertexEdmFactory); + return StatusCode::FAILURE; + } + athenaLog << MSG::DEBUG << "FTK_VertexFinderTool initialized "<< endreq; return sc; } @@ -89,14 +94,14 @@ StatusCode FTK_VertexFinderTool::finalize() { return sc; } -VxContainer* FTK_VertexFinderTool::findVertex(const FTK_RawTrackContainer* trks) +xAOD::VertexContainer* FTK_VertexFinderTool::findVertex(const FTK_RawTrackContainer* trks) { vector<MyTrack> mytrk; mytrk=getTracks(trks); return findVertex(mytrk); } -VxContainer* FTK_VertexFinderTool::findVertex(const TrackCollection* trks) +xAOD::VertexContainer* FTK_VertexFinderTool::findVertex(const TrackCollection* trks) { vector<MyTrack> mytrk; mytrk=getTracks(trks); @@ -105,7 +110,7 @@ VxContainer* FTK_VertexFinderTool::findVertex(const TrackCollection* trks) // // Covariance Matrix if there is a BLayer Hit // -VxContainer* FTK_VertexFinderTool::findVertex(vector<MyTrack> mytrk) +xAOD::VertexContainer* FTK_VertexFinderTool::findVertex(vector<MyTrack> mytrk) { MsgStream athenaLog(msgSvc(), name()); @@ -170,7 +175,7 @@ VxContainer* FTK_VertexFinderTool::findVertex(vector<MyTrack> mytrk) athenaLog << MSG::DEBUG << "FTK_VertexFinderTool:: fit VTX, using "<<vxtrk.size()<<" trks."<< endreq; for( vector<MyTrack>::iterator i=trkbegin ; i<trkend ;){ trknumber++; - + double tmpchi2 = chi2; athenaLog << MSG::VERBOSE << "getTracks: "<<trknumber<<", pt "<<(*i).m_pt<<", eta "<<(*i).m_theta<<", phi "<<(*i).m_phi<<", d0 "<<(*i).m_d0<<", z0 "<<(*i).m_z0<<", pt err "<<(*i).m_pterr<<", theta err "<<(*i).m_thetaerr<<", phi err "<< (*i).m_phierr<<", d0 err"<< (*i).m_d0err<<", z0 err "<<(*i).m_z0err<< endreq; //track parameter reading double xv,yv,zv,P0,phi0,theta0; @@ -186,7 +191,7 @@ VxContainer* FTK_VertexFinderTool::findVertex(vector<MyTrack> mytrk) double cosPhi0,sinPhi0,sinPsi,cosPsi; double psi,ctt,sint; - double alpha=0.02997*20.84/1000.0; + double alpha=0.02997*20.84;///1000.0; cosPhi0=cos(phi0);sinPhi0=sin(phi0); sinPsi=-alpha*(xv*cosPhi0+yv*sinPhi0)/P0; @@ -264,6 +269,7 @@ VxContainer* FTK_VertexFinderTool::findVertex(vector<MyTrack> mytrk) chi2=m_V[0][0]*m_resid[0]*m_resid[0]+m_V[1][1]*m_resid[1]*m_resid[1]+2.0*m_V[0][1]*m_resid[1]*m_resid[0]; if(chi2>m_chi2cut || chi2<0){ i=vxtrk.erase(i); + chi2 = tmpchi2; } else{ trkatvtx.push_back(*i); @@ -333,7 +339,13 @@ VxContainer* FTK_VertexFinderTool::findVertex(vector<MyTrack> mytrk) delete tracksAtVertex; }while(mytrk.size()>0);//vertex loop end athenaLog << MSG::VERBOSE << "debug line _326_ "<< myVtx->size()<< endreq; - return myVtx; + xAOD::VertexContainer *xAODContainer(0); + xAOD::VertexAuxContainer *xAODAuxContainer(0); + if (m_VertexEdmFactory->createXAODVertexContainer(*myVtx, xAODContainer, xAODAuxContainer) != StatusCode::SUCCESS) { + ATH_MSG_WARNING("Cannot convert output vertex container to xAOD. Returning null pointer."); + } + delete myVtx; + return xAODContainer; } @@ -351,7 +363,7 @@ vector<FTK_VertexFinderTool::MyTrack> FTK_VertexFinderTool::getTracks(const FTK_ float trk_phi = ftk_track->getPhi(); float trk_d0 = ftk_track->getD0(); float trk_z0 = ftk_track->getZ0(); - float trk_pt = fabs(1/invpt/1000); + float trk_pt = 1/invpt; /* double trk_phierr=sqrt(3.446e-7+29.24*invpt*invpt); double trk_thetaerr=sqrt(7.093e-6+38.4*invpt*invpt); double trk_pterr=1; @@ -359,7 +371,7 @@ vector<FTK_VertexFinderTool::MyTrack> FTK_VertexFinderTool::getTracks(const FTK_ double trk_z0err=sqrt(6.472e-2+1.587e5*invpt*invpt); */ double trk_d0err= sqrt(m_uncertaintyTool->getParamCovMtx(*ftk_track, m_hasIBL, FTKTrackParam::d0, FTKTrackParam::d0)); - double trk_z0err= sqrt(m_uncertaintyTool->getParamCovMtx(*ftk_track, m_hasIBL, FTKTrackParam::z0, FTKTrackParam::z0)); + double trk_z0err= sqrt(m_uncertaintyTool->getParamCovMtx(*ftk_track, m_hasIBL, FTKTrackParam::z0, FTKTrackParam::z0))*m_z0errfactor; double trk_phierr= sqrt(m_uncertaintyTool->getParamCovMtx(*ftk_track, m_hasIBL, FTKTrackParam::phi, FTKTrackParam::phi)); double trk_thetaerr= sqrt(m_uncertaintyTool->getParamCovMtx(*ftk_track, m_hasIBL, FTKTrackParam::theta, FTKTrackParam::theta)); double trk_pterr= sqrt(m_uncertaintyTool->getParamCovMtx(*ftk_track, m_hasIBL, FTKTrackParam::pt, FTKTrackParam::pt)); @@ -388,12 +400,12 @@ vector<FTK_VertexFinderTool::MyTrack> FTK_VertexFinderTool::getTracks(const Trac float trk_d0 = (*track_it)->perigeeParameters()->parameters()[Trk::d0]; float trk_z0 = (*track_it)->perigeeParameters()->parameters()[Trk::z0]; float trk_pt = fabs(1/qOverp/1000/sin(trk_theta)); - float invpt = 1/2/(trk_pt*1000); + float invpt = 1/(trk_pt*1000); double trk_phierr=sqrt(3.446e-7+29.24*invpt*invpt); double trk_thetaerr=sqrt(7.093e-6+38.4*invpt*invpt); double trk_pterr=1; double trk_d0err=sqrt(1.662e-3+6.947e4*invpt*invpt); - double trk_z0err=sqrt(6.472e-2+1.587e5*invpt*invpt); + double trk_z0err=sqrt(6.472e-2+1.587e5*invpt*invpt)*m_z0errfactor; /* double trk_d0err=(*track_it)->measuredPerigee()->localErrorMatrix().error(Trk::d0); double trk_z0err=(*track_it)->measuredPerigee()->localErrorMatrix().error(Trk::z0); -- GitLab