source: JEM-EUSO/esaf_lal/tags/v1_r0/esaf/packages/simulation/detector/G4Detector/G4fresnellens/include/LensUtils.h @ 117

Last change on this file since 117 was 117, checked in by moretto, 11 years ago

ESAF version compilable on mac OS

File size: 2.4 KB
Line 
1#ifndef G4FresnelLens_HH
2#define G4FresnelLens_HH
3#include "FSIntersectedSegment.h"
4
5#include <geomdefs.hh>
6#include <G4ThreeVector.hh>
7
8namespace G4FresnelLens{
9    bool InLimits(double perp, double z, double r1, double z1, double r2, double z2);
10    bool InLimits2(double perp2, double z, double r1, double z1, double r2, double z2);
11    int  SolveQuadratic(double a, double b, double c, double& x1, double& x2);
12    int  BinarySearch(double*, double, int, int);
13    bool CompareVectors(const G4ThreeVector& v1, const G4ThreeVector& v2, double tolerance);
14    bool VectorIsZero(const G4ThreeVector& v1);
15    double Hyp(double x1, double y1, double x2, double y2);
16    bool VectorGoesOut(const G4ThreeVector& p, const G4ThreeVector& v);
17};
18
19//__________________________________________________________________________________
20inline double G4FresnelLens::Hyp(double x1, double y1, double x2, double y2){
21    double dx=x2-x1;
22    double dy=y2-y1;
23    return sqrt(dx*dx+dy*dy);
24}
25
26//__________________________________________________________________________________
27inline bool G4FresnelLens::VectorGoesOut(const G4ThreeVector& p, const G4ThreeVector& v){
28    return (p.x()*v.x()+p.y()*v.y())>=0.;
29}
30
31//__________________________________________________________________________________
32inline bool G4FresnelLens::InLimits(double perp, double z, double r1, double z1, double r2, double z2){
33    if ( z<z1 || z>z2 ) return false;
34    if ( perp<r1 || perp>r2 ) return false;
35    return true;
36}
37
38//__________________________________________________________________________________
39inline bool G4FresnelLens::InLimits2(double perp2, double z, double r1, double z1, double r2, double z2){
40    if ( z<z1 || z>z2 ) return false;
41    if ( perp2<r1*r1 || perp2>r2*r2 ) return false;
42    return true;
43}
44
45//__________________________________________________________________________________
46inline bool G4FresnelLens::CompareVectors(const G4ThreeVector& v1, const G4ThreeVector& v2, double tolerance) {
47    if ( fabs(v1.x()-v2.x())<tolerance &&
48         fabs(v1.y()-v2.y())<tolerance &&
49         fabs(v1.z()-v2.z())<tolerance
50       ) return true;
51
52   return false;
53}
54
55//__________________________________________________________________________________
56inline bool G4FresnelLens::VectorIsZero(const G4ThreeVector& v1){
57    if ( v1.x()==0 &&
58         v1.y()==0 &&
59         v1.z()==0
60       ) return true;
61
62   return false;
63}
64
65#endif
Note: See TracBrowser for help on using the repository browser.