Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 /// \file SAXSRunAction.cc 27 /// \brief Implementation of the SAXSRunAction 28 // 29 //....oooOO0OOooo........oooOO0OOooo........oo 30 31 #include "SAXSRunAction.hh" 32 33 #include "SAXSDetectorConstruction.hh" 34 #include "SAXSRunActionMessenger.hh" 35 36 #include "G4AnalysisManager.hh" 37 #include "G4Run.hh" 38 #include "G4RunManager.hh" 39 #include "G4SDManager.hh" 40 #include "G4SystemOfUnits.hh" 41 #include "G4UnitsTable.hh" 42 43 //....oooOO0OOooo........oooOO0OOooo........oo 44 45 SAXSRunAction::SAXSRunAction() : G4UserRunActi 46 { 47 // define the messenger 48 fMessenger = new SAXSRunActionMessenger(this 49 50 // default output filename (can be set throu 51 fFileName = "output"; 52 53 // Create the analysis manager 54 fAnalysisManager = G4AnalysisManager::Instan 55 56 fAnalysisManager->SetDefaultFileType("root") 57 fAnalysisManager->SetFileName(fFileName); 58 fAnalysisManager->SetNtupleMerging(true); / 59 fAnalysisManager->SetVerboseLevel(1); 60 61 // Creating the SD scoring ntuple 62 fAnalysisManager->CreateNtuple("part", "Part 63 fAnalysisManager->CreateNtupleDColumn("e"); 64 fAnalysisManager->CreateNtupleDColumn("posx" 65 fAnalysisManager->CreateNtupleDColumn("posy" 66 fAnalysisManager->CreateNtupleDColumn("posz" 67 fAnalysisManager->CreateNtupleDColumn("momx" 68 fAnalysisManager->CreateNtupleDColumn("momy" 69 fAnalysisManager->CreateNtupleDColumn("momz" 70 fAnalysisManager->CreateNtupleDColumn("t"); 71 fAnalysisManager->CreateNtupleIColumn("type" 72 fAnalysisManager->CreateNtupleIColumn("track 73 fAnalysisManager->CreateNtupleIColumn("NRi") 74 fAnalysisManager->CreateNtupleIColumn("NCi") 75 fAnalysisManager->CreateNtupleIColumn("NDi") 76 fAnalysisManager->CreateNtupleIColumn("event 77 fAnalysisManager->CreateNtupleDColumn("weigh 78 fAnalysisManager->FinishNtuple(); 79 80 // Creating ntuple for scattering 81 fAnalysisManager->CreateNtuple("scatt", "Sca 82 fAnalysisManager->CreateNtupleIColumn("proce 83 fAnalysisManager->CreateNtupleDColumn("e"); 84 fAnalysisManager->CreateNtupleDColumn("theta 85 fAnalysisManager->CreateNtupleDColumn("weigh 86 fAnalysisManager->FinishNtuple(); 87 } 88 89 //....oooOO0OOooo........oooOO0OOooo........oo 90 91 SAXSRunAction::~SAXSRunAction() 92 { 93 delete fMessenger; 94 } 95 96 //....oooOO0OOooo........oooOO0OOooo........oo 97 98 void SAXSRunAction::BeginOfRunAction(const G4R 99 { 100 // open the output file 101 if (!fIsFileOpened) { 102 fAnalysisManager->OpenFile(fFileName); 103 fIsFileOpened = true; 104 } 105 } 106 107 //....oooOO0OOooo........oooOO0OOooo........oo 108 109 void SAXSRunAction::EndOfRunAction(const G4Run 110 { 111 G4int nofEvents = run->GetNumberOfEvent(); 112 if (nofEvents == 0) return; 113 114 // print 115 if (IsMaster()) { 116 G4cout << G4endl << "--------------------E 117 << " The run had " << nofEvents << 118 } 119 else { 120 G4cout << G4endl << "--------------------E 121 << " The run had " << nofEvents << 122 } 123 if (fIsFileOpened) { 124 fAnalysisManager->Write(); 125 fAnalysisManager->CloseFile(); 126 } 127 } 128 129 //....oooOO0OOooo........oooOO0OOooo........oo 130 131 void SAXSRunAction::SetFileName(const G4String 132 { 133 // method to set the output filename 134 if (filename != "") fFileName = filename; 135 } 136 137 //....oooOO0OOooo........oooOO0OOooo........oo 138