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

Last change on this file since 1319 was 807, checked in by garnier, 16 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.