Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

SimpleSpectrum Class Reference

Spectrum: base class for energy spectrum objects SimpleSpectrum: define a particle and spectral index. More...

#include <SimpleSpectrum.h>

Inheritance diagram for SimpleSpectrum::

Spectrum ISpectrum List of all members.

Public Methods

 SimpleSpectrum (const char *name, float E0, float index=0.0)
 SimpleSpectrum (const char *name, float Emin, float Emax, float index)
 SimpleSpectrum (const DOM_Element &xelem)
 SimpleSpectrum (const std::string &params)
 SimpleSpectrum ()
void setPosition (float, float)
virtual double calculate_rate (double old_rate)
virtual float operator() (float f) const
virtual const char * particleName () const
 subclasses need to specify correct particle type. More...

virtual std::string title () const
 return a title describing the spectrum. More...


Private Methods

float parseParamList (std::string input, int index)

Private Attributes

float m_E0
std::string m_name
float m_index
float m_emax

Detailed Description

Spectrum: base class for energy spectrum objects SimpleSpectrum: define a particle and spectral index.

$Header $

Definition at line 24 of file SimpleSpectrum.h.


Constructor & Destructor Documentation

SimpleSpectrum::SimpleSpectrum const char *    name,
float    E0,
float    index = 0.0
 

Definition at line 26 of file SimpleSpectrum.cxx.

00027 :m_E0(E0)
00028 ,m_name(name)
00029 ,m_index( index)
00030 ,m_emax(100.)
00031 {}

SimpleSpectrum::SimpleSpectrum const char *    name,
float    Emin,
float    Emax,
float    index
 

Definition at line 33 of file SimpleSpectrum.cxx.

00034 :m_E0(Emin)
00035 ,m_name(name)
00036 ,m_index(index)
00037 ,m_emax(Emax)
00038 {}

SimpleSpectrum::SimpleSpectrum const DOM_Element &    xelem
 

Definition at line 40 of file SimpleSpectrum.cxx.

References FATAL_MACRO, m_E0, m_emax, m_index, and m_name.

00040                                                       {
00041     m_name = xml::Dom::getAttribute(xelem, "name").c_str();
00042     
00043     const DOM_Element spectrum = xml::Dom::findFirstChildByName(xelem, "*");
00044     if (spectrum.getTagName().equals(DOMString("power_law"))) {
00045         m_E0 = atof(xml::Dom::getAttribute(spectrum, "emin").c_str());
00046         m_emax = atof(xml::Dom::getAttribute(spectrum, "emax").c_str());
00047         m_index = atof(xml::Dom::getAttribute(spectrum, "gamma").c_str());
00048     }
00049     else if (spectrum.getTagName().equals(DOMString("energy"))) {
00050         m_E0 = atof(xml::Dom::getAttribute(spectrum, "e").c_str());
00051         m_emax = 100.0;
00052         m_index = 0.0;
00053     }
00054     else FATAL_MACRO("Unknown particle spectrum!");
00055 }

SimpleSpectrum::SimpleSpectrum const std::string &    params
 

Definition at line 19 of file SimpleSpectrum.cxx.

00020 :m_name("gamma")
00021 ,m_E0(parseParamList(params,0))
00022 ,m_index(parseParamList(params,1))
00023 {}

SimpleSpectrum::SimpleSpectrum  
 

Definition at line 18 of file SimpleSpectrum.cxx.

00018 {}//default constructor


Member Function Documentation

double SimpleSpectrum::calculate_rate double    old_rate [virtual]
 

Definition at line 85 of file SimpleSpectrum.cxx.

00086 {
00087     return old_rate;
00088 }

float SimpleSpectrum::operator() float    f const [virtual]
 

Reimplemented from Spectrum.

Definition at line 69 of file SimpleSpectrum.cxx.

00070 {
00071     if( m_index == 0.0 )     return m_E0;
00072     
00073     if( m_index == 1.0 ) return m_E0*exp(f*log(m_emax/m_E0));
00074     
00075     float x = 1 - exp((1-m_index)*log(m_emax/m_E0));
00076     return m_E0*exp(log(1-x*f)/(1-m_index));
00077 }

float SimpleSpectrum::parseParamList std::string    input,
int    index
[private]
 

Definition at line 90 of file SimpleSpectrum.cxx.

00091 {
00092     std::vector<float> output;
00093     int i=0;
00094     for(;!input.empty() && i!=std::string::npos;){
00095         float f = ::atof( input.c_str() );
00096         output.push_back(f);
00097         i=input.find_first_of(",");
00098         input= input.substr(i+1);
00099     } 
00100     return output[index];
00101 }

const char * SimpleSpectrum::particleName   const [virtual]
 

subclasses need to specify correct particle type.

Reimplemented from Spectrum.

Definition at line 80 of file SimpleSpectrum.cxx.

References m_name.

00081 {
00082     return m_name.c_str();
00083 }

void SimpleSpectrum::setPosition float   ,
float   
[inline]
 

Definition at line 32 of file SimpleSpectrum.h.

00032 {}

std::string SimpleSpectrum::title   const [virtual]
 

return a title describing the spectrum.

Reimplemented from Spectrum.

Definition at line 58 of file SimpleSpectrum.cxx.

00059 {
00060     std::strstream s;
00061     s << particleName() << '(' << m_E0 << " GeV";
00062     if( m_index >=1 ) s << ',' << m_index ;
00063     s << ")" << '\0';
00064     std::string t(s.str()); s.freeze(false);
00065     return t;
00066 }


Member Data Documentation

float SimpleSpectrum::m_E0 [private]
 

Definition at line 39 of file SimpleSpectrum.h.

Referenced by SimpleSpectrum().

float SimpleSpectrum::m_emax [private]
 

Definition at line 42 of file SimpleSpectrum.h.

Referenced by SimpleSpectrum().

float SimpleSpectrum::m_index [private]
 

Definition at line 41 of file SimpleSpectrum.h.

Referenced by SimpleSpectrum().

std::string SimpleSpectrum::m_name [private]
 

Definition at line 40 of file SimpleSpectrum.h.

Referenced by particleName(), and SimpleSpectrum().


The documentation for this class was generated from the following files:
Generated on Wed Oct 16 14:01:35 2002 by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001