Geant4  10.02.p03
XrayFluoRunAction Class Reference

#include <XrayFluoRunAction.hh>

Inheritance diagram for XrayFluoRunAction:
Collaboration diagram for XrayFluoRunAction:

Public Member Functions

 XrayFluoRunAction ()
 
 ~XrayFluoRunAction ()
 
const XrayFluoDataSetGetSet () const
 
const XrayFluoDataSetGetGammaSet () const
 
const XrayFluoDataSetGetAlphaSet () const
 
G4DataVectorGetEnergies () const
 
G4DataVectorGetData () const
 
void BeginOfRunAction (const G4Run *)
 
void EndOfRunAction (const G4Run *)
 
G4double GetDataSum () const
 
- Public Member Functions inherited from G4UserRunAction
 G4UserRunAction ()
 
virtual ~G4UserRunAction ()
 
virtual G4RunGenerateRun ()
 
void SetMaster (G4bool val=true)
 
G4bool IsMaster () const
 

Private Member Functions

void Initialise ()
 
void ReadData (G4double, G4String)
 

Private Attributes

G4bool isInitialized
 
const XrayFluoDataSetdataSet
 
const XrayFluoDataSetdataGammaSet
 
const XrayFluoDataSetdataAlphaSet
 
G4DataVectorenergies
 
G4DataVectordata
 

Additional Inherited Members

- Protected Attributes inherited from G4UserRunAction
G4bool isMaster
 

Detailed Description

Definition at line 52 of file XrayFluoRunAction.hh.

Constructor & Destructor Documentation

◆ XrayFluoRunAction()

XrayFluoRunAction::XrayFluoRunAction ( )

Definition at line 54 of file XrayFluoRunAction.cc.

55  : isInitialized(false), dataSet(0), dataGammaSet(0),
56  dataAlphaSet(0)
57 {;}
const XrayFluoDataSet * dataAlphaSet
const XrayFluoDataSet * dataSet
const XrayFluoDataSet * dataGammaSet

◆ ~XrayFluoRunAction()

XrayFluoRunAction::~XrayFluoRunAction ( )

Definition at line 61 of file XrayFluoRunAction.cc.

62 {;}

Member Function Documentation

◆ BeginOfRunAction()

void XrayFluoRunAction::BeginOfRunAction ( const G4Run aRun)
virtual

Reimplemented from G4UserRunAction.

Definition at line 95 of file XrayFluoRunAction.cc.

96 {
97 
98  //Master mode or sequential
99  if (IsMaster())
100  {
101  G4cout << "### Run " << aRun->GetRunID() << " starts (master)." << G4endl;
102  if (!isInitialized)
103  Initialise();
104  }
105  else
106  G4cout << "### Run " << aRun->GetRunID() << " starts (worker)." << G4endl;
107 
109  {
111  UI->ApplyCommand("/vis/scene/notifyHandlers");
112  }
113 
114  // Book histograms and ntuples
116  analysis->book();
117 }
static G4VVisManager * GetConcreteInstance()
G4bool IsMaster() const
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:58
G4GLOB_DLL std::ostream G4cout
static XrayFluoAnalysisManager * getInstance()
G4int GetRunID() const
Definition: G4Run.hh:76
#define G4endl
Definition: G4ios.hh:61
G4int ApplyCommand(const char *aCommand)
Definition: G4UImanager.cc:446
Here is the call graph for this function:

◆ EndOfRunAction()

void XrayFluoRunAction::EndOfRunAction ( const G4Run )
virtual

Reimplemented from G4UserRunAction.

Definition at line 121 of file XrayFluoRunAction.cc.

122 {
124  analysis->finish();
125  // Run ended, update the visualization
127  G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update");
128  }
129 }
static G4VVisManager * GetConcreteInstance()
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:58
static XrayFluoAnalysisManager * getInstance()
G4int ApplyCommand(const char *aCommand)
Definition: G4UImanager.cc:446
Here is the call graph for this function:

◆ GetAlphaSet()

const XrayFluoDataSet * XrayFluoRunAction::GetAlphaSet ( ) const

Definition at line 148 of file XrayFluoRunAction.cc.

149 {
150  return dataAlphaSet;
151 }
const XrayFluoDataSet * dataAlphaSet

◆ GetData()

G4DataVector * XrayFluoRunAction::GetData ( ) const

Definition at line 162 of file XrayFluoRunAction.cc.

163 {
164  return data;
165 }
Here is the caller graph for this function:

◆ GetDataSum()

G4double XrayFluoRunAction::GetDataSum ( ) const

Definition at line 169 of file XrayFluoRunAction.cc.

170 {
171 
172  G4double sum = 0;
173  for (size_t i = 0; i < data->size(); i++)
174  {
175  sum+=(*data)[i];
176  }
177  return sum;
178 }
double G4double
Definition: G4Types.hh:76
Here is the caller graph for this function:

◆ GetEnergies()

G4DataVector * XrayFluoRunAction::GetEnergies ( ) const

Definition at line 155 of file XrayFluoRunAction.cc.

