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

HitMapBuilder.h. More...

#include <HitMapBuilder.h>

Inheritance diagram for HitMapBuilder:

Public Member Functions

 ~HitMapBuilder ()
StatusCode initialize ()
StatusCode execute (const EventContext &ctx)
 Execute method.
StatusCode finalize ()
 AthAlgorithm (const std::string &name, ISvcLocator *pSvcLocator)
 Constructor with parameters:
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
bool filterPassed (const EventContext &ctx) const
void setFilterPassed (bool state, const EventContext &ctx) const
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
const EventContext & getContext () const
 Deprecated methods (use the ones with EventContext).
bool filterPassed () const
void setFilterPassed (bool state) const

Protected Member Functions

virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
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

std::string getDCSIDFromPosition (int bec, int layer, int modPhi, int modEta)
std::vector< std::string > & splitter (const std::string &str, char delim, std::vector< std::string > &elems)
std::vector< std::string > splitter (const std::string &str, char delim)
StatusCode registerHistograms ()
const std::string histoSuffix (const int bec, const int layer)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ServiceHandle< ITHistSvc > m_tHistSvc {this, "THistSvc", "THistSvc/THistSvc"}
SG::ReadHandleKey< PixelRDO_Containerm_pixelRDOKey {this,"PixelRDOKey","PixelRDOs","StoreGate Key of Pixel RDOs"}
const InDetDD::PixelDetectorManagerm_pixman =nullptr
const PixelIDm_pixelID =nullptr
std::vector< std::pair< std::string, std::vector< int > > > m_pixelMapping
double m_nEvents =0
std::vector< double > m_nEventsLB
std::vector< double > m_nEventsLBCategory
std::unique_ptr< TH1F > m_nEventsHist
std::unique_ptr< TH1F > m_nEventsLBHist
std::vector< std::unique_ptr< TH2F > > m_occupancyMaps
std::vector< std::unique_ptr< TH2F > > m_occupancyMapsIBL2dLB
std::vector< std::unique_ptr< TH1F > > m_TOTdistributions
std::vector< std::unique_ptr< TH1F > > m_TOTdistributionsIBL2dLB
std::vector< std::unique_ptr< TH1F > > m_occupancyLB
Gaudi::Property< int > m_hist_lbMax {this,"nLBmax", 3001, "Maximum number of LB (for histograms binning)"}
Gaudi::Property< int > m_evt_lbMin {this,"LBMin",0,"First lumi block to consider"}
Gaudi::Property< int > m_evt_lbMax {this,"LBMax",-1,"Last lumi block to consider"}
int m_LBrange_max = -9999
const unsigned int m_nIblFes = 14 * (4 + 6*2) * 2
const int m_perLB_min =0
const int m_perLB_max =3000
const int m_perLB_step =100
const int m_perLB_n = (m_perLB_max-m_perLB_min)/m_perLB_step
const int m_fei4bPixels = 26880
const int m_pixModPixels = 46080
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

HitMapBuilder.h.

Creates hit maps and maps of noisy pixels for every module of the pixel detector. The maps are stored in a root file. They can be written to the conditions database using the algorithm NoiseMapDBWriter.

ruwie.nosp@m.del@.nosp@m.physi.nosp@m.k.un.nosp@m.i-bon.nosp@m.n.de

Definition at line 46 of file HitMapBuilder.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ ~HitMapBuilder()

HitMapBuilder::~HitMapBuilder ( )

Definition at line 24 of file HitMapBuilder.cxx.

24 {
25}

Member Function Documentation

◆ AthAlgorithm()

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

Constructor with parameters:

Definition at line 57 of file AthAlgorithm.cxx.

22 :
24{
25 // default cardinality for non-reentrant algorithms
26 setProperty( "Cardinality", 1 ).orThrow("Unable to set property 'Cardinality'", name);
27
28 // Set up to run AthAlgorithmDHUpdate in sysInitialize before
29 // merging dependency lists. This extends the output dependency
30 // list with any symlinks implied by inheritance relations.
31 m_updateDataHandles =
32 std::make_unique<AthenaBaseComps::AthAlgorithmDHUpdate>
34 std::move (m_updateDataHandles));
35}
void setProperty(columnar::PythonToolHandle &self, const std::string &key, nb::object value)
DataObjIDColl m_extendedExtraObjects
AthCommonDataStore(const std::string &name, T... args)

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::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 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::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< Gaudi::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< Gaudi::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 HitMapBuilder::execute ( const EventContext & ctx)
virtual

Execute method.

Provides access to the EventContext if needed but is non-const as opposed to AthReentrantAlgorithm.

Implements AthAlgorithm.

Definition at line 334 of file HitMapBuilder.cxx.

