ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4TessellatedGeometryAlgorithms.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4TessellatedGeometryAlgorithms.hh
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration and of QinetiQ Ltd, *
20 // * subject to DEFCON 705 IPR conditions. *
21 // * By using, copying, modifying or distributing the software (or *
22 // * any work based on the software) you agree to acknowledge its *
23 // * use in resulting scientific publications, and indicate your *
24 // * acceptance of all terms of the Geant4 Software license. *
25 // ********************************************************************
26 //
27 // G4TessellatedGeometryAlgorithms
28 //
29 // Class description:
30 //
31 // The G4TessellatedGeometryAlgorithms class is used to contain standard
32 // routines to determine whether (and if so where) simple geometric shapes
33 // intersect.
34 //
35 // The constructor doesn't need to do anything, and neither does the
36 // destructor.
37 //
38 // IntersectLineAndTriangle2D
39 // Determines whether there is an intersection between a line defined
40 // by r = p + s.v and a triangle defined by verticies P0, P0+E0 and P0+E1.
41 // Here:
42 // p = 2D vector
43 // s = scaler on [0,infinity)
44 // v = 2D vector
45 // P0, E0 and E1 are 2D vectors
46 // Information about where the intersection occurs is returned in the
47 // variable location.
48 //
49 // IntersectLineAndLineSegment2D
50 // Determines whether there is an intersection between a line defined
51 // by r = P0 + s.D0 and a line-segment with endpoints P1 and P1+D1.
52 // Here:
53 // P0 = 2D vector
54 // s = scaler on [0,infinity)
55 // D0 = 2D vector
56 // P1 and D1 are 2D vectors
57 // Information about where the intersection occurs is returned in the
58 // variable location.
59 
60 // 07 August 2007, P R Truscott, QinetiQ Ltd, UK - Created, with member
61 // functions based on the work of Rickard Holmberg.
62 // 12 October 2012, M Gayer, CERN, - Reviewed optimized implementation.
63 // --------------------------------------------------------------------
64 #ifndef G4TESSELLATEDGEOMETRYALGORITHMS_HH
65 #define G4TESSELLATEDGEOMETRYALGORITHMS_HH 1
66 
67 #include "G4TwoVector.hh"
68 
70 {
71  public:
72 
74  const G4TwoVector& v,
75  const G4TwoVector& p0,
76  const G4TwoVector& e0,
77  const G4TwoVector& e1,
78  G4TwoVector location[2]);
80  const G4TwoVector& d0,
81  const G4TwoVector& p1,
82  const G4TwoVector& d1,
83  G4TwoVector location[2]);
84  static G4double cross(const G4TwoVector& v1, const G4TwoVector& v2);
85 };
86 
87 #endif