source: trunk/source/tracking/include/G4AdjointCrossSurfChecker.hh @ 1202

Last change on this file since 1202 was 1197, checked in by garnier, 15 years ago

nvx fichiers dans CVS

File size: 5.2 KB
Line 
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.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26// $Id: G4AdjointCrossSurfChecker.hh,v 1.2 2009/11/18 18:04:11 gcosmo Exp $
27// GEANT4 tag $Name: geant4-09-03-cand-01 $
28//
29/////////////////////////////////////////////////////////////////////////////////
30//      Class Name:     G4AdjointCrossSurfChecker
31//      Author:         L. Desorgher
32//      Organisation:   SpaceIT GmbH
33//      Contract:       ESA contract 21435/08/NL/AT
34//      Customer:       ESA/ESTEC
35/////////////////////////////////////////////////////////////////////////////////
36//
37// CHANGE HISTORY
38// --------------
39//      ChangeHistory:
40//              15 January 2007 creation by L. Desorgher
41//              - 01/11/2009 Some cleaning and adding of documentation for the
42//                           first Release in the Geant4 toolkit, L. Desorgher                 
43//
44//-------------------------------------------------------------
45//      Documentation:
46//              This class is responsible for checking the crossing of a surface
47//              that could be the  external boundary of a volume  or the external
48//              surface of a sphere.
49//              It is used to check if an adjoint particle reaches the external
50//              surface or reenter the sensitive region delimited by the adjoint
51//              source.   
52//
53
54#ifndef G4AdjointCrossSurfChecker_h
55#define G4AdjointCrossSurfChecker_h 1
56
57#include "globals.hh"
58#include "G4ThreeVector.hh"
59#include <vector>
60
61class G4Step;
62
63
64class G4AdjointCrossSurfChecker 
65{ 
66 public:
67 
68   static G4AdjointCrossSurfChecker* GetInstance();
69 
70 public:
71   
72   G4bool CrossingASphere(const G4Step* aStep,G4double sphere_radius, G4ThreeVector sphere_center,G4ThreeVector& crossing_pos, G4double& cos_to_surface, G4bool& GoingIn);
73   G4bool GoingInOrOutOfaVolume(const G4Step* aStep,const G4String& volume_name, G4double& cos_to_surface, G4bool& GoingIn);
74   G4bool GoingInOrOutOfaVolumeByExtSurface(const G4Step* aStep,const G4String& volume_name,const G4String& mother_log_vol_name, G4double& cos_to_surface, G4bool& GoingIn);
75
76   G4bool CrossingAGivenRegisteredSurface(const G4Step* aStep,const G4String& surface_name,G4ThreeVector& crossing_pos, G4double& cos_to_surface, G4bool& GoingIn);
77   G4bool CrossingAGivenRegisteredSurface(const G4Step* aStep, int ind,G4ThreeVector& crossing_pos,   G4double& cos_to_surface, G4bool& GoingIn);
78   G4bool CrossingOneOfTheRegisteredSurface(const G4Step* aStep,G4String& surface_name,G4ThreeVector& crossing_pos,G4double& cos_to_surface, G4bool& GoingIn);
79   G4bool CrossingAnInterfaceBetweenTwoVolumes(const G4Step* aStep,const G4String& vol1_name,const G4String& vol2_name,G4ThreeVector& crossing_pos, G4double& cos_to_surface, G4bool& GoingIn);
80   
81   G4bool AddaSphericalSurface(const G4String& SurfaceName, G4double radius, G4ThreeVector pos,G4double& area);
82   G4bool AddaSphericalSurfaceWithCenterAtTheCenterOfAVolume(const G4String& SurfaceName, G4double radius, const G4String& volume_name, G4ThreeVector& center,  G4double& area);
83   G4bool AddanExtSurfaceOfAvolume(const G4String& SurfaceName,const G4String& volume_name,G4double& area);
84   G4bool AddanInterfaceBetweenTwoVolumes(const G4String& SurfaceName, const G4String& volume_name1, const G4String& volume_name2,G4double& area);
85   void ClearListOfSelectedSurface();
86                       
87 private: 
88   
89   G4AdjointCrossSurfChecker();
90  ~G4AdjointCrossSurfChecker();
91   
92   G4int FindRegisteredSurface(const G4String& name);
93   
94 private: 
95   static G4AdjointCrossSurfChecker* instance;
96 
97   std::vector<G4String> ListOfSurfaceName;
98   std::vector<G4String> ListOfSurfaceType;
99   std::vector<G4double> ListOfSphereRadius;
100   std::vector<G4ThreeVector> ListOfSphereCenter;
101   std::vector<G4String> ListOfVol1Name;
102   std::vector<G4String> ListOfVol2Name;
103   std::vector<G4double> AreaOfSurface;
104
105};
106
107#endif
108
Note: See TracBrowser for help on using the repository browser.