#include <ML2ExpVoxels.hh>
Definition at line 51 of file ML2ExpVoxels.hh.
CML2ExpVoxels::CML2ExpVoxels |
( |
G4bool |
bHasExperimentalData, |
|
|
G4int |
saving_in_Selected_Voxels_every_events, |
|
|
G4int |
seed, |
|
|
G4String |
FileExperimentalData, |
|
|
G4String |
FileExperimentalDataOut |
|
) |
| |
Definition at line 48 of file ML2ExpVoxels.cc.
50 stopCurve(0),chi2Factor(0)
53 sprintf(a,
"%d",
seed);
55 saving_in_Selected_Voxels_every_events=saveEvents;
59 fullFileOut=FileExperimentalDataOut+seedName+
".m";
60 fullFileIn=FileExperimentalData;
61 nParticle=nTotalEvents=0;
65 minZone.
set(extr, extr, extr);
66 maxZone.
set(-extr, -extr, -extr);
67 bHasExperimentalData=bData;
void set(double x, double y, double z)
std::vector< ExP01TrackerHit * > a
CML2ExpVoxels::~CML2ExpVoxels |
( |
void |
| ) |
|
Definition at line 165 of file ML2ExpVoxels.cc.
168 G4double depEnergy, density, voxelVolume;
184 for (
int i=0; i<(
int)voxels.size(); i++)
186 minPos=voxels[i].pos-voxels[i].halfSize;
187 maxPos=voxels[i].pos+voxels[i].halfSize;
192 voxelVolume=voxels[i].halfSize.getX()*voxels[i].halfSize.getY()*voxels[i].halfSize.getZ()*8.;
193 voxelMass=density*voxelVolume;
195 dose=depEnergy/(voxelMass*nRecycling);
197 nVoxelsgeometry[i]++;
198 voxels[i].depEnergy+=dose;
199 voxels[i].depEnergy2+=dose*dose;
217 if (nTotalEvents%saving_in_Selected_Voxels_every_events==0 && nTotalEvents>0)
G4ParticleDefinition * GetDefinition() const
G4Material * GetMaterial() const
G4double GetDensity() const
G4int GetPDGEncoding() const
G4StepPoint * GetPreStepPoint() const
const G4ThreeVector & GetMomentumDirection() const
G4VPhysicalVolume * GetPhysicalVolume() const
G4int primaryParticlePDGE
const G4ThreeVector & GetPosition() const
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
G4double GetTotalEnergyDeposit() const
G4LogicalVolume * GetLogicalVolume() const
G4Track * GetTrack() const
static const G4double pos
G4int CML2ExpVoxels::getMaxNumberOfEvents |
( |
| ) |
|
Definition at line 234 of file ML2ExpVoxels.cc.
236 int n=nVoxelsgeometry[0];
237 for (
int i=0;i<(
int)voxels.size();i++)
239 if (n<nVoxelsgeometry[i]){n = nVoxelsgeometry[i];}
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
G4int CML2ExpVoxels::getMinNumberOfEvents |
( |
| ) |
|
Definition at line 225 of file ML2ExpVoxels.cc.
227 int n=voxels[0].nEvents;
228 for (
int i=0;i<(
int)voxels.size();i++)
230 if (n>voxels[i].nEvents){n = voxels[i].nEvents;}
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
std::vector<Svoxel> CML2ExpVoxels::getVoxels |
( |
| ) |
|
|
inline |
Definition at line 77 of file ML2ExpVoxels.cc.
79 bHasExperimentalData=
true;
86 in.open(fullFileIn, std::ios::in);
91 in.getline(a,1000,
'\n'); headerText1=(
G4String)a;
92 in.getline(a,1000,
'\n');
94 startCurve=
new G4int[nCurves];
95 stopCurve=
new G4int[nCurves];
97 for (
int i=0; i< nCurves; i++)
104 in.getline(a,1000,
'\n');
105 in.getline(a,1000,
'\n'); headerText2=(
G4String)a;
111 if (bHasExperimentalData)
127 voxels.push_back(voxel);
130 if (minZone.
getX()>pos.getX()-halfSize.getX())
131 {minZone.
setX(pos.getX()-halfSize.getX());}
132 if (maxZone.
getX()<pos.getX()+halfSize.getX())
133 {maxZone.
setX(pos.getX()+halfSize.getX());}
135 if (minZone.
getY()>pos.getY()-halfSize.getY())
136 {minZone.
setY(pos.getY()-halfSize.getY());}
137 if (maxZone.
getY()<pos.getY()+halfSize.getY())
138 {maxZone.
setY(pos.getY()+halfSize.getY());}
140 if (minZone.
getZ()>pos.getZ()-halfSize.getZ())
141 {minZone.
setZ(pos.getZ()-halfSize.getZ());}
142 if (maxZone.
getZ()<pos.getZ()+halfSize.getZ())
143 {maxZone.
setZ(pos.getZ()+halfSize.getZ());}
149 std::cout <<
"ERROR I can't find the experimental data file" <<
G4endl;
154 nVoxelsgeometry=
new G4int[(
G4int) voxels.size()];
std::vector< ExP01TrackerHit * > a
void resetNEventsInVoxels()
G4double depEnergyNormError
static constexpr double kg
static constexpr double joule
static const G4double pos
void CML2ExpVoxels::resetNEventsInVoxels |
( |
| ) |
|
Definition at line 159 of file ML2ExpVoxels.cc.
161 for (
int i=0; i<(
int) voxels.size(); i++ )
162 {nVoxelsgeometry[i]=0;}
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
void CML2ExpVoxels::saveResults |
( |
void |
| ) |
|
Definition at line 262 of file ML2ExpVoxels.cc.
266 calculateNormalizedEd(voxels);
270 out <<
"d"<< seedName<<
"=["<<
G4endl;
271 for (
int i=0; i<(
int)voxels.size(); i++)
273 out <<voxels[i].pos.getX()/
mm<<
'\t'<<voxels[i].pos.getY()/
mm<<
'\t'<<voxels[i].pos.getZ()/
mm<<
'\t';
274 out <<voxels[i].halfSize.getX()/
mm<<
'\t'<<voxels[i].halfSize.getY()/
mm<<
'\t'<<voxels[i].halfSize.getZ()/
mm<<
'\t';
275 out <<voxels[i].expDose/(
joule/
kg)<<
'\t'<<voxels[i].depEnergy/(
joule/
kg)<<
'\t'<<voxels[i].depEnergy2/((
joule/
kg)*(
joule/
kg))<<
'\t'<<voxels[i].nEvents<<
'\t';
276 out <<voxels[i].depEnergyNorm/(
joule/
kg)<<
'\t'<<voxels[i].depEnergyNormError/(
joule/
kg);
static constexpr double mm
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
static constexpr double kg
static constexpr double joule
void CML2ExpVoxels::setRecycling |
( |
int |
recycling | ) |
|
|
inline |
The documentation for this class was generated from the following files:
- source/geant4.10.03.p02/examples/advanced/medical_linac/include/ML2ExpVoxels.hh
- source/geant4.10.03.p02/examples/advanced/medical_linac/src/ML2ExpVoxels.cc