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

#include <CaloCellContainerSD.h>

Inheritance diagram for CaloCellContainerSD:
Collaboration diagram for CaloCellContainerSD:

Public Member Functions

 CaloCellContainerSD (const std::string &name, const std::string &CaloCellContainerName, PublicToolHandle< ICaloCellMakerTool > FastHitConvertTool)
 ~CaloCellContainerSD ()
void StartOfAthenaEvent (const EventContext &ctx)
void EndOfAthenaEvent (const EventContext &ctx)
G4bool ProcessHits (G4Step *, G4TouchableHistory *) override final
void recordCells (TFCSSimulationState &)

Protected Attributes

PublicToolHandle< ICaloCellMakerToolm_EmptyCellBuilderTool
SG::WriteHandle< CaloCellContainerm_caloCellContainer
PublicToolHandle< ICaloCellMakerToolm_FastHitConvertTool

Detailed Description

Definition at line 21 of file CaloCellContainerSD.h.

Constructor & Destructor Documentation

◆ CaloCellContainerSD()

CaloCellContainerSD::CaloCellContainerSD ( const std::string & name,
const std::string & CaloCellContainerName,
PublicToolHandle< ICaloCellMakerTool > FastHitConvertTool )

Definition at line 17 of file CaloCellContainerSD.cxx.

18 : G4VSensitiveDetector( name ),
19 m_EmptyCellBuilderTool("EmptyCellBuilderTool/EmptyCellBuilderTool"),
20 m_caloCellContainer (CaloCellContainerName),
21 m_FastHitConvertTool (std::move(FastHitConvertTool))
22{
23 if(m_EmptyCellBuilderTool.retrieve().isFailure()) {
24 G4Exception("CaloCellContainerSD", "FailedEmptyCellBuilderToolRetrieval", FatalException, "CaloCellContainerSD: Failed to retrieve the empty cell builder tool.");
25 abort();
26 }
27}
PublicToolHandle< ICaloCellMakerTool > m_FastHitConvertTool
PublicToolHandle< ICaloCellMakerTool > m_EmptyCellBuilderTool
SG::WriteHandle< CaloCellContainer > m_caloCellContainer

◆ ~CaloCellContainerSD()

CaloCellContainerSD::~CaloCellContainerSD ( )
inline

Definition at line 25 of file CaloCellContainerSD.h.

25{}

Member Function Documentation

◆ EndOfAthenaEvent()

void CaloCellContainerSD::EndOfAthenaEvent ( const EventContext & ctx)

Definition at line 43 of file CaloCellContainerSD.cxx.

43 {
44
45 // Update the calo iterators of the calo cell container
46 m_caloCellContainer->updateCaloIterators();
47
48 // Convert FastCaloSim hits into HitCollections, taking into account sampling fractions
49 if(m_FastHitConvertTool->process(&*m_caloCellContainer, ctx).isFailure()){
50 G4Exception("CaloCellContainerSD", "FailedFastHitConvertToolProcess", FatalException, "CaloCellContainerSD: Failed to process calo cell container with the fast hit convert tool.");
51 abort();
52 }
53
54 return;
55}

◆ ProcessHits()

G4bool CaloCellContainerSD::ProcessHits ( G4Step * ,
G4TouchableHistory *  )
finaloverride

Definition at line 57 of file CaloCellContainerSD.cxx.

57 {
58 // This method needs to be implemented when deriving from G4VSensitiveDetector has no use in this case
59 G4Exception("CaloCellContainerSD", "UndefinedProcessHitsCall", FatalException, "CaloCellContainerSD: Call to undefined ProcessHits.");
60 abort();
61 return true;
62}

◆ recordCells()

void CaloCellContainerSD::recordCells ( TFCSSimulationState & simState)

Definition at line 65 of file CaloCellContainerSD.cxx.

66{
67 // Add the energies from the simulation state to the CaloCellContainer
68 for(const auto& icell : simState.cells()) {
69 CaloCell* caloCell = (CaloCell*)m_caloCellContainer->findCell(icell.first->calo_hash());
70 caloCell->addEnergy(icell.second);
71 }
72
73}
void addEnergy(float energy)
add energy
Definition CaloCell.h:449

◆ StartOfAthenaEvent()

void CaloCellContainerSD::StartOfAthenaEvent ( const EventContext & ctx)

Definition at line 30 of file CaloCellContainerSD.cxx.

30 {
31
32 if (!m_caloCellContainer.isValid()) m_caloCellContainer = std::make_unique<CaloCellContainer>(SG::VIEW_ELEMENTS);
33
34 //Initialize cell container with empty cells
35 if(m_EmptyCellBuilderTool->process(&*m_caloCellContainer, ctx).isFailure()){
36 G4Exception("CaloCellContainerSD", "FailedEmptyCellBuilderToolProcess", FatalException, "CaloCellContainerSD: Failed to process calo cell container with the empty cell builder tool.");
37 abort();
38 }
39
40 return;
41}
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts

Member Data Documentation

◆ m_caloCellContainer

SG::WriteHandle<CaloCellContainer> CaloCellContainerSD::m_caloCellContainer
protected

Definition at line 43 of file CaloCellContainerSD.h.

◆ m_EmptyCellBuilderTool

PublicToolHandle<ICaloCellMakerTool> CaloCellContainerSD::m_EmptyCellBuilderTool
protected

Definition at line 41 of file CaloCellContainerSD.h.

◆ m_FastHitConvertTool

PublicToolHandle<ICaloCellMakerTool> CaloCellContainerSD::m_FastHitConvertTool
protected

Definition at line 45 of file CaloCellContainerSD.h.


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