Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4DataVector Class Reference

#include <G4DataVector.hh>

+ Inheritance diagram for G4DataVector:

Public Types

enum  { T_G4DataVector = 100 }
 

Public Member Functions

 G4DataVector ()=default
 
 G4DataVector (const G4DataVector &)=default
 
 G4DataVector (G4DataVector &&)=default
 
 G4DataVector (std::size_t cap)
 
 G4DataVector (std::size_t cap, G4double value)
 
virtual ~G4DataVector ()=default
 
G4DataVectoroperator= (const G4DataVector &)=default
 
G4DataVectoroperator= (G4DataVector &&)=default
 
void insertAt (std::size_t, const G4double &)
 
std::size_t index (const G4double &) const
 
G4bool contains (const G4double &) const
 
G4bool remove (const G4double &)
 
std::size_t removeAll (const G4double &)
 
G4bool Store (std::ofstream &fOut, G4bool ascii=false)
 
G4bool Retrieve (std::ifstream &fIn, G4bool ascii=false)
 

Friends

std::ostream & operator<< (std::ostream &out, const G4DataVector &pv)
 

Detailed Description

Definition at line 46 of file G4DataVector.hh.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
T_G4DataVector 

Definition at line 85 of file G4DataVector.hh.

86 {
87 T_G4DataVector = 100
88 };

Constructor & Destructor Documentation

◆ G4DataVector() [1/5]

G4DataVector::G4DataVector ( )
default

◆ G4DataVector() [2/5]

G4DataVector::G4DataVector ( const G4DataVector & )
default

◆ G4DataVector() [3/5]

G4DataVector::G4DataVector ( G4DataVector && )
default

◆ G4DataVector() [4/5]

G4DataVector::G4DataVector ( std::size_t cap)
explicit

Definition at line 35 of file G4DataVector.cc.

36 : std::vector<G4double>(cap, 0.0)
37{}

◆ G4DataVector() [5/5]

G4DataVector::G4DataVector ( std::size_t cap,
G4double value )

Definition at line 40 of file G4DataVector.cc.

41 : std::vector<G4double>(cap, value)
42{}

◆ ~G4DataVector()

virtual G4DataVector::~G4DataVector ( )
virtualdefault

Member Function Documentation

◆ contains()

G4bool G4DataVector::contains ( const G4double & ) const
inline

◆ index()

std::size_t G4DataVector::index ( const G4double & ) const
inline

◆ insertAt()

void G4DataVector::insertAt ( std::size_t ,
const G4double &  )
inline

◆ operator=() [1/2]

G4DataVector & G4DataVector::operator= ( const G4DataVector & )
default

◆ operator=() [2/2]

G4DataVector & G4DataVector::operator= ( G4DataVector && )
default

◆ remove()

G4bool G4DataVector::remove ( const G4double & )
inline

◆ removeAll()

std::size_t G4DataVector::removeAll ( const G4double & )
inline

◆ Retrieve()

G4bool G4DataVector::Retrieve ( std::ifstream & fIn,
G4bool ascii = false )

Definition at line 71 of file G4DataVector.cc.

72{
73 clear();
74 G4int sizeV = 0;
75
76 // retrieve in ascii mode
77 if(ascii)
78 {
79 // contents
80 fIn >> sizeV;
81 if(fIn.fail())
82 {
83 return false;
84 }
85 if(sizeV <= 0)
86 {
87#ifdef G4VERBOSE
88 G4cerr << "G4DataVector::Retrieve():";
89 G4cerr << " Invalid vector size: " << sizeV << G4endl;
90#endif
91 return false;
92 }
93
94 reserve(sizeV);
95 for(G4int i = 0; i < sizeV; ++i)
96 {
97 G4double vData = 0.0;
98 fIn >> vData;
99 if(fIn.fail())
100 {
101 return false;
102 }
103 push_back(vData);
104 }
105 return true;
106 }
107
108 // retrieve in binary mode
109 fIn.read((char*) (&sizeV), sizeof sizeV);
110
111 G4double* value = new G4double[sizeV];
112 fIn.read((char*) (value), sizeV * (sizeof(G4double)));
113 if(G4int(fIn.gcount()) != G4int(sizeV * (sizeof(G4double))))
114 {
115 delete[] value;
116 return false;
117 }
118
119 reserve(sizeV);
120 for(G4int i = 0; i < sizeV; ++i)
121 {
122 push_back(value[i]);
123 }
124 delete[] value;
125 return true;
126}
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
G4GLOB_DLL std::ostream G4cerr
#define G4endl
Definition G4ios.hh:67

◆ Store()

G4bool G4DataVector::Store ( std::ofstream & fOut,
G4bool ascii = false )

Definition at line 45 of file G4DataVector.cc.

46{
47 // Ascii mode
48 if(ascii)
49 {
50 fOut << *this;
51 return true;
52 }
53
54 // Binary Mode
55 G4int sizeV = G4int(size());
56 fOut.write((char*) (&sizeV), sizeof sizeV);
57
58 G4double* value = new G4double[sizeV];
59 std::size_t i = 0;
60 for(auto itr = cbegin(); itr != cend(); ++itr, ++i)
61 {
62 value[i] = *itr;
63 }
64 fOut.write((char*) (value), sizeV * (sizeof(G4double)));
65 delete[] value;
66
67 return true;
68}

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream & out,
const G4DataVector & pv )
friend

Definition at line 129 of file G4DataVector.cc.

130{
131 out << pv.size() << std::setprecision(12) << G4endl;
132 for(std::size_t i = 0; i < pv.size(); ++i)
133 {
134 out << pv[i] << G4endl;
135 }
136 out << std::setprecision(6);
137
138 return out;
139}

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