LDisorder
class description - source file - inheritance tree
private:
void Init()
long initseed() const
float Probability(const float r, const float e1, const float e2) const
void SaveProperties(const int save)
void SaveProperties(const float position, const float energy)
int Step()
int StepFast()
int Where(const float a) const
public:
LDisorder LDisorder()
LDisorder LDisorder(LSpace* space)
LDisorder LDisorder(const LDisorder&)
virtual void ~LDisorder()
static TClass* Class()
float* GetETrack() const
float* GetKTrack() const
long GetMax() const
long GetN() const
float GetTTime() const
virtual TClass* IsA() const
void SetGamma(const float gamma)
void SetMax(const long max)
void SetTemperature(const float temperature)
void SetTimeResolution(const float delta)
void SetWSpace(const int a, const int b, const int c)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
void Test(int testmode = 0)
void Walk()
void WalkFast()
private:
int idxexclude !temp.for calculcation
float* fprob !temp.array for storing probability
int fNprob !size of fprob-1
LSpace* fspace !space
LParticle* fe !electron in a space from LSpace
int fWa
int fWb
int fWc working space size (odd number!)
int fWa2
int fWb2
int fWc2 !working space size half
int fWa2c
int fWb2c
int fWc2c !working space size center
float boltzkTeV to speed up is here!
float fgamma gamma parameter
float ftemperature temperature parameter
float* fktrack !track of the particle position
float* fetrack !track of the particle energy
float ftime !recording time resolution (Delta t)
float ft !recording time (real time)
long fmax max number of events in track (default 10000)
long fN current position in recording (time index only)
Simulation of hopping in dissordered
sistem
an exaple of simulation is in file
final.cc. Full functionallity of this
class is implemented in file hoppclient.cc
with GetN() we get the time index (0..fmax-1)
if the value is 0, the simulation didn't
even started, if its value is equal to value
returned by GetMax(), than the transient time
is longer than recording time, since the time
index could be used also to calculcate transient time
The real time could be obtained also with
GetTTime(). If value is -1 than particle is trapped
and has not traveled to oposite electrode.
if value is 0, than particle exited space in first jump
with GetKTrack() and with GetETrack() we
get recorded tracks of electron...
first track is particle position index (k axis base cell index)
(if someone needs z coordinate the index should
be multiplied with LDataHeader::fbasez) vs time
second track is particle energy (eV) vs time
every array field correspond to time index. Realtime
is calculated using LDataHeader::fresolution
array size is defined with LDataHeader::fmax
main function is Walk() and its clone WalkFast()
with almost no output bla bla.
for 2D simulation use e.g. SetWSpace(7,1,7) or SetWSpace(1,7,7)
for 1D simulation use e.g. SetWSpace(1,1,7)
...before starting simulation
Test(mode) is for testing purposes
Note:
- fprob zero-indexed
- fktrack zero-indexed
- fetrack zero-indexed
- dont forget to SetTimeResolution()
Logs:
$Log: LDisorder.cc,v $
Revision 1.12 2004/07/13 09:57:57 cvs
found bug in tof normalization. solution is to multiply histogram with tof->Scale(data->fvt->GetEntries()/(Double_t)data->fN/(header->rpmax-header->rpmin)/header->fresolution); and then the tof is normalized! This bug was corrected and commited to cvs.
Revision 1.11 2003/12/15 15:54:17 cvs
i think i found a bug in SaveProperties(int), when saving old value.
Revision 1.10 2003/11/11 17:33:03 cvs
LServer upgraded
Revision 1.9 2003/08/20 10:26:50 cvs
Added scripts directory with two utilities now:
modify_header which modify existing header and send it database
deliver_header program and script which deliver header to clients
libLComm was made ROOT compatible and GetBias(z) was added to LDataHeader
Revision 1.8 2003/07/25 11:36:26 cvs
simulation of IV measurements is done with iv program
some minority fixes to LDisorder - corrected ft to match the recorded position
Revision 1.7 2003/06/26 14:46:16 cvs
found a bug in LSpace::GetEnergy() with fbias. Bug successfully resolved :)
Revision 1.6 2003/06/26 13:26:05 cvs
some bugs removed + some test methods implemented in LDisorder
Revision 1.5 2003/06/26 11:24:25 cvs
modified particle moving with LMiki and faster LDisorder operations
Revision 1.4 2003/06/26 09:27:11 cvs
added log fields...
LDisorder():LMiki()
empty constructor
LDisorder(LSpace* space):LMiki(space)
default constructor. Default working space set to 7x7x7
~LDisorder()
default destructor
void SetWSpace(const int a,const int b,const int c)
set working space size-lattice sites that are included in probablility calculation
prefered odd numbers!!
void SetMax(const long max)
Set maximum number of records
must be called before Walk() and similar methods
which need fktrack and fetrack
void SetTimeResolution(const float delta)
Set time resolution of records
must be called before Walk() and similar methods,
where the particle track is recorded
void Init()
get fe,fspace,fwspace and fmonitor from LMiki class
void Walk()
do a disorder hopping simulation of the particle
for more information get the report of this project.
for further references get the article:
H.Baessler:phys.stat.sol.B 175, 15, 1993.
Note:
If monitor is set, then it outputs to monitor.
this is nice but VERY slow
int Where(const float a) const
return position k in array, which satisfies arr[k-1]<a<=arr[k]
used with fprob
long initseed() const
inits seed
int Step()
A single step in dissorder hopping simulation
time is set as exponentially distributed deviate with average value of inverse of probability of jump
float Probability(const float r,const float e1,const float e2) const
Miller-Abrahams probabiliry for jump of length r
from energy e1 to energy e2 (in eV). fgamma, and ftemperature
are used too. Here it is assumed, that electron
orbitals are spherical. If not, the r must be vector!
this is for HOLES!!!!!
void SaveProperties(const int save)
save particle properties (position,energy) and increment fN and ft
if save=1 it save position else it copy previous
void SaveProperties(const float position,const float energy)
save particle properties (position,energy) and increment fN and ft
void WalkFast()
like LDisorder::Walk but optimized
no LMonitor connectivity and no verbose
int StepFast()
like LDisorder:Step but optimized with no LMonitor connectivity
to use with WalkFast
Test(int testmode)
this is for testing only
tests are:
1 - particle is moving in k direction until it exits space
2 - particle is moving in -k direction until it exits space
Inline Functions
void SetTemperature(const float temperature)
void SetGamma(const float gamma)
float* GetKTrack() const
float* GetETrack() const
float GetTTime() const
long GetN() const
long GetMax() const
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
LDisorder LDisorder(const LDisorder&)
Author: Egon Pavlica
Last update: Sat Oct 16 19:10:36 2004
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.