From b140a9b8987cb2b58c7d6938eb8d5673e71f8bf5 Mon Sep 17 00:00:00 2001 From: lintao <lintao51@gmail.com> Date: Sat, 22 Aug 2020 23:39:29 +0800 Subject: [PATCH] WIP: use ntuplesvc to store the id. --- Examples/src/DumpIDAlg/DumpIDAlg.cpp | 60 ++++++++++++++++++++-------- Examples/src/DumpIDAlg/DumpIDAlg.h | 14 +++++++ 2 files changed, 58 insertions(+), 16 deletions(-) diff --git a/Examples/src/DumpIDAlg/DumpIDAlg.cpp b/Examples/src/DumpIDAlg/DumpIDAlg.cpp index 3d99477f..1ae59e33 100644 --- a/Examples/src/DumpIDAlg/DumpIDAlg.cpp +++ b/Examples/src/DumpIDAlg/DumpIDAlg.cpp @@ -37,6 +37,29 @@ StatusCode DumpIDAlg::initialize() return StatusCode::FAILURE; } + // Book N-tuple 1 + NTuplePtr nt1( ntupleSvc(), "MyTuples/1" ); + if ( nt1 ) { + m_tuple_id = nt1; + } else { + m_tuple_id = ntupleSvc()->book( "MyTuples/1", CLID_RowWiseTuple, "Row-wise N-Tuple example" ); + if ( m_tuple_id ) { + m_tuple_id->addItem( "system", m_id_system ).ignore(); + m_tuple_id->addItem( "module", m_id_module ).ignore(); + m_tuple_id->addItem( "stave", m_id_stave ).ignore(); + m_tuple_id->addItem( "tower", m_id_tower ).ignore(); + m_tuple_id->addItem( "layer", m_id_layer ).ignore(); + m_tuple_id->addItem( "wafer", m_id_wafer ).ignore(); + m_tuple_id->addItem( "cellX", m_id_cellX ).ignore(); + m_tuple_id->addItem( "cellY", m_id_cellY ).ignore(); + + } else { // did not manage to book the N tuple.... + error() << " Cannot book N-tuple:" << long( m_tuple_id ) << endmsg; + return StatusCode::FAILURE; + } + } + + return GaudiAlgorithm::initialize(); } @@ -48,25 +71,30 @@ StatusCode DumpIDAlg::execute() for (auto calohit: *ecalBarrelCol) { auto cellid = calohit.getCellID(); - int id_system = m_decoder->get(cellid, "system"); - int id_module = m_decoder->get(cellid, "module"); - int id_stave = m_decoder->get(cellid, "stave"); - int id_tower = m_decoder->get(cellid, "tower"); - int id_layer = m_decoder->get(cellid, "layer"); - int id_wafer = m_decoder->get(cellid, "wafer"); - int id_cellX = m_decoder->get(cellid, "cellX"); - int id_cellY = m_decoder->get(cellid, "cellY"); + m_id_system = m_decoder->get(cellid, "system"); + m_id_module = m_decoder->get(cellid, "module"); + m_id_stave = m_decoder->get(cellid, "stave"); + m_id_tower = m_decoder->get(cellid, "tower"); + m_id_layer = m_decoder->get(cellid, "layer"); + m_id_wafer = m_decoder->get(cellid, "wafer"); + m_id_cellX = m_decoder->get(cellid, "cellX"); + m_id_cellY = m_decoder->get(cellid, "cellY"); info() << "Calo hit cellid: " << cellid - << " system: " << id_system - << " module: " << id_module - << " stave: " << id_stave - << " tower: " << id_tower - << " layer: " << id_layer - << " wafer: " << id_wafer - << " cellX: " << id_cellX - << " cellY: " << id_cellY + << " system: " << m_id_system + << " module: " << m_id_module + << " stave: " << m_id_stave + << " tower: " << m_id_tower + << " layer: " << m_id_layer + << " wafer: " << m_id_wafer + << " cellX: " << m_id_cellX + << " cellY: " << m_id_cellY << endmsg; + + // calculate I/J/K + + m_tuple_id->write(); + } return StatusCode::SUCCESS; } diff --git a/Examples/src/DumpIDAlg/DumpIDAlg.h b/Examples/src/DumpIDAlg/DumpIDAlg.h index 04277437..20bb9469 100644 --- a/Examples/src/DumpIDAlg/DumpIDAlg.h +++ b/Examples/src/DumpIDAlg/DumpIDAlg.h @@ -3,6 +3,7 @@ #include "FWCore/DataHandle.h" #include "GaudiAlg/GaudiAlgorithm.h" +#include "GaudiKernel/NTuple.h" #include "DetInterface/IGeoSvc.h" @@ -33,6 +34,19 @@ private: DataHandle<edm4hep::SimCalorimeterHitCollection> m_EcalBarrelCol{"EcalBarrelCollection", Gaudi::DataHandle::Reader, this}; +private: + // strore all the id for later analysis + NTuple::Tuple* m_tuple_id = nullptr; + + NTuple::Item<int> m_id_system; + NTuple::Item<int> m_id_module; + NTuple::Item<int> m_id_stave; + NTuple::Item<int> m_id_tower; + NTuple::Item<int> m_id_layer; + NTuple::Item<int> m_id_wafer; + NTuple::Item<int> m_id_cellX; + NTuple::Item<int> m_id_cellY; + }; -- GitLab