// @(#)codeTDv2Final/CTDR_Electrons :$Name: $:$Id: CTDR_Electrons.h,v 1.20 2006/11/24 16:10:45 Benoit Exp $ // Author: Mathieu Benoit 24/11/06 ////////////////////////////////////////////////////////////////////////// // CTDR_Electron // // This class represent a charge element of a gamma interaction in CZT. // // It contains all the function to simulate its behavior // // from generation to collection // ////////////////////////////////////////////////////////////////////////// #ifndef CTDR_ELECTRON_H_DEF #define CTDR_ELECTRON_H_DEF #include "CTDR_Field.h" enum Etats {piege,libre}; // type de variable definisant l'etat d'un CTDR_Electron piegé ou libre enum E_piege {profond,normal}; enum E_collecte {collecte,Libre}; class CTDR_Electron : public TObject { private : long double x; //Position in X long double y; //Position in Y long double z; //Position in Z long double Q; //Charge long double mobilite; //Mobility long double D; //Diffusion coefficient double Temps_piegeage; //Time until next trap double Temps_depiegeage; //Time before detrapping Etats Etat; //true=piege, false =libre E_piege Etat_prochain_piege; //true = profond , false=normal E_collecte E_collection; //Collection state public : CTDR_Electron(); void SetValeurInitial (double x,double y, double z, double mobilite,double Q); void SetPosition (double x,double y, double z); void SetEtat (Etats etat_voulu,E_piege etat_piege_voulu); void Collecte(double z); E_collecte GetEcollecte(); long double GetX (); long double GetY (); long double GetZ (); long double GetQ (); Etats GetEtat (); void Piege (); void Depiege (); void Diffusion_Repulsion (bool diffusion, bool repulsion,double xrms, double yrms, double zrms,int N,double dt); void Transport (double Ex, double Ey, double Ez,double dt); void Iterateur (double dt,int N,double xrms,double yrms,double zrms,CTDR_Field &A); ClassDef(CTDR_Electron,0) //A charge element }; #endif