Import Geant4 8.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 14:36:02 +02:00
parent d93e1e39a9
commit 8a51e0bc40
5471 changed files with 99628 additions and 55248 deletions
@@ -0,0 +1,113 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * 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: StepMax.cc,v 1.1 2005/04/19 15:01:39 grichine Exp $
// GEANT4 tag $Name: geant4-08-00 $
//
///////////////////////////////////////////////////////////////////////////
#include "StepMax.hh"
// #include "StepMaxMessenger.hh"
// #include "Histo.hh"
#include "G4VPhysicalVolume.hh"
///////////////////////////////////////////////////////////////////////////
StepMax::StepMax(const G4String& processName)
: G4VDiscreteProcess(processName),
MaxChargedStep(DBL_MAX),
thDensity(0.1*gram/cm3),
first(true)
{
// pMess = new StepMaxMessenger(this);
// histo = Histo::GetPointer();
}
//////////////////////////////////////////////////////////////////////////////
StepMax::~StepMax()
{
// delete pMess;
}
////////////////////////////////////////////////////////////////////////////
G4bool StepMax::IsApplicable(const G4ParticleDefinition& particle)
{
return ( particle.GetPDGCharge() != 0. );
}
/////////////////////////////////////////////////////////////////////////////
void StepMax::SetMaxStep(G4double step) {MaxChargedStep = step;}
/////////////////////////////////////////////////////////////////////////////
G4double StepMax::PostStepGetPhysicalInteractionLength(
const G4Track& aTrack,
G4double,
G4ForceCondition* condition )
{
// condition is set to "Not Forced"
*condition = NotForced;
ProposedStep = DBL_MAX;
if(first)
{
// checkVolume = histo->CheckVolume();
// gasVolume = histo->GasVolume();
first = false;
}
G4VPhysicalVolume* pv = aTrack.GetVolume();
if( pv == gasVolume || pv == checkVolume ) ProposedStep = 0.0;
else if( (aTrack.GetMaterial())->GetDensity() > thDensity &&
aTrack.GetPosition().z() < 0.0 ) ProposedStep = MaxChargedStep;
return ProposedStep;
}
////////////////////////////////////////////////////////////////////////////////////
G4VParticleChange* StepMax::PostStepDoIt(const G4Track& aTrack, const G4Step&)
{
aParticleChange.Initialize(aTrack);
if ( ProposedStep == 0.0 )
{
aParticleChange.ProposeTrackStatus(fStopAndKill);
/*
if(1 < (Histo::GetPointer())->GetVerbose())
{
G4cout << "StepMax: " << aTrack.GetDefinition()->GetParticleName()
<< " with energy = " << aTrack.GetKineticEnergy()/MeV
<< " MeV is killed in Check volume at " << aTrack.GetPosition()
<< G4endl;
}
*/
}
return &aParticleChange;
}
////////////////////////////////////////////////////////////////////////////////////////