Loading...
Searching...
No Matches
exampleB02.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/// \file biasing/B02/exampleB02.cc
27/// \brief Main program of the biasing/B02 example
28//
29//
30//
31//
32// --------------------------------------------------------------
33// GEANT 4 - exampleB02
34//
35// --------------------------------------------------------------
36// Comments
37//
38// This example intends to show how to use importance sampling and scoring
39// in the mass (tracking) geometry.
40// A simple geometry consisting of a 180 cm high concrete cylinder
41// divided into 18 slabs of 10cm each is created.
42// Importance values are assigned to the 18 concrete slabs in the
43// detector construction class for simplicity.
44// Pairs of G4GeometryCell and importance values are stored in
45// the importance store.
46//
47
48// --------------------------------------------------------------
49
50#include <iostream>
51
52#include <stdlib.h>
53
54#include "G4Types.hh"
55
56#include "G4RunManagerFactory.hh"
57
58#include "G4VPhysicalVolume.hh"
59#include "G4UImanager.hh"
60#include "G4GeometryManager.hh"
61
62// user classes
65#include "FTFP_BERT.hh"
66#include "G4ImportanceBiasing.hh"
67#include "G4ParallelWorldPhysics.hh"
68
70// #include "B02PrimaryGeneratorAction.hh"
71// #include "B02RunAction.hh"
72
73// Files specific for biasing and scoring
74#include "G4GeometrySampler.hh"
75#include "G4IStore.hh"
76#include "G4VWeightWindowStore.hh"
77#include "G4WeightWindowAlgorithm.hh"
78
79//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
80
81int main(int argc, char **argv)
82{
83 G4int mode = 0;
84 if (argc>1) mode = atoi(argv[1]);
85 if(mode != 0) {
86 G4cout << " mode not used yet, refer to B01 to see WeightWindow technique "
87 << mode << G4endl;
88 }
89
90 G4int numberOfEvents = 100;
91 G4long myseed = 345354;
92
93 auto* runManager = G4RunManagerFactory::CreateRunManager();
94 runManager->SetNumberOfThreads(2);
95
96 G4Random::setTheSeed(myseed);
97
98 // create the detector ---------------------------
100 runManager->SetUserInitialization(detector);
101
102 G4String parallelName("ParallelBiasingWorld");
104 new B02ImportanceDetectorConstruction(parallelName);
105 detector->RegisterParallelWorld(pdet);
106
107 G4GeometrySampler pgs(pdet->GetWorldVolume(),"neutron");
108
109 pgs.SetParallel(true);
110
111 G4VModularPhysicsList* physicsList = new FTFP_BERT;
112 physicsList->RegisterPhysics(new G4ImportanceBiasing(&pgs,parallelName));
113 physicsList->RegisterPhysics(new G4ParallelWorldPhysics(parallelName));
114
115 runManager->SetUserInitialization(physicsList);
116
117 // Set user action classes through Worker Initialization
118 //
120 runManager->SetUserInitialization(actions);
121
122 runManager->Initialize();
123
124 pdet->CreateImportanceStore();
125
126 //temporary fix before runManager->BeamOn works...
127 G4UImanager* UImanager = G4UImanager::GetUIpointer();
128 G4String command1 = "/control/cout/setCoutFile threadOut";
129 UImanager->ApplyCommand(command1);
130 G4String command2 = "/run/beamOn " +
131 G4UIcommand::ConvertToString(numberOfEvents);
132 UImanager->ApplyCommand(command2);
133
134 // open geometry for clean biasing stores clean-up
135 //
136 G4GeometryManager::GetInstance()->OpenGeometry();
137
138 // pgs.ClearSampling();
139
140 delete runManager;
141
142 return 0;
143}
144
145//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Definition of the B02ActionInitialization class.
Definition of the B02DetectorConstruction class.
Definition of the B02ImportanceDetectorConstruction class.
int main()
Definition testCommon.cc:47

Applications | User Support | Publications | Collaboration