source: trunk/examples/advanced/xray_telescope/src/XrayTelSteppingAction.cc @ 1319

Last change on this file since 1319 was 807, checked in by garnier, 16 years ago

update

File size: 4.7 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:            XrayTelSteppingAction.cc                        *
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// 05.12.2001 R. Nartallo
45// - Return condition for entering detector (cf LowEnTest)
46// - Remove line to kill track if too many steps
47//
48// 07.11.2001 M.G. Pia
49// - Modified the analysis management
50// - Small design iteration
51//
52// 30.11.2000 R. Nartallo
53// - Add pre-processor directives to compile without analysis option
54//
55// 16.11.2000 A. Pfeiffer
56// - Implementation of analysis manager call
57//
58// 06.11.2000 R.Nartallo
59// - First implementation of xray_telescope Physics list
60// - Based on Chandra and XMM models
61//
62// **********************************************************************
63
64#include "XrayTelSteppingAction.hh"
65#include "globals.hh"
66#include "G4Track.hh"
67#include "G4Step.hh"
68#include "G4RunManager.hh"
69#include "XrayTelEventAction.hh"
70#include "XrayTelRunAction.hh"
71#include "XrayTelAnalysis.hh"
72
73#include "Randomize.hh"
74
75XrayTelSteppingAction::XrayTelSteppingAction()
76{ }
77
78
79XrayTelSteppingAction::~XrayTelSteppingAction()
80{ }
81
82
83void XrayTelSteppingAction::UserSteppingAction(const G4Step* step)
84{
85  G4bool entering = false;
86  G4Track* track = step->GetTrack();
87
88  G4String volName; 
89  if (track->GetVolume()) volName =  track->GetVolume()->GetName(); 
90  G4String nextVolName;
91  if (track->GetNextVolume()) nextVolName =  track->GetNextVolume()->GetName();
92
93  // Entering Detector
94  if (volName != "Detector_P" && nextVolName == "Detector_P") 
95    {
96      entering = true;
97
98      // Notify the corresponding UserAction that the event must be visualised
99      G4RunManager* runManager = G4RunManager::GetRunManager();
100      // Casting is safe here: one knows the RTTI of the UserActions
101      // in the current application (otherwise one could dynamic_cast)
102      XrayTelEventAction* eventAction = (XrayTelEventAction*) runManager->GetUserEventAction();
103      eventAction->Update();
104
105      // Notify the corresponding UserAction to update the run counters
106      XrayTelRunAction* runAction = (XrayTelRunAction*) runManager->GetUserRunAction();
107      runAction->Update(track->GetKineticEnergy());
108    }
109
110  // Do the analysis related to this step
111  XrayTelAnalysis* analysis = XrayTelAnalysis::getInstance();
112  analysis->analyseStepping(*track,entering);
113
114}
115
116
117
118
Note: See TracBrowser for help on using the repository browser.