156 {
157  return energies;
158 }
G4DataVector * energies
Here is the caller graph for this function:

◆ GetGammaSet()

const XrayFluoDataSet * XrayFluoRunAction::GetGammaSet ( ) const

Definition at line 141 of file XrayFluoRunAction.cc.

142 {
143  return dataGammaSet;
144 }
const XrayFluoDataSet * dataGammaSet
Here is the caller graph for this function:

◆ GetSet()

const XrayFluoDataSet * XrayFluoRunAction::GetSet ( ) const

Definition at line 134 of file XrayFluoRunAction.cc.

135 {
136  return dataSet;
137 }
const XrayFluoDataSet * dataSet

◆ Initialise()

void XrayFluoRunAction::Initialise ( )
private

Definition at line 66 of file XrayFluoRunAction.cc.

67 {
68  //Only the master is initialized and keeps the data
69  //(or in sequential mode)
70  if (!IsMaster())
71  return;
72 
73  XrayFluoNormalization normalization;
74 
75  energies = new G4DataVector;
76  data = new G4DataVector;
77 
78 
79  ReadData(keV,"M_flare");
80  //ReadResponse("SILIresponse");
81 
82  G4double minGamma = 0.*keV;
83  G4double maxGamma = 10. *keV;
84  G4int nBinsGamma = 6;
85 
86 
87  dataGammaSet = normalization.Normalize(minGamma, maxGamma, nBinsGamma,
88  "M_flare");
89  isInitialized = true;
90  G4cout << "XrayFluoRunAction initialized" << G4endl;
91 }
int G4int
Definition: G4Types.hh:78
G4DataVector * energies
G4bool IsMaster() const
G4GLOB_DLL std::ostream G4cout
void ReadData(G4double, G4String)
#define G4endl
Definition: G4ios.hh:61
static const double keV
Definition: G4SIunits.hh:213
double G4double
Definition: G4Types.hh:76
const XrayFluoDataSet * dataGammaSet
const XrayFluoDataSet * Normalize(G4double, G4double, G4int, G4String)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReadData()

void XrayFluoRunAction::ReadData ( G4double  unitE,
G4String  fileName 
)
private

Definition at line 182 of file XrayFluoRunAction.cc.

183 {
184  G4cout << "Reading data...";
185  std::ostringstream ost;
186 
187  ost << fileName <<".dat";
188 
189  G4String name = ost.str();
190  char* path;
191 
192  if (!(getenv("XRAYDATA"))) {
193 
194  path = getenv("PWD");
195  }
196 
197  else {
198  path = getenv("XRAYDATA");
199  }
200 
201 
202  G4String pathString(path);
203  name = pathString + "/" + name;
204 
205 
206  std::ifstream file(name);
207  std::filebuf* lsdp = file.rdbuf();
208 
209  if (! (lsdp->is_open()) )
210  {
212  execp << "XrayFluoRunAction - data file: " + name + " not found";
213  G4Exception("XrayFluoRunAction::ReadData()","example-xray_fluorescence04",
214  FatalException, execp);
215  }
216  G4double a = 0;
217  G4int k = 1;
218 
219  do
220  {
221  file >> a;
222  G4int nColumns = 2;
223  // The file is organized into two columns:
224  // 1st column is the energy
225  // 2nd column is the corresponding value
226  // The file terminates with the pattern: -1 -1
227  // -2 -2
228  if (a == -1 || a == -2)
229  {
230 
231  }
232  else
233  {
234  if (k%nColumns != 0)
235  {
236  G4double e = a * unitE;
237 
238  energies->push_back(e);
239 
240  k++;
241 
242  }
243  else if (k%nColumns == 0)
244  {
245  G4double value = a;
246  data->push_back(value);
247 
248  k = 1;
249  }
250  }
251 
252  } while (a != -2); // end of file
253 
254  file.close();
255  G4cout << " done" << G4endl;
256 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
G4String name
Definition: TRTMaterials.hh:40
TFile * file
int G4int
Definition: G4Types.hh:78
G4DataVector * energies
G4GLOB_DLL std::ostream G4cout
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ data

G4DataVector* XrayFluoRunAction::data
private

Definition at line 104 of file XrayFluoRunAction.hh.

◆ dataAlphaSet

const XrayFluoDataSet* XrayFluoRunAction::dataAlphaSet
private

Definition at line 98 of file XrayFluoRunAction.hh.

◆ dataGammaSet

const XrayFluoDataSet* XrayFluoRunAction::dataGammaSet
private

Definition at line 95 of file XrayFluoRunAction.hh.

◆ dataSet

const XrayFluoDataSet* XrayFluoRunAction::dataSet
private

Definition at line 92 of file XrayFluoRunAction.hh.

◆ energies

G4DataVector* XrayFluoRunAction::energies
private

Definition at line 101 of file XrayFluoRunAction.hh.

◆ isInitialized

G4bool XrayFluoRunAction::isInitialized
private

Definition at line 90 of file XrayFluoRunAction.hh.


The documentation for this class was generated from the following files: