Source code for mermithid.processors.misc.FrequencyEnergyConversionProcessor
'''
Processor for converting frequencies into energies
'''
from __future__ import absolute_import
try:
from ROOT import TMath
except ImportError:
pass
from morpho.processors import BaseProcessor
from morpho.utilities import morphologging, reader
logger=morphologging.getLogger(__name__)
__all__ = []
__all__.append(__name__)
[docs]class FrequencyEnergyConversionProcessor(BaseProcessor):
'''
Convert frequency data to energy data given a magnetic field
'''
[docs] def get_kinetic_energy(self, frequency_Hz, B_tesla):
freq_c = self.omega_c/2.0/TMath.Pi()
gamma = freq_c / frequency_Hz * B_tesla;
return (gamma -1.) * self.m_electron;
[docs] def InternalConfigure(self, params):
"""
Args:
frequency_data: An list of frequencies to be converted to
energies, in Hz
B: Magnetic field used to convert frequency to energy in T
m_electron: Electron mass in eV (Default=510998.910)
omega_c: (Default=1.758820088e+11)
Input:
frequencies: list of frequencies to be converted
Results:
energies: list of the energies converted from frequencies in Hz
"""
self.params = params
self.B = reader.read_param(params, "B", "required")
self.m_electron = reader.read_param(params, "m_electron", 510998.910)
self.omega_c = reader.read_param(params, "omega_c", 1.758820088e+11)
self.frequencies = list()
self.energies = list()
return True
[docs] def InternalRun(self):
"""
Convert the frequencies to energies
Returns: Success of the execution
"""
for freq in self.frequencies:
self.energies.append(self.get_kinetic_energy(freq, self.B))
return True