source: trunk/examples/advanced/xray_telescope/include/XrayTelStepCut.hh@ 893

Last change on this file since 893 was 807, checked in by garnier, 17 years ago

update

File size: 4.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// **********************************************************************
28// * *
29// * GEANT 4 xray_telescope advanced example *
30// * *
31// * MODULE: XrayTelStepCut.hh *
32// * ------- *
33// * *
34// * Version: 0.4 *
35// * Date: 06/11/00 *
36// * Author: R Nartallo *
37// * Organisation: ESA/ESTEC, Noordwijk, THe Netherlands *
38// * *
39// **********************************************************************
40//
41// CHANGE HISTORY
42// --------------
43//
44// 06.11.2000 R.Nartallo
45// - First implementation of X-ray Telescope advanced example.
46// - Based on Chandra and XMM models
47//
48//
49// **********************************************************************
50
51#ifndef XrayTelStepCut_h
52#define XrayTelStepCut_h 1
53
54#include "G4ios.hh"
55#include "G4VDiscreteProcess.hh"
56#include "G4Step.hh"
57#include "globals.hh"
58
59class XrayTelStepCut : public G4VDiscreteProcess
60{
61public:
62
63 XrayTelStepCut(const G4String& processName ="UserStepCut" );
64 XrayTelStepCut(XrayTelStepCut &);
65
66 ~XrayTelStepCut();
67
68 G4double PostStepGetPhysicalInteractionLength(
69 const G4Track& track,
70 G4double previousStepSize,
71 G4ForceCondition* condition
72 );
73
74 G4VParticleChange* PostStepDoIt(
75 const G4Track& ,
76 const G4Step&
77 );
78
79 void SetMaxStep(G4double);
80
81protected:
82
83 // it is not needed here !
84 G4double GetMeanFreePath(const G4Track& aTrack,
85 G4double previousStepSize,
86 G4ForceCondition* condition
87 );
88
89
90private:
91
92 // hide assignment operator as private
93 XrayTelStepCut & operator=(const XrayTelStepCut &right);
94
95private:
96
97 G4double MaxChargedStep ;
98};
99
100// inlined function members implementation
101
102#include "G4Step.hh"
103#include "G4Track.hh"
104#include "G4UserLimits.hh"
105#include "G4VParticleChange.hh"
106#include "G4EnergyLossTables.hh"
107
108inline G4double XrayTelStepCut::PostStepGetPhysicalInteractionLength(
109 const G4Track& aTrack,
110 G4double,
111 G4ForceCondition* condition
112 )
113{
114 // condition is set to "Not Forced"
115 *condition = NotForced;
116
117 G4double ProposedStep = DBL_MAX;
118
119 if((MaxChargedStep > 0.) &&
120 (aTrack.GetVolume() != NULL) &&
121 (aTrack.GetVolume()->GetName() == "Absorber") &&
122 (aTrack.GetDynamicParticle()->GetDefinition()->GetPDGCharge() != 0.))
123 ProposedStep = MaxChargedStep ;
124
125 return ProposedStep;
126}
127
128inline G4VParticleChange* XrayTelStepCut::PostStepDoIt(
129 const G4Track& aTrack,
130 const G4Step&
131 )
132{
133 // do nothing
134 aParticleChange.Initialize(aTrack);
135 return &aParticleChange;
136}
137
138inline G4double XrayTelStepCut::GetMeanFreePath(const G4Track&,
139 G4double,
140 G4ForceCondition*
141 )
142{
143 return 0.;
144}
145
146#endif
147
Note: See TracBrowser for help on using the repository browser.