LDisorder


class description - source file - inheritance tree

class LDisorder : public LMiki

    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()

Data Members

    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)

Class Description

  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.