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

#include <TileRawCorrelatedNoise.h>

Inheritance diagram for TileRawCorrelatedNoise:
Collaboration diagram for TileRawCorrelatedNoise:

Classes

struct  AlphaMatrix

Public Member Functions

 TileRawCorrelatedNoise (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~TileRawCorrelatedNoise ()
virtual StatusCode initialize ()
virtual StatusCode execute ()
virtual 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< TileDigitsContainerm_inputDigitsContainerKey
SG::WriteHandleKey< TileDigitsContainerm_outputDigitsContainerKey
float m_nRMS_threshold
std::string m_alphaMatrixFilePrefix
std::string m_sample3RMSFilePrefix
std::string m_meanFilePrefix
std::unique_ptr< AlphaMatrixm_alphaMatrix
float m_meanSamples [4][64][48][7] {}
float m_sample3RMS [4][64][48] {}
bool m_useMeanFiles
bool m_pmtOrder
ToolHandle< TileCondToolNoiseSamplem_tileToolNoiseSample
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 30 of file TileRawCorrelatedNoise.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

◆ TileRawCorrelatedNoise()

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

Definition at line 24 of file TileRawCorrelatedNoise.cxx.

25 : AthAlgorithm(name, pSvcLocator)
26{
27// #############################################################################
28
29 declareProperty("nRMSThreshold", m_nRMS_threshold = 2.);
30 declareProperty("AlphaMatrixFilePrefix", m_alphaMatrixFilePrefix = "AlphaMatrix");
31 declareProperty("MeanFilePrefix", m_meanFilePrefix = "Mean");
32 declareProperty("Sample3RMSFilePrefix", m_sample3RMSFilePrefix = "RMS");
33 declareProperty("UseMeanFiles", m_useMeanFiles = true);
34 declareProperty("PMTOrder", m_pmtOrder = false);
35}
AthAlgorithm()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ ~TileRawCorrelatedNoise()

TileRawCorrelatedNoise::~TileRawCorrelatedNoise ( )
virtual

Definition at line 38 of file TileRawCorrelatedNoise.cxx.

38 {
39// #############################################################################
40
41}

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 TileRawCorrelatedNoise::execute ( )
virtual

Definition at line 295 of file TileRawCorrelatedNoise.cxx.

295 {
296// #############################################################################
297
298 const EventContext &ctx = Gaudi::Hive::currentContext();
299
300 // get named TileDigitsContaner from TES
301 SG::ReadHandle<TileDigitsContainer> inputDigitsContainer(m_inputDigitsContainerKey, ctx);
302
303 ATH_MSG_DEBUG( "Got TileDigitsContainer '" << m_inputDigitsContainerKey.key() << "'" );
304
305 const TileHWID* tileHWID;
306 CHECK( detStore()->retrieve(tileHWID, "TileHWID") );
307
308 const TileDigits* OriginalDigits[4][64][48];
309
310 // go through ALL TileDigits in container
311 SelectAllObject<TileDigitsContainer> selAll(inputDigitsContainer.cptr());
312 SelectAllObject<TileDigitsContainer>::const_iterator digItr = selAll.begin();
313 SelectAllObject<TileDigitsContainer>::const_iterator lastDig = selAll.end();
314
315 // read digits
316 for (; digItr != lastDig; ++digItr) {
317 const HWIdentifier adc_HWID = (*digItr)->adc_HWID();
318 int Ros = tileHWID->ros(adc_HWID);
319 int Drawer = tileHWID->drawer(adc_HWID);
320 int Channel = tileHWID->channel(adc_HWID);
321 OriginalDigits[Ros - 1][Drawer][Channel] = (*digItr);
322
323 if (!m_useMeanFiles) {
324 // read pedestal value and use it as mean
325 unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(Ros, Drawer);
326 int adc = tileHWID->adc(adc_HWID);
327 double ped = m_tileToolNoiseSample->getPed(drawerIdx, Channel, adc, TileRawChannelUnit::ADCcounts, ctx);
328 int nSamples = 7;
329 for (int Sample = 0; Sample < nSamples; ++Sample) {
330 m_meanSamples[Ros - 1][Drawer][Channel][Sample] = ped;
331 }
332 }
333 }
334
335 // prepare new samples
336 const int nSamples = 7;
337 struct Arrays {
338 float NewSamples[4][64][48][nSamples];
339 };
340 auto a = std::make_unique<Arrays>();
341 for (int Ros = 1; Ros < 5; ++Ros) {
342 for (int Drawer = 0; Drawer < 64; ++Drawer) {
343 for (int Channel = 0; Channel < 48; ++Channel) {
344 for (int Sample = 0; Sample < nSamples; ++Sample) {
345 a->NewSamples[Ros - 1][Drawer][Channel][Sample] =
346 ((OriginalDigits[Ros - 1][Drawer][Channel])->samples())[Sample];
347 }
348 }
349 }
350 }
351
352 // apply method
353 for (int Ros = 1; Ros < 5; ++Ros) {
354 for (int Drawer = 0; Drawer < 64; ++Drawer) {
355 for (int Channel = 0; Channel < 48; ++Channel) {
356 if (OriginalDigits[Ros - 1][Drawer][Channel]) {
357 int nSamples = (OriginalDigits[Ros - 1][Drawer][Channel])->nsamples();
358 std::vector<float> digits(nSamples);
359 for (int jCh = 0; jCh < 48; ++jCh) {
360 if (OriginalDigits[Ros - 1][Drawer][jCh]) {
361 if (Channel != jCh
362 && fabs(((OriginalDigits[Ros - 1][Drawer][jCh])->samples())[3]
363 - m_meanSamples[Ros - 1][Drawer][jCh][3])
364 < m_nRMS_threshold * m_sample3RMS[Ros - 1][Drawer][jCh]) {
365
366 for (int Sample = 0; Sample < nSamples; ++Sample)
367 a->NewSamples[Ros - 1][Drawer][Channel][Sample] =
368 a->NewSamples[Ros - 1][Drawer][Channel][Sample]
369 - m_alphaMatrix->m[Ros - 1][Drawer][Channel][jCh]
370 * (((OriginalDigits[Ros - 1][Drawer][jCh])->samples())[Sample]
371 - m_meanSamples[Ros - 1][Drawer][jCh][Sample]);
372 }
373 }
374 }
375 }
376 }
377 }
378 }
379
380 // create new container
381
382 auto outputDigitsContainer = std::make_unique<TileMutableDigitsContainer>();
383 ATH_CHECK( outputDigitsContainer->status() );
384
385 // fill new container
386 for (int Ros = 1; Ros < 5; ++Ros) {
387 for (int Drawer = 0; Drawer < 64; ++Drawer) {
388 for (int Channel = 0; Channel < 48; ++Channel) {
389 if (OriginalDigits[Ros - 1][Drawer][Channel]) {
390 int nSamples = (OriginalDigits[Ros - 1][Drawer][Channel])->nsamples();
391 std::vector<float> digits(nSamples);
392 for (int Sample = 0; Sample < nSamples; ++Sample) {
393 digits[Sample] = a->NewSamples[Ros - 1][Drawer][Channel][Sample];
394 }
395 TileDigits* NewDigits = new TileDigits(
396 (OriginalDigits[Ros - 1][Drawer][Channel])->adc_HWID(), digits);
397 ATH_CHECK( outputDigitsContainer->push_back(NewDigits) );
398 }
399 }
400 }
401 }
402
403 SG::WriteHandle<TileDigitsContainer> outputDigitsCnt(m_outputDigitsContainerKey, ctx);
404 ATH_CHECK( outputDigitsCnt.record(std::move(outputDigitsContainer)) );
405
406
407 ATH_MSG_DEBUG( "execute completed successfully" );
408
409 return StatusCode::SUCCESS;
410}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
#define CHECK(...)
Evaluate an expression and check for errors.
static Double_t a
SelectAllObjectMT< DCC, OBJECT > SelectAllObject
const ServiceHandle< StoreGateSvc > & detStore() const
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition TileHWID.h:189
int adc(const HWIdentifier &id) const
extract adc field from HW identifier
Definition TileHWID.h:193
int drawer(const HWIdentifier &id) const
extract drawer field from HW identifier
Definition TileHWID.h:171
int ros(const HWIdentifier &id) const
extract ros field from HW identifier
Definition TileHWID.h:167
SG::WriteHandleKey< TileDigitsContainer > m_outputDigitsContainerKey
float m_meanSamples[4][64][48][7]
ToolHandle< TileCondToolNoiseSample > m_tileToolNoiseSample
SG::ReadHandleKey< TileDigitsContainer > m_inputDigitsContainerKey
std::unique_ptr< AlphaMatrix > m_alphaMatrix
Identifier32::value_type Channel
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ 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 TileRawCorrelatedNoise::finalize ( )
virtual

Definition at line 413 of file TileRawCorrelatedNoise.cxx.

413 {
414// #############################################################################
415
416 ATH_MSG_INFO( " finalize completed successfully" );
417
418 return StatusCode::SUCCESS;
419}
#define ATH_MSG_INFO(x)

◆ initialize()

StatusCode TileRawCorrelatedNoise::initialize ( )
virtual

Definition at line 44 of file TileRawCorrelatedNoise.cxx.

44 {
45// #############################################################################
46
47 int PmtToChannelBarrel[48] = {
48 1, 2, 3, 4, 5, 6, 7, 8,
49 9, 10, 11, 12, 13, 14, 15, 16,
50 17, 18, 19, 20, 21, 22, 23, 24,
51 27, 26, 25, 30, 29, 28, 33, 32,
52 31, 36, 35, 34, 39, 38, 37, 42,
53 41, 40, 45, 44, 43, 48, 47, 46 };
54
55 int PmtToChannelExtendedBarrel[48] = {
56 1, 2, 3, 4, 5, 6, 7, 8,
57 9, 10, 11, 12, 13, 14, 15, 16,
58 17, 18, 19, 20, 21, 22, 23, 24,
59 27, 26, 25, 31, 32, 28, 33, 29,
60 30, 36, 35, 34, 44, 38, 37, 43,
61 42, 41, 45, 39, 40, 48, 47, 46 };
62
63 m_alphaMatrix = std::make_unique<AlphaMatrix>();
64
65 // read alpha matrix
66 FILE* AlphaMatrixFile[4][64]{};
67 char Rosstr[10];
68 char buff[1000];
69 // Cycle over 4 partitions and 64 modules
70 for (int Ros = 1; Ros < 5; ++Ros) {
71 for (int Drawer = 0; Drawer < 64; ++Drawer) {
72 // open file which corresponds to AlphaMatrix[Ros][Drawer]
73 if (Ros == 1) sprintf(Rosstr, "LBA");
74 else if (Ros == 2) sprintf(Rosstr, "LBC");
75 else if (Ros == 3) sprintf(Rosstr, "EBA");
76 else sprintf(Rosstr, "EBC");
77
78 sprintf(buff, "%s%s%02d.txt", m_alphaMatrixFilePrefix.c_str(), Rosstr, Drawer + 1);
79 std::string filestr(buff);
80 std::string file = PathResolver::find_file(buff, "DATAPATH");
81// ATH_MSG_INFO( " buff=" << buff
82// << " filestr=" << filestr.c_str()
83// << " file=" << file.c_str() );
84 if (file.size() == 0) {
85 ATH_MSG_WARNING( "Could not find input file " << buff );
86 } else {
87 ATH_MSG_INFO( "Reading file " << file );
88 AlphaMatrixFile[Ros - 1][Drawer] = fopen(file.c_str(), "r");
89 }
90 if (AlphaMatrixFile[Ros - 1][Drawer] == NULL) {
91 ATH_MSG_ERROR( "Can't read input Alpha Matrix files." );
92 return StatusCode::FAILURE;
93 }
94 ATH_MSG_DEBUG( " **** Start of Alpha Matrix Read Out" );
95 FILE* alpha_file = AlphaMatrixFile[Ros - 1][Drawer];
96// if(fgets(buff, sizeof(buff), alpha_file) != NULL) {
97// ATH_MSG_DEBUG( "Matrix is being loaded: " << buff );
98// }
99 // load tokens to be searched for in a string
100 const char* TOKENS = { " \t\n" };
101 // read Matrix
102 int dima = 48;
103 char* saveptr = nullptr;
104 for (int line = 0; line < dima; line++) {
105 if (fgets(buff, sizeof(buff), alpha_file) != NULL) {
106 ATH_MSG_DEBUG( "line " << line << " is " << buff );
107 for (int column = 0; column < dima; column++) {
108 // Check for comment lines
109 if (*buff == '!' || *buff == '*') continue;
110 // read value
111 double pippo = 0;
112 if (const char* word = strtok_r(column==0 ? buff : nullptr, TOKENS, &saveptr))
113 {
114 pippo = atof(word);
115 }
116
117 ATH_MSG_VERBOSE ( "elem " << column << " is " << pippo );
118 int chline = line;
119 int chcolumn = column;
120 // read alpha matrix in pmt order but save it in channel order if m_pmtOrder is true
121 if (m_pmtOrder) {
122 if (Ros < 3) {
123 chline = PmtToChannelBarrel[line] - 1;
124 chcolumn = PmtToChannelBarrel[column] - 1;
125 } else {
126 chline = PmtToChannelExtendedBarrel[line] - 1;
127 chcolumn = PmtToChannelExtendedBarrel[column] - 1;
128 }
129 }
130 m_alphaMatrix->m[Ros - 1][Drawer][chline][chcolumn] = pippo;
131 }
132 }
133 }
134 fclose(alpha_file);
135 }
136 }
137
138 if (m_useMeanFiles) {
139 // read mean
140 int nSamples = 7;
141 FILE* MeanFile[4][64];
142 // cicle over 4 partitions and 64 modules
143 for (int Ros = 1; Ros < 5; ++Ros) {
144 for (int Drawer = 0; Drawer < 64; ++Drawer) {
145 // open file which corresponds to Mean[Ros][Drawer]
146 if (Ros == 1)
147 sprintf(Rosstr, "LBA");
148 else if (Ros == 2)
149 sprintf(Rosstr, "LBC");
150 else if (Ros == 3)
151 sprintf(Rosstr, "EBA");
152 else
153 sprintf(Rosstr, "EBC");
154 sprintf(buff, "%s%s%02d.txt", m_meanFilePrefix.c_str(), Rosstr, Drawer + 1);
155 std::string filestr(buff);
156 std::string file = PathResolver::find_file(buff, "DATAPATH");
157 if (file.size() == 0) {
158 ATH_MSG_VERBOSE ( "Could not find input file " << buff );
159 } else {
160 ATH_MSG_INFO( "Reading file " << file );
161 MeanFile[Ros - 1][Drawer] = fopen(file.c_str(), "r");
162 }
163 if (MeanFile[Ros - 1][Drawer] == NULL) {
164 ATH_MSG_ERROR( "Can't read input Mean files." );
165 return StatusCode::FAILURE;
166 }
167
168 ATH_MSG_DEBUG( " **** Start of Means Read Out" );
169 FILE* mean_file = MeanFile[Ros - 1][Drawer];
170 //if(fgets(buff, sizeof(buff), mean_file) != NULL) {
171 // if (lDebug)
172 // log << MSG::DEBUG << "Vector is being loaded: "<< buff << endmsg;
173 //}
174 // load tokens to be searched for in a string
175 const char* TOKENS = { " \t\n" };
176 // read Vector
177 int dima = 48;
178 char* saveptr = nullptr;
179 for (int line = 0; line < dima; line++) {
180 if (fgets(buff, sizeof(buff), mean_file) != NULL) {
181 ATH_MSG_DEBUG( "line " << line << " is " << buff );
182 for (int Sample = 0; Sample < nSamples; Sample++) {
183 // Check for comment lines
184 if (*buff == '!' || *buff == '*') continue;
185 // read value
186 double pippo = 0;
187 if (const char* word = strtok_r(Sample==0 ? buff : nullptr, TOKENS, &saveptr))
188 {
189 pippo = atof(word);
190 }
191
192 ATH_MSG_VERBOSE ( "elem " << Sample << " is " << pippo );
193 int chline = line;
194 // read lines of mean matrix in pmt order but save it in channel order if m_pmtOrder is true
195 if (m_pmtOrder) {
196 if (Ros < 3) chline = PmtToChannelBarrel[line] - 1;
197 else chline = PmtToChannelExtendedBarrel[line] - 1;
198 }
199 m_meanSamples[Ros - 1][Drawer][chline][Sample] = pippo;
200 }
201 }
202 }
203 fclose(mean_file);
204 }
205 }
206 } else {
207 // Initialize mean
208 int nSamples = 7;
209 for (int Ros = 1; Ros < 5; ++Ros) {
210 for (int Drawer = 0; Drawer < 64; ++Drawer) {
211 for (int Channel = 0; Channel < 48; ++Channel) {
212 for (int Sample = 0; Sample < nSamples; ++Sample) {
213 //MeanSamples[Ros-1][Drawer][Channel][Sample]=50.;
214 m_meanSamples[Ros - 1][Drawer][Channel][Sample] = -1.;
215 }
216 }
217 }
218 }
219 }
220
221 // read sample 3 RMS
222 FILE* Sample3RMSFile[4][64];
223 // cicle over 4 partitions and 64 modules
224 for (int Ros = 1; Ros < 5; ++Ros) {
225 for (int Drawer = 0; Drawer < 64; ++Drawer) {
226 // open file which corresponds to Sample3RMS[Ros][Drawer]
227 if (Ros == 1) sprintf(Rosstr, "LBA");
228 else if (Ros == 2) sprintf(Rosstr, "LBC");
229 else if (Ros == 3) sprintf(Rosstr, "EBA");
230 else sprintf(Rosstr, "EBC");
231
232 sprintf(buff, "%s%s%02d.txt", m_sample3RMSFilePrefix.c_str(), Rosstr, Drawer + 1);
233 std::string filestr(buff);
234 std::string file = PathResolver::find_file(buff, "DATAPATH");
235 if (file.size() == 0) {
236 ATH_MSG_VERBOSE ( "Could not find input file " << buff );
237 } else {
238 ATH_MSG_INFO( "Reading file " << file );
239 Sample3RMSFile[Ros - 1][Drawer] = fopen(file.c_str(), "r");
240 }
241 if (Sample3RMSFile[Ros - 1][Drawer] == NULL) {
242 ATH_MSG_ERROR( "Can't read input sample 3 RMS files." );
243 return StatusCode::FAILURE;
244 }
245
246 ATH_MSG_DEBUG( " **** Start of sample 3 RMS Read Out" );
247 FILE* rms_file = Sample3RMSFile[Ros - 1][Drawer];
248 //if(fgets(buff, sizeof(buff), rms_file) != NULL) {
249 // if (lDebug)
250 // log << MSG::DEBUG << "Vector is being loaded: "<< buff << endmsg;
251 //}
252 // load tokens to be searched for in a string
253 char* word;
254 const char* TOKENS = { " \t\n" };
255 // read Vector
256 int dima = 48;
257 for (int line = 0; line < dima; line++) {
258 if (fgets(buff, sizeof(buff), rms_file) != NULL) {
259 ATH_MSG_DEBUG( "line " << line << " is " << buff );
260 // Check for comment lines
261 if (*buff == '!' || *buff == '*') continue;
262 // read value
263 double pippo;
264 char* saveptr = nullptr;
265 if ((word = strtok_r(buff, TOKENS, &saveptr)) == NULL) pippo = 0;
266 else pippo = atof(word);
267 // read value
268 ATH_MSG_VERBOSE ( "elem is " << pippo );
269 int chline = line;
270 // read rms vector in pmt order but save it in channel order if m_pmtOrder is true
271 if (m_pmtOrder) {
272 if (Ros < 3) chline = PmtToChannelBarrel[line] - 1;
273 else chline = PmtToChannelExtendedBarrel[line] - 1;
274 }
275 m_sample3RMS[Ros - 1][Drawer][chline] = pippo;
276 }
277 }
278 fclose(rms_file);
279 }
280 }
281
282 ATH_CHECK( m_inputDigitsContainerKey.initialize() );
284
285 if (!m_useMeanFiles) {
286 ATH_CHECK( m_tileToolNoiseSample.retrieve() );
287 }
288
289 ATH_MSG_INFO( "Initialization completed successfully" );
290
291 return StatusCode::SUCCESS;
292}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
static std::string find_file(const std::string &logical_file_name, const std::string &search_path)
double atof(std::string_view str)
Converts a string into a double / float.
TFile * file

◆ 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}
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_alphaMatrix

