ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ActionInitialization.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file ActionInitialization.cc
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 // This example is provided by the Geant4-DNA collaboration
27 // Any report or published results obtained using the Geant4-DNA software
28 // shall cite the following Geant4-DNA collaboration publication:
29 // Med. Phys. 37 (2010) 4692-4708
30 // and papers
31 // M. Batmunkh et al. J Radiat Res Appl Sci 8 (2015) 498-507
32 // O. Belov et al. Physica Medica 32 (2016) 1510-1520
33 // The Geant4-DNA web site is available at http://geant4-dna.org
34 //
35 // -------------------------------------------------------------------
36 // November 2016
37 // -------------------------------------------------------------------
38 //
41 
42 #include "ActionInitialization.hh"
43 #include "PrimaryGeneratorAction.hh"
44 #include "RunAction.hh"
45 #include "SteppingAction.hh"
46 #include "DetectorConstruction.hh"
47 #include "TrackingAction.hh"
48 #include "G4RunManager.hh"
49 #include "EventAction.hh"
50 // added for chemistry
51 #include "G4DNAChemistryManager.hh"
52 #include "G4SystemOfUnits.hh"
53 #include "G4UnitsTable.hh"
54 #include "G4Threading.hh"
55 #include "G4Scheduler.hh"
56 #include "StackingAction.hh"
57 #include "TimeStepAction.hh"
58 #include "ITTrackingInteractivity.hh"
59 #include "ITSteppingAction.hh"
60 #include "ITTrackingAction.hh"
61 #include "DetectorConstruction.hh"
62 
63 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
64 
67  fDetector(detector)
68 {}
69 
70 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
71 
73 {}
74 
75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
76 
78 {
79  // In MT mode, to be clearer, the RunAction class for the master thread might
80  // be different than the one used for the workers.
81  // This RunAction will be called before and after starting the
82  // workers.
83  // For more details, please refer to :
84  //https://twiki.cern.ch/twiki/bin/view/Geant4/Geant4MTForApplicationDevelopers
85  //
86 
88 }
89 
90 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
91 
92 void ActionInitialization::Build() const
93 {
94  // G4cout << "Build for = "
95  // << G4RunManager::GetRunManager()->GetRunManagerType()
96  // << G4endl;
97 
99  SetUserAction(kinematics);
100 
101  TrackingAction* trackingAction = new TrackingAction();
102  SetUserAction(trackingAction);
103 
104  RunAction* runAction= new RunAction(fDetector, kinematics);
105  SetUserAction(runAction);
106 
107  SetUserAction(new SteppingAction(runAction));
108  SetUserAction(new EventAction(runAction));
109  // added
111 
112  // chemistry part
115 
116  // Uncomment and set to stop chemistry stage after:
117  // ...given number of time steps
118  //G4Scheduler::Instance()->SetMaxNbSteps(1000);
119 
120  // ...OR reaching this time
121  G4Scheduler::Instance()->SetEndTime(0.01*nanosecond); // default: 10 ps
122 
123  G4Scheduler::Instance()->SetVerbose(1); // default: 1-print reactions;
124 
125  ITTrackingInteractivity* itInteractivity = new ITTrackingInteractivity();
126  itInteractivity->SetUserAction(new ITSteppingAction);
127  itInteractivity->SetUserAction(new ITTrackingAction);
128  G4Scheduler::Instance()->SetInteractivity(itInteractivity);
129  }
130 /*
131  // To output the pre-chemical stage
132  //
133  G4String fileName ("output");
134 
135  if(G4RunManager::GetRunManager()->GetRunManagerType() ==
136  G4RunManager::sequentialRM)
137  {
138  // write initial situation at 1 picosecond
139  G4DNAChemistryManager::Instance()->WriteInto(fileName + ".txt");
140  }
141  else
142  {
143  G4int id = G4Threading::G4GetThreadId();
144 
145  G4String fileName_mt = fileName;
146  fileName_mt += G4UIcommand::ConvertToString(id);
147  fileName_mt += ".txt";
148 
149  G4cout << "chosen file name : " << fileName_mt << G4endl;
150 
151  G4DNAChemistryManager::Instance()->WriteInto(fileName_mt);
152  }
153 */
154 
155 }
156 
157 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......