334 {
335 ATH_MSG_DEBUG( "Executing HitMapBuilder" );
336
337
338 // check LB is in allowed range
339 int LB = static_cast<int>(ctx.eventID().lumi_block());
340 if ((LB < m_evt_lbMin) || (m_evt_lbMax >= m_evt_lbMin && LB > m_evt_lbMax)) {
341 ATH_MSG_VERBOSE("Event in lumiblock " << LB << " not in selected range [" << m_evt_lbMin << "," << m_evt_lbMax << "] => skipped");
342 return StatusCode::SUCCESS;
343 }
344
345 // Get max LB range
346 if (m_LBrange_max < LB) m_LBrange_max = LB;
347
348// retrieve PixelRDO container
349 SG::ReadHandle<PixelRDO_Container> pixelRDOs{m_pixelRDOKey,ctx};
350 ATH_MSG_DEBUG( "Pixel RDO container retrieved" );
351 // loop in RDO container
352 for (const auto pPixelRDOCollection: *pixelRDOs) {
353 if (pPixelRDOCollection) {
354 Identifier moduleID = pPixelRDOCollection->identify();
355 IdentifierHash modHash = m_pixelID->wafer_hash(moduleID);
356 ATH_MSG_VERBOSE("moduleID, modHash = " << moduleID << " , " << modHash);
357
358 for (DataVector<PixelRDORawData>::const_iterator rdo=pPixelRDOCollection->begin(); rdo!=pPixelRDOCollection->end(); ++rdo) {
359 Identifier rdoID = (*rdo)->identify();
360 int bec = m_pixelID->barrel_ec(rdoID);
361 //
362 if (std::abs(bec) == 4) continue; // Skip DBM
363 //
364 unsigned int pixel_eta = m_pixelID->eta_index(rdoID);
365 unsigned int pixel_phi = m_pixelID->phi_index(rdoID);
366 int layer = m_pixelID->layer_disk(rdoID);
367 int modPhi = m_pixelID->phi_module(rdoID);
368 int modEta = m_pixelID->eta_module(rdoID);
369 const Identifier::size_type maxHash = m_pixelID->wafer_hash_max();
370
371
372
373 int iblFeHash = -99;
374 if (bec==0 && layer==0) { // IBL FE order: {0..3}: 3D C, {4..15}: 2D C, {16..27}: 2D A, {28..31}: 3D A
375 if (modEta <= -7) iblFeHash = modPhi*32 + (modEta+10); // 3D C
376 else if (-6<=modEta && modEta<=5) iblFeHash = modPhi*32 + ((modEta+6)*2+4); // 2D
377 else iblFeHash = modPhi*32 + (modEta+22); // 3D A
378 if (pixel_eta/80) iblFeHash++; // For 2D, C side '_1', or A side '_2' for pixel_eta 80~159
379 }
380
381 int TOT = (*rdo)->getToT(); // it returns a 8 bits "word"
382
383 // Category: All
384 if (bec == 0 && layer == 0 && -6 <= modEta && modEta <= 5) { // IBL 2D
385 int ibl2dHash = maxHash + iblFeHash;
386 m_occupancyMaps[ibl2dHash]->Fill(pixel_eta%80, pixel_phi);
387 m_occupancyLB[ibl2dHash]->Fill(LB);
388 m_TOTdistributions[ibl2dHash]->Fill(TOT);
389 }
390 else { // None IBL 2D
391 m_occupancyMaps[modHash]->Fill(pixel_eta, pixel_phi);
392 m_occupancyLB[modHash]->Fill(LB);
393 m_TOTdistributions[modHash]->Fill(TOT);
394 }
395
396 // Category: LB
397 if (0 <= iblFeHash) { // IBL
398 for (int i=0; i<m_perLB_n; i++) {
399 if ((m_perLB_min+m_perLB_step*i < LB) && (LB <= m_perLB_min+m_perLB_step*(i+1))) { // LB
400 int ibl2dHash = m_nIblFes*i + iblFeHash;
401 m_occupancyMapsIBL2dLB[ibl2dHash]->Fill(pixel_eta%80, pixel_phi);
402 m_TOTdistributionsIBL2dLB[ibl2dHash]->Fill(TOT);
403 }
404 }
405 }
406 }
407 }
408 }
409 m_nEvents++;
410 m_nEventsHist->Fill(0.5);
411 m_nEventsLBHist->Fill(LB);
412
413 m_nEventsLB[LB]++;
415
416 return StatusCode::SUCCESS;
417}
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
Definition DataVector.h:838
std::vector< std::unique_ptr< TH1F > > m_occupancyLB
Gaudi::Property< int > m_evt_lbMax
const PixelID * m_pixelID
SG::ReadHandleKey< PixelRDO_Container > m_pixelRDOKey
std::vector< std::unique_ptr< TH1F > > m_TOTdistributions
std::vector< std::unique_ptr< TH2F > > m_occupancyMapsIBL2dLB
const int m_perLB_step
std::vector< double > m_nEventsLB
const int m_perLB_n
Gaudi::Property< int > m_evt_lbMin
std::unique_ptr< TH1F > m_nEventsLBHist
std::vector< std::unique_ptr< TH1F > > m_TOTdistributionsIBL2dLB
const int m_perLB_min
std::vector< std::unique_ptr< TH2F > > m_occupancyMaps
std::unique_ptr< TH1F > m_nEventsHist
std::vector< double > m_nEventsLBCategory
const unsigned int m_nIblFes
@ layer
Definition HitInfo.h:79

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::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}

◆ filterPassed() [1/2]

bool AthAlgorithm::filterPassed ( ) const
inherited

Definition at line 94 of file AthAlgorithm.cxx.

94 {
95 return filterPassed( Gaudi::Hive::currentContext() );
96}
bool filterPassed() const

◆ filterPassed() [2/2]

bool AthAlgorithm::filterPassed ( const EventContext & ctx) const
inherited

Definition at line 98 of file AthAlgorithm.cxx.

98 {
99 return execState( ctx ).filterPassed();
100}

◆ finalize()

StatusCode HitMapBuilder::finalize ( )

Definition at line 424 of file HitMapBuilder.cxx.

