ATLAS Offline Software
Loading...
Searching...
No Matches
CBNT_CaloH6.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5//#####################################################
6//# #
7//# File : CBNT_Calo_H6.cxx #
8//# Package: TBRec #
9//# #
10//# Author : Marco Bieri <mbieri@sfu.ca> #
11//# Adopted for CBNTAA Pavol Strizenec #
12//# #
13//#####################################################
14
15#include "CBNT_CaloH6.h"
16
20
21#include "Identifier/Identifier.h"
22
23
24CBNT_CaloH6::CBNT_CaloH6(const std::string & name, ISvcLocator * pSvcLocator) :
25 CBNT_TBRecBase(name, pSvcLocator),
27 m_hecID_help(0),
29{
30 declareProperty("Det_Type", m_det_type);
31 declareProperty("Max_Chan", m_numchan);
32 m_noiseSigma = 0;
33
34 m_NoiseRMS = 0;
35 m_energy = 0;
36 m_eta = 0;
37 m_ieta = 0;
38 m_iphi = 0;
39 m_phi = 0;
40 m_region = 0;
41 m_sampling = 0;
42}
43
45
47{ //initialize
48 ATH_MSG_DEBUG( "initialize()" );
49
50 m_hecID_help = NULL;
51 m_emecID_help = NULL;
52 m_fcalID_help = NULL;
53
54 // Identifier helpers
55 const CaloCell_ID* idHelper = nullptr;
56 ATH_CHECK( detStore()->retrieve (idHelper, "CaloCell_ID") );
57 m_hecID_help = idHelper->hec_idHelper();
58 if (!m_hecID_help) {
59 ATH_MSG_ERROR ( "unable to obtain hec id " );
60 return StatusCode::FAILURE;
61 }
62
63 m_emecID_help = idHelper->em_idHelper();
64 if (!m_emecID_help) {
65 ATH_MSG_ERROR ( "unable to obtain emec id " );
66 return StatusCode::FAILURE;
67 }
68
69 m_fcalID_help = idHelper->fcal_idHelper();
70 if (!m_fcalID_help) {
71 ATH_MSG_ERROR ( "unable to obtain fcal id " );
72 return StatusCode::FAILURE;
73 }
74
75 ATH_MSG_DEBUG("Got to before p_toolSvc");
76
77 ATH_CHECK( m_elecNoiseKey.initialize() );
78
79 ATH_MSG_DEBUG ( "Before Booking Ntuple" );
80
81 //hec, 241 channels
82 //emec, 113 channels
83 //fcal, 347 channels
84
85 addBranch(m_det_type+"_energy",m_energy);
86 addBranch(m_det_type+"_noiseRMS",m_NoiseRMS);
91 addBranch(m_det_type+"_sampling",m_sampling);
92
93 if(m_det_type=="HEC") {
94 addBranch(m_det_type+"_region",m_region);
95 } else m_region = 0;
96
97 return StatusCode::SUCCESS;
98
99} //initialize
100
101/*-----------------------------------Execute-----------------------------*/
102
104{ //execute
105 ATH_MSG_DEBUG ( "execute()");
106
107 //Accesing the CaloCellContainer
108 const CaloCellContainer* cellContainer;
109
110 ATH_CHECK( evtStore()->retrieve(cellContainer) );
111
113
114 for (const CaloCell* cell_ptr : *cellContainer) {
115
116 //obtaining dde pointer
117 const CaloDetDescrElement* caloDDE_ptr = cell_ptr->caloDDE();
118
119 //obtaining SubCalo
120 const CaloCell_ID::SUBCALO subcalo = caloDDE_ptr->getSubCalo();
121
122 //obtaining sampling (layer)
123 const CaloCell_ID::CaloSample sampling = caloDDE_ptr->getSampling();
124 if (m_det_type=="HEC" && subcalo==CaloCell_ID::LARHEC) {
125
126 const Identifier hecid=cell_ptr->ID();
127
128 float noise = elecNoise->getNoise(hecid, cell_ptr->gain());
129 ATH_MSG_DEBUG("noiseRMS HEC"<<noise);
130
131 m_energy->push_back(cell_ptr->energy());
132 m_NoiseRMS->push_back(noise);
133 m_eta->push_back(caloDDE_ptr->eta());
134 m_phi->push_back(caloDDE_ptr->phi());
135 m_ieta->push_back(m_hecID_help->eta(hecid));
136 m_iphi->push_back(m_hecID_help->phi(hecid));
137 m_sampling->push_back(sampling);
138 m_region->push_back(m_hecID_help->region(hecid));
139 }
140
141 if (m_det_type=="EMEC" && subcalo==CaloCell_ID::LAREM) {
142
143 const Identifier emecid=cell_ptr->ID();
144
145 float noise = elecNoise->getNoise(emecid, cell_ptr->gain());
146 ATH_MSG_DEBUG("noiseRMS EMEC"<<noise);
147
148 m_energy->push_back(cell_ptr->energy());
149 m_NoiseRMS->push_back(noise);
150 m_eta->push_back(caloDDE_ptr->eta());
151 m_phi->push_back(caloDDE_ptr->phi());
152 m_ieta->push_back(m_emecID_help->eta(emecid));
153 m_iphi->push_back(m_emecID_help->phi(emecid));
154 m_sampling->push_back(sampling);
155 }
156 if (m_det_type=="FCAL" && subcalo==CaloCell_ID::LARFCAL) {
157
158 const Identifier fcalid=cell_ptr->ID();
159
160 float noise = elecNoise->getNoise(fcalid, cell_ptr->gain());
161 ATH_MSG_DEBUG("noiseRMS FCAL"<<noise);
162
163 m_energy->push_back(cell_ptr->energy());
164 m_NoiseRMS->push_back(noise);
165 m_eta->push_back(caloDDE_ptr->eta());
166 m_phi->push_back(caloDDE_ptr->phi());
167 m_ieta->push_back(m_fcalID_help->eta(fcalid));
168 m_iphi->push_back(m_fcalID_help->phi(fcalid));
169 m_sampling->push_back(sampling);
170 }
171 }
172
173 return StatusCode::SUCCESS;
174
175} //execute
176
177/*-----------------------------------Finalize-----------------------------*/
178
180{ //finalize
181 ATH_MSG_INFO ( "finalize()" );
182 return StatusCode::SUCCESS;
183
184} //finalize
185
187{
188 if(m_energy) m_energy->clear();
189 if(m_NoiseRMS) m_NoiseRMS->clear();
190 if(m_eta) m_eta->clear();
191 if(m_phi) m_phi->clear();
192 if(m_ieta) m_ieta->clear();
193 if(m_iphi) m_iphi->clear();
194 if(m_sampling) m_sampling->clear();
195 if(m_region) m_region->clear();
196
197 return StatusCode::SUCCESS;
198}
#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)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
const ServiceHandle< StoreGateSvc > & detStore() const
std::vector< float > * m_energy
Definition CBNT_CaloH6.h:65
std::vector< float > * m_ieta
Definition CBNT_CaloH6.h:67
virtual ~CBNT_CaloH6()
const LArFCAL_ID * m_fcalID_help
Definition CBNT_CaloH6.h:52
CBNT_CaloH6(const std::string &name, ISvcLocator *pSvcLocator)
const LArHEC_ID * m_hecID_help
Definition CBNT_CaloH6.h:51
float m_noiseSigma
Definition CBNT_CaloH6.h:57
std::vector< float > * m_iphi
Definition CBNT_CaloH6.h:68
const LArEM_ID * m_emecID_help
Definition CBNT_CaloH6.h:50
std::vector< float > * m_region
Definition CBNT_CaloH6.h:72
virtual StatusCode CBNT_finalize() override
std::vector< float > * m_eta
Definition CBNT_CaloH6.h:69
SG::ReadCondHandleKey< CaloNoise > m_elecNoiseKey
Definition CBNT_CaloH6.h:55
std::vector< float > * m_phi
Definition CBNT_CaloH6.h:70
virtual StatusCode CBNT_execute() override
std::vector< float > * m_NoiseRMS
Definition CBNT_CaloH6.h:66
virtual StatusCode CBNT_clear() override
virtual StatusCode CBNT_initialize() override
std::vector< float > * m_sampling
Definition CBNT_CaloH6.h:71
std::string m_det_type
Definition CBNT_CaloH6.h:60
void addBranch(const std::string &branchname, T &obj, const std::string &leaflist)
CBNT_TBRecBase(const std::string &name, ISvcLocator *pSvcLocator)
Container class for CaloCell.
Helper class for offline cell identifiers.
Definition CaloCell_ID.h:34
const LArFCAL_ID * fcal_idHelper() const
access to FCAL idHelper
Definition CaloCell_ID.h:75
CaloCell_Base_ID::SUBCALO SUBCALO
Definition CaloCell_ID.h:50
CaloSampling::CaloSample CaloSample
Definition CaloCell_ID.h:53
const LArEM_ID * em_idHelper() const
access to EM idHelper
Definition CaloCell_ID.h:63
const LArHEC_ID * hec_idHelper() const
access to HEC idHelper
Definition CaloCell_ID.h:69
Data object for each calorimeter readout cell.
Definition CaloCell.h:57
This class groups all DetDescr information related to a CaloCell.
CaloCell_ID::CaloSample getSampling() const
cell sampling