StatMech
Loading...
Searching...
No Matches
Histogram Class Reference
Collaboration diagram for Histogram:
Collaboration graph

Public Member Functions

 Histogram ()
 
void add (double relEnergy, double Expval, double stddev, Integer_t NdataInShell)
 
void add (Histogram hist)
 
void clear ()
 

Public Attributes

Integer_t Ntot
 
std::vector< Integer_tNdata
 
std::vector< Integer_tNnan
 
std::vector< double > ExpValue
 
std::vector< double > Stddev
 
std::vector< double > funcF
 
std::vector< double > DOS
 

Private Attributes

Integer_t m_Nbin
 

Constructor & Destructor Documentation

◆ Histogram()

Histogram::Histogram ( )
inline
32: m_Nbin(NBIN), Ntot(0), Ndata(NBIN,0), Nnan(NBIN,0), ExpValue(NBIN,0.0), Stddev(NBIN,0.0), funcF(NBIN,0.0), DOS(NBIN,0.0) {}
Integer_t const NBIN
Definition OpAverage.cpp:20
std::vector< double > funcF
Definition OpAverage.cpp:29
std::vector< double > Stddev
Definition OpAverage.cpp:28
Integer_t m_Nbin
Definition OpAverage.cpp:22
std::vector< Integer_t > Ndata
Definition OpAverage.cpp:25
std::vector< Integer_t > Nnan
Definition OpAverage.cpp:26
std::vector< double > ExpValue
Definition OpAverage.cpp:27
std::vector< double > DOS
Definition OpAverage.cpp:30
Integer_t Ntot
Definition OpAverage.cpp:24

Member Function Documentation

◆ add() [1/2]

void Histogram::add ( double  relEnergy,
double  Expval,
double  stddev,
Integer_t  NdataInShell 
)
inline
33 {
34 Integer_t bin = (Integer_t)(m_Nbin*relEnergy); if(bin == m_Nbin) --bin;
35 Ntot += 1;
36 Ndata[bin] += 1;
37 ExpValue[bin] = ( (Ndata[bin]-1)*ExpValue[bin] + Expval )/(double)Ndata[bin];
38 if( isinf(stddev) ) stddev = NAN;
39 if( isnan(stddev) ) Nnan[bin] +=1;
40 else {
41 Integer_t Nstddev = Ndata[bin]-Nnan[bin];
42 if(Nstddev != 0) {
43 Stddev[bin] = ((Nstddev-1)*Stddev[bin]+stddev)/(double)Nstddev;
44 funcF[bin] = ((Nstddev-1)* funcF[bin]+stddev*sqrt( (double)NdataInShell ))/(double)Nstddev;
45 }
46 }
47 }
MKL_INT Integer_t
Definition mytypes.hpp:359

◆ add() [2/2]

void Histogram::add ( Histogram  hist)
inline
48 {
49 Ntot += 1;
50 for(int bin = 0;bin < m_Nbin; ++bin) {
51 Ndata[bin] += hist.Ndata[bin];
52 Nnan[bin] += hist.Nnan[bin];
53 ExpValue[bin] = ( (Ntot-1)*ExpValue[bin]+hist.ExpValue[bin] )/(double)Ntot;
54 Stddev[bin] = ( (Ntot-1)* Stddev[bin]+ hist.Stddev[bin] )/(double)Ntot;
55 funcF[bin] = ( (Ntot-1)* funcF[bin]+ hist.funcF[bin] )/(double)Ntot;
56 DOS[bin] = ( (Ntot-1)* DOS[bin]+ hist.DOS[bin] )/(double)Ntot;
57 try{
58 if( isinf(ExpValue[bin]) || isnan(ExpValue[bin]) ) throw std::runtime_error("ExpValue");
59 if( isinf( Stddev[bin]) || isnan( Stddev[bin]) ) throw std::runtime_error(" Stddev");
60 if( isinf( funcF[bin]) || isnan( funcF[bin]) ) throw std::runtime_error(" funcF");
61 if( isinf( DOS[bin]) || isnan( DOS[bin]) ) throw std::runtime_error(" DOS");
62 } catch(std::exception& e) {
63 std::cerr << "Error:(bin=" << bin << ") " << e.what() << std::endl;
64 std::cerr << " :ExpValue=" << hist.ExpValue[bin] << ", "
65 << "Stddev=" << hist.Stddev[bin] << ", "
66 << "funcF=" << hist.funcF[bin] << ", "
67 << " DOS=" << hist.DOS[bin] << std::endl;
68 std::exit(EX_DATAERR);
69 }
70
71
72 }
73 }

◆ clear()

void Histogram::clear ( )
inline
74 {
75 Ntot = 0;
76 std::fill( Ndata.begin(), Ndata.end(),0);
77 std::fill( Nnan.begin(), Nnan.end(),0);
78 std::fill(ExpValue.begin(),ExpValue.end(),0);
79 std::fill( Stddev.begin(), Stddev.end(),0);
80 std::fill( funcF.begin(), funcF.end(),0);
81 std::fill( DOS.begin(), DOS.end(),0);
82 }

Member Data Documentation

◆ DOS

std::vector<double> Histogram::DOS

◆ ExpValue

std::vector<double> Histogram::ExpValue

◆ funcF

std::vector<double> Histogram::funcF

◆ m_Nbin

Integer_t Histogram::m_Nbin
private

◆ Ndata

std::vector<Integer_t> Histogram::Ndata

◆ Nnan

std::vector<Integer_t> Histogram::Nnan

◆ Ntot

Integer_t Histogram::Ntot

◆ Stddev

std::vector<double> Histogram::Stddev

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