424 {
425 ATH_MSG_INFO("Finalizing HitMapBuilder");
426
427 ATH_CHECK(m_tHistSvc->regHist("/histfile/NEvents", std::move(m_nEventsHist)));
428 ATH_CHECK(m_tHistSvc->regHist("/histfile/NEventsLB", std::move(m_nEventsLBHist)));
429
430 //
431 // loop in detector elements
432 //
433 for (InDetDD::SiDetectorElementCollection::const_iterator iter=m_pixman->getDetectorElementBegin(); iter!=m_pixman->getDetectorElementEnd(); ++iter) {
434 const InDetDD::SiDetectorElement* element = *iter;
435 if (element == 0) continue;
436
437 Identifier ident = element->identify();
438 if (!m_pixelID->is_pixel(ident)) continue;
439
440 int bec = m_pixelID->barrel_ec (ident);
441 int layer = m_pixelID->layer_disk(ident);
442 int modPhi = m_pixelID->phi_module(ident);
443 int modEta = m_pixelID->eta_module(ident);
444 int modHash = m_pixelID->wafer_hash(ident);
445 const Identifier::size_type maxHash = m_pixelID->wafer_hash_max();
446
447 if (abs(bec) == 4) continue; // Skip DBM
448
449 int iblFeHash = -99;
450 if (bec==0 && layer==0) { // IBL FE order: {0..3}: 3D C, {4..15}: 2D C, {16..27}: 2D A, {28..31}: 3D A
451 if (modEta <= -7) iblFeHash = modPhi*32 + (modEta+10); // 3D C
452 else if (-6<=modEta && modEta<=5) iblFeHash = modPhi*32 + ((modEta+6)*2+4); // 2D
453 else iblFeHash = modPhi*32 + (modEta+22); // 3D A
454 }
455
456 // Divide by events for Occupancy Map
457 // Category: All
458 if (bec == 0 && layer == 0 && -6 <= modEta && modEta <= 5) { // IBL 2D
459 int ibl2dHash = maxHash + iblFeHash;
460 for (int chipId=0; chipId<2; chipId++) { // 2 Fes in double module
461 //yosuke m_occupancyMaps[ibl2dHash+chipId]->Scale(1.0/(m_nEvents));
462 // Occupancy LB
463 int entries = m_occupancyLB[ibl2dHash+chipId]->GetEntries();
464 for (int lb=0; lb<m_hist_lbMax; lb++) {
465 if (m_nEventsLB[lb] == 0) continue;
466 m_occupancyLB[ibl2dHash+chipId]->SetBinContent(lb+1, m_occupancyLB[ibl2dHash+chipId]->GetBinContent(lb+1)/(m_nEventsLB[lb]*m_fei4bPixels)); // Also divide by fei4 pixels
467 }
468 m_occupancyLB[ibl2dHash+chipId]->SetEntries(entries);
469 m_occupancyLB[ibl2dHash+chipId]->SetBins(m_LBrange_max+100, -0.5, m_LBrange_max+99.5);
470 }
471 }
472 else { // None IBL 2D
473 //yosuke m_occupancyMaps[modHash]->Scale(1.0/(m_nEvents));
474 // Occupancy LB
475 int entries = m_occupancyLB[modHash]->GetEntries();
476 for (int lb=0; lb<m_hist_lbMax; lb++) {
477 if (m_nEventsLB[lb] == 0) continue;
478 if (0 <= iblFeHash) m_occupancyLB[modHash]->SetBinContent(lb+1, m_occupancyLB[modHash]->GetBinContent(lb+1)/(m_nEventsLB[lb]*m_fei4bPixels)); // IBL 3D, divide by fei4 pixels
479 else m_occupancyLB[modHash]->SetBinContent(lb+1, m_occupancyLB[modHash]->GetBinContent(lb+1)/(m_nEventsLB[lb]*m_pixModPixels)); // Pixel module, divide by pixel module pixels
480 }
481 m_occupancyLB[modHash]->SetEntries(entries);
482 m_occupancyLB[modHash]->SetBins(m_LBrange_max+100, -0.5, m_LBrange_max+99.5);
483 }
484
485 std::string onlineID = getDCSIDFromPosition(bec,layer,modPhi,modEta);
486
487 std::ostringstream name;
488 std::string axisTitle;
489
490 // Construct IBL Planar later
491 std::string LBCategory;
492 std::string occ2dDir = "Occupancy2d";
493 std::string occLBDir = "OccupancyLb";
494 std::string totDir = "ToT";
495
496 // Category: All
497 LBCategory = "All";
498 if (bec == 0 && layer == 0 && -6 <= modEta && modEta <= 5) { // IBL 2D
499 for (unsigned chipId=0; chipId<=1; chipId++) { // FE chips in double module
500 int ibl2dHash;
501 if (chipId) {
502 if (modEta <= -1) ibl2dHash = maxHash + iblFeHash; // C side, '_2'
503 else ibl2dHash = maxHash + iblFeHash + chipId; // A side, '_2'
504 }
505 else {
506 if (modEta <= -1) ibl2dHash = maxHash + iblFeHash + 1; // C side, '_1'
507 else ibl2dHash = maxHash + iblFeHash; // A side, '_1'
508 }
509 // Occupancy Map
510 axisTitle = ";pixel_eta;pixel_phi;# hits/pixel/event";
511 name << "/histfile/" << LBCategory << "/" << occ2dDir << "/" << histoSuffix(bec,layer) << "/" << onlineID << "_" << chipId+1;
512 ATH_CHECK(m_tHistSvc->regHist(name.str(), std::move(m_occupancyMaps[ibl2dHash])));
513 name.str(""); name.clear();
514
515 // Occupancy vs. LB
516 axisTitle = ";LB;# hits/pixel/event";
517 name << "/histfile/" << LBCategory << "/" << occLBDir << "/" << histoSuffix(bec,layer) << "/" << onlineID << "_" << chipId+1;
518 ATH_CHECK(m_tHistSvc->regHist(name.str(), std::move(m_occupancyLB[ibl2dHash])));
519 name.str(""); name.clear();
520
521 // ToT
522 axisTitle = ";ToT;# hits";
523 name << "/histfile/" << LBCategory << "/" << totDir << "/" << histoSuffix(bec,layer) << "/" << onlineID << "_" << chipId+1;
524 ATH_CHECK(m_tHistSvc->regHist(name.str(), std::move(m_TOTdistributions[ibl2dHash])));
525 name.str(""); name.clear();
526 }
527 }
528 else { // None IBL 2D
529 // Occupancy Map
530 axisTitle = ";pixel_eta;pixel_phi;# hits/pixel/event";
531 name << "/histfile/" << LBCategory << "/" << occ2dDir << "/" << histoSuffix(bec,layer) << "/" << onlineID;
532 ATH_CHECK(m_tHistSvc->regHist(name.str(), std::move(m_occupancyMaps[modHash])));
533 name.str(""); name.clear();
534
535 // Occupancy vs. LB
536 axisTitle = ";LB;# hits/pixel/event";
537 name << "/histfile/" << LBCategory << "/" << occLBDir << "/" << histoSuffix(bec,layer) << "/" << onlineID;
538 ATH_CHECK(m_tHistSvc->regHist(name.str(), std::move(m_occupancyLB[modHash])));
539 name.str(""); name.clear();
540
541 // ToT
542 axisTitle = ";ToT;# hits";
543 name << "/histfile/" << LBCategory << "/" << totDir << "/" << histoSuffix(bec,layer) << "/" << onlineID;
544 ATH_CHECK(m_tHistSvc->regHist(name.str(), std::move(m_TOTdistributions[modHash])));
545 name.str(""); name.clear();
546 } // End of if ibl 2d
547
548 // Category: LB1-100, 101-200, ...
549 if (0 <= iblFeHash) { // IBL
550 for (int i=0; i<m_perLB_n; i++) {
551 LBCategory = "LB" + std::to_string(m_perLB_min+m_perLB_step*i+1) + "-" + std::to_string(m_perLB_min+m_perLB_step*(i+1));
552 if (-6 <= modEta && modEta <= 5) { // IBL 2D
553 for (int chipId=0; chipId<=1; chipId++) { // FE chips in double module
554 int ibl2dHash;
555 if (chipId) {
556 if (modEta <= -1) ibl2dHash = m_nIblFes*i + iblFeHash; // C side, '_2'
557 else ibl2dHash = m_nIblFes*i + iblFeHash + chipId; // A side, '_2'
558 }
559 else {
560 if (modEta <= -1) ibl2dHash = m_nIblFes*i + iblFeHash + 1; // C side, '_1'
561 else ibl2dHash = m_nIblFes*i + iblFeHash; // A side, '_1'
562 }
563 std::string histTitle = onlineID + "_" + std::to_string(chipId+1);
564 // Occupancy Map
565 axisTitle = ";pixel_eta;pixel_phi;# hits/pixel/event";
566 name << "/histfile/" << LBCategory << "/" << occ2dDir << "/" << histoSuffix(bec,layer) << "/" << histTitle;
567 ATH_CHECK(m_tHistSvc->regHist(name.str(), std::move(m_occupancyMapsIBL2dLB[ibl2dHash])));
568 name.str(""); name.clear();
569
570 // ToT
571 axisTitle = ";ToT;# hits";
572 name << "/histfile/" << LBCategory << "/" << totDir << "/" << histoSuffix(bec,layer) << "/" << histTitle;
573 ATH_CHECK(m_tHistSvc->regHist(name.str(), std::move(m_TOTdistributionsIBL2dLB[ibl2dHash])));
574 name.str(""); name.clear();
575 }
576 }
577 else { // IBL 3D
578 int ibl2dHash = m_nIblFes*i + iblFeHash;
579 // Occupancy Map
580 axisTitle = ";pixel_eta;pixel_phi;# hits/pixel/event";
581 name << "/histfile/" << LBCategory << "/" << occ2dDir << "/" << histoSuffix(bec,layer) << "/" << onlineID;
582 ATH_CHECK(m_tHistSvc->regHist(name.str(), std::move(m_occupancyMapsIBL2dLB[ibl2dHash])));
583 name.str(""); name.clear();
584
585 // ToT
586 axisTitle = ";ToT;# hits";
587 name << "/histfile/" << LBCategory << "/" << totDir << "/" << histoSuffix(bec,layer) << "/" << onlineID;
588 ATH_CHECK(m_tHistSvc->regHist(name.str(), std::move(m_TOTdistributionsIBL2dLB[ibl2dHash])));
589 name.str(""); name.clear();
590 } // End of if ibl 2d
591 } // End of loop of category: LB
592 } // End of if IBL
593 } // end loop in detector elements
594
595 return StatusCode::SUCCESS;
596
597} // end finalize
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
const std::string histoSuffix(const int bec, const int layer)
const int m_pixModPixels
std::string getDCSIDFromPosition(int bec, int layer, int modPhi, int modEta)
ServiceHandle< ITHistSvc > m_tHistSvc
const InDetDD::PixelDetectorManager * m_pixman
const int m_fei4bPixels
Gaudi::Property< int > m_hist_lbMax
virtual Identifier identify() const override final
identifier of this detector element (inline)
int lb
Definition globals.cxx:23
double entries
Definition listroot.cxx:49
@ ident
Definition HitInfo.h:77

