Loading...
Searching...
No Matches
IonLet.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27/// \file radiobiology/src/IonLet.cc
28/// \brief Implementation of the RadioBio::IonLet class
29
30#include "IonLet.hh"
31
32namespace RadioBio
33{
34
35//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
36
37IonLet::IonLet(G4int trackID, G4int PDG, G4String fullname, G4String name, G4int Z, G4int A,
38 G4int voxNumber)
39 : fIsPrimary(trackID == 1), fPDGencoding(PDG), fFullName(fullname), fName(name), fZ(Z), fA(A)
40{
41 fLETDN = array_type(0.0, voxNumber);
42 fLETDD = array_type(0.0, voxNumber);
43 fLETTN = array_type(0.0, voxNumber);
44 fLETTD = array_type(0.0, voxNumber);
45
46 fLETD = array_type(0.0, voxNumber);
47 fLETT = array_type(0.0, voxNumber);
48}
49
50//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
51
52void IonLet::Update(G4int voxel, G4double DE, G4double DEELETrons, G4double Lsn, G4double DX)
53{
54 // ions dose LET Numerator, including secondary electrons energy deposit
55 fLETDN[voxel] += (DE + DEELETrons) * Lsn;
56 // ions dose LET Denominator, including secondary electrons energy deposit
57 fLETDD[voxel] += DE + DEELETrons;
58 // ions track LET Numerator
59 fLETTN[voxel] += DX * Lsn;
60 // ions track LET Denominator
61 fLETTD[voxel] += DX;
62}
63
64//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
65
66void IonLet::Merge(const IonLet* rhs)
67{
68 // If programmed correctly, this exception should never appear
69 if (rhs->GetPDGencoding() != fPDGencoding || rhs->IsPrimary() != fIsPrimary)
70 G4Exception("IonLet::merge", "mergingdifferentions", FatalException,
71 "Cannotmerge ions, probably merging of data from different ions");
72
73 fLETDN += rhs->GetLETDN();
74 fLETDD += rhs->GetLETDD();
75 fLETTN += rhs->GetLETTN();
76 fLETTD += rhs->GetLETTD();
77}
78
79//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
80
82{
83 for (unsigned int v = 0; v < fLETD.size(); v++) {
84 if (fLETDD[v] > 0.) fLETD[v] = fLETDN[v] / fLETDD[v];
85 if (fLETTD[v] > 0.) fLETT[v] = fLETTN[v] / fLETTD[v];
86 }
87}
88
89//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
90
91} // namespace RadioBio
Definition of the RadioBio::IonLet class.
class to save and hold data for LET of different ions
array_type fLETDN
Definition IonLet.hh:99
void Calculate()
Definition IonLet.cc:81
array_type fLETDD
Definition IonLet.hh:100
G4int GetPDGencoding() const
Definition IonLet.hh:53
void Merge(const IonLet *lhs)
Definition IonLet.cc:66
array_type GetLETDN() const
Definition IonLet.hh:60
array_type fLETTN
Definition IonLet.hh:101
array_type fLETTD
Definition IonLet.hh:102
array_type GetLETTD() const
Definition IonLet.hh:63
void Update(G4int voxel, G4double DE, G4double DEELETrons, G4double Lsn, G4double DX)
Definition IonLet.cc:52
array_type GetLETTN() const
Definition IonLet.hh:62
array_type GetLETDD() const
Definition IonLet.hh:61
array_type fLETD
Definition IonLet.hh:103
array_type fLETT
Definition IonLet.hh:104
std::valarray< G4double > array_type
Definition IonLet.hh:50
G4bool IsPrimary() const
Definition IonLet.hh:52
IonLet(G4int trackID, G4int PDG, G4String fullname, G4String name, G4int Z, G4int A, G4int voxNumber)
Definition IonLet.cc:37
G4int fPDGencoding
Definition IonLet.hh:91
G4bool fIsPrimary
Definition IonLet.hh:90

Applications | User Support | Publications | Collaboration