ATLAS Offline Software
Loading...
Searching...
No Matches
TileMuToNtuple.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5//*****************************************************************************
6// Filename : TileMuToNtuple.cxx
7//*****************************************************************************
8
9//Tile includes
11
12// Athena incldues
14
15//Gaudi Includes
16#include "GaudiKernel/Bootstrap.h"
17#include "GaudiKernel/INTupleSvc.h"
18#include "GaudiKernel/NTuple.h"
19#include "GaudiKernel/IDataProviderSvc.h"
20#include "GaudiKernel/SmartDataPtr.h"
21
22
23// Constructor & deconstructor
24TileMuToNtuple::TileMuToNtuple(const std::string& name, ISvcLocator* pSvcLocator)
25 : AthAlgorithm(name, pSvcLocator)
26 , m_ntuplePtr(0)
27 , m_ntupleID(100)
28 , m_maxNtag(50)
29 , m_close(1)
30 , m_ntupleLoc("/FILE1/TileMuTag")
31 , m_tileMuContainer("TileMuObj")
32{
33
34 declareProperty("NTupleLoc", m_ntupleLoc);
35 declareProperty("NTupleID", m_ntupleID);
36 declareProperty("MaxNtag", m_maxNtag);
37 declareProperty("CloseNtuple", m_close);
38}
39
42
43// Alg standard interface function
45
46 m_ntupleLoc = "/NTUPLES/FILE1/TileMuTag";
47 // + m_ntupleLoc;
48
49 SmartDataPtr<NTuple::Directory> DirPtr(ntupleSvc(), m_ntupleLoc);
50 if (!DirPtr) DirPtr = ntupleSvc()->createDirectory(m_ntupleLoc);
51 if (!DirPtr) {
52 ATH_MSG_ERROR( "Invalid Ntuple Directory: " << m_ntupleLoc );
53 return StatusCode::FAILURE;
54 }
55
56 m_ntuplePtr = ntupleSvc()->book(DirPtr.ptr(), m_ntupleID, CLID_ColumnWiseTuple,
57 "TileMuTag-Ntuple");
58 if (!m_ntuplePtr) {
59 ATH_MSG_ERROR( "Failed to book ntuple: TileMuTagNtuple" );
60 return StatusCode::FAILURE;
61 }
62
63 CHECK( m_ntuplePtr->addItem("TileMu/ntag", m_ntag, 0, m_maxNtag) );
64 CHECK( m_ntuplePtr->addItem("TileMu/etatag", m_ntag, m_eta, -1.5, 1.5) );
65 CHECK( m_ntuplePtr->addItem("TileMu/phitag", m_ntag, m_phi, 0., 6.3) );
66 CHECK( m_ntuplePtr->addItem("TileMu/energydepVec", m_ntag, m_energy, 4) );
67 CHECK( m_ntuplePtr->addItem("TileMu/quality", m_ntag, m_quality, 0., 1.) );
68
69 ATH_CHECK( m_muContainerKey.initialize() );
70
71 ATH_MSG_INFO( "initialisation completed" );
72
73 return StatusCode::SUCCESS;
74}
75
77
78 // step1: read from TDS
80 ATH_CHECK( muContainer.isValid() );
81
82 m_ntag = 0;
83
84 for (const TileMu* mu : *muContainer) {
85
86 m_eta[m_ntag] = mu->eta();
87
88 m_energy[m_ntag][0] = (mu->enedep())[0];
89 m_energy[m_ntag][1] = (mu->enedep())[1];
90 m_energy[m_ntag][2] = (mu->enedep())[2];
91 m_energy[m_ntag][3] = (mu->enedep())[3];
92 m_phi[m_ntag] = mu->phi();
93 m_quality[m_ntag] = mu->quality();
94 m_ntag++;
95
96 if (m_ntag >= m_maxNtag) break;
97 }
98
99 // write ntuple (is useful to keep it open to write also MC truth)
100 if (m_close == 1) {
101 CHECK( ntupleSvc()->writeRecord(m_ntuplePtr) );
102 }
103
104 // Execution completed.
105 ATH_MSG_DEBUG( "execute() completed successfully" );
106
107 return StatusCode::SUCCESS;
108}
109
111 ATH_MSG_INFO( "finalize() successfully" );
112
113 return StatusCode::SUCCESS;
114}
115
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
#define CHECK(...)
Evaluate an expression and check for errors.
INTupleSvc * ntupleSvc()
Handle class for reading from StoreGate.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
virtual bool isValid() override final
Can the handle be successfully dereferenced?
std::string m_ntupleLoc
NTuple::Tuple * m_ntuplePtr
NTuple::Item< int > m_ntag
StatusCode finalize()
NTuple::Array< float > m_phi
NTuple::Array< float > m_quality
SG::ReadHandleKey< TileMuContainer > m_muContainerKey
TileMuToNtuple(const std::string &name, ISvcLocator *pSvcLocator)
virtual ~TileMuToNtuple()
StatusCode execute()
std::string m_tileMuContainer
NTuple::Array< float > m_eta
NTuple::Matrix< float > m_energy
StatusCode initialize()
Class to store TileMuId quantities.
Definition TileMu.h:25