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 // 27 // ------------------------------------------- 28 // GEANT 4 - ULTRA experiment 29 // ------------------------------------------- 30 // 31 // Code developed by: 32 // B. Tome, M.C. Espirito-Santo, A. Trindade, 33 // 34 // **************************************** 35 // * UltraRunAction.cc 36 // **************************************** 37 // 38 // RunAction class for Ultra; it has also a 39 // 40 #include "UltraRunAction.hh" 41 #include "G4Run.hh" 42 #include "G4RunManager.hh" 43 #include "G4AnalysisManager.hh" 44 #include "Randomize.hh" 45 #include <ctime> 46 #include "Randomize.hh" 47 48 49 // //....oooOO0OOooo........oooOO0OOooo....... 50 51 UltraRunAction::UltraRunAction() 52 { 53 seed = -1; // RANLUX seed 54 luxury = 3; // RANLUX luxury level (3 i 55 saveRndm = 1; 56 } 57 58 // //....oooOO0OOooo........oooOO0OOooo....... 59 60 UltraRunAction::~UltraRunAction() 61 {;} 62 63 // //....oooOO0OOooo........oooOO0OOooo....... 64 65 void UltraRunAction::BeginOfRunAction(const G4 66 { 67 // Get/create analysis manager: need to do t 68 auto man = G4AnalysisManager::Instance(); 69 man->SetDefaultFileType("root"); 70 71 // Open an output file 72 man->OpenFile("ultra"); 73 man->SetFirstHistoId(1); 74 75 // Create histogram(s) 76 man->CreateH1("PhotonEnergy","Optical photon 77 500,0.,5.); //bins' number, xmin, xmax 78 man->CreateH1("NumberDetectedPhotons","Numbe 79 10,0.,10.); //bins' number, xmin, xmax 80 81 if (!IsMaster()) //it is a slave, do nothing 82 { 83 G4cout << "ooo Run " << aRun->GetRunID() 84 return; 85 } 86 87 //Master or sequential 88 G4cout << "ooo Run " << aRun->GetRunID() << 89 if (seed<0) //not initialized by anybody els 90 { 91 seed=time(0); 92 G4Random::setTheSeed(seed,luxury); 93 G4Random::showEngineStatus(); 94 } 95 96 // save Rndm status 97 if (saveRndm > 0) 98 G4Random::saveEngineStatus("beginOfRun.rnd 99 100 return; 101 } 102 103 // //....oooOO0OOooo........oooOO0OOooo....... 104 105 void UltraRunAction::EndOfRunAction(const G4Ru 106 { 107 // Write histograms to file 108 // Save histograms 109 auto man = G4AnalysisManager::Instance(); 110 man->Write(); 111 man->CloseFile(); 112 // Complete clean-up 113 man->Clear(); 114 115 if (!IsMaster()) 116 { 117 G4cout << "### Run " << aRun->GetRunID() 118 return; 119 } 120 121 G4cout << "### Run " << aRun->GetRunID() << 122 // save Rndm status 123 if (saveRndm == 1) 124 G4Random::saveEngineStatus("endOfRun.rndm" 125 return; 126 } 127