LDMX Software
simcore::bertini::CascadeHistoryStore Class Reference

Thread-local singleton for cascade histories during simulation. More...

#include <CascadeHistoryStore.h>

Public Member Functions

void clear ()
 
void addHistory (int trackId, ldmx::CascadeHistory history)
 
bool empty () const
 
size_t size () const
 
const std::map< int, ldmx::CascadeHistory > & getHistories () const
 
std::map< int, ldmx::CascadeHistoryextractHistories ()
 Moves histories out and clears store.
 
bool hasHistory (int trackId) const
 
const ldmx::CascadeHistorygetHistory (int trackId) const
 

Static Public Member Functions

static CascadeHistoryStoregetInstance ()
 

Private Member Functions

 CascadeHistoryStore (const CascadeHistoryStore &)=delete
 
CascadeHistoryStoreoperator= (const CascadeHistoryStore &)=delete
 

Private Attributes

std::map< int, ldmx::CascadeHistoryhistories_
 

Detailed Description

Thread-local singleton for cascade histories during simulation.

Stores histories keyed by initiating photon track ID. Thread-local for multi-threaded Geant4. Call clear() at event start, extractHistories() at event end.

Definition at line 24 of file CascadeHistoryStore.h.

Member Function Documentation

◆ addHistory()

void simcore::bertini::CascadeHistoryStore::addHistory ( int trackId,
ldmx::CascadeHistory history )

Definition at line 16 of file CascadeHistoryStore.cxx.

17 {
18 // If there's already a history for this track, merge or replace
19 // For now, we replace (shouldn't happen unless track ID recycling)
20 histories_[trackId] = std::move(history);
21}

◆ clear()

void simcore::bertini::CascadeHistoryStore::clear ( )
inline

Definition at line 28 of file CascadeHistoryStore.h.

28{ histories_.clear(); }

◆ empty()

bool simcore::bertini::CascadeHistoryStore::empty ( ) const
inline

Definition at line 30 of file CascadeHistoryStore.h.

30{ return histories_.empty(); }

◆ extractHistories()

std::map< int, ldmx::CascadeHistory > simcore::bertini::CascadeHistoryStore::extractHistories ( )

Moves histories out and clears store.

Definition at line 23 of file CascadeHistoryStore.cxx.

23 {
24 std::map<int, ldmx::CascadeHistory> result = std::move(histories_);
25 histories_.clear();
26 return result;
27}

◆ getHistories()

const std::map< int, ldmx::CascadeHistory > & simcore::bertini::CascadeHistoryStore::getHistories ( ) const
inline

Definition at line 33 of file CascadeHistoryStore.h.

33 {
34 return histories_;
35 }

◆ getHistory()

const ldmx::CascadeHistory * simcore::bertini::CascadeHistoryStore::getHistory ( int trackId) const

Definition at line 29 of file CascadeHistoryStore.cxx.

29 {
30 auto it = histories_.find(trackId);
31 if (it != histories_.end()) {
32 return &it->second;
33 }
34 return nullptr;
35}

◆ getInstance()

CascadeHistoryStore & simcore::bertini::CascadeHistoryStore::getInstance ( )
static

Definition at line 10 of file CascadeHistoryStore.cxx.

10 {
11 // Meyer's singleton, thread_local for MT Geant4
12 thread_local CascadeHistoryStore instance;
13 return instance;
14}

◆ hasHistory()

bool simcore::bertini::CascadeHistoryStore::hasHistory ( int trackId) const
inline

Definition at line 40 of file CascadeHistoryStore.h.

40 {
41 return histories_.find(trackId) != histories_.end();
42 }

◆ size()

size_t simcore::bertini::CascadeHistoryStore::size ( ) const
inline

Definition at line 31 of file CascadeHistoryStore.h.

31{ return histories_.size(); }

Member Data Documentation

◆ histories_

std::map<int, ldmx::CascadeHistory> simcore::bertini::CascadeHistoryStore::histories_
private

Definition at line 52 of file CascadeHistoryStore.h.


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