00001
00002
00003
00004 #ifndef TWO_PHOTON_H_
00005 #define TWO_PHOTON_H_
00006
00007 #include "transition.h"
00008
00009 class two_photon
00010 {
00011 public:
00012 two_photon()
00013 {
00014 ipHi = -1;
00015 ipLo = -1;
00016 Pop = NULL;
00017 E2nu = 0.;
00018 AulTotal = 0.f;
00019 ipTwoPhoE = -1;
00020 ipSym2nu.clear();
00021 As2nu.clear();
00022 local_emis.clear();
00023 induc_up = 0.;
00024 induc_dn = 0.;
00025 induc_dn_max = 0.;
00026 }
00027
00028 void Reset()
00029 {
00030 induc_up = 0.;
00031 induc_dn = 0.;
00032 induc_dn_max = 0.;
00033 }
00034
00035 long ipHi, ipLo;
00036 double* Pop;
00037 double E2nu;
00038 realnum AulTotal;
00039
00040
00041 long ipTwoPhoE;
00042
00043
00044 vector<long> ipSym2nu;
00045
00046 vector<realnum> As2nu;
00047
00048 vector<realnum> local_emis;
00049
00050
00051 double induc_up;
00052
00053 double induc_dn;
00054
00055 double induc_dn_max;
00056 };
00057
00058 void atmdat_2phot_setSplineCoefs();
00059
00066 double atmdat_2phot_shapefunction( double EbyE2nu, long ipISO, long nelem );
00067
00068 void CalcTwoPhotonRates( two_photon& tnu, bool lgDoInduced );
00069 void CalcTwoPhotonEmission( two_photon& tnu, bool lgDoInduced );
00070
00071 void PrtTwoPhotonEmissCoef( const two_photon& tnu, const double& densityProduct );
00072
00073
00074 void TwoPhotonSetup( vector<two_photon> &tnu_vec, const long &ipHi, const long &ipLo, const double &Aul, const TransitionProxy &tr, const long ipISO, const long nelem );
00075
00076 #endif