From 84676e1c3055e7a45101ecffd2366d797771f11a Mon Sep 17 00:00:00 2001 From: Federico Meloni Date: Tue, 16 Jul 2024 15:09:30 +0200 Subject: [PATCH 1/8] added selection on number of holes on track --- source/Utils/include/FilterTracks.h | 3 +++ source/Utils/src/FilterTracks.cc | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/source/Utils/include/FilterTracks.h b/source/Utils/include/FilterTracks.h index 3e5cfc9..6879c94 100644 --- a/source/Utils/include/FilterTracks.h +++ b/source/Utils/include/FilterTracks.h @@ -71,6 +71,9 @@ class FilterTracks : public marlin::Processor //! Cut off for number of hits in outer tracker (barrel and endcap combined) int _NHitsOuter = 1; + //! Cut off for maximum number of holes on track + int _MaxHoles = 0; + //! Cut off for momentum (GeV) float _MinPt = 1.0; //units GeV diff --git a/source/Utils/src/FilterTracks.cc b/source/Utils/src/FilterTracks.cc index 4e28536..86f917e 100644 --- a/source/Utils/src/FilterTracks.cc +++ b/source/Utils/src/FilterTracks.cc @@ -49,6 +49,12 @@ FilterTracks::FilterTracks() _NHitsOuter ); + registerProcessorParameter("MaxHoles", + "Maximum number of holes on track", + _MaxHoles, + _MaxHoles + ); + registerProcessorParameter("MinPt", "Minimum transverse momentum", _MinPt, @@ -132,6 +138,8 @@ void FilterTracks::processEvent( LCEvent * evt ) float chi2spatial = trk->getChi2(); + int nholes = trk->getNholes(); + if(_BarrelOnly == true) { bool endcaphits = false; for(int j=0; j _NHitsInner && nhitouter > _NHitsOuter && pt > _MinPt && - chi2spatial > _Chi2Spatial) + chi2spatial > _Chi2Spatial && + nholes <= _MaxHoles) { OutputTrackCollection->addElement(trk); } } } From e44c841265d495d4aabec2a59a6c12ab1c232e4c Mon Sep 17 00:00:00 2001 From: Federico Meloni Date: Tue, 16 Jul 2024 15:16:31 +0200 Subject: [PATCH 2/8] added selection on existence of extrapolation at calorimeter --- source/Utils/include/FilterTracks.h | 1 + source/Utils/src/FilterTracks.cc | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/source/Utils/include/FilterTracks.h b/source/Utils/include/FilterTracks.h index 6879c94..92e2950 100644 --- a/source/Utils/include/FilterTracks.h +++ b/source/Utils/include/FilterTracks.h @@ -61,6 +61,7 @@ class FilterTracks : public marlin::Processor std::string _OutputTrackCollection {}; bool _BarrelOnly = false; + bool _HasCaloState = false; //! Cut off for total number of hits int _NHitsTotal = 7; diff --git a/source/Utils/src/FilterTracks.cc b/source/Utils/src/FilterTracks.cc index 86f917e..442867e 100644 --- a/source/Utils/src/FilterTracks.cc +++ b/source/Utils/src/FilterTracks.cc @@ -25,6 +25,12 @@ FilterTracks::FilterTracks() _BarrelOnly ); + registerProcessorParameter("HasCaloState", + "If true, just keep tracks that have a TrackState at the Calorimeter surface", + _HasCaloState, + _HasCaloState + ); + registerProcessorParameter("NHitsTotal", "Minimum number of hits on track", _NHitsTotal, @@ -140,6 +146,17 @@ void FilterTracks::processEvent( LCEvent * evt ) int nholes = trk->getNholes(); + bool foundCaloState = false; + // Check if a TrackState at the calo surface exists + const std::vector& trackStates = trk->getTrackStates(); + for (const auto& state : trackStates) { + if (state->getLocation() == EVENT::TrackState::AtCalorimeter) { + foundCaloState = true; + break; + } + } + if (_HasCaloState && !foundCaloState) { continue; } + if(_BarrelOnly == true) { bool endcaphits = false; for(int j=0; j Date: Wed, 27 Nov 2024 13:16:38 +0100 Subject: [PATCH 3/8] Update source/Utils/src/FilterTracks.cc Co-authored-by: Thomas Madlener --- source/Utils/src/FilterTracks.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/source/Utils/src/FilterTracks.cc b/source/Utils/src/FilterTracks.cc index 442867e..066ef0f 100644 --- a/source/Utils/src/FilterTracks.cc +++ b/source/Utils/src/FilterTracks.cc @@ -149,12 +149,9 @@ void FilterTracks::processEvent( LCEvent * evt ) bool foundCaloState = false; // Check if a TrackState at the calo surface exists const std::vector& trackStates = trk->getTrackStates(); - for (const auto& state : trackStates) { - if (state->getLocation() == EVENT::TrackState::AtCalorimeter) { - foundCaloState = true; - break; - } - } + const auto foundCaloState = std::find_if(trackStates.begin(), trackStates.end(), + [](const auto ts) { return ts->getLocation() == EVENT::TrackState::AtCalorimeter) + != trackStates.end(); if (_HasCaloState && !foundCaloState) { continue; } if(_BarrelOnly == true) { From 6c52d55d1a08affac86e870cf1ff06efbe97c236 Mon Sep 17 00:00:00 2001 From: Federico Meloni Date: Wed, 27 Nov 2024 13:21:26 +0100 Subject: [PATCH 4/8] fixes to formatting --- source/Utils/src/FilterTracks.cc | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/source/Utils/src/FilterTracks.cc b/source/Utils/src/FilterTracks.cc index 066ef0f..325e955 100644 --- a/source/Utils/src/FilterTracks.cc +++ b/source/Utils/src/FilterTracks.cc @@ -157,23 +157,25 @@ void FilterTracks::processEvent( LCEvent * evt ) if(_BarrelOnly == true) { bool endcaphits = false; for(int j=0; jgetTrackerHits()[j])["system"]; - if(systemID == 2 || systemID == 4 || systemID == 6) { - endcaphits = true; - break; - } + //Find what subdetector the hit is on + uint32_t systemID = decoder(trk->getTrackerHits()[j])["system"]; + if(systemID == 2 || systemID == 4 || systemID == 6) { + endcaphits = true; + break; + } } if(endcaphits == false) { OutputTrackCollection->addElement(trk); } } else { // track property cuts if(nhittotal > _NHitsTotal && - nhitvertex > _NHitsVertex && - nhitinner > _NHitsInner && - nhitouter > _NHitsOuter && - pt > _MinPt && - chi2spatial > _Chi2Spatial && - nholes <= _MaxHoles) - { OutputTrackCollection->addElement(trk); } + nhitvertex > _NHitsVertex && + nhitinner > _NHitsInner && + nhitouter > _NHitsOuter && + pt > _MinPt && + chi2spatial > _Chi2Spatial && + nholes <= _MaxHoles) + { + OutputTrackCollection->addElement(trk); + } } } From 9aad001f0066d6e126e02c901e86ea9f7241cbec Mon Sep 17 00:00:00 2001 From: Federico Meloni Date: Wed, 27 Nov 2024 13:43:44 +0100 Subject: [PATCH 5/8] Update source/Utils/src/FilterTracks.cc Co-authored-by: Thomas Madlener --- source/Utils/src/FilterTracks.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/source/Utils/src/FilterTracks.cc b/source/Utils/src/FilterTracks.cc index 325e955..7938c2d 100644 --- a/source/Utils/src/FilterTracks.cc +++ b/source/Utils/src/FilterTracks.cc @@ -146,7 +146,6 @@ void FilterTracks::processEvent( LCEvent * evt ) int nholes = trk->getNholes(); - bool foundCaloState = false; // Check if a TrackState at the calo surface exists const std::vector& trackStates = trk->getTrackStates(); const auto foundCaloState = std::find_if(trackStates.begin(), trackStates.end(), From 62f2f79be7efd726181a39481b62cb4a95f5f0e1 Mon Sep 17 00:00:00 2001 From: Federico Meloni Date: Wed, 27 Nov 2024 13:56:30 +0100 Subject: [PATCH 6/8] closing parenthesis --- source/Utils/src/FilterTracks.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/Utils/src/FilterTracks.cc b/source/Utils/src/FilterTracks.cc index 7938c2d..9cb9f49 100644 --- a/source/Utils/src/FilterTracks.cc +++ b/source/Utils/src/FilterTracks.cc @@ -149,8 +149,7 @@ void FilterTracks::processEvent( LCEvent * evt ) // Check if a TrackState at the calo surface exists const std::vector& trackStates = trk->getTrackStates(); const auto foundCaloState = std::find_if(trackStates.begin(), trackStates.end(), - [](const auto ts) { return ts->getLocation() == EVENT::TrackState::AtCalorimeter) - != trackStates.end(); + [](const auto ts) { return ts->getLocation() == EVENT::TrackState::AtCalorimeter}) != trackStates.end(); if (_HasCaloState && !foundCaloState) { continue; } if(_BarrelOnly == true) { From ab44fe81b9b1e261c2e5a5195a97cf598060c5d3 Mon Sep 17 00:00:00 2001 From: Federico Meloni Date: Wed, 27 Nov 2024 13:59:49 +0100 Subject: [PATCH 7/8] closing parenthesis --- source/Utils/src/FilterTracks.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/Utils/src/FilterTracks.cc b/source/Utils/src/FilterTracks.cc index 9cb9f49..4074751 100644 --- a/source/Utils/src/FilterTracks.cc +++ b/source/Utils/src/FilterTracks.cc @@ -149,7 +149,7 @@ void FilterTracks::processEvent( LCEvent * evt ) // Check if a TrackState at the calo surface exists const std::vector& trackStates = trk->getTrackStates(); const auto foundCaloState = std::find_if(trackStates.begin(), trackStates.end(), - [](const auto ts) { return ts->getLocation() == EVENT::TrackState::AtCalorimeter}) != trackStates.end(); + [](const auto ts) { return ts->getLocation() == EVENT::TrackState::AtCalorimeter; }) != trackStates.end(); if (_HasCaloState && !foundCaloState) { continue; } if(_BarrelOnly == true) { From 9f5e07b51db13ace37aaf9630a3dce4fa9e00af6 Mon Sep 17 00:00:00 2001 From: Federico Meloni Date: Wed, 27 Nov 2024 14:01:24 +0100 Subject: [PATCH 8/8] getting rid of centos7 --- .github/workflows/key4hep.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/key4hep.yml b/.github/workflows/key4hep.yml index 738aec6..46e7265 100644 --- a/.github/workflows/key4hep.yml +++ b/.github/workflows/key4hep.yml @@ -7,7 +7,7 @@ jobs: strategy: matrix: build_type: ["release", "nightly"] - image: ["alma9", "ubuntu22", "centos7"] + image: ["alma9", "ubuntu22"] fail-fast: false steps: