Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
B5::HadCalorimeterSD Class Reference

Hadron calorimeter sensitive detector. More...

#include <Doxymodules_basic.h>

Inheritance diagram for B5::HadCalorimeterSD:
G4VSensitiveDetector

Public Member Functions

 HadCalorimeterSD (G4String name)
 
 ~HadCalorimeterSD () override=default
 
void Initialize (G4HCofThisEvent *HCE) override
 
G4bool ProcessHits (G4Step *aStep, G4TouchableHistory *ROhist) override
 

Private Attributes

HadCalorimeterHitsCollectionfHitsCollection = nullptr
 
G4int fHCID = -1
 

Detailed Description

Hadron calorimeter sensitive detector.

Definition at line 193 of file Doxymodules_basic.h.

Constructor & Destructor Documentation

◆ HadCalorimeterSD()

B5::HadCalorimeterSD::HadCalorimeterSD ( G4String  name)

Definition at line 46 of file HadCalorimeterSD.cc.

48{
49 collectionName.insert("HadCalorimeterColl");
50}

◆ ~HadCalorimeterSD()

B5::HadCalorimeterSD::~HadCalorimeterSD ( )
overridedefault

Member Function Documentation

◆ Initialize()

void B5::HadCalorimeterSD::Initialize ( G4HCofThisEvent HCE)
override

Definition at line 54 of file HadCalorimeterSD.cc.

55{
57 = new HadCalorimeterHitsCollection(SensitiveDetectorName,collectionName[0]);
58 if (fHCID<0) {
59 fHCID = G4SDManager::GetSDMpointer()->GetCollectionID(fHitsCollection);
60 }
61 hce->AddHitsCollection(fHCID,fHitsCollection);
62
63 // fill calorimeter hits with zero energy deposition
64 for (auto column=0;column<kNofHadColumns;column++) {
65 for (auto row=0;row<kNofHadRows;row++) {
66 fHitsCollection->insert(new HadCalorimeterHit());
67 }
68 }
69}
HadCalorimeterHitsCollection * fHitsCollection
G4THitsCollection< HadCalorimeterHit > HadCalorimeterHitsCollection
constexpr G4int kNofHadRows
Definition Constants.hh:45
constexpr G4int kNofHadColumns
Definition Constants.hh:44

◆ ProcessHits()

G4bool B5::HadCalorimeterSD::ProcessHits ( G4Step aStep,
G4TouchableHistory ROhist 
)
override

Definition at line 73 of file HadCalorimeterSD.cc.

74{
75 auto edep = step->GetTotalEnergyDeposit();
76 if (edep==0.) return true;
77
78 auto touchable = step->GetPreStepPoint()->GetTouchable();
79 auto rowNo = touchable->GetCopyNumber(2);
80 auto columnNo = touchable->GetCopyNumber(3);
81 auto hitID = kNofHadRows*columnNo+rowNo;
82 auto hit = (*fHitsCollection)[hitID];
83
84 // check if it is first touch
85 if (hit->GetColumnID()<0) {
86 hit->SetColumnID(columnNo);
87 hit->SetRowID(rowNo);
88 auto depth = touchable->GetHistory()->GetDepth();
89 auto transform = touchable->GetHistory()->GetTransform(depth-2);
90 transform.Invert();
91 hit->SetRot(transform.NetRotation());
92 hit->SetPos(transform.NetTranslation());
93 }
94 // add energy deposition
95 hit->AddEdep(edep);
96
97 return true;
98}

Member Data Documentation

◆ fHitsCollection

HadCalorimeterHitsCollection* B5::HadCalorimeterSD::fHitsCollection = nullptr
private

Definition at line 56 of file HadCalorimeterSD.hh.

◆ fHCID

G4int B5::HadCalorimeterSD::fHCID = -1
private

Definition at line 57 of file HadCalorimeterSD.hh.


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

Applications | User Support | Publications | Collaboration