Loading...
Searching...
No Matches
RunAction.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//
27/// \file B5/src/RunAction.cc
28/// \brief Implementation of the B5::RunAction class
29
30#include "RunAction.hh"
31#include "EventAction.hh"
32
33#include "G4Run.hh"
34#include "G4UnitsTable.hh"
35#include "G4SystemOfUnits.hh"
36#include "G4AnalysisManager.hh"
37
38namespace B5
39{
40
41//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
42
44 : fEventAction(eventAction)
45{
46 // Create the generic analysis manager
47 auto analysisManager = G4AnalysisManager::Instance();
48 analysisManager->SetDefaultFileType("root");
49 // If the filename extension is not provided, the default file type (root)
50 // will be used for all files specified without extension.
51 analysisManager->SetVerboseLevel(1);
52
53 // Default settings
54 analysisManager->SetNtupleMerging(true);
55 // Note: merging ntuples is available only with Root output
56 analysisManager->SetFileName("B5");
57
58 // Book histograms, ntuple
59
60 // Creating 1D histograms
61 analysisManager
62 ->CreateH1("Chamber1","Drift Chamber 1 # Hits", 50, 0., 50); // h1 Id = 0
63 analysisManager
64 ->CreateH1("Chamber2","Drift Chamber 2 # Hits", 50, 0., 50); // h1 Id = 1
65
66 // Creating 2D histograms
67 analysisManager
68 ->CreateH2("Chamber1 XY","Drift Chamber 1 X vs Y", // h2 Id = 0
69 50, -1000., 1000, 50, -300., 300.);
70 analysisManager
71 ->CreateH2("Chamber2 XY","Drift Chamber 2 X vs Y", // h2 Id = 1
72 50, -1500., 1500, 50, -300., 300.);
73
74 // Creating ntuple
75 if ( fEventAction ) {
76 analysisManager->CreateNtuple("B5", "Hits");
77 analysisManager->CreateNtupleIColumn("Dc1Hits"); // column Id = 0
78 analysisManager->CreateNtupleIColumn("Dc2Hits"); // column Id = 1
79 analysisManager->CreateNtupleDColumn("ECEnergy"); // column Id = 2
80 analysisManager->CreateNtupleDColumn("HCEnergy"); // column Id = 3
81 analysisManager->CreateNtupleDColumn("Time1"); // column Id = 4
82 analysisManager->CreateNtupleDColumn("Time2"); // column Id = 5
83 analysisManager // column Id = 6
84 ->CreateNtupleDColumn("ECEnergyVector", fEventAction->GetEmCalEdep());
85 analysisManager // column Id = 7
86 ->CreateNtupleDColumn("HCEnergyVector", fEventAction->GetHadCalEdep());
87 analysisManager->FinishNtuple();
88 }
89
90 // Set ntuple output file
91 analysisManager->SetNtupleFileName(0, "B5ntuple");
92}
93
94//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
95
97{
98 //inform the runManager to save random number seed
99 //G4RunManager::GetRunManager()->SetRandomNumberStore(true);
100
101 // Get analysis manager
102 auto analysisManager = G4AnalysisManager::Instance();
103
104 // Reset histograms from previous run
105 analysisManager->Reset();
106
107 // Open an output file
108 // The default file name is set in RunAction::RunAction(),
109 // it can be overwritten in a macro
110 analysisManager->OpenFile();
111}
112
113//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
114
116{
117 // save histograms & ntuple
118 //
119 auto analysisManager = G4AnalysisManager::Instance();
120 analysisManager->Write();
121 analysisManager->CloseFile(false);
122 // Keep content of histos so that they are plotted.
123 // The content will be reset at start of the next run.
124}
125
126//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
127
128}
std::vector< G4double > & GetHadCalEdep()
std::vector< G4double > & GetEmCalEdep()
EventAction * fEventAction
Definition RunAction.hh:55
void EndOfRunAction(const G4Run *) override
Definition RunAction.cc:115
void BeginOfRunAction(const G4Run *) override
Definition RunAction.cc:96
RunAction(EventAction *eventAction)
Definition RunAction.cc:43

Applications | User Support | Publications | Collaboration