Files
geant4/source/tracking/include/G4SteppingVerbose.hh
T
2016-06-01 15:25:35 +02:00

176 lines
5.1 KiB
C++

// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4SteppingVerbose.hh,v 2.2 1998/08/26 02:36:09 gcosmo Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
//---------------------------------------------------------------
//
// G4SteppingVerbose.hh
//
// Description:
// This class manages the vervose outputs in G4SteppingManager.
//
//
// Contact:
// Questions and comments to this code should be sent to
// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp)
// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp)
//
//---------------------------------------------------------------
class G4SteppingVerbose;
#ifndef G4SteppingVerose_h
#define G4SteppingVerose_h 1
#include <rw/tvordvec.h> // Include from 'RogueWave'
#include "G4ios.hh"
#include <iomanip.h>
#include "globals.hh" // Include from 'global'
#include "G4Navigator.hh" // Include from 'geometry'
#include "G4LogicalVolume.hh" // Include from 'geometry'
#include "G4VPhysicalVolume.hh" // Include from 'geometry'
#include "G4VSensitiveDetector.hh" // Include from 'hits/digi'
#include "G4ProcessManager.hh" // Include from 'piim'
class G4SteppingManager; // Include from 'tracking'
#include "G4Track.hh" // Include from 'tracking'
#include "G4TrackVector.hh" // Include from 'tracking'
#include "G4TrackStatus.hh" // Include from 'tracking'
#include "G4StepStatus.hh" // Include from 'tracking'
#include "G4UserSteppingAction.hh" // Include from 'tracking'
#include "G4Step.hh" // Include from 'tracking'
#include "G4StepPoint.hh" // Include from 'tracking'
#include "G4VTouchable.hh" // Include from 'geometry'
#include "G4TouchableHistory.hh" // Include from 'geometry'
class G4SteppingVerbose{
public:
// Constructor/Destructor
G4SteppingVerbose();
G4SteppingVerbose(G4SteppingManager*);
~G4SteppingVerbose();
//
void NewStep();
void CopyState();
void AtRestDoItInvoked();
void AlongStepDoItAllDone();
void PostStepDoItAllDone();
void AlongStepDoItOneByOne();
void PostStepDoItOneByOne();
void StepInfo();
void TrackingStarted();
void DPSLStarted();
void DPSLUserLimit();
void DPSLPostStep();
void DPSLAlongStep();
void DPSLAlongStepDoItOneByOne();
void DPSLPostStepDoItOneByOne();
void VerboseTrack();
void VerboseParticleChange();
//
// Member data
private:
G4SteppingManager* fManager;
G4UserSteppingAction* fUserSteppingAction;
G4SteppingVerbose* fVerbose;
G4double PhysicalStep;
G4double GeometricalStep;
G4double CorrectedStep;
G4bool PreStepPointIsGeom;
G4bool FirstStep;
G4StepStatus fStepStatus;
G4double TempInitVelocity;
G4double TempVelocity;
G4double Mass;
G4double sumEnergyChange;
G4VParticleChange* fParticleChange;
G4Track* fTrack;
G4TrackVector* fSecondary;
G4Step* fStep;
G4StepPoint* fPreStepPoint;
G4StepPoint* fPostStepPoint;
G4VPhysicalVolume* fCurrentVolume;
G4VSensitiveDetector* fSensitive;
G4VProcess* fCurrentProcess;
// The pointer to the process of which DoIt or
// GetPhysicalInteractionLength has been just executed.
G4ProcessVector* fAtRestDoItVector;
G4ProcessVector* fAlongStepDoItVector;
G4ProcessVector* fPostStepDoItVector;
G4ProcessVector* fAtRestGetPhysIntVector;
G4ProcessVector* fAlongStepGetPhysIntVector;
G4ProcessVector* fPostStepGetPhysIntVector;
size_t MAXofAtRestLoops;
size_t MAXofAlongStepLoops;
size_t MAXofPostStepLoops;
G4double currentMinimumStep;
G4double numberOfInteractionLengthLeft;
size_t fAtRestDoItProcTriggered;
size_t fAlongStepDoItProcTriggered;
size_t fPostStepDoItProcTriggered;
G4int fN2ndariesAtRestDoIt;
G4int fN2ndariesAlongStepDoIt;
G4int fN2ndariesPostStepDoIt;
// These are the numbers of secondaries generated by the process
// just executed.
G4Navigator *fNavigator;
G4int verboseLevel;
typedef RWTValOrderedVector<G4int>
G4SelectedAtRestDoItVector;
typedef RWTValOrderedVector<G4int>
G4SelectedAlongStepDoItVector;
typedef RWTValOrderedVector<G4int>
G4SelectedPostStepDoItVector;
G4SelectedAtRestDoItVector *fSelectedAtRestDoItVector;
G4SelectedAlongStepDoItVector *fSelectedAlongStepDoItVector;
G4SelectedPostStepDoItVector *fSelectedPostStepDoItVector;
G4double fPreviousStepSize;
G4VTouchable* fTouchable1;
G4VTouchable* fTouchable2;
G4bool fIsTouchable1Free;
G4bool fIsTouchable2Free;
G4SteppingControl StepControlFlag;
G4double physIntLength;
G4ForceCondition fCondition;
G4GPILSelection fGPILSelection;
// Above three variables are for the method
// DefinePhysicalStepLength(). To pass these information to
// the method Verbose, they are kept at here. Need a more
// elegant mechanism.
};
#endif