Source code for casinotools.fileformat.casino3.OptionsDist

#!/usr/bin/env python
""" """

# Script information for the file.
__author__ = "Hendrix Demers (hendrix.demers@mail.mcgill.ca)"
__version__ = ""
__date__ = ""
__copyright__ = "Copyright (c) 2009 Hendrix Demers"
__license__ = ""

# Standard library modules.

# Third party modules.

# Local modules.
import casinotools.fileformat.FileReaderWriterTools as FileReaderWriterTools
import casinotools.fileformat.casino3.Vector as Vector

# Globals and constants variables.

# Filename to store the defaults settings
OPTIONS_DIST_DEF_FILENAME = "Distribution_Settings_Defaults.dat"

#-----------------------------------------------------------------------------
#/ possible values for the RangeFinder parameter (used to specify how the range
#/ of the distributions are found.
#-----------------------------------------------------------------------------
RANGE_SIMULATED = 0
RANGE_OKAYAMA = 1
RANGE_HOVINGTON = 2
RANGE_FIXED = 3
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
#/ possible values for the Energy by Position (DEpos) Distribution Type
#/ combo box
#-----------------------------------------------------------------------------
DIST_DEPOS_TYPE_CARTESIAN = 0 #cartesian
DIST_DEPOS_TYPE_CYLINDRIC = 1 #cylindric
DIST_DEPOS_TYPE_SPHERIC = 2 #spheric
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
#/ possible value for the position of the center
#-----------------------------------------------------------------------------
DIST_DEPOS_POSITION_ABSOLUTE = 0
DIST_DEPOS_POSITION_RELATIVE = 1
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
#/ Associated with RangeFinder
#-----------------------------------------------------------------------------
RANGE_SAFETY_FACTOR = 1.5
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
#/ value indicating that this value of the distribution is to be determined
#/ automatically.
#-----------------------------------------------------------------------------
autoFlag = -4e34
#-----------------------------------------------------------------------------