◆ getContext()

const EventContext & AthAlgorithm::getContext ( ) const
inherited

Deprecated methods (use the ones with EventContext).

Definition at line 90 of file AthAlgorithm.cxx.

90 {
91 return Gaudi::Hive::currentContext();
92}

◆ getDCSIDFromPosition()

std::string HitMapBuilder::getDCSIDFromPosition ( int bec,
int layer,
int modPhi,
int modEta )
private

Definition at line 27 of file HitMapBuilder.cxx.

27 {
28 for (unsigned int ii = 0; ii < m_pixelMapping.size(); ii++) {
29 if (m_pixelMapping[ii].second.size() != 4) {
30 ATH_MSG_FATAL("getDCSIDFromPosition: Vector size is not 4!");
31 return std::string("Error!");
32 }
33 if (m_pixelMapping[ii].second[0] != barrel_ec) continue;
34 if (m_pixelMapping[ii].second[1] != layer) continue;
35 if (m_pixelMapping[ii].second[2] != modPhi) continue;
36 if (m_pixelMapping[ii].second[3] != module_eta) continue;
37 return m_pixelMapping[ii].first;
38 }
39 ATH_MSG_FATAL("DCS ID is not found!");
40 return std::string("Error!");
41}
#define ATH_MSG_FATAL(x)
std::vector< std::pair< std::string, std::vector< int > > > m_pixelMapping