std::unique_ptr<AlphaMatrix> TileRawCorrelatedNoise::m_alphaMatrix
private

Definition at line 64 of file TileRawCorrelatedNoise.h.

◆ m_alphaMatrixFilePrefix

std::string TileRawCorrelatedNoise::m_alphaMatrixFilePrefix
private

Definition at line 56 of file TileRawCorrelatedNoise.h.

◆ 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_inputDigitsContainerKey

SG::ReadHandleKey<TileDigitsContainer> TileRawCorrelatedNoise::m_inputDigitsContainerKey
private
Initial value:
{this, "TileDigitsContainer",
"TileDigitsCnt",
"Input Tile digits container key"}

Definition at line 44 of file TileRawCorrelatedNoise.h.

44 {this, "TileDigitsContainer",
45 "TileDigitsCnt",
46 "Input Tile digits container key"};

◆ m_meanFilePrefix

std::string TileRawCorrelatedNoise::m_meanFilePrefix
private

Definition at line 58 of file TileRawCorrelatedNoise.h.

◆ m_meanSamples

float TileRawCorrelatedNoise::m_meanSamples[4][64][48][7] {}
private

Definition at line 65 of file TileRawCorrelatedNoise.h.

65{};

◆ m_nRMS_threshold

float TileRawCorrelatedNoise::m_nRMS_threshold
private

