source: trunk/source/processes/scoring/include/G4ParallelWorldScoringProcess.hh @ 963

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

update processes

File size: 5.8 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//
27// $Id: G4ParallelWorldScoringProcess.hh,v 1.4 2007/05/30 17:47:10 ahoward Exp $
28// GEANT4 tag $Name: geant4-09-02-ref-02 $
29//
30//
31//---------------------------------------------------------------
32//
33//  G4ParallelWorldScoringProcess.hh
34//
35//  Description:
36//    This procss takes a parallel world and limits a step
37//   on the boundaries of volumes in the parallel world.
38//    It invokes sensitive detectors assigned in the parallel
39//   world.
40//
41//---------------------------------------------------------------
42
43
44#ifndef G4ParallelWorldScoringProcess_h
45#define G4ParallelWorldScoringProcess_h 1
46
47#include "globals.hh"
48class G4Step;
49class G4Navigator;
50class G4TransportationManager;
51class G4PathFinder;
52class G4VTouchable;
53class G4VPhysicalVolume;
54class G4ParticleChange;
55#include "G4VProcess.hh"
56#include "G4FieldTrack.hh"
57#include "G4TouchableHandle.hh"
58
59//------------------------------------------
60//
61//        G4ParallelWorldScoringProcess class
62//
63//------------------------------------------
64
65
66// Class Description:
67
68class G4ParallelWorldScoringProcess : public G4VProcess
69{
70public: // with description
71
72  //------------------------
73  // Constructor/Destructor
74  //------------------------
75 
76  G4ParallelWorldScoringProcess(const G4String& processName = "ParaWorldScore",
77                                 G4ProcessType theType = fParameterisation);
78  virtual ~G4ParallelWorldScoringProcess();
79 
80  //--------------------------------------------------------------
81  // Set Paralle World
82  //--------------------------------------------------------------
83
84  void SetParallelWorld(G4String parallelWorldName);
85  void SetParallelWorld(G4VPhysicalVolume* parallelWorld);
86
87  //--------------------------------------------------------------
88  //     Process interface
89  //--------------------------------------------------------------
90
91  void StartTracking(G4Track*);
92 
93  //------------------------------------------------------------------------
94  // GetPhysicalInteractionLength() and DoIt() methods for AtRest
95  //------------------------------------------------------------------------
96 
97  G4double AtRestGetPhysicalInteractionLength(
98                                              const G4Track& ,
99                                              G4ForceCondition* 
100                                              );
101
102  G4VParticleChange* AtRestDoIt(
103                               const G4Track& ,
104                               const G4Step&
105                               );
106
107  //------------------------------------------------------------------------
108  // GetPhysicalInteractionLength() and DoIt() methods for AlongStep
109  //------------------------------------------------------------------------
110 
111  G4double AlongStepGetPhysicalInteractionLength(
112                                                 const G4Track&,
113                                                 G4double  ,
114                                                 G4double  ,
115                                                 G4double&,
116                                                 G4GPILSelection*
117                                                 );
118
119  G4VParticleChange* AlongStepDoIt(
120                                  const G4Track& ,
121                                  const G4Step& 
122                                  );
123
124  //-----------------------------------------------------------------------
125  // GetPhysicalInteractionLength() and DoIt() methods for PostStep
126  //-----------------------------------------------------------------------
127 
128  G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
129                                                G4double   previousStepSize,
130                                                G4ForceCondition* condition);
131 
132  G4VParticleChange* PostStepDoIt(const G4Track& ,const G4Step& );
133
134private:
135  void CopyStep(const G4Step & step);
136
137  G4Step * fGhostStep;
138  G4StepPoint * fGhostPreStepPoint;
139  G4StepPoint * fGhostPostStepPoint;
140
141  G4VParticleChange aDummyParticleChange;
142  G4ParticleChange xParticleChange;
143
144  G4TransportationManager* fTransportationManager;
145  G4PathFinder*        fPathFinder;
146
147  // -------------------------------
148  // Navigation in the Ghost World:
149  // -------------------------------
150  G4String             fGhostWorldName;
151  G4VPhysicalVolume*   fGhostWorld;
152  G4Navigator*         fGhostNavigator;
153  G4int                fNavigatorID;
154  G4TouchableHandle    fOldGhostTouchable;
155  G4TouchableHandle    fNewGhostTouchable;
156  G4FieldTrack         fFieldTrack;
157  G4double             fGhostSafety;
158  G4bool               fOnBoundary;
159
160  // ******************************************************
161  // ******************************************************
162  //
163  //  For TESTS:
164  //
165  // ******************************************************
166  // ******************************************************
167public:
168  void Verbose(const G4Step&) const;
169};
170
171#endif
Note: See TracBrowser for help on using the repository browser.