◆ histoSuffix()

const std::string HitMapBuilder::histoSuffix ( const int bec,
const int layer )
private

Definition at line 43 of file HitMapBuilder.cxx.

43 {
44 std::ostringstream out;
45 switch (bec) {
46 case 0:
47 if (layer==0) out << "IBL";
48 else out << "B" << layer-1;
49 break;
50 case +2: out << "Disk" << layer+1 << "A"; break;
51 case -2: out << "Disk" << layer+1 << "C"; break;
52 case +4: out << "DBM" << layer+1 << "A"; break;
53 case -4: out << "DBM" << layer+1 << "C"; break;
54 default: break;
55 }
56 return out.str();
57}

◆ initialize()

StatusCode HitMapBuilder::initialize ( )

Definition at line 79 of file HitMapBuilder.cxx.

79 {
80 ATH_MSG_INFO("Initializing HitMapBuilder");
81
82 ATH_CHECK(m_pixelRDOKey.initialize());
83
84 // retrieve THistSvc
85 StatusCode sc = m_tHistSvc.retrieve();
86 if (!sc.isSuccess()) {
87 ATH_MSG_FATAL("Unable to retrieve THistSvc");
88 return StatusCode::FAILURE;
89 }
90 // retrieve PixelDetectorManager
91 sc = detStore()->retrieve(m_pixman,"Pixel");
92 if (!sc.isSuccess()) {
93 ATH_MSG_FATAL("Unable to retrieve PixelDetectorManager");
94 return StatusCode::FAILURE;
95 }
96
97 // retrieve PixelID helper
98 sc = detStore()->retrieve(m_pixelID, "PixelID");
99 if (!sc.isSuccess()) {
100 ATH_MSG_FATAL("Unable to retrieve PixelID helper");
101 return StatusCode::FAILURE;
102 }
103
104 // resize vectors of histograms
105 const Identifier::size_type maxHash = m_pixelID->wafer_hash_max();
106 ATH_MSG_DEBUG("PixelID maxHash = " << maxHash);
107 m_occupancyMaps.resize(maxHash+m_nIblFes);
109 m_TOTdistributions.resize(maxHash+m_nIblFes);
111 m_occupancyLB.resize(maxHash+m_nIblFes);
112
113 // Resize vector of variables
116
117 return (registerHistograms());
118}
static Double_t sc
const ServiceHandle< StoreGateSvc > & detStore() const
StatusCode registerHistograms()
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::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.

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 111 of file AthAlgorithm.h.

111{ return false; }

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< Gaudi::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< Gaudi::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.

◆ registerHistograms()

StatusCode HitMapBuilder::registerHistograms ( )
private

Definition at line 121 of file HitMapBuilder.cxx.

