Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4PionMinusNuclearAtRestChips.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// 17.02.2009 M.Kossov, now it is recommended to use the G4QCaptureAtRest process
27//
28#ifndef G4PionMinusNuclearAtRestChips_h
29#define G4PionMinusNuclearAtRestChips_h
30
32
33#include "globals.hh"
34#include "G4VRestProcess.hh"
36#include "G4PionMinus.hh"
40
41
43{
44 private:
45 // hide assignment operator as private
48
49 public:
50
51 G4PionMinusNuclearAtRestChips(const G4String& processName ="PionMinusCaptureAtRest")
52 : G4VRestProcess (processName, fHadronic)
53 {
54 G4HadronicDeprecate("G4PionMinusNuclearAtRestChips");
56 }
57
59
61 {
62 return ( &aParticle == G4PionMinus::PionMinusDefinition() );
63 }
64
65 // null physics table
67
70
71 // zero mean lifetime
73 G4ForceCondition* condition) {return 0.0;}
74
76
77 private:
79 G4StopElementSelector theSelector; // Assume identical laws as for muons
80};
81
82inline
84AtRestDoIt(const G4Track& aTrack, const G4Step&aStep)
85{
87 {
88 throw G4HadronicException(__FILE__, __LINE__,
89 "Calling G4PionMinusNuclearAtRestChips with particle other than pi-!!!");
90 }
91
92 // Create target
93 G4Element* theTarget = theSelector.GetElement(aTrack.GetMaterial());
94 G4Nucleus aTargetNucleus(theTarget->GetA_asInt(), theTarget->GetZ_asInt());
95
96 // Call chips
97 return theModel.ApplyYourself(aTrack, aTargetNucleus);
98}
99
102{
106#ifdef CHIPSdebug
107 if ((currentInteractionLength <0.0) || (verboseLevel>2))
108 {
109 G4cout << "G4PionMinusNuclearAtRestChips::AtRestGetPhysicalInteractionLength ";
110 G4cout << "[ " << GetProcessName() << "]" <<G4endl;
111 track.GetDynamicParticle()->DumpInfo();
112 G4cout << " in Material " << track.GetMaterial()->GetName() <<G4endl;
113 G4cout << "MeanLifeTime = " << currentInteractionLength/CLHEP::ns << "[ns]" <<G4endl;
114 }
115#endif
117}
118#endif
G4double condition(const G4ErrorSymMatrix &m)
G4ForceCondition
@ NotForced
#define G4HadronicDeprecate(name)
@ fHadronAtRest
@ fHadronic
double G4double
Definition: G4Types.hh:64
bool G4bool
Definition: G4Types.hh:67
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &aTargetNucleus, G4HadFinalState *aChange=0)
void DumpInfo(G4int mode=0) const
G4ParticleDefinition * GetDefinition() const
const G4String & GetName() const
Definition: G4Material.hh:177
G4double GetMeanLifeTime(const G4Track &aTrack, G4ForceCondition *condition)
G4bool IsApplicable(const G4ParticleDefinition &aParticle)
void BuildPhysicsTable(const G4ParticleDefinition &)
G4VParticleChange * AtRestDoIt(const G4Track &, const G4Step &)
G4double AtRestGetPhysicalInteractionLength(const G4Track &track, G4ForceCondition *condition)
G4PionMinusNuclearAtRestChips(const G4String &processName="PionMinusCaptureAtRest")
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:98
static G4PionMinus * PionMinusDefinition()
Definition: G4PionMinus.cc:93
Definition: G4Step.hh:78
G4Element * GetElement(const G4Material *aMaterial)
G4Material * GetMaterial() const
const G4DynamicParticle * GetDynamicParticle() const
G4double currentInteractionLength
Definition: G4VProcess.hh:297
virtual void ResetNumberOfInteractionLengthLeft()
Definition: G4VProcess.cc:92
G4int verboseLevel
Definition: G4VProcess.hh:368
G4double theNumberOfInteractionLengthLeft
Definition: G4VProcess.hh:293
void SetProcessSubType(G4int)
Definition: G4VProcess.hh:403
const G4String & GetProcessName() const
Definition: G4VProcess.hh:379