change: AlAlloyS5 to Al;add: output
This commit is contained in:
parent
a6dcf70dbf
commit
c7c96ac270
@ -131,7 +131,10 @@
|
||||
"senum": "cpp",
|
||||
"value": "cpp",
|
||||
"ntuple": "cpp",
|
||||
"free_seg": "cpp"
|
||||
"free_seg": "cpp",
|
||||
"base_histo": "cpp",
|
||||
"c2d": "cpp",
|
||||
"c3d": "cpp"
|
||||
}
|
||||
}
|
||||
}
|
@ -22,7 +22,7 @@ public:
|
||||
void SetPhantomModel(G4String);
|
||||
void SetParticleType(G4String s) { particleType = s; };
|
||||
void ConstructSDandField();
|
||||
G4String GetParticleType() const { return particleType; };
|
||||
G4String GetParticleType() { return particleType; };
|
||||
std::vector<G4String> GetSensitiveList() const { return sensitiveList; };
|
||||
|
||||
private:
|
||||
@ -36,7 +36,7 @@ private:
|
||||
private:
|
||||
G4String sex = "Male";
|
||||
G4String model = "MIRD";
|
||||
G4String particleType = "GCR_H";
|
||||
G4String particleType = "TE";
|
||||
std::vector<G4String> sensitiveList;
|
||||
std::map<std::string, G4bool> sensitivities;
|
||||
G4HumanPhantomMaterial* material;
|
||||
|
@ -2,7 +2,6 @@
|
||||
#define DESCSS_HumanPhantomMessenger_h 1
|
||||
|
||||
class DetectorConstruction;
|
||||
class PrimaryGeneratorAction;
|
||||
|
||||
class G4UIcommand;
|
||||
class G4UIdirectory;
|
||||
|
@ -14,13 +14,12 @@ public:
|
||||
PrimaryGeneratorAction();
|
||||
~PrimaryGeneratorAction();
|
||||
|
||||
G4ParticleDefinition* DefineParticle();
|
||||
virtual void GeneratePrimaries(G4Event*);
|
||||
const G4ParticleGun* GetParticleGun() const { return fParticleGun; }
|
||||
void DefineParticle(G4String particleType);
|
||||
const G4ParticleGun* GetParticleGun() const { return fParticleGun; };
|
||||
|
||||
private:
|
||||
G4int Z;
|
||||
G4String particleType = "TE";
|
||||
G4String particleType;
|
||||
G4ParticleGun* fParticleGun = nullptr;
|
||||
};
|
||||
|
||||
|
1
main.cpp
1
main.cpp
@ -9,6 +9,7 @@
|
||||
#include "G4VisExecutive.hh"
|
||||
#include "QBBC.hh"
|
||||
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
G4UIExecutive* ui = nullptr;
|
||||
if (argc == 1) ui = new G4UIExecutive(argc, argv);
|
||||
|
@ -24,16 +24,17 @@ void DefineMaterials() {
|
||||
|
||||
// 5系铝合金 0.4 Si + 0.35 Fe + 0.1 Cu + 0.7 Mn + 4.5 Mg + 0.15 Cr + 0.25 Zn + 0.15 Ti + 93.4 Al
|
||||
density = 2.68 * g / cm3;
|
||||
G4Material* AlAlloyS5 = new G4Material("AluminumAlloySeries5", density, ncomponents = 9);
|
||||
AlAlloyS5->AddElement(nist->FindOrBuildElement("Si"), fractionmass = .4 * perCent);
|
||||
AlAlloyS5->AddElement(nist->FindOrBuildElement("Fe"), fractionmass = .35 * perCent);
|
||||
AlAlloyS5->AddElement(nist->FindOrBuildElement("Cu"), fractionmass = .1 * perCent);
|
||||
AlAlloyS5->AddElement(nist->FindOrBuildElement("Mn"), fractionmass = .7 * perCent);
|
||||
AlAlloyS5->AddElement(nist->FindOrBuildElement("Mg"), fractionmass = 4.5 * perCent);
|
||||
AlAlloyS5->AddElement(nist->FindOrBuildElement("Cr"), fractionmass = .15 * perCent);
|
||||
AlAlloyS5->AddElement(nist->FindOrBuildElement("Zn"), fractionmass = .25 * perCent);
|
||||
AlAlloyS5->AddElement(nist->FindOrBuildElement("Ti"), fractionmass = .15 * perCent);
|
||||
AlAlloyS5->AddElement(nist->FindOrBuildElement("Al"), fractionmass = 93.4 * perCent);
|
||||
G4Material* AlAlloyS5 = new G4Material("AluminumAlloySeries5", density, ncomponents = 1);
|
||||
// AlAlloyS5->AddElement(nist->FindOrBuildElement("Si"), fractionmass = .4 * perCent);
|
||||
// AlAlloyS5->AddElement(nist->FindOrBuildElement("Fe"), fractionmass = .35 * perCent);
|
||||
// AlAlloyS5->AddElement(nist->FindOrBuildElement("Cu"), fractionmass = .1 * perCent);
|
||||
// AlAlloyS5->AddElement(nist->FindOrBuildElement("Mn"), fractionmass = .7 * perCent);
|
||||
// AlAlloyS5->AddElement(nist->FindOrBuildElement("Mg"), fractionmass = 4.5 * perCent);
|
||||
// AlAlloyS5->AddElement(nist->FindOrBuildElement("Cr"), fractionmass = .15 * perCent);
|
||||
// AlAlloyS5->AddElement(nist->FindOrBuildElement("Zn"), fractionmass = .25 * perCent);
|
||||
// AlAlloyS5->AddElement(nist->FindOrBuildElement("Ti"), fractionmass = .15 * perCent);
|
||||
// AlAlloyS5->AddElement(nist->FindOrBuildElement("Al"), fractionmass = 93.4 * perCent);
|
||||
AlAlloyS5->AddElement(nist->FindOrBuildElement("Al"), fractionmass = 100. * perCent);
|
||||
|
||||
// 泰普龙 Taparan
|
||||
density = 1.44 * g / cm3;
|
||||
|
@ -14,19 +14,17 @@ G4double M = 931.5;
|
||||
G4double C1, C2, C3, C4, sum;
|
||||
|
||||
PrimaryGeneratorAction::PrimaryGeneratorAction() {
|
||||
G4ParticleDefinition* ion = DefineParticle();
|
||||
fParticleGun = new G4ParticleGun();
|
||||
fParticleGun->SetParticleCharge(this->Z * eplus);
|
||||
fParticleGun->SetParticleDefinition(ion);
|
||||
DetectorConstruction* detConstruction =
|
||||
(DetectorConstruction*)(G4RunManager::GetRunManager()->GetUserDetectorConstruction());
|
||||
|
||||
const DetectorConstruction* detConstruction =
|
||||
static_cast<const DetectorConstruction*>(G4RunManager::GetRunManager()->GetUserDetectorConstruction());
|
||||
fParticleGun = new G4ParticleGun();
|
||||
particleType = detConstruction->GetParticleType();
|
||||
DefineParticle(particleType);
|
||||
}
|
||||
|
||||
PrimaryGeneratorAction::~PrimaryGeneratorAction() { delete fParticleGun; }
|
||||
|
||||
G4ParticleDefinition* PrimaryGeneratorAction::DefineParticle() {
|
||||
void PrimaryGeneratorAction::DefineParticle(G4String particleType) {
|
||||
G4double Z, A;
|
||||
std::string tmp, line, name;
|
||||
std::ifstream modelFile("assets/model.txt");
|
||||
@ -62,8 +60,8 @@ G4ParticleDefinition* PrimaryGeneratorAction::DefineParticle() {
|
||||
else
|
||||
ion = G4IonTable::GetIonTable()->GetIon(Z, A, 0.);
|
||||
|
||||
this->Z = Z;
|
||||
return ion;
|
||||
fParticleGun->SetParticleCharge(Z * eplus);
|
||||
fParticleGun->SetParticleDefinition(ion);
|
||||
}
|
||||
|
||||
G4double randomPhi() {
|
||||
@ -162,6 +160,13 @@ void PrimaryGeneratorAction::GeneratePrimaries(G4Event* e) {
|
||||
G4ThreeVector pos = randomPos();
|
||||
G4ThreeVector dir = randomDir(pos);
|
||||
|
||||
DetectorConstruction* detConstruction =
|
||||
(DetectorConstruction*)(G4RunManager::GetRunManager()->GetUserDetectorConstruction());
|
||||
if (particleType != detConstruction->GetParticleType()) {
|
||||
particleType = detConstruction->GetParticleType();
|
||||
DefineParticle(particleType);
|
||||
}
|
||||
|
||||
if (particleType == "TE")
|
||||
E = ITM(0.1, 10, pdfTElectronInv);
|
||||
else if (particleType == "TP")
|
||||
|
@ -55,15 +55,14 @@ void RunAction::EndOfRunAction(const G4Run* run) {
|
||||
}
|
||||
|
||||
if (IsMaster()) {
|
||||
const DetectorConstruction* detConstruction =
|
||||
static_cast<const DetectorConstruction*>(G4RunManager::GetRunManager()->GetUserDetectorConstruction());
|
||||
DetectorConstruction* detConstruction =
|
||||
(DetectorConstruction*)(G4RunManager::GetRunManager()->GetUserDetectorConstruction());
|
||||
std::ofstream edepFile("result/edep_" + detConstruction->GetParticleType() + ".txt");
|
||||
|
||||
for (int i = 0; i < sensitiveList.size(); i++) {
|
||||
G4String name = sensitiveList[i];
|
||||
edepFile << "bodyPart: " << std::setw(30) << name << " | eDep: " << std::setw(15)
|
||||
<< edep[name] / MeV << " MeV | eDep2: " << std::setw(15)
|
||||
<< edep2[name] / MeV << " MeV | rms: " << std::setw(15)
|
||||
edepFile << "bodyPart: " << std::setw(30) << name << " | eDep: " << std::setw(15) << edep[name] / MeV
|
||||
<< " MeV | eDep2: " << std::setw(15) << edep2[name] / MeV << " MeV | rms: " << std::setw(15)
|
||||
<< rms[name] / MeV << " MeV" << G4endl;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user