121 {
122 const std::string mapFile = "PixelMapping_Run2.dat";
123
124 std::vector<std::string> paths = splitter(std::getenv("DATAPATH"), ':');
125 bool found(false);
126 for (const auto& x : paths) {
127 std::ifstream infile((x+"/"+mapFile).c_str());
128 if (infile.is_open()) {
129 ATH_MSG_INFO("Mapping file '" << mapFile << "' found in " << x);
130
131 int tmp_barrel_ec; int tmp_layer; int tmp_modPhi; int tmp_module_eta; std::string tmp_module_name;
132 std::vector<int> tmp_position;
133 tmp_position.resize(4);
134 while(infile >> tmp_barrel_ec >> tmp_layer >> tmp_modPhi >> tmp_module_eta >> tmp_module_name) {
135 tmp_position[0] = tmp_barrel_ec;
136 tmp_position[1] = tmp_layer;
137 tmp_position[2] = tmp_modPhi;
138 tmp_position[3] = tmp_module_eta;
139 m_pixelMapping.push_back(std::make_pair(tmp_module_name, tmp_position));
140 }
141
142 found=true;
143 infile.close();
144 break;
145 }
146 }
147
148 if (!found) {
149 ATH_MSG_FATAL("Mapping file '" << mapFile << "' not found in DATAPATH !!!");
150 return StatusCode::FAILURE;
151 }
152
153 // Register event histogram
154 m_nEventsHist = std::make_unique<TH1F>("NEvents", "NEvents;;# events", 1, 0, 1);
155 m_nEventsLBHist = std::make_unique<TH1F>("NEventsLB", "NEventsLB;LB;# events", m_hist_lbMax, -0.5, m_hist_lbMax+0.5);
156
157 // Regist TDirectory first
158 // HARD CODING, TODO do in a smarter way
159 std::vector<std::pair<int, int>> temp_bec_layer{std::make_pair(2, 3), std::make_pair(-2, 3), std::make_pair(0, 4)};
160 std::vector<std::string> temp_dir{"Occupancy2d", "OccupancyLb", "ToT"};
161 for (auto const& bl : temp_bec_layer) {
162 for (int l=0; l<bl.second; l++) {
163 for (auto const& d: temp_dir) {
164 std::string temp_str = "/histfile/All/" + d + "/" + histoSuffix(bl.first, l) + "/" + d + histoSuffix(bl.first, l);
165 std::unique_ptr<TH1F>temp_h1d = std::make_unique<TH1F>((d+histoSuffix(bl.first, l)).c_str(), (d+histoSuffix(bl.first, l)).c_str(), 1, 0, 1);
166 ATH_CHECK(m_tHistSvc->regHist(temp_str.c_str(), std::move(temp_h1d)));
167 ATH_CHECK(m_tHistSvc->deReg(temp_str));
168 }
169 }
170 }
171
172 for (InDetDD::SiDetectorElementCollection::const_iterator iter=m_pixman->getDetectorElementBegin(); iter!=m_pixman->getDetectorElementEnd(); ++iter) {
173 const InDetDD::SiDetectorElement* element = *iter;
174 if (!element) continue;
175
176 Identifier ident = element->identify();
177 if (!m_pixelID->is_pixel(ident)) continue;
178
179 int bec = m_pixelID->barrel_ec(ident);
180 int layer = m_pixelID->layer_disk(ident);
181 int modPhi = m_pixelID->phi_module(ident);
182 int modEta = m_pixelID->eta_module(ident);
183 int modHash = m_pixelID->wafer_hash(ident);
184 const Identifier::size_type maxHash = m_pixelID->wafer_hash_max();
185
186 if (abs(bec) == 4) continue; // Skip DBM
187
188 int iblFeHash = -99;
189 // Use special fe chip index for IBL
190 // {0..3}: 3D C, C8_2, C8_1, C7_2, C7_1
191 // {4..15}: 2D C, C6_2, C6_1, ..., C1_2, C1_1
192 // {16..27}: 2D A, A1_1, A1_2, ..., A6_1, A6_2
193 // {28..31}: 3D A, A7_1, A7_2, A8_1, A8_2
194 if (bec == 0 && layer == 0) {
195 if (modEta <= -7) iblFeHash = modPhi*32 + (modEta+10); // 3D C
196 else if (-6<=modEta && modEta<=5) iblFeHash = modPhi*32 + ((modEta+6)*2+4); // 2D
197 else iblFeHash = modPhi*32 + (modEta+22); // 3D A
198 // iblFeHash, here, is even
199 }
200
201 std::string onlineID = getDCSIDFromPosition(bec,layer,modPhi,modEta);
202
203 std::ostringstream name;
204 std::string axisTitle;
205
206 // Construct IBL Planar later
207 std::string LBCategory;
208 std::string occ2dDir = "Occupancy2d";
209 std::string occLBDir = "OccupancyLb";
210 std::string totDir = "ToT";
211
212 // Category: All
213 LBCategory = "All";
214 if (bec == 0 && layer == 0 && -6 <= modEta && modEta <= 5) { // IBL 2D
215 for (unsigned chipId=0; chipId<=1; chipId++) { // FE chips in double module
216 int ibl2dHash;
217 if (chipId) {
218 if (modEta <= -1) ibl2dHash = maxHash + iblFeHash; // C side, '_2'
219 else ibl2dHash = maxHash + iblFeHash + chipId; // A side, '_2'
220 }
221 else {
222 if (modEta <= -1) ibl2dHash = maxHash + iblFeHash + 1; // C side, '_1'
223 else ibl2dHash = maxHash + iblFeHash; // A side, '_1'
224 }
225 std::string histTitle = onlineID + "_" + std::to_string(chipId+1);
226 // Occupancy Map
227 axisTitle = ";pixel_eta;pixel_phi;# hits/pixel/event";
228 m_occupancyMaps[ibl2dHash] = std::make_unique<TH2F>(histTitle.c_str(), (histTitle+axisTitle).c_str(), 80, -0.5, 79.5, 336, -0.5, 335.5);
229 name << "/histfile/" << LBCategory << "/" << occ2dDir << "/" << histoSuffix(bec,layer) << "/" << onlineID << "_" << chipId+1;
230 name.str(""); name.clear();
231 m_occupancyMaps[ibl2dHash]->SetOption("colz");
232
233 // Occupancy vs. LB
234 axisTitle = ";LB;# hits/pixel/event";
235 m_occupancyLB[ibl2dHash] = std::make_unique<TH1F>(histTitle.c_str(), (histTitle+axisTitle).c_str(), m_hist_lbMax, -0.5, m_hist_lbMax-0.5);
236 name << "/histfile/" << LBCategory << "/" << occLBDir << "/" << histoSuffix(bec,layer) << "/" << onlineID << "_" << chipId+1;
237 name.str(""); name.clear();
238
239 // ToT
240 axisTitle = ";ToT;# hits";
241 m_TOTdistributions[ibl2dHash] = std::make_unique<TH1F>(histTitle.c_str(), (histTitle+axisTitle).c_str(), 19, -0.5, 18.5);
242 name << "/histfile/" << LBCategory << "/" << totDir << "/" << histoSuffix(bec,layer) << "/" << onlineID << "_" << chipId+1;
243 name.str(""); name.clear();
244 }
245 }
246 else { // None IBL 2D
247 // Occupancy Map
248 axisTitle = ";pixel_eta;pixel_phi;# hits/pixel/event";
249 if (bec == 0 && layer == 0) {
250 m_occupancyMaps[modHash] = std::make_unique<TH2F>(onlineID.c_str(), (onlineID+axisTitle).c_str(), 80, -0.5, 79.5, 336, -0.5, 335.5); // IBL 3D
251 }
252 else {
253 m_occupancyMaps[modHash] = std::make_unique<TH2F>(onlineID.c_str(), (onlineID+axisTitle).c_str(), 144, -0.5, 143.5, 328, -0.5, 327.5);
254 }
255 name << "/histfile/" << LBCategory << "/" << occ2dDir << "/" << histoSuffix(bec,layer) << "/" << onlineID;
256 name.str(""); name.clear();
257 m_occupancyMaps[modHash].get()->SetOption("colz");
258
259 // Occupancy vs. LB
260 axisTitle = ";LB;# hits/pixel/event";
261 m_occupancyLB[modHash] = std::make_unique<TH1F>(onlineID.c_str(), (onlineID+axisTitle).c_str(), m_hist_lbMax, -0.5, m_hist_lbMax-0.5);
262 name << "/histfile/" << LBCategory << "/" << occLBDir << "/" << histoSuffix(bec,layer) << "/" << onlineID;
263 name.str(""); name.clear();
264
265 // ToT
266 axisTitle = ";ToT;# hits";
267 if (bec == 0 && layer == 0) {
268 m_TOTdistributions[modHash] = std::make_unique<TH1F>(onlineID.c_str(), (onlineID+axisTitle).c_str(), 19, -0.5, 18.5); // IBL 3D
269 }
270 else {
271 m_TOTdistributions[modHash] = std::make_unique<TH1F>(onlineID.c_str(), (onlineID+axisTitle).c_str(), 256, -0.5, 255.5);
272 }
273 name << "/histfile/" << LBCategory << "/" << totDir << "/" << histoSuffix(bec,layer) << "/" << onlineID;
274 name.str(""); name.clear();
275 } // End of if ibl 2d
276
277 // Category: LB1-100, 101-200, ...
278 if (0 <= iblFeHash) { // IBL
279 for (int i=0; i<m_perLB_n; i++) {
280 LBCategory = "LB" + std::to_string(m_perLB_min+m_perLB_step*i+1) + "-" + std::to_string(m_perLB_min+m_perLB_step*(i+1));
281 if (-6 <= modEta && modEta <= 5) { // IBL 2D
282 for (int chipId=0; chipId<=1; chipId++) { // FE chips in double module
283 int ibl2dHash;
284 if (chipId) {
285 if (modEta <= -1) ibl2dHash = m_nIblFes*i + iblFeHash; // C side, '_2'
286 else ibl2dHash = m_nIblFes*i + iblFeHash + chipId; // A side, '_2'
287 }
288 else {
289 if (modEta <= -1) ibl2dHash = m_nIblFes*i + iblFeHash + 1; // C side, '_1'
290 else ibl2dHash = m_nIblFes*i + iblFeHash; // A side, '_1'
291 }
292 std::string histTitle = onlineID + "_" + std::to_string(chipId+1);
293 // Occupancy Map
294 axisTitle = ";pixel_eta;pixel_phi;# hits/pixel/event";
295 m_occupancyMapsIBL2dLB[ibl2dHash] = std::make_unique<TH2F>(histTitle.c_str(), (histTitle+axisTitle).c_str(), 80, -0.5, 79.5, 336, -0.5, 335.5);
296 name << "/histfile/" << LBCategory << "/" << occ2dDir << "/" << histoSuffix(bec,layer) << "/" << histTitle;
297 name.str(""); name.clear();
298 m_occupancyMapsIBL2dLB[ibl2dHash]->SetOption("colz");
299
300 // ToT
301 axisTitle = ";ToT;# hits";
302 m_TOTdistributionsIBL2dLB[ibl2dHash] = std::make_unique<TH1F>(histTitle.c_str(), (histTitle+axisTitle).c_str(), 19, -0.5, 18.5);
303 name << "/histfile/" << LBCategory << "/" << totDir << "/" << histoSuffix(bec,layer) << "/" << histTitle;
304 name.str(""); name.clear();
305 }
306 }
307 else { // IBL 3D
308 int ibl2dHash = m_nIblFes*i + iblFeHash;
309 // Occupancy Map
310 axisTitle = ";pixel_eta;pixel_phi;# hits/pixel/event";
311 m_occupancyMapsIBL2dLB[ibl2dHash] = std::make_unique<TH2F>(onlineID.c_str(), (onlineID+axisTitle).c_str(), 80, -0.5, 79.5, 336, -0.5, 335.5);
312 name << "/histfile/" << LBCategory << "/" << occ2dDir << "/" << histoSuffix(bec,layer) << "/" << onlineID;
313 name.str(""); name.clear();
314 m_occupancyMapsIBL2dLB[ibl2dHash]->SetOption("colz");
315
316 // ToT
317 axisTitle = ";ToT;# hits";
318 m_TOTdistributionsIBL2dLB[ibl2dHash] = std::make_unique<TH1F>(onlineID.c_str(), (onlineID+axisTitle).c_str(), 19, -0.5, 18.5);
319 name << "/histfile/" << LBCategory << "/" << totDir << "/" << histoSuffix(bec,layer) << "/" << onlineID;
320 name.str(""); name.clear();
321 } // End of if ibl 2d
322 } // End of loop of category: LB
323 } // End of if IBL
324 } // end loop in detector elements
325
326 return StatusCode::SUCCESS;
327}
#define x
std::vector< std::string > & splitter(const std::string &str, char delim, std::vector< std::string > &elems)
l
Printing final latex table to .tex output file.
list paths
Definition grepfile.py:35

