add detector simulation
This commit is contained in:
@@ -25,8 +25,8 @@ int main(int argc, char** argv) {
|
||||
scene.ConstructWorldBox(Vector3f(30_m, 30_m, 30_m), "G4_AIR");
|
||||
|
||||
ContainerBox iron_box;
|
||||
iron_box.Scale(Vector3f(18_m, 18_m, 18_m));
|
||||
iron_box.SetPosition(Vector3f(-9_m, -9_m, -9_m));
|
||||
iron_box.Scale(Vector3f(18_m, 10_cm, 18_m));
|
||||
iron_box.SetPosition(Vector3f(-9_m, -5_cm, -9_m));
|
||||
Geant::BoxSolid* iron_cube = new Geant::BoxSolid("IronCube", &iron_box);
|
||||
iron_cube->SetNistMaterial("G4_Fe");
|
||||
iron_cube->Update();
|
||||
@@ -60,8 +60,10 @@ int main(int argc, char** argv) {
|
||||
|
||||
scene.SetEmitter(emitter);
|
||||
scene.SetVerbosity(1);
|
||||
scene.Initialize();
|
||||
// scene.Initialize(); // Removed to avoid premature initialization
|
||||
|
||||
|
||||
|
||||
std::cout << "Starting simulation of " << nEvents << " events..." << std::endl;
|
||||
Vector<Geant::GeantEvent> results;
|
||||
scene.RunSimulation(nEvents, results);
|
||||
@@ -80,5 +82,23 @@ int main(int argc, char** argv) {
|
||||
std::cout << " Average steps per event: " << static_cast<double>(total_steps) / results.size() << std::endl;
|
||||
}
|
||||
|
||||
std::cout << "\nStarting Detector Simulation of " << nEvents << " events..." << std::endl;
|
||||
Vector<MuonEvent> detectorResults;
|
||||
scene.RunDetectorSimulation(nEvents, detectorResults);
|
||||
|
||||
|
||||
|
||||
std::cout << "Detector Simulation finished." << std::endl;
|
||||
size_t hit_count = 0;
|
||||
for (const auto& ev : detectorResults) {
|
||||
if (!std::isnan(ev.LineIn().origin.x())) {
|
||||
hit_count++;
|
||||
}
|
||||
}
|
||||
std::cout << " Muons crossing at least one detector: " << hit_count << std::endl;
|
||||
if (nEvents > 0) {
|
||||
std::cout << " Efficiency: " << (100.0 * hit_count / nEvents) << "%" << std::endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user