Import Geant4 8.1.0 source tree
This commit is contained in:
@@ -1,89 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: DecaysBuilder.cc,v 1.2 2004/11/24 13:18:02 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: DecayBuilder
|
||||
//
|
||||
// Author: V.Ivanchenko 03.05.2004
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "DecaysBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4Decay.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
DecaysBuilder::DecaysBuilder(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
DecaysBuilder::~DecaysBuilder()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void DecaysBuilder::ConstructParticle()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void DecaysBuilder::ConstructProcess()
|
||||
{
|
||||
// Add Decay Process
|
||||
|
||||
G4Decay* fDecayProcess = new G4Decay();
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
if (fDecayProcess->IsApplicable(*particle)) {
|
||||
|
||||
// pmanager ->AddProcess(fDecayProcess);
|
||||
|
||||
// set ordering for PostStepDoIt and AtRestDoIt
|
||||
//pmanager ->SetProcessOrdering(fDecayProcess, idxPostStep);
|
||||
//pmanager ->SetProcessOrdering(fDecayProcess, idxAtRest);
|
||||
pmanager->AddProcess(fDecayProcess, 1,-1, 5);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,28 +1,31 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: DetectorConstruction.cc,v 1.7 2004/06/18 15:43:41 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: DetectorConstruction.cc,v 1.11 2006/06/29 16:50:17 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -33,7 +36,6 @@
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4PVReplica.hh"
|
||||
#include "G4UniformMagField.hh"
|
||||
|
||||
#include "G4GeometryManager.hh"
|
||||
@@ -41,18 +43,16 @@
|
||||
#include "G4LogicalVolumeStore.hh"
|
||||
#include "G4SolidStore.hh"
|
||||
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
DetectorConstruction::DetectorConstruction()
|
||||
:nLtot(20),nRtot(20),dLradl(1.),dRradl(0.25),
|
||||
myMaterial(0),magField(0) ,
|
||||
EcalLength(0.),EcalRadius(0.) ,
|
||||
solidEcal(0) ,logicEcal(0) ,physiEcal(0),
|
||||
solidSlice(0),logicSlice(0),physiSlice(0),
|
||||
solidRing(0) ,logicRing(0) ,physiRing(0)
|
||||
:nLtot(40),nRtot(50),dLradl(0.5),dRradl(0.1),
|
||||
dLlength(0.),dRlength(0.),
|
||||
myMaterial(0),magField(0),
|
||||
EcalLength(0.),EcalRadius(0.),
|
||||
solidEcal(0),logicEcal(0),physiEcal(0)
|
||||
{
|
||||
DefineMaterials();
|
||||
SetMaterial("PbWO4");
|
||||
@@ -109,13 +109,10 @@ void DetectorConstruction::DefineMaterials()
|
||||
|
||||
new G4Material("Aluminium", z=13., a= 26.98*g/mole, density= 2.7*g/cm3);
|
||||
|
||||
G4Material* Fe =
|
||||
new G4Material("Iron", z=26., a= 55.85*g/mole, density= 7.87*g/cm3);
|
||||
G4Material* Ni =
|
||||
new G4Material("Nickel", z=28., a= 58.69*g/mole, density= 8.96*g/cm3);
|
||||
G4Material* Cu =
|
||||
new G4Material("Copper", z=29., a= 63.54*g/mole, density= 8.96*g/cm3);
|
||||
|
||||
new G4Material("Lead", z=82., a=207.19*g/mole, density=11.35*g/cm3);
|
||||
|
||||
G4Material* BGO =
|
||||
new G4Material("BGO", density= 7.10*g/cm3, ncomponents=3);
|
||||
BGO->AddElement(O , natoms=12);
|
||||
@@ -128,23 +125,6 @@ void DetectorConstruction::DefineMaterials()
|
||||
PbWO->AddElement(Pb, natoms=1);
|
||||
PbWO->AddElement(W , natoms=1);
|
||||
|
||||
G4Material* w =
|
||||
new G4Material("Tungsten", density= 19.30*g/cm3, ncomponents=1);
|
||||
w->AddElement(W, fractionmass=1.0);
|
||||
|
||||
G4Material* ma1 = new G4Material("FCal2Slugs",density = 18.6*g/cm3, 3);
|
||||
ma1->AddMaterial(w, fractionmass=0.97);
|
||||
ma1->AddMaterial(Fe,fractionmass=0.01);
|
||||
ma1->AddMaterial(Ni,fractionmass=0.02);
|
||||
|
||||
G4Material* ma2 = new G4Material("FCal2Abs",density = 10.*g/cm3, 2);
|
||||
ma2->AddMaterial(Cu, fractionmass=0.2);
|
||||
ma2->AddMaterial(ma1,fractionmass=0.8);
|
||||
|
||||
G4Material* pb =
|
||||
new G4Material("Lead", density= 11.35*g/cm3, ncomponents=1);
|
||||
pb->AddElement(Pb, fractionmass=1.0);
|
||||
|
||||
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
|
||||
}
|
||||
|
||||
@@ -154,9 +134,8 @@ G4VPhysicalVolume* DetectorConstruction::ConstructVolumes()
|
||||
{
|
||||
G4double Radl = myMaterial->GetRadlen();
|
||||
|
||||
G4double dL = dLradl*Radl, dR = dRradl*Radl;
|
||||
EcalLength = nLtot*dL; EcalRadius = nRtot*dR;
|
||||
|
||||
dLlength = dLradl*Radl; dRlength = dRradl*Radl;
|
||||
EcalLength = nLtot*dLlength; EcalRadius = nRtot*dRlength;
|
||||
|
||||
// Cleanup old geometry
|
||||
G4GeometryManager::GetInstance()->OpenGeometry();
|
||||
@@ -172,28 +151,6 @@ G4VPhysicalVolume* DetectorConstruction::ConstructVolumes()
|
||||
physiEcal = new G4PVPlacement(0,G4ThreeVector(),
|
||||
logicEcal,"Ecal",0,false,0);
|
||||
|
||||
// Ring
|
||||
//
|
||||
for (G4int i=0; i<nRtot; i++)
|
||||
{
|
||||
solidRing = new G4Tubs("Ring",i*dR,(i+1)*dR,0.5*EcalLength,0.,360*deg);
|
||||
logicRing = new G4LogicalVolume(solidRing,myMaterial,"Ring",0,0,0);
|
||||
physiRing = new G4PVPlacement(0,G4ThreeVector(),logicRing,"Ring",
|
||||
logicEcal,false,i);
|
||||
|
||||
// Slice
|
||||
solidSlice = new G4Tubs("Slice",i*dR,(i+1)*dR,0.5*dL,0.,360*deg);
|
||||
logicSlice = new G4LogicalVolume(solidSlice,myMaterial,"Slice",0,0,0);
|
||||
logicSlice-> SetVisAttributes(G4VisAttributes::Invisible);
|
||||
if (nLtot >1)
|
||||
physiSlice = new G4PVReplica("Slice",logicSlice,logicRing,
|
||||
kZAxis,nLtot,dL);
|
||||
else
|
||||
physiSlice = new G4PVPlacement(0,G4ThreeVector(),logicSlice,"Slice",
|
||||
logicRing,false,0);
|
||||
}
|
||||
|
||||
|
||||
G4cout << "Absorber is " << G4BestUnit(EcalLength,"Length")
|
||||
<< " of " << myMaterial->GetName() << G4endl;
|
||||
G4cout << myMaterial << G4endl;
|
||||
@@ -218,6 +175,11 @@ void DetectorConstruction::SetMaterial(const G4String& materialChoice)
|
||||
void DetectorConstruction::SetLBining(G4ThreeVector Value)
|
||||
{
|
||||
nLtot = (G4int)Value(0);
|
||||
if (nLtot > MaxBin) {
|
||||
G4cout << "\n ---> warning from SetLBining: "
|
||||
<< nLtot << " truncated to " << MaxBin << G4endl;
|
||||
nLtot = MaxBin;
|
||||
}
|
||||
dLradl = Value(1);
|
||||
}
|
||||
|
||||
@@ -226,6 +188,11 @@ void DetectorConstruction::SetLBining(G4ThreeVector Value)
|
||||
void DetectorConstruction::SetRBining(G4ThreeVector Value)
|
||||
{
|
||||
nRtot = (G4int)Value(0);
|
||||
if (nRtot > MaxBin) {
|
||||
G4cout << "\n ---> warning from SetRBining: "
|
||||
<< nRtot << " truncated to " << MaxBin << G4endl;
|
||||
nRtot = MaxBin;
|
||||
}
|
||||
dRradl = Value(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,27 +1,30 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: DetectorMessenger.cc,v 1.7 2004/09/17 10:51:39 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: DetectorMessenger.cc,v 1.8 2006/06/29 16:50:20 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,27 +1,30 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: EmAcceptance.cc,v 1.4 2004/12/02 14:57:14 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: EmAcceptance.cc,v 1.5 2006/06/29 16:50:22 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,27 +1,30 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: EventAction.cc,v 1.2 2004/09/17 10:51:39 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: EventAction.cc,v 1.3 2006/06/29 16:50:24 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,28 +1,31 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: EventActionMessenger.cc,v 1.2 2004/09/17 10:51:39 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: EventActionMessenger.cc,v 1.3 2006/06/29 16:50:26 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//
|
||||
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmHadronBuilder.cc,v 1.2 2004/11/24 13:18:02 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmHadronBuilder
|
||||
//
|
||||
// Author: V.Ivanchenko 03.05.2004
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4EmHadronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmHadronBuilder::G4EmHadronBuilder(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmHadronBuilder::~G4EmHadronBuilder()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmHadronBuilder::ConstructParticle()
|
||||
{
|
||||
G4Electron::Electron();
|
||||
G4Proton::Proton();
|
||||
G4GenericIon::GenericIon();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmHadronBuilder::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes
|
||||
theParticleIterator->reset();
|
||||
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
|
||||
if(particle->GetPDGMass() > 110.*MeV) {
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "GenericIon" || particleName == "alpha" || particleName == "He3") {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2,2);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1,1,1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1,2,2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,104 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmHadronBuilder52.cc,v 1.1 2004/05/04 08:33:32 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmHadronBuilder52
|
||||
//
|
||||
// Author: V.Ivanchenko 03.05.2004
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4EmHadronBuilder52.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4MultipleScattering52.hh"
|
||||
|
||||
#include "G4hIonisation52.hh"
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmHadronBuilder52::G4EmHadronBuilder52(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmHadronBuilder52::~G4EmHadronBuilder52()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmHadronBuilder52::ConstructParticle()
|
||||
{
|
||||
G4Electron::Electron();
|
||||
G4Proton::Proton();
|
||||
G4GenericIon::GenericIon();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmHadronBuilder52::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes
|
||||
theParticleIterator->reset();
|
||||
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
|
||||
if(particle->GetPDGMass() > 110.*MeV) {
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
|
||||
if (particleName == "GenericIon") {
|
||||
|
||||
pmanager->AddProcess(new G4hIonisation52, -1, 1, 1);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering52,-1,1,1);
|
||||
pmanager->AddProcess(new G4hIonisation52, -1,2,2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmHadronBuilder71.cc,v 1.1 2005/10/03 01:59:42 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmHadronBuilder71
|
||||
//
|
||||
// Author: V.Ivanchenko 03.10.2005
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4EmHadronBuilder71.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4MultipleScattering71.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmHadronBuilder71::G4EmHadronBuilder71(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmHadronBuilder71::~G4EmHadronBuilder71()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmHadronBuilder71::ConstructParticle()
|
||||
{
|
||||
G4Electron::Electron();
|
||||
G4Proton::Proton();
|
||||
G4GenericIon::GenericIon();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmHadronBuilder71::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes
|
||||
theParticleIterator->reset();
|
||||
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
|
||||
if(particle->GetPDGMass() > 110.*MeV) {
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "GenericIon" ||
|
||||
particleName == "alpha" ||
|
||||
particleName == "He3") {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering71, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
|
||||
|
||||
} else if (!particle->IsShortLived() &&
|
||||
particle->GetPDGCharge() != 0.0 ) {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering71, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,103 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmHighEnergyBuilder.cc,v 1.2 2004/11/24 13:18:02 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmHighEnergyBuilder
|
||||
//
|
||||
// Author: V.Ivanchenko 03.05.2004
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4EmHighEnergyBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4AnnihiToMuPair.hh"
|
||||
#include "G4GammaConversionToMuons.hh"
|
||||
#include "G4eeToHadrons.hh"
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmHighEnergyBuilder::G4EmHighEnergyBuilder(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmHighEnergyBuilder::~G4EmHighEnergyBuilder()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmHighEnergyBuilder::ConstructParticle()
|
||||
{
|
||||
// Minimal set of particles
|
||||
G4Gamma::Gamma();
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
G4MuonPlus::MuonPlus();
|
||||
G4MuonMinus::MuonMinus();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmHighEnergyBuilder::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes for gamma
|
||||
G4ParticleDefinition* particle = G4Gamma::Gamma();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
pmanager->AddDiscreteProcess( new G4GammaConversionToMuons() );
|
||||
|
||||
// Add standard EM Processes for e+
|
||||
particle = G4Positron::Positron();
|
||||
pmanager = particle->GetProcessManager();
|
||||
G4AnnihiToMuPair* eplusmumu = new G4AnnihiToMuPair();
|
||||
pmanager->AddDiscreteProcess( eplusmumu );
|
||||
|
||||
G4eeToHadrons* eplushadr = new G4eeToHadrons();
|
||||
pmanager->AddDiscreteProcess( eplushadr );
|
||||
|
||||
// Built-in biasing factor for cross secsions
|
||||
eplusmumu->SetCrossSecFactor(1.0);
|
||||
eplushadr->SetCrossSecFactor(1.0);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmMuonBuilder.cc,v 1.4 2004/12/06 16:39:44 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmMuonBuilder
|
||||
//
|
||||
// Author: V.Ivanchenko 03.05.2004
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4EmMuonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmMuonBuilder::G4EmMuonBuilder(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmMuonBuilder::~G4EmMuonBuilder()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmMuonBuilder::ConstructParticle()
|
||||
{
|
||||
// Minimal set of particles
|
||||
G4Gamma::Gamma();
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
G4MuonPlus::MuonPlus();
|
||||
G4MuonMinus::MuonMinus();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmMuonBuilder::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes for mu+
|
||||
const G4ParticleDefinition* particle = G4MuonPlus::MuonPlus();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1,3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-1,4);
|
||||
|
||||
|
||||
// Add standard EM Processes for mu-
|
||||
particle = G4MuonMinus::MuonMinus();
|
||||
pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1,3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-1,4);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmMuonBuilder52.cc,v 1.1 2004/05/04 08:33:37 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmMuonBuilder52
|
||||
//
|
||||
// Author: V.Ivanchenko 03.05.2004
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4EmMuonBuilder52.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4MultipleScattering52.hh"
|
||||
|
||||
#include "G4MuIonisation52.hh"
|
||||
#include "G4MuBremsstrahlung52.hh"
|
||||
#include "G4MuPairProduction52.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmMuonBuilder52::G4EmMuonBuilder52(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmMuonBuilder52::~G4EmMuonBuilder52()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmMuonBuilder52::ConstructParticle()
|
||||
{
|
||||
// Minimal set of particles
|
||||
G4Gamma::Gamma();
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
G4MuonPlus::MuonPlus();
|
||||
G4MuonMinus::MuonMinus();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmMuonBuilder52::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes for mu+
|
||||
const G4ParticleDefinition* particle = G4MuonPlus::MuonPlus();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering52,-1, 1,1);
|
||||
pmanager->AddProcess(new G4MuIonisation52, -1, 2,2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung52, -1,-1,3);
|
||||
pmanager->AddProcess(new G4MuPairProduction52, -1,-1,4);
|
||||
|
||||
|
||||
// Add standard EM Processes for mu-
|
||||
particle = G4MuonMinus::MuonMinus();
|
||||
pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering52,-1, 1,1);
|
||||
pmanager->AddProcess(new G4MuIonisation52, -1, 2,2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung52, -1,-1,3);
|
||||
pmanager->AddProcess(new G4MuPairProduction52, -1,-1,4);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmMuonBuilder71.cc,v 1.1 2005/10/03 01:59:42 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmMuonBuilder71
|
||||
//
|
||||
// Author: V.Ivanchenko 03.10.2005
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4EmMuonBuilder71.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmMuonBuilder71::G4EmMuonBuilder71(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmMuonBuilder71::~G4EmMuonBuilder71()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmMuonBuilder71::ConstructParticle()
|
||||
{
|
||||
// Minimal set of particles
|
||||
G4Gamma::Gamma();
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
G4MuonPlus::MuonPlus();
|
||||
G4MuonMinus::MuonMinus();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmMuonBuilder71::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes for mu+
|
||||
const G4ParticleDefinition* particle = G4MuonPlus::MuonPlus();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-1, 4);
|
||||
|
||||
|
||||
// Add standard EM Processes for mu-
|
||||
particle = G4MuonMinus::MuonMinus();
|
||||
pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-1, 4);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,110 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmQEDBuilder.cc,v 1.3 2005/11/22 17:11:31 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmQEDBuilder
|
||||
//
|
||||
// Author: V.Ivanchenko 03.05.2004
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4EmQEDBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmQEDBuilder::G4EmQEDBuilder(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmQEDBuilder::~G4EmQEDBuilder()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmQEDBuilder::ConstructParticle()
|
||||
{
|
||||
G4Gamma::Gamma();
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmQEDBuilder::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes for gamma
|
||||
G4ParticleDefinition* particle = G4Gamma::Gamma();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect() );
|
||||
pmanager->AddDiscreteProcess(new G4ComptonScattering() );
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion() );
|
||||
|
||||
// Add standard EM Processes for e-
|
||||
particle = G4Electron::Electron();
|
||||
pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
|
||||
|
||||
// Add standard EM Processes for e+
|
||||
particle = G4Positron::Positron();
|
||||
pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,111 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmQEDBuilder52.cc,v 1.2 2005/05/08 16:12:53 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmQEDBuilder52
|
||||
//
|
||||
// Author: V.Ivanchenko 03.05.2004
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4EmQEDBuilder52.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4ComptonScattering52.hh"
|
||||
#include "G4GammaConversion52.hh"
|
||||
#include "G4PhotoElectricEffect52.hh"
|
||||
|
||||
#include "G4MultipleScattering52.hh"
|
||||
|
||||
#include "G4eIonisation52.hh"
|
||||
#include "G4eBremsstrahlung52.hh"
|
||||
#include "G4eplusAnnihilation52.hh"
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmQEDBuilder52::G4EmQEDBuilder52(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmQEDBuilder52::~G4EmQEDBuilder52()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmQEDBuilder52::ConstructParticle()
|
||||
{
|
||||
G4Gamma::Gamma();
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmQEDBuilder52::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes for gamma
|
||||
G4ParticleDefinition* particle = G4Gamma::Gamma();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddDiscreteProcess( new G4PhotoElectricEffect52() );
|
||||
pmanager->AddDiscreteProcess( new G4ComptonScattering52() );
|
||||
pmanager->AddDiscreteProcess( new G4GammaConversion52() );
|
||||
|
||||
// Add standard EM Processes for e-
|
||||
particle = G4Electron::Electron();
|
||||
pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering52, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eIonisation52, -1, 2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung52, -1,-1,3);
|
||||
|
||||
// Add standard EM Processes for e+
|
||||
particle = G4Positron::Positron();
|
||||
pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering52, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eIonisation52, -1, 2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung52, -1,-1,3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation52, 0,-1,4);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,111 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmQEDBuilder71.cc,v 1.1 2005/10/03 01:59:42 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmQEDBuilder71
|
||||
//
|
||||
// Author: V.Ivanchenko 03.10.2005
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4EmQEDBuilder71.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4MultipleScattering71.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmQEDBuilder71::G4EmQEDBuilder71(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmQEDBuilder71::~G4EmQEDBuilder71()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmQEDBuilder71::ConstructParticle()
|
||||
{
|
||||
G4Gamma::Gamma();
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmQEDBuilder71::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes for gamma
|
||||
G4ParticleDefinition* particle = G4Gamma::Gamma();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddDiscreteProcess( new G4PhotoElectricEffect() );
|
||||
pmanager->AddDiscreteProcess( new G4ComptonScattering() );
|
||||
pmanager->AddDiscreteProcess( new G4GammaConversion() );
|
||||
|
||||
// Add standard EM Processes for e-
|
||||
particle = G4Electron::Electron();
|
||||
pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering71, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1, 3);
|
||||
|
||||
// Add standard EM Processes for e+
|
||||
particle = G4Positron::Positron();
|
||||
pmanager = particle->GetProcessManager();
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering71, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4StepLimiterBuilder.cc,v 1.1 2004/11/29 14:49:27 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4StepLimiterBuilder
|
||||
//
|
||||
// Author: V.Ivanchenko 24.11.2004
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4StepLimiterBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4StepLimiterPerRegion.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4StepLimiterBuilder::G4StepLimiterBuilder(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{
|
||||
stepMax = new G4StepLimiterPerRegion();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4StepLimiterBuilder::~G4StepLimiterBuilder()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4StepLimiterBuilder::ConstructParticle()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4StepLimiterBuilder::ConstructProcess()
|
||||
{
|
||||
// Add Decay Process
|
||||
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
if (stepMax->IsApplicable(*particle) && !particle->IsShortLived()) {
|
||||
|
||||
pmanager->AddProcess(stepMax, -1,-1,6);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4StepLimiterMessenger.cc,v 1.1 2004/11/29 14:49:27 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4StepLimiterMessenger.hh"
|
||||
|
||||
#include "G4StepLimiterPerRegion.hh"
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4StepLimiterMessenger::G4StepLimiterMessenger(G4StepLimiterPerRegion* stepM)
|
||||
:stepLimiter(stepM)
|
||||
{
|
||||
stepMaxCmd = new G4UIcmdWithADoubleAndUnit("/testem/stepMax",this);
|
||||
stepMaxCmd->SetGuidance("Set max allowed step length for the default region");
|
||||
stepMaxCmd->SetParameterName("mxStep",false);
|
||||
stepMaxCmd->SetRange("mxStep>0.");
|
||||
stepMaxCmd->SetUnitCategory("Length");
|
||||
stepMaxCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4StepLimiterMessenger::~G4StepLimiterMessenger()
|
||||
{
|
||||
delete stepMaxCmd;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4StepLimiterMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
|
||||
{
|
||||
if (command == stepMaxCmd)
|
||||
{ stepLimiter->SetMaxStep(stepMaxCmd->GetNewDoubleValue(newValue));}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -1,85 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4StepLimiterPerRegion.cc,v 1.1 2004/11/29 14:49:28 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4StepLimiterPerRegion.hh"
|
||||
#include "G4StepLimiterMessenger.hh"
|
||||
#include "G4VPhysicalVolume.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4StepLimiterPerRegion::G4StepLimiterPerRegion(const G4String& processName)
|
||||
: G4VDiscreteProcess(processName),
|
||||
MaxChargedStep(DBL_MAX)
|
||||
{
|
||||
pMess = new G4StepLimiterMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4StepLimiterPerRegion::~G4StepLimiterPerRegion()
|
||||
{
|
||||
delete pMess;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4bool G4StepLimiterPerRegion::IsApplicable(const G4ParticleDefinition& particle)
|
||||
{
|
||||
return (particle.GetPDGCharge() != 0. && !(particle.IsShortLived()));
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4StepLimiterPerRegion::SetMaxStep(G4double step)
|
||||
{
|
||||
MaxChargedStep = step;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4double G4StepLimiterPerRegion::PostStepGetPhysicalInteractionLength(
|
||||
const G4Track&,
|
||||
G4double,
|
||||
G4ForceCondition* condition )
|
||||
{
|
||||
// condition is set to "Not Forced"
|
||||
*condition = NotForced;
|
||||
ProposedStep = MaxChargedStep;
|
||||
|
||||
return ProposedStep;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VParticleChange* G4StepLimiterPerRegion::PostStepDoIt(const G4Track& aTrack, const G4Step&)
|
||||
{
|
||||
aParticleChange.Initialize(aTrack);
|
||||
return &aParticleChange;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -1,155 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: ParticlesBuilder.cc,v 1.2 2004/11/24 13:18:03 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: ParticleBuilder
|
||||
//
|
||||
// Author: V.Ivanchenko 03.05.2004
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "ParticlesBuilder.hh"
|
||||
|
||||
// Bosons
|
||||
#include "G4ChargedGeantino.hh"
|
||||
#include "G4Geantino.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4OpticalPhoton.hh"
|
||||
|
||||
// leptons
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
#include "G4NeutrinoMu.hh"
|
||||
#include "G4AntiNeutrinoMu.hh"
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4NeutrinoE.hh"
|
||||
#include "G4AntiNeutrinoE.hh"
|
||||
|
||||
// Mesons
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4PionZero.hh"
|
||||
#include "G4Eta.hh"
|
||||
#include "G4EtaPrime.hh"
|
||||
|
||||
#include "G4KaonPlus.hh"
|
||||
#include "G4KaonMinus.hh"
|
||||
#include "G4KaonZero.hh"
|
||||
#include "G4AntiKaonZero.hh"
|
||||
#include "G4KaonZeroLong.hh"
|
||||
#include "G4KaonZeroShort.hh"
|
||||
|
||||
// Baryons
|
||||
#include "G4Proton.hh"
|
||||
#include "G4AntiProton.hh"
|
||||
#include "G4Neutron.hh"
|
||||
#include "G4AntiNeutron.hh"
|
||||
|
||||
// Nuclei
|
||||
#include "G4Alpha.hh"
|
||||
#include "G4Deuteron.hh"
|
||||
#include "G4Triton.hh"
|
||||
#include "G4He3.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
//#include "IonC12.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
ParticlesBuilder::ParticlesBuilder(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
ParticlesBuilder::~ParticlesBuilder()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void ParticlesBuilder::ConstructParticle()
|
||||
{
|
||||
|
||||
// pseudo-particles
|
||||
G4Geantino::GeantinoDefinition();
|
||||
G4ChargedGeantino::ChargedGeantinoDefinition();
|
||||
|
||||
// gamma
|
||||
G4Gamma::GammaDefinition();
|
||||
|
||||
// optical photon
|
||||
G4OpticalPhoton::OpticalPhotonDefinition();
|
||||
|
||||
// leptons
|
||||
G4Electron::ElectronDefinition();
|
||||
G4Positron::PositronDefinition();
|
||||
G4MuonPlus::MuonPlusDefinition();
|
||||
G4MuonMinus::MuonMinusDefinition();
|
||||
|
||||
G4NeutrinoE::NeutrinoEDefinition();
|
||||
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
|
||||
G4NeutrinoMu::NeutrinoMuDefinition();
|
||||
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
|
||||
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4PionZero::PionZeroDefinition();
|
||||
G4Eta::EtaDefinition();
|
||||
G4EtaPrime::EtaPrimeDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
G4KaonZero::KaonZeroDefinition();
|
||||
G4AntiKaonZero::AntiKaonZeroDefinition();
|
||||
G4KaonZeroLong::KaonZeroLongDefinition();
|
||||
G4KaonZeroShort::KaonZeroShortDefinition();
|
||||
|
||||
// barions
|
||||
G4Proton::ProtonDefinition();
|
||||
G4AntiProton::AntiProtonDefinition();
|
||||
G4Neutron::NeutronDefinition();
|
||||
G4AntiNeutron::AntiNeutronDefinition();
|
||||
|
||||
// ions
|
||||
G4Deuteron::DeuteronDefinition();
|
||||
G4Triton::TritonDefinition();
|
||||
G4He3::He3Definition();
|
||||
G4Alpha::AlphaDefinition();
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
// IonC12::IonDefinition();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: PhysListEmG4v52.cc,v 1.6 2006/06/29 16:50:28 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysListEmG4v52.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4ComptonScattering52.hh"
|
||||
#include "G4GammaConversion52.hh"
|
||||
#include "G4PhotoElectricEffect52.hh"
|
||||
|
||||
#include "G4MultipleScattering52.hh"
|
||||
|
||||
#include "G4eIonisation52.hh"
|
||||
#include "G4eBremsstrahlung52.hh"
|
||||
#include "G4eplusAnnihilation52.hh"
|
||||
|
||||
#include "G4MuIonisation52.hh"
|
||||
#include "G4MuBremsstrahlung52.hh"
|
||||
#include "G4MuPairProduction52.hh"
|
||||
|
||||
#include "G4hIonisation52.hh"
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmG4v52::PhysListEmG4v52(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmG4v52::~PhysListEmG4v52()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysListEmG4v52::ConstructProcess()
|
||||
{
|
||||
// Add EM processes realised on base of prototype of model approach design
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
// gamma
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect52);
|
||||
pmanager->AddDiscreteProcess(new G4ComptonScattering52);
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion52);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
pmanager->AddProcess(new G4MultipleScattering52, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eIonisation52, -1, 2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung52, -1,-1,3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
pmanager->AddProcess(new G4MultipleScattering52, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eIonisation52, -1, 2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung52, -1,-1,3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation52, 0,-1,4);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MultipleScattering52,-1, 1,1);
|
||||
pmanager->AddProcess(new G4MuIonisation52, -1, 2,2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung52, -1,-1,3);
|
||||
pmanager->AddProcess(new G4MuPairProduction52, -1,-1,4);
|
||||
|
||||
} else if( particleName == "GenericIon" ) {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering52,-1,1,1);
|
||||
pmanager->AddProcess(new G4hIonisation52, -1,2,2);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4MultipleScattering52,-1,1,1);
|
||||
pmanager->AddProcess(new G4hIonisation52, -1,2,2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: PhysListEmLivermore.cc,v 1.2 2006/06/29 16:50:30 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysListEmLivermore.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4LowEnergyCompton.hh"
|
||||
#include "G4LowEnergyGammaConversion.hh"
|
||||
#include "G4LowEnergyPhotoElectric.hh"
|
||||
#include "G4LowEnergyRayleigh.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
|
||||
#include "G4LowEnergyIonisation.hh"
|
||||
#include "G4LowEnergyBremsstrahlung.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
#include "G4hLowEnergyIonisation.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmLivermore::PhysListEmLivermore(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmLivermore::~PhysListEmLivermore()
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysListEmLivermore::ConstructProcess()
|
||||
{
|
||||
// Add LowEn or standard EM Processes
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
// gamma
|
||||
pmanager->AddDiscreteProcess(new G4LowEnergyPhotoElectric);
|
||||
pmanager->AddDiscreteProcess(new G4LowEnergyCompton);
|
||||
pmanager->AddDiscreteProcess(new G4LowEnergyGammaConversion);
|
||||
pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4LowEnergyIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4LowEnergyBremsstrahlung, -1,-1, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 4, 4);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
///pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
///pmanager->AddProcess(new G4hLowEnergyIonisation, -1, 2, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: PhysListEmPenelope.cc,v 1.2 2006/06/29 16:50:33 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysListEmPenelope.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4PenelopeCompton.hh"
|
||||
#include "G4PenelopeGammaConversion.hh"
|
||||
#include "G4PenelopePhotoElectric.hh"
|
||||
#include "G4PenelopeRayleigh.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
|
||||
#include "G4PenelopeIonisation.hh"
|
||||
#include "G4PenelopeBremsstrahlung.hh"
|
||||
#include "G4PenelopeAnnihilation.hh"
|
||||
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmPenelope::PhysListEmPenelope(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmPenelope::~PhysListEmPenelope()
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysListEmPenelope::ConstructProcess()
|
||||
{
|
||||
// Add Penelope or standard EM Processes
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
// gamma
|
||||
pmanager->AddDiscreteProcess(new G4PenelopePhotoElectric);
|
||||
pmanager->AddDiscreteProcess(new G4PenelopeCompton);
|
||||
pmanager->AddDiscreteProcess(new G4PenelopeGammaConversion);
|
||||
pmanager->AddDiscreteProcess(new G4PenelopeRayleigh);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4PenelopeIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4PenelopeBremsstrahlung, -1,-1, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4PenelopeIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4PenelopeBremsstrahlung, -1,-1, 3);
|
||||
pmanager->AddProcess(new G4PenelopeAnnihilation, 0,-1, 4);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 4, 4);
|
||||
|
||||
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2,2);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: PhysListEmStandard.cc,v 1.5 2006/06/29 16:50:35 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysListEmStandard.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmStandard::PhysListEmStandard(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmStandard::~PhysListEmStandard()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysListEmStandard::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
// gamma
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
|
||||
pmanager->AddDiscreteProcess(new G4ComptonScattering);
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 4,4);
|
||||
|
||||
} else if( particleName == "GenericIon" ) {
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2,2);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1,1,1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1,2,2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,78 +1,51 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: PhysicsList.cc,v 1.8 2005/10/03 01:59:42 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: PhysicsList.cc,v 1.11 2006/06/29 16:50:38 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: PhysicsList
|
||||
//
|
||||
// Author: V.Ivanchenko 03.05.2004
|
||||
//
|
||||
// Modified:
|
||||
// 03-10-05 Add Builders 71 (V.Ivanchenko)
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysicsList.hh"
|
||||
#include "PhysicsListMessenger.hh"
|
||||
|
||||
#include "ParticlesBuilder.hh"
|
||||
#include "G4EmQEDBuilder.hh"
|
||||
#include "G4EmMuonBuilder.hh"
|
||||
#include "G4EmHadronBuilder.hh"
|
||||
#include "G4EmQEDBuilder71.hh"
|
||||
#include "G4EmMuonBuilder71.hh"
|
||||
#include "G4EmHadronBuilder71.hh"
|
||||
#include "G4EmHighEnergyBuilder.hh"
|
||||
#include "G4EmQEDBuilder52.hh"
|
||||
#include "G4EmMuonBuilder52.hh"
|
||||
#include "G4EmHadronBuilder52.hh"
|
||||
#include "G4StepLimiterBuilder.hh"
|
||||
#include "DecaysBuilder.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "PhysListEmStandard.hh"
|
||||
#include "PhysListEmG4v52.hh"
|
||||
|
||||
#include "PhysListEmLivermore.hh"
|
||||
#include "PhysListEmPenelope.hh"
|
||||
|
||||
#include "G4UnitsTable.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4EmProcessOptions.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysicsList::PhysicsList()
|
||||
: G4VModularPhysicsList()
|
||||
PhysicsList::PhysicsList() : G4VModularPhysicsList()
|
||||
{
|
||||
emBuilderIsRegisted = false;
|
||||
decayIsRegisted = false;
|
||||
stepLimiterIsRegisted = false;
|
||||
heIsRegisted = false;
|
||||
verbose = 0;
|
||||
// G4LossTableManager::Instance()->SetVerbose(0);
|
||||
G4LossTableManager::Instance();
|
||||
defaultCutValue = 1.*mm;
|
||||
cutForGamma = defaultCutValue;
|
||||
cutForElectron = defaultCutValue;
|
||||
@@ -80,109 +53,253 @@ PhysicsList::PhysicsList()
|
||||
|
||||
pMessenger = new PhysicsListMessenger(this);
|
||||
|
||||
// Add Physics builders
|
||||
RegisterPhysics(new ParticlesBuilder());
|
||||
SetVerboseLevel(1);
|
||||
|
||||
// EM physics
|
||||
emPhysicsList = new PhysListEmStandard(emName = "standard");
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysicsList::~PhysicsList()
|
||||
{}
|
||||
{
|
||||
delete pMessenger;
|
||||
delete emPhysicsList;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// Bosons
|
||||
#include "G4ChargedGeantino.hh"
|
||||
#include "G4Geantino.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4OpticalPhoton.hh"
|
||||
|
||||
// leptons
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
#include "G4NeutrinoMu.hh"
|
||||
#include "G4AntiNeutrinoMu.hh"
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4NeutrinoE.hh"
|
||||
#include "G4AntiNeutrinoE.hh"
|
||||
|
||||
// Mesons
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4PionZero.hh"
|
||||
#include "G4Eta.hh"
|
||||
#include "G4EtaPrime.hh"
|
||||
|
||||
#include "G4KaonPlus.hh"
|
||||
#include "G4KaonMinus.hh"
|
||||
#include "G4KaonZero.hh"
|
||||
#include "G4AntiKaonZero.hh"
|
||||
#include "G4KaonZeroLong.hh"
|
||||
#include "G4KaonZeroShort.hh"
|
||||
|
||||
// Baryons
|
||||
#include "G4Proton.hh"
|
||||
#include "G4AntiProton.hh"
|
||||
#include "G4Neutron.hh"
|
||||
#include "G4AntiNeutron.hh"
|
||||
|
||||
// Nuclei
|
||||
#include "G4Alpha.hh"
|
||||
#include "G4Deuteron.hh"
|
||||
#include "G4Triton.hh"
|
||||
#include "G4He3.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysicsList::ConstructParticle()
|
||||
{
|
||||
if(verbose > 0)
|
||||
G4cout << "Construte Particles" << G4endl;
|
||||
// pseudo-particles
|
||||
G4Geantino::GeantinoDefinition();
|
||||
G4ChargedGeantino::ChargedGeantinoDefinition();
|
||||
|
||||
// gamma
|
||||
G4Gamma::GammaDefinition();
|
||||
|
||||
// optical photon
|
||||
G4OpticalPhoton::OpticalPhotonDefinition();
|
||||
|
||||
G4VModularPhysicsList::ConstructParticle();
|
||||
// leptons
|
||||
G4Electron::ElectronDefinition();
|
||||
G4Positron::PositronDefinition();
|
||||
G4MuonPlus::MuonPlusDefinition();
|
||||
G4MuonMinus::MuonMinusDefinition();
|
||||
|
||||
G4NeutrinoE::NeutrinoEDefinition();
|
||||
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
|
||||
G4NeutrinoMu::NeutrinoMuDefinition();
|
||||
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
|
||||
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4PionZero::PionZeroDefinition();
|
||||
G4Eta::EtaDefinition();
|
||||
G4EtaPrime::EtaPrimeDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
G4KaonZero::KaonZeroDefinition();
|
||||
G4AntiKaonZero::AntiKaonZeroDefinition();
|
||||
G4KaonZeroLong::KaonZeroLongDefinition();
|
||||
G4KaonZeroShort::KaonZeroShortDefinition();
|
||||
|
||||
// barions
|
||||
G4Proton::ProtonDefinition();
|
||||
G4AntiProton::AntiProtonDefinition();
|
||||
G4Neutron::NeutronDefinition();
|
||||
G4AntiNeutron::AntiNeutronDefinition();
|
||||
|
||||
// ions
|
||||
G4Deuteron::DeuteronDefinition();
|
||||
G4Triton::TritonDefinition();
|
||||
G4He3::He3Definition();
|
||||
G4Alpha::AlphaDefinition();
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
void PhysicsList::ConstructProcess()
|
||||
{
|
||||
if(verbose > 0)
|
||||
G4cout << "Construte Processes" << G4endl;
|
||||
if(!emBuilderIsRegisted) AddPhysicsList("standard");
|
||||
G4VModularPhysicsList::ConstructProcess();
|
||||
// transportation
|
||||
//
|
||||
AddTransportation();
|
||||
|
||||
// electromagnetic physics list
|
||||
//
|
||||
emPhysicsList->ConstructProcess();
|
||||
|
||||
// decay process
|
||||
//
|
||||
AddDecay();
|
||||
|
||||
// Define energy interval for loss processes
|
||||
G4EmProcessOptions emOptions;
|
||||
emOptions.SetMinEnergy(0.1*keV);
|
||||
emOptions.SetMaxEnergy(100.*GeV);
|
||||
emOptions.SetDEDXBinning(90);
|
||||
emOptions.SetLambdaBinning(90);
|
||||
emOptions.SetBuildPreciseRange(false);
|
||||
//emOptions.SetVerbose(0);
|
||||
// step limitation (as a full process)
|
||||
//
|
||||
AddStepMax();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysicsList::AddPhysicsList(const G4String& name)
|
||||
{
|
||||
if(verbose > 0) {
|
||||
G4cout << "Add Physics <" << name
|
||||
<< "> emBuilderIsRegisted= " << emBuilderIsRegisted
|
||||
<< G4endl;
|
||||
if (verboseLevel>-1) {
|
||||
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
|
||||
}
|
||||
if ((name == "standard") && !emBuilderIsRegisted) {
|
||||
RegisterPhysics(new G4EmQEDBuilder());
|
||||
RegisterPhysics(new G4EmMuonBuilder());
|
||||
RegisterPhysics(new G4EmHadronBuilder());
|
||||
emBuilderIsRegisted = true;
|
||||
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
|
||||
|
||||
} else if (name == "g4v52" && !emBuilderIsRegisted) {
|
||||
RegisterPhysics(new G4EmQEDBuilder52());
|
||||
RegisterPhysics(new G4EmMuonBuilder52());
|
||||
RegisterPhysics(new G4EmHadronBuilder52());
|
||||
emBuilderIsRegisted = true;
|
||||
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
|
||||
if (name == emName) return;
|
||||
|
||||
} else if (name == "g4v71" && !emBuilderIsRegisted) {
|
||||
RegisterPhysics(new G4EmQEDBuilder71());
|
||||
RegisterPhysics(new G4EmMuonBuilder71());
|
||||
RegisterPhysics(new G4EmHadronBuilder71());
|
||||
emBuilderIsRegisted = true;
|
||||
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
|
||||
if (name == "standard") {
|
||||
|
||||
} else if (name == "step_limit" && !stepLimiterIsRegisted) {
|
||||
RegisterPhysics(new G4StepLimiterBuilder());
|
||||
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
|
||||
emName = name;
|
||||
delete emPhysicsList;
|
||||
emPhysicsList = new PhysListEmStandard(name);
|
||||
|
||||
} else if (name == "decay" && !decayIsRegisted) {
|
||||
RegisterPhysics(new DecaysBuilder());
|
||||
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
|
||||
} else if (name == "g4v52") {
|
||||
|
||||
emName = name;
|
||||
delete emPhysicsList;
|
||||
emPhysicsList = new PhysListEmG4v52(name);
|
||||
|
||||
} else if (name == "high_energy" && !heIsRegisted) {
|
||||
RegisterPhysics(new G4EmHighEnergyBuilder());
|
||||
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
|
||||
} else if (name == "livermore") {
|
||||
|
||||
emName = name;
|
||||
delete emPhysicsList;
|
||||
emPhysicsList = new PhysListEmLivermore(name);
|
||||
|
||||
} else if (name == "penelope") {
|
||||
|
||||
emName = name;
|
||||
delete emPhysicsList;
|
||||
emPhysicsList = new PhysListEmPenelope(name);
|
||||
|
||||
} else {
|
||||
G4cout << "PhysicsList::AddPhysicsList <" << name << ">"
|
||||
<< " fail - module is already regitered or is unknown " << G4endl;
|
||||
|
||||
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
|
||||
<< " is not defined"
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4Decay.hh"
|
||||
|
||||
void PhysicsList::AddDecay()
|
||||
{
|
||||
// decay process
|
||||
//
|
||||
G4Decay* fDecayProcess = new G4Decay();
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
if (fDecayProcess->IsApplicable(*particle) && !particle->IsShortLived()) {
|
||||
|
||||
pmanager ->AddProcess(fDecayProcess);
|
||||
|
||||
// set ordering for PostStepDoIt and AtRestDoIt
|
||||
pmanager ->SetProcessOrdering(fDecayProcess, idxPostStep);
|
||||
pmanager ->SetProcessOrdering(fDecayProcess, idxAtRest);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "StepMax.hh"
|
||||
|
||||
void PhysicsList::AddStepMax()
|
||||
{
|
||||
// Step limitation seen as a process
|
||||
StepMax* stepMaxProcess = new StepMax();
|
||||
|
||||
theParticleIterator->reset();
|
||||
while ((*theParticleIterator)()){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
if (stepMaxProcess->IsApplicable(*particle))
|
||||
{
|
||||
pmanager ->AddDiscreteProcess(stepMaxProcess);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
|
||||
void PhysicsList::SetCuts()
|
||||
{
|
||||
|
||||
if (verboseLevel >0){
|
||||
G4cout << "PhysicsList::SetCuts:";
|
||||
G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;
|
||||
}
|
||||
|
||||
// set cut values for gamma at first and for e- second and next for e+,
|
||||
// because some processes for e+/e- need cut values for gamma
|
||||
SetCutValue(cutForGamma, "gamma");
|
||||
SetCutValue(cutForElectron, "e-");
|
||||
SetCutValue(cutForPositron, "e+");
|
||||
|
||||
if (verbose>0) DumpCutValuesTable();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysicsList::SetVerbose(G4int val)
|
||||
{
|
||||
verbose = val;
|
||||
if (verboseLevel>0) DumpCutValuesTable();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -210,3 +327,4 @@ void PhysicsList::SetCutForPositron(G4double cut)
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
|
||||
@@ -1,27 +1,30 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: PhysicsListMessenger.cc,v 1.3 2004/11/29 14:49:28 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: PhysicsListMessenger.cc,v 1.5 2006/06/29 16:50:41 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -32,8 +35,6 @@
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -75,11 +76,6 @@ PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
|
||||
pListCmd->SetGuidance("Add modula physics list.");
|
||||
pListCmd->SetParameterName("PList",false);
|
||||
pListCmd->AvailableForStates(G4State_PreInit);
|
||||
|
||||
verbCmd = new G4UIcmdWithAnInteger("/testem/phys/verbose",this);
|
||||
verbCmd->SetGuidance("Set verbose level for processes");
|
||||
verbCmd->SetParameterName("pVerb",false);
|
||||
verbCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -91,8 +87,7 @@ PhysicsListMessenger::~PhysicsListMessenger()
|
||||
delete protoCutCmd;
|
||||
delete allCutCmd;
|
||||
delete pListCmd;
|
||||
delete verbCmd;
|
||||
delete physDir;
|
||||
delete physDir;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -117,9 +112,6 @@ void PhysicsListMessenger::SetNewValue(G4UIcommand* command,
|
||||
pPhysicsList->SetCutForPositron(cut);
|
||||
}
|
||||
|
||||
if( command == verbCmd )
|
||||
{ G4LossTableManager::Instance()->SetVerbose(verbCmd->GetNewIntValue(newValue));}
|
||||
|
||||
if( command == pListCmd )
|
||||
{ pPhysicsList->AddPhysicsList(newValue);}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,30 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: PrimaryGeneratorAction.cc,v 1.2 2004/09/17 10:51:39 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: PrimaryGeneratorAction.cc,v 1.6 2006/06/29 16:50:44 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -36,7 +39,7 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PrimaryGeneratorAction::PrimaryGeneratorAction (DetectorConstruction* det)
|
||||
:Detector(det)
|
||||
:detector(det)
|
||||
{
|
||||
G4int n_particle = 1;
|
||||
particleGun = new G4ParticleGun(n_particle);
|
||||
@@ -44,8 +47,9 @@ PrimaryGeneratorAction::PrimaryGeneratorAction (DetectorConstruction* det)
|
||||
G4ParticleDefinition* particle
|
||||
= G4ParticleTable::GetParticleTable()->FindParticle("e-");
|
||||
particleGun->SetParticleDefinition(particle);
|
||||
particleGun->SetParticleEnergy(5.*GeV);
|
||||
particleGun->SetParticlePosition(initPos = G4ThreeVector(-1*cm,-1*cm,-1*cm));
|
||||
particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.));
|
||||
particleGun->SetParticleEnergy(5.*GeV);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -61,8 +65,10 @@ void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
{
|
||||
//this function is called at the begin of event
|
||||
//
|
||||
G4double position = -0.5*(Detector->GetfullLength());
|
||||
particleGun->SetParticlePosition(G4ThreeVector(0.*cm,0.*cm,position));
|
||||
if (particleGun->GetParticlePosition() == initPos) {
|
||||
G4double position = -0.5*(detector->GetfullLength());
|
||||
particleGun->SetParticlePosition(G4ThreeVector(0.*cm,0.*cm,position));
|
||||
}
|
||||
particleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,27 +1,30 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: RunAction.cc,v 1.17 2005/12/06 11:37:08 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: RunAction.cc,v 1.21 2006/06/29 16:50:47 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -52,18 +55,14 @@ RunAction::RunAction(DetectorConstruction* det, PrimaryGeneratorAction* kin)
|
||||
{
|
||||
runMessenger = new RunActionMessenger(this);
|
||||
|
||||
nLbin = Det->GetnLtot();
|
||||
nLbin = nRbin = MaxBin;
|
||||
|
||||
dEdL.resize(nLbin, 0.0);
|
||||
sumELongit.resize(nLbin, 0.0);
|
||||
sumELongitCumul.resize(nLbin, 0.0);
|
||||
sumE2Longit.resize(nLbin, 0.0);
|
||||
sumE2LongitCumul.resize(nLbin, 0.0);
|
||||
|
||||
gammaFlux.resize(nLbin, 0.0);
|
||||
electronFlux.resize(nLbin, 0.0);
|
||||
positronFlux.resize(nLbin, 0.0);
|
||||
|
||||
nRbin = Det->GetnRtot();
|
||||
dEdR.resize(nRbin, 0.0);
|
||||
sumERadial.resize(nRbin, 0.0);
|
||||
sumERadialCumul.resize(nRbin, 0.0);
|
||||
@@ -74,6 +73,8 @@ RunAction::RunAction(DetectorConstruction* det, PrimaryGeneratorAction* kin)
|
||||
rmstrue = 1.;
|
||||
limittrue = DBL_MAX;
|
||||
|
||||
verbose = 0;
|
||||
|
||||
#ifdef G4ANALYSIS_USE
|
||||
// Creating the analysis factory
|
||||
af = AIDA_createAnalysisFactory();
|
||||
@@ -131,13 +132,13 @@ void RunAction::bookHisto()
|
||||
G4double dRradl = Det->GetdRradl();
|
||||
|
||||
histo[0] = hf->createHistogram1D( "1","total energy deposit(percent of Einc)",
|
||||
100,0.,100.);
|
||||
110,0.,110.);
|
||||
|
||||
histo[1] = hf->createHistogram1D( "2","total charged tracklength (radl)",
|
||||
100,0.,100.*Ekin/GeV);
|
||||
110,0.,110.*Ekin/GeV);
|
||||
|
||||
histo[2] = hf->createHistogram1D( "3","total neutral tracklength (radl)",
|
||||
100,0.,1000.*Ekin/GeV);
|
||||
110,0.,1100.*Ekin/GeV);
|
||||
|
||||
histo[3] = hf->createHistogram1D( "4","longit energy profile (% of E inc)",
|
||||
nLbin,0.,nLbin*dLradl);
|
||||
@@ -149,27 +150,18 @@ void RunAction::bookHisto()
|
||||
histo[5] = hf->createHistogram1D( "6","rms on cumul longit Edep (% of E inc)",
|
||||
nLbin,Zmin,Zmax);
|
||||
|
||||
histo[6] = hf->createHistogram1D( "7","nb of gamma per plane",
|
||||
nLbin,Zmin,Zmax);
|
||||
|
||||
histo[7] = hf->createHistogram1D( "8","nb of positron per plane",
|
||||
nLbin,Zmin,Zmax);
|
||||
|
||||
histo[8] = hf->createHistogram1D( "9","nb of electron per plane",
|
||||
nLbin,Zmin,Zmax);
|
||||
|
||||
histo[9] = hf->createHistogram1D("10","radial energy profile (% of E inc)",
|
||||
histo[6] = hf->createHistogram1D("7","radial energy profile (% of E inc)",
|
||||
nRbin,0.,nRbin*dRradl);
|
||||
|
||||
G4double Rmin=0.5*dRradl, Rmax=Rmin+nRbin*dRradl;
|
||||
histo[10]= hf->createHistogram1D("11","cumul radial energy dep (% of E inc)",
|
||||
histo[7]= hf->createHistogram1D("8","cumul radial energy dep (% of E inc)",
|
||||
nRbin,Rmin,Rmax);
|
||||
|
||||
histo[11]= hf->createHistogram1D("12","rms on cumul radial Edep (% of E inc)",
|
||||
histo[8]= hf->createHistogram1D("9","rms on cumul radial Edep (% of E inc)",
|
||||
nRbin,Rmin,Rmax);
|
||||
|
||||
delete hf;
|
||||
G4cout << "\n----> Histogram Tree is opened in " << histoName[1] << G4endl;
|
||||
G4cout << "\n----> Histogram Tree is opened in " << histoName[1] << G4endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -199,39 +191,14 @@ void RunAction::BeginOfRunAction(const G4Run* aRun)
|
||||
G4RunManager::GetRunManager()->SetRandomNumberStore(true);
|
||||
CLHEP::HepRandom::showEngineStatus();
|
||||
|
||||
//reshape arrays if needed
|
||||
//
|
||||
G4bool rebin(false);
|
||||
|
||||
G4int nLtot = Det->GetnLtot();
|
||||
if(nLbin != nLtot)
|
||||
{dEdL.resize(nLbin=nLtot);
|
||||
sumELongit.resize(nLbin);
|
||||
sumE2Longit.resize(nLbin);
|
||||
sumELongitCumul.resize(nLbin);
|
||||
sumE2LongitCumul.resize(nLbin);
|
||||
gammaFlux.resize(nLbin);
|
||||
electronFlux.resize(nLbin);
|
||||
positronFlux.resize(nLbin);
|
||||
rebin=true;
|
||||
}
|
||||
|
||||
G4int nRtot = Det->GetnRtot();
|
||||
if(nRbin != nRtot)
|
||||
{dEdR.resize(nRbin=nRtot);
|
||||
sumERadial.resize(nRbin);
|
||||
sumE2Radial.resize(nRbin);
|
||||
sumERadialCumul.resize(nRbin);
|
||||
sumE2RadialCumul.resize(nRbin);
|
||||
rebin=true;
|
||||
}
|
||||
nLbin = Det->GetnLtot();
|
||||
nRbin = Det->GetnRtot();
|
||||
|
||||
//initialize arrays of cumulative energy deposition
|
||||
//
|
||||
for (G4int i=0; i<nLbin; i++) {
|
||||
for (G4int i=0; i<nLbin; i++)
|
||||
sumELongit[i]=sumE2Longit[i]=sumELongitCumul[i]=sumE2LongitCumul[i]=0.;
|
||||
gammaFlux[i]=electronFlux[i]=positronFlux[i]=0.;
|
||||
}
|
||||
|
||||
for (G4int j=0; j<nRbin; j++)
|
||||
sumERadial[j]=sumE2Radial[j]=sumERadialCumul[j]=sumE2RadialCumul[j]=0.;
|
||||
|
||||
@@ -241,7 +208,6 @@ void RunAction::BeginOfRunAction(const G4Run* aRun)
|
||||
//histograms
|
||||
//
|
||||
if (aRun->GetRunID() == 0) bookHisto();
|
||||
else if (rebin) {cleanHisto(); bookHisto();}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -321,9 +287,6 @@ void RunAction::EndOfRunAction(const G4Run* aRun)
|
||||
rmsELongitCumul[i] = norme*std::sqrt(std::fabs(NbOfEvents*sumE2LongitCumul[i]
|
||||
- sumELongitCumul[i]*sumELongitCumul[i]));
|
||||
|
||||
gammaFlux [i] /= NbOfEvents;
|
||||
electronFlux[i] /= NbOfEvents;
|
||||
positronFlux[i] /= NbOfEvents;
|
||||
|
||||
#ifdef G4ANALYSIS_USE
|
||||
if(tree) {
|
||||
@@ -332,10 +295,6 @@ void RunAction::EndOfRunAction(const G4Run* aRun)
|
||||
bin = (i+1)*dLradl;
|
||||
histo[4]->fill(bin,MeanELongitCumul[i]);
|
||||
histo[5]->fill(bin, rmsELongitCumul[i]);
|
||||
|
||||
histo[6]->fill(bin, gammaFlux[i]);
|
||||
histo[7]->fill(bin, positronFlux[i]);
|
||||
histo[8]->fill(bin, electronFlux[i]);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -360,14 +319,27 @@ void RunAction::EndOfRunAction(const G4Run* aRun)
|
||||
#ifdef G4ANALYSIS_USE
|
||||
if(tree) {
|
||||
G4double bin = i*dRradl;
|
||||
histo[ 9]->fill(bin,MeanERadial[i]/dRradl);
|
||||
histo[6]->fill(bin,MeanERadial[i]/dRradl);
|
||||
bin = (i+1)*dRradl;
|
||||
histo[10]->fill(bin,MeanERadialCumul[i]);
|
||||
histo[11]->fill(bin, rmsERadialCumul[i]);
|
||||
histo[7]->fill(bin,MeanERadialCumul[i]);
|
||||
histo[8]->fill(bin, rmsERadialCumul[i]);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//find Moliere confinement
|
||||
//
|
||||
const G4double EMoliere = 90.;
|
||||
G4double iMoliere = 0.;
|
||||
if ((MeanERadialCumul[0] <= EMoliere) &&
|
||||
(MeanERadialCumul[nRbin-1] >= EMoliere)) {
|
||||
G4int imin = 0;
|
||||
while( (imin < nRbin-1) && (MeanERadialCumul[imin] < EMoliere) ) imin++;
|
||||
G4double ratio = (EMoliere - MeanERadialCumul[imin]) /
|
||||
(MeanERadialCumul[imin+1] - MeanERadialCumul[imin]);
|
||||
iMoliere = 1. + imin + ratio;
|
||||
}
|
||||
|
||||
//track length
|
||||
//
|
||||
norme = 1./(NbOfEvents*(Det->GetMaterial()->GetRadlen()));
|
||||
@@ -387,59 +359,70 @@ void RunAction::EndOfRunAction(const G4Run* aRun)
|
||||
std::ios::fmtflags mode = G4cout.flags();
|
||||
G4cout.setf(std::ios::fixed,std::ios::floatfield);
|
||||
G4int prec = G4cout.precision(2);
|
||||
|
||||
if (verbose) {
|
||||
|
||||
G4cout << " LATERAL PROFILE "
|
||||
<< " CUMULATIVE LATERAL PROFILE" << G4endl << G4endl;
|
||||
G4cout << " LATERAL PROFILE "
|
||||
<< " CUMULATIVE LATERAL PROFILE" << G4endl << G4endl;
|
||||
|
||||
G4cout << " bin " << " Mean rms "
|
||||
<< " bin " << " Mean rms \n" << G4endl;
|
||||
G4cout << " bin " << " Mean rms "
|
||||
<< " bin " << " Mean rms \n" << G4endl;
|
||||
|
||||
for (i=0; i<nLbin; i++)
|
||||
{
|
||||
G4double inf=i*dLradl, sup=inf+dLradl;
|
||||
for (i=0; i<nLbin; i++)
|
||||
{
|
||||
G4double inf=i*dLradl, sup=inf+dLradl;
|
||||
|
||||
G4cout << std::setw(8) << inf << "->"
|
||||
<< std::setw(5) << sup << " radl: "
|
||||
<< std::setw(7) << MeanELongit[i] << "% "
|
||||
<< std::setw(9) << rmsELongit[i] << "% "
|
||||
<< " 0->" << std::setw(5) << sup << " radl: "
|
||||
<< std::setw(7) << MeanELongitCumul[i] << "% "
|
||||
<< std::setw(7) << rmsELongitCumul[i] << "% "
|
||||
<<G4endl;
|
||||
}
|
||||
G4cout << std::setw(8) << inf << "->"
|
||||
<< std::setw(5) << sup << " radl: "
|
||||
<< std::setw(7) << MeanELongit[i] << "% "
|
||||
<< std::setw(9) << rmsELongit[i] << "% "
|
||||
<< " 0->" << std::setw(5) << sup << " radl: "
|
||||
<< std::setw(7) << MeanELongitCumul[i] << "% "
|
||||
<< std::setw(7) << rmsELongitCumul[i] << "% "
|
||||
<<G4endl;
|
||||
}
|
||||
|
||||
G4cout << G4endl << G4endl << G4endl;
|
||||
G4cout << G4endl << G4endl << G4endl;
|
||||
|
||||
G4cout << " RADIAL PROFILE "
|
||||
<< " CUMULATIVE RADIAL PROFILE" << G4endl << G4endl;
|
||||
G4cout << " RADIAL PROFILE "
|
||||
<< " CUMULATIVE RADIAL PROFILE" << G4endl << G4endl;
|
||||
|
||||
G4cout << " bin " << " Mean rms "
|
||||
<< " bin " << " Mean rms \n" << G4endl;
|
||||
G4cout << " bin " << " Mean rms "
|
||||
<< " bin " << " Mean rms \n" << G4endl;
|
||||
|
||||
for (i=0; i<nRbin; i++)
|
||||
{
|
||||
G4double inf=i*dRradl, sup=inf+dRradl;
|
||||
for (i=0; i<nRbin; i++)
|
||||
{
|
||||
G4double inf=i*dRradl, sup=inf+dRradl;
|
||||
|
||||
G4cout << std::setw(8) << inf << "->"
|
||||
<< std::setw(5) << sup << " radl: "
|
||||
<< std::setw(7) << MeanERadial[i] << "% "
|
||||
<< std::setw(9) << rmsERadial[i] << "% "
|
||||
<< " 0->" << std::setw(5) << sup << " radl: "
|
||||
<< std::setw(7) << MeanERadialCumul[i] << "% "
|
||||
<< std::setw(7) << rmsERadialCumul[i] << "% "
|
||||
<<G4endl;
|
||||
}
|
||||
G4cout << G4endl;
|
||||
G4cout << std::setw(37) << "SUMMARY" << G4endl;
|
||||
G4cout << std::setw(42) << "energy deposit : "
|
||||
G4cout << std::setw(8) << inf << "->"
|
||||
<< std::setw(5) << sup << " radl: "
|
||||
<< std::setw(7) << MeanERadial[i] << "% "
|
||||
<< std::setw(9) << rmsERadial[i] << "% "
|
||||
<< " 0->" << std::setw(5) << sup << " radl: "
|
||||
<< std::setw(7) << MeanERadialCumul[i] << "% "
|
||||
<< std::setw(7) << rmsERadialCumul[i] << "% "
|
||||
<<G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
G4cout << "\n SUMMARY \n" << G4endl;
|
||||
G4cout << " energy deposit : "
|
||||
<< std::setw(7) << MeanELongitCumul[nLbin-1] << " % E0 +- "
|
||||
<< std::setw(7) << rmsELongitCumul[nLbin-1] << " % E0" << G4endl;
|
||||
G4cout << std::setw(42) << "charged traklen: "
|
||||
G4cout << " charged traklen: "
|
||||
<< std::setw(7) << MeanChargTrLength << " radl +- "
|
||||
<< std::setw(7) << rmsChargTrLength << " radl" << G4endl;
|
||||
G4cout << std::setw(42) << "neutral traklen: "
|
||||
G4cout << " neutral traklen: "
|
||||
<< std::setw(7) << MeanNeutrTrLength << " radl +- "
|
||||
<< std::setw(7) << rmsNeutrTrLength << " radl" << G4endl;
|
||||
|
||||
if (iMoliere > 0. ) {
|
||||
G4double RMoliere1 = iMoliere*Det->GetdRradl();
|
||||
G4double RMoliere2 = iMoliere*Det->GetdRlength();
|
||||
G4cout << "\n " << EMoliere << " % confinement: radius = "
|
||||
<< RMoliere1 << " radl ("
|
||||
<< G4BestUnit( RMoliere2, "Length") << ")" << G4endl;
|
||||
}
|
||||
|
||||
G4cout.setf(mode,std::ios::floatfield);
|
||||
G4cout.precision(prec);
|
||||
|
||||
@@ -1,27 +1,30 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: RunActionMessenger.cc,v 1.2 2004/09/17 10:51:40 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: RunActionMessenger.cc,v 1.4 2006/06/29 16:50:50 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -32,6 +35,7 @@
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWith3Vector.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -48,6 +52,10 @@ RunActionMessenger::RunActionMessenger(RunAction* run)
|
||||
accCmd->SetRange("edep>0 && edep<1 && rms>0");
|
||||
accCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
|
||||
|
||||
verbCmd = new G4UIcmdWithAnInteger("/testem/run/verbose",this);
|
||||
verbCmd->SetGuidance("set verbose level for runAction");
|
||||
verbCmd->SetParameterName("verbose",false);
|
||||
|
||||
histoDir = new G4UIdirectory("/testem/histo/");
|
||||
histoDir->SetGuidance("histograms control");
|
||||
|
||||
@@ -63,6 +71,7 @@ RunActionMessenger::RunActionMessenger(RunAction* run)
|
||||
|
||||
RunActionMessenger::~RunActionMessenger()
|
||||
{
|
||||
delete verbCmd;
|
||||
delete accCmd;
|
||||
delete runDir;
|
||||
delete factoryCmd;
|
||||
@@ -77,6 +86,9 @@ void RunActionMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
if (command == accCmd )
|
||||
{ Run->SetEdepAndRMS(accCmd->GetNew3VectorValue(newValue));}
|
||||
|
||||
if (command == verbCmd )
|
||||
{ Run->SetVerbose(verbCmd->GetNewIntValue(newValue));}
|
||||
|
||||
if (command == factoryCmd)
|
||||
{ Run->SetHistoName(newValue);}
|
||||
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: StepMax.cc,v 1.2 2006/06/29 16:50:52 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "StepMax.hh"
|
||||
#include "StepMaxMessenger.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
StepMax::StepMax(const G4String& processName)
|
||||
: G4VDiscreteProcess(processName),MaxChargedStep(DBL_MAX)
|
||||
{
|
||||
pMess = new StepMaxMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
StepMax::~StepMax() { delete pMess; }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4bool StepMax::IsApplicable(const G4ParticleDefinition& particle)
|
||||
{
|
||||
return (particle.GetPDGCharge() != 0. && !particle.IsShortLived());
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void StepMax::SetMaxStep(G4double step) {MaxChargedStep = step;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4double StepMax::PostStepGetPhysicalInteractionLength( const G4Track&,
|
||||
G4double,
|
||||
G4ForceCondition* condition )
|
||||
{
|
||||
// condition is set to "Not Forced"
|
||||
*condition = NotForced;
|
||||
|
||||
return MaxChargedStep;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VParticleChange* StepMax::PostStepDoIt(const G4Track& aTrack, const G4Step&)
|
||||
{
|
||||
// do nothing
|
||||
aParticleChange.Initialize(aTrack);
|
||||
return &aParticleChange;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: StepMaxMessenger.cc,v 1.2 2006/06/29 16:50:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "StepMaxMessenger.hh"
|
||||
|
||||
#include "StepMax.hh"
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
StepMaxMessenger::StepMaxMessenger(StepMax* stepM)
|
||||
:stepMax(stepM)
|
||||
{
|
||||
StepMaxCmd = new G4UIcmdWithADoubleAndUnit("/testem/stepMax",this);
|
||||
StepMaxCmd->SetGuidance("Set max allowed step length");
|
||||
StepMaxCmd->SetParameterName("mxStep",false);
|
||||
StepMaxCmd->SetRange("mxStep>0.");
|
||||
StepMaxCmd->SetUnitCategory("Length");
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
StepMaxMessenger::~StepMaxMessenger()
|
||||
{
|
||||
delete StepMaxCmd;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void StepMaxMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
|
||||
{
|
||||
if (command == StepMaxCmd)
|
||||
{ stepMax->SetMaxStep(StepMaxCmd->GetNewDoubleValue(newValue));}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -1,27 +1,30 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: SteppingAction.cc,v 1.3 2004/11/24 10:46:30 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: SteppingAction.cc,v 1.6 2006/06/29 16:50:57 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -29,14 +32,14 @@
|
||||
#include "SteppingAction.hh"
|
||||
#include "DetectorConstruction.hh"
|
||||
#include "RunAction.hh"
|
||||
|
||||
#include "G4SteppingManager.hh"
|
||||
#include "G4VTouchable.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
SteppingAction::SteppingAction(DetectorConstruction* det,
|
||||
RunAction* run)
|
||||
:Det(det),Run(run)
|
||||
SteppingAction::SteppingAction(DetectorConstruction* det, RunAction* run)
|
||||
:detector(det),Run(run)
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -46,41 +49,22 @@ SteppingAction::~SteppingAction()
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void SteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
void SteppingAction::UserSteppingAction(const G4Step* step)
|
||||
{
|
||||
G4Track* aTrack = aStep->GetTrack();
|
||||
const G4VTouchable* preStepTouchable= aStep->GetPreStepPoint()->GetTouchable();
|
||||
const G4VTouchable* postStepTouchable= aStep->GetPostStepPoint()->GetTouchable();
|
||||
|
||||
// energy deposit
|
||||
//
|
||||
G4int SlideNb(0), RingNb(0);
|
||||
if (preStepTouchable->GetHistoryDepth()>0)
|
||||
{
|
||||
if (Det->GetnRtot()>1)
|
||||
RingNb = preStepTouchable->GetReplicaNumber(1);
|
||||
/// RingNb = preStepTouchable->GetCopyNumber(1);
|
||||
if (Det->GetnLtot()>1)
|
||||
SlideNb = preStepTouchable->GetReplicaNumber();
|
||||
/// SlideNb = preStepTouchable->GetCopyNumber();
|
||||
}
|
||||
|
||||
G4double dEStep = aStep->GetTotalEnergyDeposit();
|
||||
if (dEStep > 0.)
|
||||
G4double dEStep = step->GetTotalEnergyDeposit();
|
||||
if (dEStep > 0.) {
|
||||
G4ThreeVector prePoint = step->GetPreStepPoint()->GetPosition();
|
||||
G4ThreeVector postPoint = step->GetPostStepPoint()->GetPosition();
|
||||
G4ThreeVector position = prePoint + G4UniformRand()*(postPoint - prePoint);
|
||||
G4double x = position.x(), y = position.y(), z = position.z();
|
||||
G4double radius = std::sqrt(x*x + y*y);
|
||||
G4double offset = 0.5*detector->GetfullLength();
|
||||
G4int SlideNb = int((z + offset)/detector->GetdLlength());
|
||||
G4int RingNb = int(radius/detector->GetdRlength());
|
||||
Run->fillPerStep(dEStep,SlideNb,RingNb);
|
||||
|
||||
// particle flux
|
||||
//
|
||||
if ((Det->GetnLtot()>1)&&
|
||||
(postStepTouchable->GetVolume()))
|
||||
{
|
||||
G4int next = postStepTouchable->GetReplicaNumber();
|
||||
/// G4int next = postStepTouchable->GetCopyNumber();
|
||||
if (next != SlideNb)
|
||||
Run->particleFlux(aTrack->GetDefinition(), (SlideNb+next)/2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
|
||||
|
||||
@@ -1,27 +1,30 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: SteppingVerbose.cc,v 1.2 2004/09/17 10:51:40 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: SteppingVerbose.cc,v 1.3 2006/06/29 16:50:59 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,27 +1,30 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * License and 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 *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: TrackingAction.cc,v 1.2 2004/09/17 10:51:40 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
// $Id: TrackingAction.cc,v 1.3 2006/06/29 16:51:01 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-01 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
Reference in New Issue
Block a user