Definition at line 53 of file TileRawCorrelatedNoise.h.

◆ m_outputDigitsContainerKey

SG::WriteHandleKey<TileDigitsContainer> TileRawCorrelatedNoise::m_outputDigitsContainerKey
private
Initial value:
{this, "OutputTileDigitsContainer",
"NewDigitsContainer",
"Output Tile digits container key"}

Definition at line 48 of file TileRawCorrelatedNoise.h.

48 {this, "OutputTileDigitsContainer",
49 "NewDigitsContainer",
50 "Output Tile digits container key"};

◆ m_pmtOrder

bool TileRawCorrelatedNoise::m_pmtOrder
private

Definition at line 69 of file TileRawCorrelatedNoise.h.

◆ m_sample3RMS

float TileRawCorrelatedNoise::m_sample3RMS[4][64][48] {}
private

Definition at line 66 of file TileRawCorrelatedNoise.h.

66{};

◆ m_sample3RMSFilePrefix

std::string TileRawCorrelatedNoise::m_sample3RMSFilePrefix
private

Definition at line 57 of file TileRawCorrelatedNoise.h.

◆ m_tileToolNoiseSample

ToolHandle<TileCondToolNoiseSample> TileRawCorrelatedNoise::m_tileToolNoiseSample
private
Initial value:
{this,
"TileCondToolNoiseSample", "TileCondToolNoiseSample", "Tile sample noise tool"}

Definition at line 71 of file TileRawCorrelatedNoise.h.

71 {this,
72 "TileCondToolNoiseSample", "TileCondToolNoiseSample", "Tile sample noise tool"};

◆ m_useMeanFiles

bool TileRawCorrelatedNoise::m_useMeanFiles
private

Definition at line 68 of file TileRawCorrelatedNoise.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: