Skip to content
Snippets Groups Projects
Commit 7e97c429 authored by lintao@ihep.ac.cn's avatar lintao@ihep.ac.cn
Browse files

WIP: migrating KiTrack and its dependencies.

parent 17a9aa96
No related branches found
No related tags found
No related merge requests found
gaudi_subdir(TrackSystemSvc v0r0)
# gaudi_subdir(TrackSystemSvc v0r0)
find_package(CLHEP REQUIRED;CONFIG)
find_package(ROOT 6.14 REQUIRED COMPONENTS Matrix Physics)
......@@ -9,26 +9,32 @@ find_package(EDM4HEP REQUIRED)
#find_package(KalDet REQUIRED)
find_package(DD4hep COMPONENTS DDCore DDRec REQUIRED)
gaudi_depends_on_subdirs(Service/GearSvc Detector/DetInterface Utilities/DataHelper Utilities/KalTest Utilities/KalDet)
# gaudi_depends_on_subdirs(Service/GearSvc Detector/DetInterface Utilities/DataHelper Utilities/KalTest Utilities/KalDet)
set(TrackSystemSvc_srcs src/*.cpp)
set(TrackSystemSvcLib_srcs src/*.cc)
gaudi_install_headers(TrackSystemSvc)
# gaudi_install_headers(TrackSystemSvc)
#message( "${INCLUDE_DIRS}" )
#message( "${LINK_LIBRARIES}" )
gaudi_add_library(TrackSystemSvcLib ${TrackSystemSvcLib_srcs}
PUBLIC_HEADERS TrackSystemSvc
INCLUDE_DIRS GaudiKernel ROOT ${CLHEP_INCLUDE_DIR} gear ${LCIO_INCLUDE_DIRS} ${EDM4HEP_INCLUDE_DIRS}
LINK_LIBRARIES DataHelperLib KalTestLib KalDetLib GaudiKernel ROOT ${CLHEP_LIBRARIES} ${GEAR_LIBRARIES} ${LCIO_LIBRARIES}
-Wl,--no-as-needed
EDM4HEP::edm4hep EDM4HEP::edm4hepDict
-Wl,--as-needed
gaudi_add_library(TrackSystemSvcLib
SOURCES ${TrackSystemSvcLib_srcs}
LINK DataHelperLib
KalTestLib
KalDetLib
Gaudi::GaudiKernel
${ROOT_LIBRARIES}
${CLHEP_LIBRARIES}
${GEAR_LIBRARIES}
${LCIO_LIBRARIES}
EDM4HEP::edm4hep EDM4HEP::edm4hepDict
)
gaudi_add_module(TrackSystemSvc ${TrackSystemSvc_srcs}
INCLUDE_DIRS GaudiKernel gear
LINK_LIBRARIES TrackSystemSvcLib GaudiKernel ${GEAR_LIBRARIES}
gaudi_add_module(TrackSystemSvc
SOURCES ${TrackSystemSvc_srcs}
LINK TrackSystemSvcLib
Gaudi::GaudiKernel
${GEAR_LIBRARIES}
)
gaudi_subdir(KiTrack v0r0)
find_package(CLHEP REQUIRED;CONFIG)
find_package(ROOT REQUIRED)
......@@ -8,15 +7,72 @@ find_package(EDM4HEP REQUIRED)
find_package(LCIO REQUIRED)
find_package(DD4hep COMPONENTS DDCore DDRec REQUIRED)
gaudi_depends_on_subdirs(Service/TrackSystemSvc Utilities/DataHelper)
# gaudi_depends_on_subdirs(Service/TrackSystemSvc Utilities/DataHelper)
set(KiTrackLib_srcs src/KiTrack/*.cc src/Criteria/*.cc src/ILDImpl/*.cc src/Tools/*.cc)
set(KiTrackLib_srcs
src/KiTrack/Automaton.cc
src/KiTrack/HopfieldNeuralNet.cc
src/KiTrack/IHit.cc
src/KiTrack/SegmentBuilder.cc
src/KiTrack/Segment.cc
#gaudi_install_headers(src)
include_directories(src)
src/Criteria/Crit2_DeltaPhi.cc
src/Criteria/Crit2_DeltaPhi_MV.cc
src/Criteria/Crit2_DeltaRho.cc
src/Criteria/Crit2_DeltaTheta_MV.cc
src/Criteria/Crit2_Distance_MV.cc
src/Criteria/Crit2_HelixWithIP.cc
src/Criteria/Crit2_RZRatio.cc
src/Criteria/Crit2_StraightTrackRatio.cc
src/Criteria/Crit3_2DAngle.cc
src/Criteria/Crit3_2DAngleTimesR.cc
src/Criteria/Crit3_3DAngle.cc
src/Criteria/Crit3_3DAngleTimesR.cc
src/Criteria/Crit3_ChangeRZRatio.cc
src/Criteria/Crit3_IPCircleDist.cc
src/Criteria/Crit3_IPCircleDistTimesR.cc
src/Criteria/Crit3_NoZigZag_MV.cc
src/Criteria/Crit3_PT.cc
src/Criteria/Crit3_PT_MV.cc
src/Criteria/Crit4_2DAngleChange.cc
src/Criteria/Crit4_3DAngleChange.cc
src/Criteria/Crit4_3DAngleChangeNormed.cc
src/Criteria/Crit4_DistOfCircleCenters.cc
src/Criteria/Crit4_DistToExtrapolation.cc
src/Criteria/Crit4_NoZigZag.cc
src/Criteria/Crit4_PhiZRatioChange.cc
src/Criteria/Crit4_RChange.cc
src/Criteria/Criteria.cc
src/Criteria/SimpleCircle.cc
gaudi_add_library(KiTrackLib ${KiTrackLib_srcs}
PUBLIC_HEADERS KiTrack
LINK_LIBRARIES DataHelperLib TrackSystemSvcLib ROOT ${CLHEP_LIBRARIES} GSL EDM4HEP::edm4hep LCIO
# DD4hep
src/ILDImpl/FTDHit01.cc
src/ILDImpl/FTDHitSimple.cc
src/ILDImpl/FTDNeighborPetalSecCon.cc
src/ILDImpl/FTDSectorConnector.cc
src/ILDImpl/FTDTrack.cc
src/ILDImpl/MiniVector.cc
src/ILDImpl/MiniVectorHit01.cc
src/ILDImpl/SectorSystemFTD.cc
src/ILDImpl/SectorSystemVXD.cc
src/ILDImpl/VXDHit01.cc
src/ILDImpl/VXDHitSimple.cc
src/ILDImpl/VXDSectorConnector.cc
src/ILDImpl/VXDTrack.cc
src/Tools/Fitter.cc
src/Tools/FTDHelixFitter.cc
src/Tools/KiTrackMarlinTools.cc
src/Tools/Timer.cc
)
gaudi_add_library(KiTrackLib
SOURCES ${KiTrackLib_srcs}
LINK DataHelperLib
TrackSystemSvcLib
${ROOT_LIBRARIES}
${CLHEP_LIBRARIES}
${GSL_LIBRARIES}
EDM4HEP::edm4hep
${LCIO_LIBRARIES}
)
#include "ILDImpl/FTDTrack.h"
#include <algorithm>
#include <math.h>
//#include "UTIL/LCTrackerConf.h"
// Root, for calculating the chi2 probability.
#include "Math/ProbFunc.h"
using namespace KiTrackMarlin;
/** @return if the absolute z value of hit a is bigger than that of hit b */
bool compare_IHit_z( IHit* a, IHit* b ){
return ( fabs( a->getZ() ) < fabs( b->getZ() ) ); //compare their z values
}
FTDTrack::FTDTrack( MarlinTrk::IMarlinTrkSystem* trkSystem ){
_trkSystem = trkSystem;
_chi2Prob = 0.;
_lcioTrack = new edm4hep::Track();
}
FTDTrack::FTDTrack( std::vector< IFTDHit* > hits , MarlinTrk::IMarlinTrkSystem* trkSystem ){
_trkSystem = trkSystem;
_chi2Prob = 0.;
_lcioTrack = new edm4hep::Track();
for( unsigned i=0; i < hits.size(); i++ ){
addHit( hits[i] );
}
}
FTDTrack::FTDTrack( const FTDTrack& f ){
//make a new copied lcio track
_lcioTrack = new edm4hep::Track( *f._lcioTrack );
_hits = f._hits;
_chi2Prob = f._chi2Prob;
_trkSystem = f._trkSystem;
}
FTDTrack & FTDTrack::operator= (const FTDTrack & f){
if (this == &f) return *this; //protect against self assignment
//make a new copied lcio track
_lcioTrack = new edm4hep::Track( *f._lcioTrack );
_hits = f._hits;
_chi2Prob = f._chi2Prob;
_trkSystem = f._trkSystem;
return *this;
}
void FTDTrack::addHit( IFTDHit* hit ){
if ( hit != NULL ){
_hits.push_back( hit );
// and sort the track again
sort( _hits.begin(), _hits.end(), compare_IHit_z );
_lcioTrack->addToTrackerHits( *hit->getTrackerHit() );
}
}
void FTDTrack::fit() {
Fitter fitter( _lcioTrack , _trkSystem );
_lcioTrack->setChi2( fitter.getChi2( 1/*by fucd AtIP=1 in LCIO, changed to CepC rule in future: lcio::TrackState::AtIP*/ ) );
_lcioTrack->setNdf( fitter.getNdf( 1/*lcio::TrackState::AtIP*/ ) );
_chi2Prob = fitter.getChi2Prob( 1/*lcio::TrackState::AtIP*/ );
edm4hep::TrackState trkState( *fitter.getTrackState( 1/*lcio::TrackState::AtIP*/ ) ) ;
trkState.location = 1/*lcio::TrackState::AtIP*/ ;
_lcioTrack->addToTrackStates( trkState );
}
double FTDTrack::getQI() const{
double QI = _chi2Prob;
// make sure QI is between 0 and 1
if (QI > 1. ) QI = 1.;
if (QI < 0. ) QI = 0.;
return QI;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment