Photon.cc

Go to the documentation of this file.
00001 #include <esg/energy/Photon.h>
00002 
00003 using namespace esg;
00004 
00005 const double Photon::COS_THETA [256] =
00006     {    // for (int i = 0; i < 256; i++) cos(i * (1./256.) * M_PI)
00007          1.000000,  0.999925,  0.999699,  0.999322,  0.998795,  0.998118, 
00008          0.997290,  0.996313,  0.995185,  0.993907,  0.992480,  0.990903, 
00009          0.989177,  0.987301,  0.985278,  0.983105,  0.980785,  0.978317, 
00010          0.975702,  0.972940,  0.970031,  0.966976,  0.963776,  0.960431, 
00011          0.956940,  0.953306,  0.949528,  0.945607,  0.941544,  0.937339, 
00012          0.932993,  0.928506,  0.923880,  0.919114,  0.914210,  0.909168, 
00013          0.903989,  0.898674,  0.893224,  0.887640,  0.881921,  0.876070, 
00014          0.870087,  0.863973,  0.857729,  0.851355,  0.844854,  0.838225, 
00015          0.831470,  0.824589,  0.817585,  0.810457,  0.803208,  0.795837, 
00016          0.788346,  0.780737,  0.773010,  0.765167,  0.757209,  0.749136, 
00017          0.740951,  0.732654,  0.724247,  0.715731,  0.707107,  0.698376, 
00018          0.689541,  0.680601,  0.671559,  0.662416,  0.653173,  0.643832, 
00019          0.634393,  0.624859,  0.615232,  0.605511,  0.595699,  0.585798, 
00020          0.575808,  0.565732,  0.555570,  0.545325,  0.534998,  0.524590, 
00021          0.514103,  0.503538,  0.492898,  0.482184,  0.471397,  0.460539, 
00022          0.449611,  0.438616,  0.427555,  0.416430,  0.405241,  0.393992, 
00023          0.382683,  0.371317,  0.359895,  0.348419,  0.336890,  0.325310, 
00024          0.313682,  0.302006,  0.290285,  0.278520,  0.266713,  0.254866, 
00025          0.242980,  0.231058,  0.219101,  0.207111,  0.195090,  0.183040, 
00026          0.170962,  0.158858,  0.146730,  0.134581,  0.122411,  0.110222, 
00027          0.098017,  0.085797,  0.073565,  0.061321,  0.049068,  0.036807, 
00028          0.024541,  0.012272,  0.000000, -0.012272, -0.024541, -0.036807, 
00029         -0.049068, -0.061321, -0.073565, -0.085797, -0.098017, -0.110222, 
00030         -0.122411, -0.134581, -0.146730, -0.158858, -0.170962, -0.183040, 
00031         -0.195090, -0.207111, -0.219101, -0.231058, -0.242980, -0.254866, 
00032         -0.266713, -0.278520, -0.290285, -0.302006, -0.313682, -0.325310, 
00033         -0.336890, -0.348419, -0.359895, -0.371317, -0.382683, -0.393992, 
00034         -0.405241, -0.416430, -0.427555, -0.438616, -0.449611, -0.460539, 
00035         -0.471397, -0.482184, -0.492898, -0.503538, -0.514103, -0.524590, 
00036         -0.534998, -0.545325, -0.555570, -0.565732, -0.575808, -0.585798, 
00037         -0.595699, -0.605511, -0.615232, -0.624859, -0.634393, -0.643832, 
00038         -0.653173, -0.662416, -0.671559, -0.680601, -0.689541, -0.698376, 
00039         -0.707107, -0.715731, -0.724247, -0.732654, -0.740951, -0.749136, 
00040         -0.757209, -0.765167, -0.773010, -0.780737, -0.788346, -0.795837, 
00041         -0.803208, -0.810457, -0.817585, -0.824589, -0.831470, -0.838225, 
00042         -0.844854, -0.851355, -0.857729, -0.863973, -0.870087, -0.876070, 
00043         -0.881921, -0.887640, -0.893224, -0.898674, -0.903989, -0.909168, 
00044         -0.914210, -0.919114, -0.923880, -0.928506, -0.932993, -0.937339, 
00045         -0.941544, -0.945607, -0.949528, -0.953306, -0.956940, -0.960431, 
00046         -0.963776, -0.966976, -0.970031, -0.972940, -0.975702, -0.978317, 
00047         -0.980785, -0.983105, -0.985278, -0.987301, -0.989177, -0.990903, 
00048         -0.992480, -0.993907, -0.995185, -0.996313, -0.997290, -0.998118, 
00049         -0.998795, -0.999322, -0.999699, -0.999925
00050     };
00051 
00052 const double Photon::SIN_THETA [256] =
00053     {    // for (int i = 0; i < 256; i++) sin(i * (1./256.) * M_PI)
00054         0.000000, 0.012272, 0.024541, 0.036807, 0.049068, 0.061321, 
00055         0.073565, 0.085797, 0.098017, 0.110222, 0.122411, 0.134581, 
00056         0.146730, 0.158858, 0.170962, 0.183040, 0.195090, 0.207111, 
00057         0.219101, 0.231058, 0.242980, 0.254866, 0.266713, 0.278520, 
00058         0.290285, 0.302006, 0.313682, 0.325310, 0.336890, 0.348419, 
00059         0.359895, 0.371317, 0.382683, 0.393992, 0.405241, 0.416430, 
00060         0.427555, 0.438616, 0.449611, 0.460539, 0.471397, 0.482184, 
00061         0.492898, 0.503538, 0.514103, 0.524590, 0.534998, 0.545325, 
00062         0.555570, 0.565732, 0.575808, 0.585798, 0.595699, 0.605511, 
00063         0.615232, 0.624859, 0.634393, 0.643832, 0.653173, 0.662416, 
00064         0.671559, 0.680601, 0.689541, 0.698376, 0.707107, 0.715731, 
00065         0.724247, 0.732654, 0.740951, 0.749136, 0.757209, 0.765167, 
00066         0.773010, 0.780737, 0.788346, 0.795837, 0.803208, 0.810457, 
00067         0.817585, 0.824589, 0.831470, 0.838225, 0.844854, 0.851355, 
00068         0.857729, 0.863973, 0.870087, 0.876070, 0.881921, 0.887640, 
00069         0.893224, 0.898674, 0.903989, 0.909168, 0.914210, 0.919114, 
00070         0.923880, 0.928506, 0.932993, 0.937339, 0.941544, 0.945607, 
00071         0.949528, 0.953306, 0.956940, 0.960431, 0.963776, 0.966976, 
00072         0.970031, 0.972940, 0.975702, 0.978317, 0.980785, 0.983105, 
00073         0.985278, 0.987301, 0.989177, 0.990903, 0.992480, 0.993907, 
00074         0.995185, 0.996313, 0.997290, 0.998118, 0.998795, 0.999322, 
00075         0.999699, 0.999925, 1.000000, 0.999925, 0.999699, 0.999322, 
00076         0.998795, 0.998118, 0.997290, 0.996313, 0.995185, 0.993907, 
00077         0.992480, 0.990903, 0.989177, 0.987301, 0.985278, 0.983105, 
00078         0.980785, 0.978317, 0.975702, 0.972940, 0.970031, 0.966976, 
00079         0.963776, 0.960431, 0.956940, 0.953306, 0.949528, 0.945607, 
00080         0.941544, 0.937339, 0.932993, 0.928506, 0.923880, 0.919114, 
00081         0.914210, 0.909168, 0.903989, 0.898674, 0.893224, 0.887640, 
00082         0.881921, 0.876070, 0.870087, 0.863973, 0.857729, 0.851355, 
00083         0.844854, 0.838225, 0.831470, 0.824589, 0.817585, 0.810457, 
00084         0.803208, 0.795837, 0.788346, 0.780737, 0.773010, 0.765167, 
00085         0.757209, 0.749136, 0.740951, 0.732654, 0.724247, 0.715731, 
00086         0.707107, 0.698376, 0.689541, 0.680601, 0.671559, 0.662416, 
00087         0.653173, 0.643832, 0.634393, 0.624859, 0.615232, 0.605511, 
00088         0.595699, 0.585798, 0.575808, 0.565732, 0.555570, 0.545325, 
00089         0.534998, 0.524590, 0.514103, 0.503538, 0.492898, 0.482184, 
00090         0.471397, 0.460539, 0.449611, 0.438616, 0.427555, 0.416430, 
00091         0.405241, 0.393992, 0.382683, 0.371317, 0.359895, 0.348419, 
00092         0.336890, 0.325310, 0.313682, 0.302006, 0.290285, 0.278520, 
00093         0.266713, 0.254866, 0.242980, 0.231058, 0.219101, 0.207111, 
00094         0.195090, 0.183040, 0.170962, 0.158858, 0.146730, 0.134581, 
00095         0.122411, 0.110222, 0.098017, 0.085797, 0.073565, 0.061321, 
00096         0.049068, 0.036807, 0.024541, 0.012272
00097     };
00098 
00099 const double Photon::COS_PHI [256] =
00100     {    // for (int i = 0; i < 256; i++) cos(2 * i * (1./256.) * M_PI)
00101          1.000000,  0.999699,  0.998795,  0.997290,  0.995185,  0.992480, 
00102          0.989177,  0.985278,  0.980785,  0.975702,  0.970031,  0.963776, 
00103          0.956940,  0.949528,  0.941544,  0.932993,  0.923880,  0.914210, 
00104          0.903989,  0.893224,  0.881921,  0.870087,  0.857729,  0.844854, 
00105          0.831470,  0.817585,  0.803208,  0.788346,  0.773010,  0.757209, 
00106          0.740951,  0.724247,  0.707107,  0.689541,  0.671559,  0.653173, 
00107          0.634393,  0.615232,  0.595699,  0.575808,  0.555570,  0.534998, 
00108          0.514103,  0.492898,  0.471397,  0.449611,  0.427555,  0.405241, 
00109          0.382683,  0.359895,  0.336890,  0.313682,  0.290285,  0.266713, 
00110          0.242980,  0.219101,  0.195090,  0.170962,  0.146730,  0.122411, 
00111          0.098017,  0.073565,  0.049068,  0.024541,  0.000000, -0.024541, 
00112         -0.049068, -0.073565, -0.098017, -0.122411, -0.146730, -0.170962, 
00113         -0.195090, -0.219101, -0.242980, -0.266713, -0.290285, -0.313682, 
00114         -0.336890, -0.359895, -0.382683, -0.405241, -0.427555, -0.449611, 
00115         -0.471397, -0.492898, -0.514103, -0.534998, -0.555570, -0.575808, 
00116         -0.595699, -0.615232, -0.634393, -0.653173, -0.671559, -0.689541, 
00117         -0.707107, -0.724247, -0.740951, -0.757209, -0.773010, -0.788346, 
00118         -0.803208, -0.817585, -0.831470, -0.844854, -0.857729, -0.870087, 
00119         -0.881921, -0.893224, -0.903989, -0.914210, -0.923880, -0.932993, 
00120         -0.941544, -0.949528, -0.956940, -0.963776, -0.970031, -0.975702, 
00121         -0.980785, -0.985278, -0.989177, -0.992480, -0.995185, -0.997290, 
00122         -0.998795, -0.999699, -1.000000, -0.999699, -0.998795, -0.997290, 
00123         -0.995185, -0.992480, -0.989177, -0.985278, -0.980785, -0.975702, 
00124         -0.970031, -0.963776, -0.956940, -0.949528, -0.941544, -0.932993, 
00125         -0.923880, -0.914210, -0.903989, -0.893224, -0.881921, -0.870087, 
00126         -0.857729, -0.844854, -0.831470, -0.817585, -0.803208, -0.788346, 
00127         -0.773010, -0.757209, -0.740951, -0.724247, -0.707107, -0.689541, 
00128         -0.671559, -0.653173, -0.634393, -0.615232, -0.595699, -0.575808, 
00129         -0.555570, -0.534998, -0.514103, -0.492898, -0.471397, -0.449611, 
00130         -0.427555, -0.405241, -0.382683, -0.359895, -0.336890, -0.313682, 
00131         -0.290285, -0.266713, -0.242980, -0.219101, -0.195090, -0.170962, 
00132         -0.146730, -0.122411, -0.098017, -0.073565, -0.049068, -0.024541, 
00133         -0.000000,  0.024541,  0.049068,  0.073565,  0.098017,  0.122411, 
00134          0.146730,  0.170962,  0.195090,  0.219101,  0.242980,  0.266713, 
00135          0.290285,  0.313682,  0.336890,  0.359895,  0.382683,  0.405241, 
00136          0.427555,  0.449611,  0.471397,  0.492898,  0.514103,  0.534998, 
00137          0.555570,  0.575808,  0.595699,  0.615232,  0.634393,  0.653173, 
00138          0.671559,  0.689541,  0.707107,  0.724247,  0.740951,  0.757209, 
00139          0.773010,  0.788346,  0.803208,  0.817585,  0.831470,  0.844854, 
00140          0.857729,  0.870087,  0.881921,  0.893224,  0.903989,  0.914210, 
00141          0.923880,  0.932993,  0.941544,  0.949528,  0.956940,  0.963776, 
00142          0.970031,  0.975702,  0.980785,  0.985278,  0.989177,  0.992480, 
00143          0.995185,  0.997290,  0.998795,  0.999699
00144     };
00145 
00146 const double Photon::SIN_PHI [256] =
00147     {    // for (int i = 0; i < 256; i++) sin(2 *i * (1./256.) * M_PI)
00148          0.000000,  0.024541,  0.049068,  0.073565,  0.098017,  0.122411, 
00149          0.146730,  0.170962,  0.195090,  0.219101,  0.242980,  0.266713, 
00150          0.290285,  0.313682,  0.336890,  0.359895,  0.382683,  0.405241, 
00151          0.427555,  0.449611,  0.471397,  0.492898,  0.514103,  0.534998, 
00152          0.555570,  0.575808,  0.595699,  0.615232,  0.634393,  0.653173, 
00153          0.671559,  0.689541,  0.707107,  0.724247,  0.740951,  0.757209, 
00154          0.773010,  0.788346,  0.803208,  0.817585,  0.831470,  0.844854, 
00155          0.857729,  0.870087,  0.881921,  0.893224,  0.903989,  0.914210, 
00156          0.923880,  0.932993,  0.941544,  0.949528,  0.956940,  0.963776, 
00157          0.970031,  0.975702,  0.980785,  0.985278,  0.989177,  0.992480, 
00158          0.995185,  0.997290,  0.998795,  0.999699,  1.000000,  0.999699, 
00159          0.998795,  0.997290,  0.995185,  0.992480,  0.989177,  0.985278, 
00160          0.980785,  0.975702,  0.970031,  0.963776,  0.956940,  0.949528, 
00161          0.941544,  0.932993,  0.923880,  0.914210,  0.903989,  0.893224, 
00162          0.881921,  0.870087,  0.857729,  0.844854,  0.831470,  0.817585, 
00163          0.803208,  0.788346,  0.773010,  0.757209,  0.740951,  0.724247, 
00164          0.707107,  0.689541,  0.671559,  0.653173,  0.634393,  0.615232, 
00165          0.595699,  0.575808,  0.555570,  0.534998,  0.514103,  0.492898, 
00166          0.471397,  0.449611,  0.427555,  0.405241,  0.382683,  0.359895, 
00167          0.336890,  0.313682,  0.290285,  0.266713,  0.242980,  0.219101, 
00168          0.195090,  0.170962,  0.146730,  0.122411,  0.098017,  0.073565, 
00169          0.049068,  0.024541,  0.000000, -0.024541, -0.049068, -0.073565, 
00170         -0.098017, -0.122411, -0.146730, -0.170962, -0.195090, -0.219101, 
00171         -0.242980, -0.266713, -0.290285, -0.313682, -0.336890, -0.359895, 
00172         -0.382683, -0.405241, -0.427555, -0.449611, -0.471397, -0.492898, 
00173         -0.514103, -0.534998, -0.555570, -0.575808, -0.595699, -0.615232, 
00174         -0.634393, -0.653173, -0.671559, -0.689541, -0.707107, -0.724247, 
00175         -0.740951, -0.757209, -0.773010, -0.788346, -0.803208, -0.817585, 
00176         -0.831470, -0.844854, -0.857729, -0.870087, -0.881921, -0.893224, 
00177         -0.903989, -0.914210, -0.923880, -0.932993, -0.941544, -0.949528, 
00178         -0.956940, -0.963776, -0.970031, -0.975702, -0.980785, -0.985278, 
00179         -0.989177, -0.992480, -0.995185, -0.997290, -0.998795, -0.999699, 
00180         -1.000000, -0.999699, -0.998795, -0.997290, -0.995185, -0.992480, 
00181         -0.989177, -0.985278, -0.980785, -0.975702, -0.970031, -0.963776, 
00182         -0.956940, -0.949528, -0.941544, -0.932993, -0.923880, -0.914210, 
00183         -0.903989, -0.893224, -0.881921, -0.870087, -0.857729, -0.844854, 
00184         -0.831470, -0.817585, -0.803208, -0.788346, -0.773010, -0.757209, 
00185         -0.740951, -0.724247, -0.707107, -0.689541, -0.671559, -0.653173, 
00186         -0.634393, -0.615232, -0.595699, -0.575808, -0.555570, -0.534998, 
00187         -0.514103, -0.492898, -0.471397, -0.449611, -0.427555, -0.405241, 
00188         -0.382683, -0.359895, -0.336890, -0.313682, -0.290285, -0.266713, 
00189         -0.242980, -0.219101, -0.195090, -0.170962, -0.146730, -0.122411, 
00190         -0.098017, -0.073565, -0.049068, -0.024541
00191     };
00192 
00193 
00194 Photon::Photon()
00195 {
00196     _position[0] = 0.0;
00197     _position[1] = 0.0;
00198     _position[2] = 0.0;
00199     _power.set(0.0, 0.0, 0.0);
00200     _phi = 0;
00201     _theta = 0;
00202     _plane = 0;
00203 }
00204 
00205 Photon::Photon(const Vector3& pos,
00206                const Vector3& dir,
00207                const Vector3& pow)
00208 {
00209     _position[0] = pos.x;
00210     _position[1] = pos.y;
00211     _position[2] = pos.z;
00212     _power.set(pow);
00213 
00214     int t = int(acos(dir.z) * (256./M_PI));
00215     _theta = (t > 255) ? 255 : (unsigned char) t;
00216 
00217     int p = int(atan2(dir.y, dir.x) * (256./(2.*M_PI)));
00218     _phi = (p > 255) ? 255 : ((unsigned char) ((p < 0) ? (p+256) : p));
00219 
00220     _plane = 0;
00221 }
00222 
00223 Photon::Photon(const Photon& src)
00224 {
00225     _position[0] = src._position[0];
00226     _position[1] = src._position[1];
00227     _position[2] = src._position[2];
00228     _power.set(src._power);
00229     _theta = src._theta;
00230     _phi   = src._phi;
00231     _plane = src._plane;
00232 }
00233 
00234 Photon& Photon::operator =(const Photon& src)
00235 {
00236     _position[0] = src._position[0];
00237     _position[1] = src._position[1];
00238     _position[2] = src._position[2];
00239     _power.set(src._power);
00240     _theta = src._theta;
00241     _phi   = src._phi;
00242     _plane = src._plane;
00243     return *this;
00244 }
00245 
00246 

Generated on Wed Jun 28 12:24:32 2006 for esg by  doxygen 1.4.6