176 lines
5.1 KiB
C++
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
|