Geant4 VMC
Version 6.8
Toggle main menu visibility
Loading...
Searching...
No Matches
source
event
src
TG4SpecialStackingAction.cxx
Go to the documentation of this file.
1
//------------------------------------------------
2
// The Geant4 Virtual Monte Carlo package
3
// Copyright (C) 2007 - 2014 Ivana Hrivnacova
4
// All rights reserved.
5
//
6
// For the licensing terms see geant4_vmc/LICENSE.
7
// Contact: root-vmc@cern.ch
8
//-------------------------------------------------
9
14
15
#include "
TG4SpecialStackingAction.h
"
16
#include "
TG4Globals.h
"
17
18
#include <G4StackManager.hh>
19
#include <G4StackedTrack.hh>
20
#include <G4Track.hh>
21
#include <G4TrackStack.hh>
22
23
#include <TPDGCode.h>
24
25
//_____________________________________________________________________________
26
TG4SpecialStackingAction::TG4SpecialStackingAction
()
27
:
G4UserStackingAction
(),
28
TG4Verbose
(
"stackingAction"
, 1),
29
fMessenger
(this),
30
fStage
(0),
31
fSkipNeutrino
(false),
32
fWaitPrimary
(true)
33
{
35
36
G4cout <<
"### TG4SpecialStackingAction activated"
<< G4endl;
37
}
38
39
//_____________________________________________________________________________
40
TG4SpecialStackingAction::~TG4SpecialStackingAction
()
41
{
43
}
44
45
//
46
// public methods
47
//
48
49
//_____________________________________________________________________________
50
G4ClassificationOfNewTrack
TG4SpecialStackingAction::ClassifyNewTrack
(
51
const
G4Track* track)
52
{
54
55
if
(
fWaitPrimary
&&
fStage
== 0) {
56
// move all primaries to PrimaryStack
57
return
fPostpone;
58
}
59
60
if
(
fSkipNeutrino
) {
61
G4int pdgCode = track->GetDefinition()->GetPDGEncoding();
62
if
(pdgCode == kNuE || pdgCode == kNuEBar || pdgCode == kNuMu ||
63
pdgCode == kNuMuBar || pdgCode == kNuTau || pdgCode == kNuTauBar) {
64
65
return
fKill;
66
}
67
}
68
69
return
fUrgent;
70
}
71
72
//_____________________________________________________________________________
73
void
TG4SpecialStackingAction::NewStage
()
74
{
76
77
fStage
++;
78
79
if
(
VerboseLevel
() > 1) {
80
G4cout <<
"TG4SpecialStackingAction::NewStage "
<<
fStage
81
<<
" has been started."
<< G4endl;
82
}
83
84
if
(
fWaitPrimary
&& stackManager->GetNUrgentTrack() == 0 &&
85
stackManager->GetNPostponedTrack() != 0) {
86
87
stackManager->TransferOneStackedTrack(fPostpone, fUrgent);
88
}
89
}
90
91
//_____________________________________________________________________________
92
void
TG4SpecialStackingAction::PrepareNewEvent
()
93
{
96
97
fStage
= 0;
98
}
TG4Globals.h
Definition of the TG4Globals class and basic container types.
TG4SpecialStackingAction.h
Definition of the TG4SpecialStackingAction class.
G4UserStackingAction
TG4SpecialStackingAction::TG4SpecialStackingAction
TG4SpecialStackingAction()
Definition
TG4SpecialStackingAction.cxx:26
TG4SpecialStackingAction::fStage
G4int fStage
Stage number.
Definition
TG4SpecialStackingAction.h:68
TG4SpecialStackingAction::~TG4SpecialStackingAction
virtual ~TG4SpecialStackingAction()
Definition
TG4SpecialStackingAction.cxx:40
TG4SpecialStackingAction::fMessenger
TG4SpecialStackingActionMessenger fMessenger
Definition
TG4SpecialStackingAction.h:66
TG4SpecialStackingAction::fSkipNeutrino
G4bool fSkipNeutrino
Option to skip tracking of all neutrina.
Definition
TG4SpecialStackingAction.h:70
TG4SpecialStackingAction::fWaitPrimary
G4bool fWaitPrimary
Definition
TG4SpecialStackingAction.h:73
TG4SpecialStackingAction::PrepareNewEvent
void PrepareNewEvent()
Definition
TG4SpecialStackingAction.cxx:92
TG4SpecialStackingAction::NewStage
void NewStage()
Definition
TG4SpecialStackingAction.cxx:73
TG4SpecialStackingAction::ClassifyNewTrack
G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track *track)
Definition
TG4SpecialStackingAction.cxx:50
TG4Verbose::VerboseLevel
virtual G4int VerboseLevel() const
Definition
TG4Verbose.h:78
TG4Verbose::TG4Verbose
TG4Verbose(const G4String &cmdName)
Definition
TG4Verbose.cxx:24
Generated on
for Geant4 VMC by
1.17.0