Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Friends
CCalStackingAction Class Reference

#include <CCalStackingAction.hh>

Inheritance diagram for CCalStackingAction:
G4UserStackingAction

Public Types

enum  stageLevel { firstStage, end }
 
enum  { maxNumberOfSD = 30 }
 

Public Member Functions

 ~CCalStackingAction ()
 
virtual G4ClassificationOfNewTrack ClassifyNewTrack (const G4Track *aTrack)
 
virtual void NewStage ()
 
virtual void PrepareNewEvent ()
 
- Public Member Functions inherited from G4UserStackingAction
 G4UserStackingAction ()
 
virtual ~G4UserStackingAction ()
 
void SetStackManager (G4StackManager *value)
 

Friends

class CCalSensAssign
 

Additional Inherited Members

- Protected Attributes inherited from G4UserStackingAction
G4StackManagerstackManager
 

Detailed Description

Definition at line 40 of file CCalStackingAction.hh.

Member Enumeration Documentation

anonymous enum
Enumerator
maxNumberOfSD 

Definition at line 56 of file CCalStackingAction.hh.

Enumerator
firstStage 
end 

Definition at line 55 of file CCalStackingAction.hh.

Constructor & Destructor Documentation

CCalStackingAction::~CCalStackingAction ( )

Definition at line 46 of file CCalStackingAction.cc.

46 {}

Member Function Documentation

G4ClassificationOfNewTrack CCalStackingAction::ClassifyNewTrack ( const G4Track aTrack)
virtual

PRIMARIES ///

SECONDARIES ///

Reimplemented from G4UserStackingAction.

Definition at line 101 of file CCalStackingAction.cc.

References G4UserStackingAction::ClassifyNewTrack(), end, python.hepunit::eV, fKill, fUrgent, fWaiting, G4cout, G4endl, G4Track::GetDefinition(), G4Track::GetKineticEnergy(), G4Track::GetParentID(), G4ParticleDefinition::GetParticleName(), G4Track::GetTrackID(), G4Track::GetTrackStatus(), python.hepunit::MeV, and status.

101  {
102 
103  G4ClassificationOfNewTrack classification=fKill;
104  int parentID = aTrack->GetParentID();
105 #ifdef ddebug
106  G4TrackStatus status = aTrack->GetTrackStatus();
107  G4cout << "Classifying track " << aTrack->GetTrackID()
108  << " with status " << aTrack->GetTrackStatus() << G4endl;
109 #endif
110 
111  if (parentID < 0) {
112 #ifdef debug
113  G4cout << "Killing track " << aTrack->GetTrackID()
114  << " from previous event. Should not happen" << G4endl;
115  G4cout << "returning classification= " << classification << G4endl;
116 #endif
117  return classification= fKill;
118  }
119 
120  if (aTrack->GetDefinition()->GetParticleName() == "gamma" &&
121  aTrack->GetKineticEnergy() < 1.*eV) {
122 #ifdef debug
123  G4cout << "Kills particle " << aTrack->GetDefinition()->GetParticleName()
124  << " of energy " << aTrack->GetKineticEnergy()/MeV << " MeV"
125  << G4endl;
126 #endif
127  return classification= fKill;
128  }
129 
130  if (stage<end) {
131  /////////////////
132  /// PRIMARIES ///
133  /////////////////
134  if (parentID == 0 ) {
135  if ( nurgent == 0) {
136  nurgent++;
137  classification = fUrgent;
138  setPrimaryID(aTrack->GetTrackID());
139  }
140  else classification = fWaiting;
141  }
142 
143  ///////////////////
144  /// SECONDARIES ///
145  ///////////////////
146 
147  if (parentID > 0) {
148  if (acceptSecondaries == 1) {
149  if (trackStartsInCalo(const_cast<G4Track *>(aTrack))!=0 )
150  classification = fUrgent;
151  else
152  classification = fWaiting;
153  } else {
154  if(nurgent == 0){
155  nurgent++;
156  classification = fUrgent;
157  setPrimaryID(aTrack->GetTrackID());
158  } else
159  classification = fWaiting;
160  }
161  }
162 
163 
164  } else
165  classification = G4UserStackingAction::ClassifyNewTrack(aTrack);
166 
167 #ifdef ddebug
168  G4cout << " returning classification= " << classification
169  << " for track "<< aTrack->GetTrackID() << G4endl;
170 #endif
171  return classification;
172 
173 }
G4ParticleDefinition * GetDefinition() const
G4int GetParentID() const
G4TrackStatus GetTrackStatus() const
const G4String & GetParticleName() const
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
G4int GetTrackID() const
int status
Definition: tracer.cxx:24
virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track *aTrack)
#define G4endl
Definition: G4ios.hh:61
G4TrackStatus
void CCalStackingAction::NewStage ( )
virtual

Reimplemented from G4UserStackingAction.

Definition at line 176 of file CCalStackingAction.cc.

References end, G4cout, G4endl, G4StackManager::GetNUrgentTrack(), G4StackManager::ReClassify(), and G4UserStackingAction::stackManager.

176  {
177 
178 #ifdef ddebug
179  G4cout << "In NewStage with stage = " << stage << G4endl;
180 #endif
181  if (stage <end) {
182  nurgent = 0;
183  setPrimaryID(0);
184  acceptSecondaries = 0;
186  acceptSecondaries = 1;
187  if (stackManager->GetNUrgentTrack() == 0) {
188  stage = stageLevel(stage+1);
189  }
190 
191  }
192 }
G4int GetNUrgentTrack() const
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
G4StackManager * stackManager
void CCalStackingAction::PrepareNewEvent ( )
virtual

Reimplemented from G4UserStackingAction.

Definition at line 49 of file CCalStackingAction.cc.

References firstStage.

49  {
50 
52  stage = firstStage;
53  nurgent = 0;
54  acceptSecondaries = 1;
55 
56 }
G4bool isInitialized()
void initialize(Config const *const theConfig=0)
Initialize the particle table.

Friends And Related Function Documentation

friend class CCalSensAssign
friend

Definition at line 42 of file CCalStackingAction.hh.


The documentation for this class was generated from the following files: