15,7 → 15,9 |
|
#define MARGIN 1.0e-6 |
#define DEGREE 180.0/3.14159265358979312 |
#define MAX_REFLECTIONS 19 |
|
|
using namespace TMath; |
|
const double c_reflectivity = 0.96; |
22,10 → 24,11 |
const int REFRACTION = 1; |
const int REFLECTION = 2; |
const int TOTAL = 3; |
const int ABSORBED = -2; |
const TVector3 CENTER(-2.0, 0.0, 0.0); |
const int nch = 50; // number of "channels" used as number of bins in histograms |
|
enum Fate {missed=0, hit=1, refracted=-1, ok=2, noreflection=-2, backreflected=-3, rays=3, absorbed=4}; |
enum Fate {missed=0, hitExit=1, refracted=-1, enter=2, noreflection=-2, backreflected=-3, rays=3, absorbed=4}; |
|
int dbg = 0; |
|
179,8 → 182,8 |
// <-------- d -------> |
// |
|
#define VODNIK_MAX_ODB 19 |
|
|
int RCol(int col, int solid); |
|
|
201,7 → 204,9 |
_glassOn(0), |
_glassD(0), |
_guideOn(1), |
_plateOn(1) |
_plateOn(1), |
offsetY(2.5), |
offsetZ(2.5) |
{}; |
DetectorParameters(double a, double b, double d): |
_a(a), |
217,7 → 222,9 |
_glassOn(0), |
_glassD(0), |
_guideOn(1), |
_plateOn(1) |
_plateOn(1), |
offsetY(2.5), |
offsetZ(2.5) |
{}; |
~DetectorParameters() {}; |
|
255,6 → 262,8 |
double getGlassD() { return _glassD; }; |
int getGuideOn() { return _guideOn; }; |
int getPlateOn() { return _plateOn; }; |
double getOffsetY() { return offsetY; }; |
double getOffsetZ() { return offsetZ; }; |
|
private: |
double _a; |
266,6 → 275,8 |
double _n3; |
TVector3 _gap; |
double _plateWidth; |
double offsetY; |
double offsetZ; |
|
int _fresnel; |
int _glassOn; |
280,12 → 291,12 |
public: |
Guide(TVector3 center0, DetectorParameters& parameters); |
~Guide() { |
//delete [] s_side; // problematic -> dangling references, needs solution |
delete hfate; |
delete hnodb_all; |
delete hnodb_exit; |
delete hin; |
delete hout; |
for (int jk=0; jk<6; jk++) delete s_side[jk]; |
delete hfate; |
delete hnodb_all; |
delete hnodb_exit; |
delete hin; |
delete hout; |
} |
|
Fate PropagateRay(CRay in, CRay *out, int *n_points, TVector3 *points); |
302,7 → 313,7 |
int GetExitHits() {return (int)hfate->GetBinContent(5);}; |
int GetEnteranceHits() {return (int)hfate->GetBinContent(6);}; |
void GetVFate(int *out); |
int GetMAXODB() const {return VODNIK_MAX_ODB;}; |
int GetMAXODB() const {return MAX_REFLECTIONS;}; |
|
void Draw(int color = 1, int width = 1); |
void DrawSkel(int color = 1, int width = 1); |
349,12 → 360,13 |
{ |
public: |
Plate(DetectorParameters& parameters); |
~Plate() { //delete []sides; // the same, needs solution |
~Plate() { |
for (int jk=0; jk<6; jk++) delete sides[jk]; // the same, needs solution |
}; |
|
void draw(int color, int width); |
void drawSkel(int color, int width); |
int propagateRay(CRay, CRay*, int*, TVector3*); |
Fate propagateRay(CRay, CRay*, int*, TVector3*); |
|
private: |
TVector3 plate_edge[8]; |
478,6 → 490,9 |
int _plateOn; |
|
TH2F *histoPlate; |
|
double offsetY; |
double offsetZ; |
}; |
|
|