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

173 lines
4.7 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 1.3 1999/03/24 04:42:47 tsasaki Exp $
// GEANT4 tag $Name: geant4-00-01 $
//
//
//---------------------------------------------------------------
//
// 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'
class G4Navigator;
class G4VPhysicalVolume;
#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'
class G4Track;
#include "G4StepStatus.hh" // Include from 'tracking'
class G4UserSteppingAction;
class G4StepPoint;
class G4VTouchable;
#include "G4VSteppingVerbose.hh"
class G4SteppingVerbose : public G4VSteppingVerbose {
public:
// Constructor/Destructor
// G4SteppingVerbose();
G4SteppingVerbose(G4SteppingManager* const );
~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();
void ShowStep() const;
//
// 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