#//--------------------------------------
#// Flags for distributions
#//--------------------------------------
#
#//-----------------------------------------------------------------------------
#/// Flag to generate X-Ray
#//-----------------------------------------------------------------------------
#    int    FEmissionRX;
#    int FEmissionRXLog;
#    int NbreCoucheRX;
#//-----------------------------------------------------------------------------
#/// Distribution of the maximum dethp
#//-----------------------------------------------------------------------------
#    int FDZmax;
#    int FDZmaxLog;
#    int NbPointDZMax;
#    double DZmaxMax;
#    double DZmaxMin;
#//-----------------------------------------------------------------------------
#/// Distribution of Energy of the backscattered electron
#//-----------------------------------------------------------------------------
#    int FDenr;
#    int FDenrLog;
#    int NbPointDENR;
#    double DenrMax;
#    double DenrMin;
#//-----------------------------------------------------------------------------
#/// Distribution of Energy of the transmitted electron
#//-----------------------------------------------------------------------------
#    int FDent;
#    int FDentLog;
#    int NbPointDENT;
#    double DentMax;
#    double DentMin;
#//-----------------------------------------------------------------------------
#/// Distribution of the escape radius of the backscattered electorn
#//-----------------------------------------------------------------------------
#    int FDrsr;
#    int FDrsrLog;
#    int NbPointDRSR;
#    double DrsrMax;
#    double DrsrMin;
#//-----------------------------------------------------------------------------
#/// Distribution of the Backscattered electron angle relative to Z axis
#//-----------------------------------------------------------------------------
#    int FDbang;
#    int FDbangLog;
#    int NbPointDBANG;
#    double DbangMax;
#    double DbangMin;
#//-----------------------------------------------------------------------------
#
#
#//--------------------------------------
#// DEpos : Distribution of energy by position
#//--------------------------------------
#    int Flag_Energy_Density;
#    int DEpos_Type;
#
#    int NbPointDEpos_X;
#    int NbPointDEpos_Y;
#    int NbPointDEpos_Z;
#    int DEpos_LogX;
#    int DEpos_LogY;
#    int DEpos_LogZ;
#
#    vector<double> DEpos_Center;
#    vector<double> DEpos_Size;
#
#    int DEposSpheric_Rad_Div;
#    double DEposSpheric_Rad;
#    int DEposSpheric_Rad_Log;
#
#    int DEposCyl_Rad_Div;
#    double DEposCyl_Rad;
#    int DEposCyl_Rad_Log;
#    int DEposCyl_Z_Div;
#    double DEposCyl_Z;
#    int DEposCyl_Z_Log;
#
#    int DEpos_Position;
#//-----------------------------------------------------------------------------
#
#///--------------------------------------
#// Range
#///--------------------------------------
#
#//-----------------------------------------------------------------------------
#/// Max Range Parameter from the Distribution dialog.
#/// @note : see possible values above
#//-----------------------------------------------------------------------------
#    int RangeFinder;
#//-----------------------------------------------------------------------------
[docs]class OptionsDist(FileReaderWriterTools.FileReaderWriterTools): def __init__(self): self.reset()
[docs] def write(self, file): assert getattr(file, 'mode', 'wb') == 'wb' pass
# Tags::AddTag(file, "*DIST_OPT_BEG", 15); # writeVersion(file); # # safewrite<double>(file, DenrMax); # safewrite<double>(file, DenrMin); # safewrite<double>(file, DentMax); # safewrite<double>(file, DentMin); # safewrite<double>(file, DrsrMax); # safewrite<double>(file, DrsrMin); # safewrite<double>(file, DZmaxMax); # safewrite<double>(file, DZmaxMin); # safewrite<double>(file, DbangMax); # safewrite<double>(file, DbangMin); # # safewrite<int>(file, FDZmaxLog); # safewrite<int>(file, FDenrLog); # safewrite<int>(file, FDentLog); # safewrite<int>(file, FDrsrLog); # safewrite<int>(file, FDbangLog); # safewrite<int>(file, FEmissionRXLog); # # safewrite<int>(file, FEmissionRX); # safewrite<int>(file, FDZmax); # safewrite<int>(file, FDenr); # safewrite<int>(file, FDent); # safewrite<int>(file, FDrsr); # safewrite<int>(file, Flag_Energy_Density); # safewrite<int>(file, FDbang); # # safewrite<int>(file, NbPointDZMax); # safewrite<int>(file, NbPointDENR); # safewrite<int>(file, NbPointDENT); # safewrite<int>(file, NbPointDRSR); # safewrite<int>(file, NbPointDEpos_X); # safewrite<int>(file, NbPointDEpos_Y); # safewrite<int>(file, NbPointDEpos_Z); # safewrite<int>(file, NbPointDBANG); # # safewrite<int>(file, RangeFinder); # # safewrite<double>(file, DEpos_Center.x); # safewrite<double>(file, DEpos_Center.y); # safewrite<double>(file, DEpos_Center.z); # safewrite<double>(file, DEpos_Size.x); # safewrite<double>(file, DEpos_Size.y); # safewrite<double>(file, DEpos_Size.z); # # //--------------------------- # // added : version 3010405 # safewrite<int>(file, DEpos_Type); # # safewrite<int>(file, DEposSpheric_Rad_Div); # safewrite<double>(file, DEposSpheric_Rad); # safewrite<int>(file, DEposSpheric_Rad_Log); # # safewrite<int>(file, DEposCyl_Rad_Div); # safewrite<double>(file, DEposCyl_Rad); # safewrite<int>(file, DEposCyl_Rad_Log); # safewrite<int>(file, DEposCyl_Z_Div); # safewrite<double>(file, DEposCyl_Z); # safewrite<int>(file, DEposCyl_Z_Log); # # //new version 30104072 # safewrite<int>(file, DEpos_Position); # //--------------------------- # # Tags::AddTag(file, "*DIST_OPT_END", 15);
[docs] def read(self, file): tagID = b"*DIST_OPT_BEG" self.findTag(file, tagID) self._version = self.readInt(file) self.DenrMax = self.readDouble(file) self.DenrMin = self.readDouble(file) self.DentMax = self.readDouble(file) self.DentMin = self.readDouble(file) self.DrsrMax = self.readDouble(file) self.DrsrMin = self.readDouble(file) self.DZmaxMax = self.readDouble(file) self.DZmaxMin = self.readDouble(file) self.DbangMax = self.readDouble(file) self.DbangMin = self.readDouble(file) self.FDZmaxLog = self.readInt(file) self.FDenrLog = self.readInt(file) self.FDentLog = self.readInt(file) self.FDrsrLog = self.readInt(file) self.FDbangLog = self.readInt(file) self.FEmissionRXLog = self.readInt(file) self.FEmissionRX = self.readInt(file) self.FDZmax = self.readInt(file) self.FDenr = self.readInt(file) self.FDent = self.readInt(file) self.FDrsr = self.readInt(file) self.Flag_Energy_Density = self.readInt(file) self.FDbang = self.readInt(file) self.NbPointDZMax = self.readInt(file) self.NbPointDENR = self.readInt(file) self.NbPointDENT = self.readInt(file) self.NbPointDRSR = self.readInt(file) self.NbPointDEpos_X = self.readInt(file) self.NbPointDEpos_Y = self.readInt(file) self.NbPointDEpos_Z = self.readInt(file) self.NbPointDBANG = self.readInt(file) self.RangeFinder = self.readInt(file) self.DEpos_Center.x = self.readDouble(file) self.DEpos_Center.y = self.readDouble(file) self.DEpos_Center.z = self.readDouble(file) self.DEpos_Size.x = self.readDouble(file) self.DEpos_Size.y = self.readDouble(file) self.DEpos_Size.z = self.readDouble(file) self.DEpos_Type = self.readInt(file) self.DEposSpheric_Rad_Div = self.readInt(file) self.DEposSpheric_Rad = self.readDouble(file) self.DEposSpheric_Rad_Log = self.readInt(file) self.DEposCyl_Rad_Div = self.readInt(file) self.DEposCyl_Rad = self.readDouble(file) self.DEposCyl_Rad_Log = self.readInt(file) self.DEposCyl_Z_Div = self.readInt(file) self.DEposCyl_Z = self.readDouble(file) self.DEposCyl_Z_Log = self.readInt(file) self.DEpos_Position = self.readInt(file) tagID = b"*DIST_OPT_END" self.findTag(file, tagID)
[docs] def reset(self): self.FDZmax = 1; self.FDZmaxLog = 0; self.NbPointDZMax = 1000; self.DZmaxMax = autoFlag; self.DZmaxMin = autoFlag; self.FDenr = 1; self.FDenrLog = 0; self.NbPointDENR = 500; self.DenrMax = autoFlag; self.DenrMin = autoFlag; self.FDent = 1; self.FDentLog = 0; self.NbPointDENT = 500; self.DentMax = autoFlag; self.DentMin = autoFlag; self.FDrsr = 1; self.FDrsrLog = 0; self.NbPointDRSR = 500; self.DrsrMax = autoFlag; self.DrsrMin = autoFlag; self.FDbang = 1; self.FDbangLog = 0; self.NbPointDBANG = 91; self.DbangMax = autoFlag; self.DbangMin = autoFlag; self.FEmissionRX = 1; self.FEmissionRXLog = 0; self.NbreCoucheRX = 500; self.RangeFinder = RANGE_SIMULATED; self.Flag_Energy_Density = 1; self.DEpos_Type = 0; self.NbPointDEpos_X = 50; self.NbPointDEpos_Y = 50; self.NbPointDEpos_Z = 50; self.DEpos_Center = Vector.Vector(0.0, 0.0, 0.0); self.DEpos_Size = Vector.Vector(1000.0, 1000.0, 1000.0); self.DEposSpheric_Rad_Div = 50; self.DEposSpheric_Rad = 1000; self.DEposSpheric_Rad_Log = 0; self.DEposCyl_Rad_Div = 50; self.DEposCyl_Rad = 1000; self.DEposCyl_Rad_Log = 0; self.DEposCyl_Z_Div = 50; self.DEposCyl_Z = 1000; self.DEposCyl_Z_Log = 0; self.DEpos_Position = DIST_DEPOS_POSITION_ABSOLUTE;
[docs] def getDepositedEnergyCenter_nm(self): return self.DEpos_Center
[docs] def getDepositedEnergySize_nm(self): return self.DEpos_Size