◆ 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< Gaudi::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< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed() [1/2]

void AthAlgorithm::setFilterPassed ( bool state) const
inherited

Definition at line 102 of file AthAlgorithm.cxx.

102 {
103 setFilterPassed( state, Gaudi::Hive::currentContext() );
104}
void setFilterPassed(bool state) const

◆ setFilterPassed() [2/2]

void AthAlgorithm::setFilterPassed ( bool state,
const EventContext & ctx ) const
inherited

Definition at line 106 of file AthAlgorithm.cxx.

106 {
107 execState( ctx ).setFilterPassed(state);
108}

◆ splitter() [1/2]

std::vector< std::string > HitMapBuilder::splitter ( const std::string & str,
char delim )
private

Definition at line 68 of file HitMapBuilder.cxx.

68 {
69 std::vector<std::string> elems;
70 splitter(str, delim, elems);
71 return elems;
72}

◆ splitter() [2/2]

std::vector< std::string > & HitMapBuilder::splitter ( const std::string & str,
char delim,
std::vector< std::string > & elems )
private

Definition at line 59 of file HitMapBuilder.cxx.

59 {
60 std::stringstream ss(str);
61 std::string item;
62 while (std::getline(ss, item, delim)) {
63 elems.push_back(item);
64 }
65 return elems;
66}
static Double_t ss

