#define ACCL1 #define ACCL2 #ifdef ACCL1 #define ACCL0 #endif #ifdef ACCL2 #define ACCL0 #endif static const float xx=1.e-5; static const float OVR=5; static const float R=OVR*0.178; union name{ unsigned short k; struct{ unsigned char dom; unsigned char str; unsigned short one; }; float f; name(){ f=1.0; } }; struct DOM{ name n; float r[3]; DOM(){ for(int i=0; i<3; i++) r[i]=0; } }; struct hit{ name n; float t; }; #ifdef ACCL2 static const int cx=10, cy=10, cz=10; #endif struct ices{ float wvl; // wavelength of this block float ocm; // 1 / speed of light in medium float coschr, sinchr; // cos and sin of the cherenkov angle struct{ float abs; // absorption float sca; // scattering } z []; }; struct state{ unsigned int rsize, ml; union{ unsigned long long da; struct{ unsigned int ax; unsigned int dx; }; }; }; struct dats{ state s; unsigned int * rm; unsigned long long * rs; int size; // size of kurt table float g; // float ocv; // 1 / speed of light in vacuum float dh, hdh, rdh, hmin; // step, 1/step, min and max depth ices * w; float t, r[3], n[3]; int type; float xt, xr[3], xn[3]; int hnum, hidx; hit * hits; int gsize; DOM * oms; #ifdef ACCL2 int cn[3]; float cl[3], crst[3]; short cidx[cx][cy][cz]; short * carr; #endif #include "pro.cxx" };