ATLAS Offline Software
Loading...
Searching...
No Matches
TileRawChannelToHit Class Reference

#include <TileRawChannelToHit.h>

Inheritance diagram for TileRawChannelToHit:
Collaboration diagram for TileRawChannelToHit:

Public Member Functions

 TileRawChannelToHit (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~TileRawChannelToHit ()
StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::ReadHandleKey< TileRawChannelContainerm_rawChannelContainerKey
SG::WriteHandleKey< TileHitVectorm_hitVectorKey
SG::ReadCondHandleKey< TileSamplingFractionm_samplingFractionKey
 Name of TileSamplingFraction in condition store.
std::string m_infoName
bool m_useSamplFract
const TileIDm_tileID {nullptr}
const TileHWIDm_tileHWID {nullptr}
ToolHandle< TileCondToolEmscalem_tileToolEmscale
 main Tile Calibration tool
DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 56 of file TileRawChannelToHit.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TileRawChannelToHit()

TileRawChannelToHit::TileRawChannelToHit ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 46 of file TileRawChannelToHit.cxx.

47 : AthAlgorithm(name, pSvcLocator)
48 , m_tileToolEmscale("TileCondToolEmscale")
49{
50 declareProperty("UseSamplFract", m_useSamplFract = false); // if true energy in TileHit is the as it is coming from G4 simulation
51 // and by default it is equal to final - TileCell energy
52 declareProperty("TileCondToolEmscale" , m_tileToolEmscale);
53}
AthAlgorithm()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ToolHandle< TileCondToolEmscale > m_tileToolEmscale
main Tile Calibration tool

◆ ~TileRawChannelToHit()

TileRawChannelToHit::~TileRawChannelToHit ( )
virtual

Definition at line 55 of file TileRawChannelToHit.cxx.

56{}

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode TileRawChannelToHit::execute ( )

Definition at line 91 of file TileRawChannelToHit.cxx.

91 {
92
93 /* zero all counters and sums */
94 int nHit = 0;
95 int nChan = 0;
96 float eCh = 0.0;
97 float eHitTot = 0.0;
98
99 const TileSamplingFraction* samplingFraction = nullptr;
100 if (m_useSamplFract) {
101 SG::ReadCondHandle<TileSamplingFraction> samplingFractionHandle(m_samplingFractionKey);
102 ATH_CHECK( samplingFractionHandle.isValid() );
103 samplingFraction = samplingFractionHandle.cptr();
104 }
105
106 SG::WriteHandle<TileHitVector> hitVector(m_hitVectorKey);
107
108 /* Register the set of TileHits to the event store. */
109 ATH_CHECK( hitVector.record(std::make_unique<TileHitVector>()) );
110
111 //**
112 //* Get TileRawChannels
113 //**
114 SG::ReadHandle<TileRawChannelContainer> rawChannelContainer(m_rawChannelContainerKey);
115
116 if (!rawChannelContainer.isValid()) {
117 ATH_MSG_WARNING( " Could not find container " << m_rawChannelContainerKey.key() );
118 ATH_MSG_WARNING( " creating empty TileHitVector container " );
119
120 } else {
121
122 TileRawChannelUnit::UNIT rChUnit = rawChannelContainer->get_unit();
123 //TileFragHash::TYPE rChType = rawChannelContainer->get_type();
124
125 // iterate over all collections in a container
126 for(const TileRawChannelCollection* rawChannelCollection : *rawChannelContainer) {
127
128 HWIdentifier drawer_id = m_tileHWID->drawer_id(rawChannelCollection->identify());
129 int ros = m_tileHWID->ros(drawer_id);
130 int drawer = m_tileHWID->drawer(drawer_id);
131 int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
132
133 bool is_calibration = (rawChannelCollection->size() == 96);
134 if (is_calibration)
135 ATH_MSG_DEBUG( "Calibration mode, ignore high gain" );
136
137 // iterate over all raw channels in a collection, creating new TileHits
138 // Add each new TileHit to the TileHitContainer.
139
140 for (const TileRawChannel* rawChannel : *rawChannelCollection) {
141
142 HWIdentifier adc_id = rawChannel->adc_HWID();
143 int channel = m_tileHWID->channel(adc_id);
144 int adc = m_tileHWID->adc(adc_id);
145
146 // skip high gain in calibration mode
147 if (is_calibration && TileHWID::HIGHGAIN == adc)
148 continue;
149
150 float amp = rawChannel->amplitude();
151 float time = rawChannel->time();
152
153 ++nChan;
154 eCh += amp;
155
156 Identifier pmt_id = rawChannel->pmt_ID();
157 if (pmt_id.is_valid()) {
158
159 float ener = m_tileToolEmscale->channelCalib(drawerIdx, channel, adc,
160 amp, rChUnit,
162
163 if (m_useSamplFract) { // divide by sampling fraction (about 40)
164 ener /= samplingFraction->getSamplingFraction(drawerIdx, channel);
165 }
166
167 TileHit hit(pmt_id, ener, time);
168 eHitTot += ener;
169 ++nHit;
170
171 ATH_MSG_VERBOSE( "TileRawChannelToHit: "
172 << " pmt_id=" << m_tileID->to_string(pmt_id, -1)
173 << " adc_id=" << m_tileHWID->to_string(adc_id)
174 << " nHit=" << nHit
175 << " amp=" << amp
176 << " ene=" << ener
177 << " time=" << time );
178
179 hitVector->push_back(hit);
180
181 } else {
182
183 ATH_MSG_VERBOSE( "TileRawChannelToHit: "
184 << " channel with adc_id=" << m_tileHWID->to_string(adc_id)
185 << " is not connected" );
186 }
187 }
188 }
189 }
190
191
192
193
194 // Execution completed.
195 ATH_MSG_DEBUG( "TileRawChannelToHit execution completed." );
196 ATH_MSG_DEBUG( " nChan=" << nChan
197 << " RawChSum=" << eCh
198 << " nHit=" << nHit
199 << " eneTot=" << eHitTot );
200
201
202 ATH_MSG_VERBOSE( "TileHitVector container registered to the TES with name"
203 << m_hitVectorKey.key() );
204
205 return StatusCode::SUCCESS;
206}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
std::vector< FPGATrackSimHit > hitVector
bool is_valid() const
Check if id is in a valid state.
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
@ HIGHGAIN
Definition TileHWID.h:73
SG::WriteHandleKey< TileHitVector > m_hitVectorKey
const TileHWID * m_tileHWID
SG::ReadHandleKey< TileRawChannelContainer > m_rawChannelContainerKey
SG::ReadCondHandleKey< TileSamplingFraction > m_samplingFractionKey
Name of TileSamplingFraction in condition store.
float getSamplingFraction(unsigned int drawerIdx, unsigned int channel) const
Return Tile Calorimeter sampling fraction.
time(flags, cells_name, *args, **kw)

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ finalize()

StatusCode TileRawChannelToHit::finalize ( )

Definition at line 215 of file TileRawChannelToHit.cxx.

215 {
216
217 ATH_MSG_INFO( "TileRawChannelToHit::finalize() end" );
218
219 return StatusCode::SUCCESS;
220}
#define ATH_MSG_INFO(x)

◆ initialize()

StatusCode TileRawChannelToHit::initialize ( )

Definition at line 62 of file TileRawChannelToHit.cxx.

62 {
63
65 ATH_MSG_INFO( "Sampling fraction is taken into account for TileHit energy" );
66 else
67 ATH_MSG_INFO( "TileHit will contain CELL energy (not divided by sampling fraction)" );
68
69 // retrieve TileID helper and TileIfno from det store
72
73 //=== get TileCondToolEmscale
74 ATH_CHECK( m_tileToolEmscale.retrieve() );
75
76 ATH_CHECK( m_rawChannelContainerKey.initialize() );
77 ATH_CHECK( m_hitVectorKey.initialize() );
78
80
81 ATH_MSG_INFO( "TileRawChannelToHit initialization completed" );
82
83 return StatusCode::SUCCESS;
84}
const ServiceHandle< StoreGateSvc > & detStore() const
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg()

MsgStream & AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
#define ATH_MSG_ERROR(x)
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_hitVectorKey

SG::WriteHandleKey<TileHitVector> TileRawChannelToHit::m_hitVectorKey
private
Initial value:
{this,"TileHitContainer",
"TileHitVec","Output Tile hit container key"}

Definition at line 75 of file TileRawChannelToHit.h.

75 {this,"TileHitContainer",
76 "TileHitVec","Output Tile hit container key"};

◆ m_infoName

std::string TileRawChannelToHit::m_infoName
private

Definition at line 85 of file TileRawChannelToHit.h.

◆ m_rawChannelContainerKey

SG::ReadHandleKey<TileRawChannelContainer> TileRawChannelToHit::m_rawChannelContainerKey
private
Initial value:
{this,"TileRawChannelContainer",
"TileRawChannelCnt",
"Input Tile raw channel container key"}

Definition at line 71 of file TileRawChannelToHit.h.

71 {this,"TileRawChannelContainer",
72 "TileRawChannelCnt",
73 "Input Tile raw channel container key"};

◆ m_samplingFractionKey

SG::ReadCondHandleKey<TileSamplingFraction> TileRawChannelToHit::m_samplingFractionKey
private
Initial value:
{this,
"TileSamplingFraction", "TileSamplingFraction", "Input Tile sampling fraction"}

Name of TileSamplingFraction in condition store.

Definition at line 82 of file TileRawChannelToHit.h.

82 {this,
83 "TileSamplingFraction", "TileSamplingFraction", "Input Tile sampling fraction"};

◆ m_tileHWID

const TileHWID* TileRawChannelToHit::m_tileHWID {nullptr}
private

Definition at line 89 of file TileRawChannelToHit.h.

89{nullptr};

◆ m_tileID

const TileID* TileRawChannelToHit::m_tileID {nullptr}
private

Definition at line 88 of file TileRawChannelToHit.h.

88{nullptr};

◆ m_tileToolEmscale

ToolHandle<TileCondToolEmscale> TileRawChannelToHit::m_tileToolEmscale
private

main Tile Calibration tool

Definition at line 91 of file TileRawChannelToHit.h.

◆ m_useSamplFract

bool TileRawChannelToHit::m_useSamplFract
private

Definition at line 86 of file TileRawChannelToHit.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: