Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4MTcoutDestination.hh
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// G4MTcoutDestination
27//
28// Handling of cout/cerr in multi-threaded mode
29
30// Authors: M.Asai, A.Dotti (SLAC) - 23 May 2013
31// ---------------------------------------------------------------
32#ifndef G4MTcoutDestination_hh
33#define G4MTcoutDestination_hh
34
35#include <fstream>
36#include <iostream>
37#include <sstream>
38
40#include "G4StateManager.hh"
41#include "globals.hh"
42
44
46{
47 public:
48 explicit G4MTcoutDestination(const G4int& threadId);
49 ~G4MTcoutDestination() override;
50
51 virtual void Reset();
52
53 void SetDefaultOutput(G4bool addMasterDestination = true,
54 G4bool formatAlsoMaster = true);
55
56 void SetCoutFileName(const G4String& fileN = "G4cout.txt",
57 G4bool ifAppend = true);
58 void AddCoutFileName(const G4String& fileN = "G4cout.txt",
59 G4bool ifAppend = true);
60 void SetCerrFileName(const G4String& fileN = "G4cerr.txt",
61 G4bool ifAppend = true);
62 void AddCerrFileName(const G4String& fileN = "G4cerr.txt",
63 G4bool ifAppend = true);
64
65 void EnableBuffering(G4bool flag = true);
66
67 inline void SetPrefixString(const G4String& wd = "G4WT") { prefix = wd; }
68
69 void SetIgnoreCout(G4int tid = 0);
70 inline void SetIgnoreInit(G4bool val = true) { ignoreInit = val; }
71
72 inline G4String GetPrefixString() const { return prefix; }
74 {
75 std::stringstream os;
76 os << prefix << id;
77 return os.str();
78 }
79
80 protected:
81 void AddMasterOutput(G4bool formatAlsoMaster);
82 void HandleFileCout(const G4String& fileN, G4bool appendFlag,
83 G4bool suppressDefault);
84 void HandleFileCerr(const G4String& fileN, G4bool appendFlag,
85 G4bool suppressDefault);
86
87 private:
88 void DumpBuffer();
89
90 private:
91 // Reference to the default destination
92 G4coutDestination* ref_defaultOut = nullptr;
93
94 // Reference to the master destination
95 G4coutDestination* ref_masterOut = nullptr;
96 G4bool masterDestinationFlag = true;
97 G4bool masterDestinationFmtFlag = true;
98
99 const G4int id;
100 G4bool useBuffer = false;
101 G4bool ignoreCout = false;
102 G4bool ignoreInit = true;
103
104 G4String prefix = "G4WT";
105 G4StateManager* stateMgr = nullptr;
106};
107
108#endif
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
void SetPrefixString(const G4String &wd="G4WT")
void AddCerrFileName(const G4String &fileN="G4cerr.txt", G4bool ifAppend=true)
G4String GetFullPrefixString() const
void SetDefaultOutput(G4bool addMasterDestination=true, G4bool formatAlsoMaster=true)
void EnableBuffering(G4bool flag=true)
void SetCoutFileName(const G4String &fileN="G4cout.txt", G4bool ifAppend=true)
G4String GetPrefixString() const
void AddCoutFileName(const G4String &fileN="G4cout.txt", G4bool ifAppend=true)
void HandleFileCout(const G4String &fileN, G4bool appendFlag, G4bool suppressDefault)
void HandleFileCerr(const G4String &fileN, G4bool appendFlag, G4bool suppressDefault)
void SetIgnoreInit(G4bool val=true)
void SetIgnoreCout(G4int tid=0)
void SetCerrFileName(const G4String &fileN="G4cerr.txt", G4bool ifAppend=true)
void AddMasterOutput(G4bool formatAlsoMaster)