From 00db9e0ba41f0395c48f823c62f9e34b73e3b524 Mon Sep 17 00:00:00 2001 From: Tobias Boeckh <boeckh.tobias@gmail.com> Date: Thu, 14 Sep 2023 11:31:43 +0200 Subject: [PATCH] Add bitset showing which layers have a hit on track, module row, and module column to NtupleDumperAlg --- .../NtupleDumper/src/NtupleDumperAlg.cxx | 16 ++++++++++++++++ .../NtupleDumper/src/NtupleDumperAlg.h | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index 1fc059dc..30d9ac17 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -225,6 +225,9 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("longTracks", &m_longTracks, "longTracks/I"); m_tree->Branch("Track_Chi2", &m_Chi2); m_tree->Branch("Track_nDoF", &m_DoF); + m_tree->Branch("Track_eta", &m_eta); + m_tree->Branch("Track_hitSet", &m_hitSet); + m_tree->Branch("Track_phi", &m_phi); m_tree->Branch("Track_x0", &m_xup); m_tree->Branch("Track_y0", &m_yup); m_tree->Branch("Track_z0", &m_zup); @@ -912,16 +915,20 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const std::set<std::pair<int, int>> layerMap; std::set<int> stationMap; // Check for hit in the three downstream stations + HitSet hitSet {24}; for (auto measurement : *(track->measurementsOnTrack())) { const Tracker::FaserSCT_ClusterOnTrack* cluster = dynamic_cast<const Tracker::FaserSCT_ClusterOnTrack*>(measurement); if (cluster != nullptr) { Identifier id = cluster->identify(); int station = m_sctHelper->station(id); int layer = m_sctHelper->layer(id); + int side = m_sctHelper->side(id); stationMap.emplace(station); layerMap.emplace(station, layer); + hitSet.set(23 - (station * 6 + layer * 2 + side)); } } + m_hitSet.push_back(hitSet.to_ulong()); if (stationMap.count(1) == 0 || stationMap.count(2) == 0 || stationMap.count(3) == 0) continue; const Trk::TrackParameters* upstreamParameters = track->trackParameters()->front(); @@ -933,6 +940,12 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_Chi2.push_back(track->fitQuality()->chiSquared()); m_DoF.push_back(track->fitQuality()->numberDoF()); + const Trk::MeasurementBase *measurement = track->measurementsOnTrack()->front(); + const Tracker::FaserSCT_ClusterOnTrack* cluster = + dynamic_cast<const Tracker::FaserSCT_ClusterOnTrack*>(measurement); + Identifier id = cluster->identify(); + m_eta.push_back(m_sctHelper->eta_module(id)); + m_phi.push_back(m_sctHelper->phi_module(id)); m_nHit0.push_back(stationMap.count(0)); m_nHit1.push_back(stationMap.count(1)); @@ -1418,6 +1431,9 @@ NtupleDumperAlg::clearTree() const m_Chi2.clear(); m_DoF.clear(); + m_eta.clear(); + m_phi.clear(); + m_hitSet.clear(); m_charge.clear(); m_nLayers.clear(); m_longTracks = 0; diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h index 475378c1..5a75b0bb 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h @@ -24,10 +24,13 @@ #include "xAODEventInfo/EventInfo.h" #include "StoreGate/ReadDecorHandle.h" #include "FaserActsVertexing/IVertexingTool.h" +#include <boost/dynamic_bitset.hpp> #include <vector> #include <nlohmann/json.hpp> +using HitSet = boost::dynamic_bitset<>; + class TTree; class TH1; class FaserSCT_ID; @@ -225,6 +228,9 @@ private: mutable int m_longTracks; mutable int m_propagationError; + mutable std::vector<int> m_eta; + mutable std::vector<int> m_phi; + mutable std::vector<unsigned long> m_hitSet; mutable std::vector<double> m_Chi2; mutable std::vector<double> m_DoF; mutable std::vector<double> m_xup; -- GitLab