◆ 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< Gaudi::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)
#define ATH_MSG_WARNING(x)
virtual StatusCode sysInitialize() override
Override sysInitialize.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::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< Gaudi::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 }

Member Data Documentation

◆ m_detStore

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

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evt_lbMax

Gaudi::Property<int> HitMapBuilder::m_evt_lbMax {this,"LBMax",-1,"Last lumi block to consider"}
private

Definition at line 90 of file HitMapBuilder.h.

90{this,"LBMax",-1,"Last lumi block to consider"}; // upper limit for LB to be taken into account

◆ m_evt_lbMin

Gaudi::Property<int> HitMapBuilder::m_evt_lbMin {this,"LBMin",0,"First lumi block to consider"}
private

Definition at line 89 of file HitMapBuilder.h.

89{this,"LBMin",0,"First lumi block to consider"}; // lower limit for LB to be taken into account

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::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 114 of file AthAlgorithm.h.

◆ m_fei4bPixels

const int HitMapBuilder::m_fei4bPixels = 26880
private

Definition at line 98 of file HitMapBuilder.h.

◆ m_hist_lbMax

Gaudi::Property<int> HitMapBuilder::m_hist_lbMax {this,"nLBmax", 3001, "Maximum number of LB (for histograms binning)"}
private

Definition at line 88 of file HitMapBuilder.h.

88{this,"nLBmax", 3001, "Maximum number of LB (for histograms binning)"}; // max number of LB

◆ m_LBrange_max

int HitMapBuilder::m_LBrange_max = -9999
private

Definition at line 92 of file HitMapBuilder.h.

◆ m_nEvents

double HitMapBuilder::m_nEvents =0
private

Definition at line 76 of file HitMapBuilder.h.

◆ m_nEventsHist

std::unique_ptr<TH1F> HitMapBuilder::m_nEventsHist
private

Definition at line 80 of file HitMapBuilder.h.

◆ m_nEventsLB

std::vector<double> HitMapBuilder::m_nEventsLB
private

Definition at line 77 of file HitMapBuilder.h.

◆ m_nEventsLBCategory

std::vector<double> HitMapBuilder::m_nEventsLBCategory
private

Definition at line 78 of file HitMapBuilder.h.

◆ m_nEventsLBHist

std::unique_ptr<TH1F> HitMapBuilder::m_nEventsLBHist
private

Definition at line 81 of file HitMapBuilder.h.

◆ m_nIblFes

const unsigned int HitMapBuilder::m_nIblFes = 14 * (4 + 6*2) * 2
private

Definition at line 94 of file HitMapBuilder.h.

◆ m_occupancyLB

std::vector<std::unique_ptr<TH1F> > HitMapBuilder::m_occupancyLB
private

Definition at line 86 of file HitMapBuilder.h.

◆ m_occupancyMaps

std::vector<std::unique_ptr<TH2F> > HitMapBuilder::m_occupancyMaps
private

Definition at line 82 of file HitMapBuilder.h.

◆ m_occupancyMapsIBL2dLB

std::vector<std::unique_ptr<TH2F> > HitMapBuilder::m_occupancyMapsIBL2dLB
private

Definition at line 83 of file HitMapBuilder.h.

◆ m_perLB_max

const int HitMapBuilder::m_perLB_max =3000
private

Definition at line 95 of file HitMapBuilder.h.

◆ m_perLB_min

const int HitMapBuilder::m_perLB_min =0
private

Definition at line 95 of file HitMapBuilder.h.

◆ m_perLB_n

const int HitMapBuilder::m_perLB_n = (m_perLB_max-m_perLB_min)/m_perLB_step
private

Definition at line 96 of file HitMapBuilder.h.

◆ m_perLB_step

const int HitMapBuilder::m_perLB_step =100
private

Definition at line 95 of file HitMapBuilder.h.

◆ m_pixelID

const PixelID* HitMapBuilder::m_pixelID =nullptr
private

Definition at line 71 of file HitMapBuilder.h.

◆ m_pixelMapping

std::vector< std::pair< std::string, std::vector<int> > > HitMapBuilder::m_pixelMapping
private

Definition at line 74 of file HitMapBuilder.h.

◆ m_pixelRDOKey

SG::ReadHandleKey<PixelRDO_Container> HitMapBuilder::m_pixelRDOKey {this,"PixelRDOKey","PixelRDOs","StoreGate Key of Pixel RDOs"}
private

Definition at line 68 of file HitMapBuilder.h.

68{this,"PixelRDOKey","PixelRDOs","StoreGate Key of Pixel RDOs"};

◆ m_pixman

const InDetDD::PixelDetectorManager* HitMapBuilder::m_pixman =nullptr
private

Definition at line 70 of file HitMapBuilder.h.

◆ m_pixModPixels

const int HitMapBuilder::m_pixModPixels = 46080
private

Definition at line 99 of file HitMapBuilder.h.

◆ m_tHistSvc

ServiceHandle<ITHistSvc> HitMapBuilder::m_tHistSvc {this, "THistSvc", "THistSvc/THistSvc"}
private

Definition at line 67 of file HitMapBuilder.h.

67{this, "THistSvc", "THistSvc/THistSvc"};

◆ m_TOTdistributions

std::vector<std::unique_ptr<TH1F> > HitMapBuilder::m_TOTdistributions
private

Definition at line 84 of file HitMapBuilder.h.

◆ m_TOTdistributionsIBL2dLB

std::vector<std::unique_ptr<TH1F> > HitMapBuilder::m_TOTdistributionsIBL2dLB
private

Definition at line 85 of file HitMapBuilder.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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