67{
68
70
71
72 G4double eKinPre = aStep->GetPreStepPoint()->GetKineticEnergy();
73
74 G4double eKinPost = aStep->GetPostStepPoint()->GetKineticEnergy();
75
76 G4double eKinMean = (eKinPre + eKinPost) * 0.5;
77
78 const std::vector<const G4Track*>* secondary = aStep->GetSecondaryInCurrentStep();
79
80 size_t SecondarySize = (*secondary).size();
81 G4double EnergySecondary = 0.;
82
83
84 if (SecondarySize)
85 {
86 for (size_t numsec = 0; numsec < SecondarySize; numsec++) {
87
88 G4int PDGSecondary = (*secondary)[numsec]->GetDefinition()->GetPDGEncoding();
89
90 if (PDGSecondary == 11)
91 {
92
93 EnergySecondary += (*secondary)[numsec]->GetKineticEnergy();
94 }
95 }
96 }
97
98
99 newHit->
SetTrackID(aStep->GetTrack()->GetTrackID());
100 newHit->
SetPartType(aStep->GetTrack()->GetParticleDefinition());
102 newHit->
SetDeltaE(aStep->GetTotalEnergyDeposit());
103 newHit->
SetEinit(aStep->GetPreStepPoint()->GetKineticEnergy());
107 newHit->
SetVoxelIndexes(aStep->GetPreStepPoint()->GetTouchableHandle());
108
109
111
112
113 for (G4int i = 0; i < G4AccumulableManager::Instance()->GetNofAccumulables(); ++i) {
114
115 G4VAccumulable* GenAcc = G4AccumulableManager::Instance()->GetAccumulable(i);
116
117
119
120 VRadiobiologicalAccumulable* radioAcc = dynamic_cast<VRadiobiologicalAccumulable*>(GenAcc);
121
122
123
124 if (radioAcc == nullptr) continue;
125
126
127 if (q->IsCalculationEnabled()) radioAcc->Accumulate(newHit);
128 }
129
130 return true;
131}
void SetTrackID(G4int track)
void SetEinit(G4double e)
void SetElectronEnergy(G4double elEnergy)
void SetPartType(const G4ParticleDefinition *part)
void SetDeltaE(double DeltaE)
void SetEkinMean(double EkinMean)
void SetVoxelIndexes(const G4TouchableHandle &TH)
void SetTrackLength(G4double x)
void SetPhysicalVolume(G4VPhysicalVolume *PV)
VRadiobiologicalQuantity * GetQuantity(G4String)
static Manager * GetInstance()