Import Geant4 10.5.0 source tree
This commit is contained in:
@@ -23,8 +23,6 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: PurgMagActionInitializer.cc 66241 2012-12-13 18:34:42Z gunter $
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,194 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Code developed by:
|
||||
// S.Larsson
|
||||
//
|
||||
// ************************************
|
||||
// * *
|
||||
// * PurgMagAnalysisManager.cc *
|
||||
// * *
|
||||
// ************************************
|
||||
//
|
||||
// $Id: PurgMagAnalysisManager.cc 84477 2014-10-16 08:44:04Z gcosmo $
|
||||
//
|
||||
#include "PurgMagAnalysisManager.hh"
|
||||
|
||||
|
||||
PurgMagAnalysisManager* PurgMagAnalysisManager::instance = 0;
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
PurgMagAnalysisManager::PurgMagAnalysisManager()
|
||||
{;}
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
PurgMagAnalysisManager::~PurgMagAnalysisManager()
|
||||
{;}
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
PurgMagAnalysisManager* PurgMagAnalysisManager::getInstance()
|
||||
{
|
||||
if (instance == 0) instance = new PurgMagAnalysisManager;
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void PurgMagAnalysisManager::book()
|
||||
{
|
||||
// Get/create analysis manager
|
||||
G4AnalysisManager* man = G4AnalysisManager::Instance();
|
||||
|
||||
// Open an output file
|
||||
man->OpenFile("purgmag");
|
||||
man->SetFirstNtupleId(1);
|
||||
|
||||
// Create 1st ntuple (id = 1)
|
||||
//
|
||||
man->CreateNtuple("n101", "Electron");
|
||||
man->CreateNtupleDColumn("ex");
|
||||
man->CreateNtupleDColumn("ey");
|
||||
man->CreateNtupleDColumn("ez");
|
||||
man->CreateNtupleDColumn("ee");
|
||||
man->CreateNtupleDColumn("epx");
|
||||
man->CreateNtupleDColumn("epy");
|
||||
man->CreateNtupleDColumn("epz");
|
||||
man->FinishNtuple();
|
||||
G4cout << "Ntuple-1 created" << G4endl;
|
||||
|
||||
// Create 2nd ntuple (id = 2)
|
||||
//
|
||||
man->CreateNtuple("n102", "Gamma");
|
||||
man->CreateNtupleDColumn("gx");
|
||||
man->CreateNtupleDColumn("gy");
|
||||
man->CreateNtupleDColumn("gz");
|
||||
man->CreateNtupleDColumn("ge");
|
||||
man->CreateNtupleDColumn("gpx");
|
||||
man->CreateNtupleDColumn("gpy");
|
||||
man->CreateNtupleDColumn("gpz");
|
||||
man->FinishNtuple();
|
||||
G4cout << "Ntuple-2 created" << G4endl;
|
||||
|
||||
// Create 3rd ntuple (id = 3)
|
||||
//
|
||||
man->CreateNtuple("n103", "Positron");
|
||||
man->CreateNtupleDColumn("px");
|
||||
man->CreateNtupleDColumn("py");
|
||||
man->CreateNtupleDColumn("pz");
|
||||
man->CreateNtupleDColumn("pe");
|
||||
man->CreateNtupleDColumn("ppx");
|
||||
man->CreateNtupleDColumn("ppy");
|
||||
man->CreateNtupleDColumn("ppz");
|
||||
man->FinishNtuple();
|
||||
G4cout << "Ntuple-3 created" << G4endl;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
// This function fills a N-tuple with position, energy and momentum of
|
||||
// electrons entering the measurement volume.
|
||||
void PurgMagAnalysisManager::fill_Tuple_Electrons(G4double ex, G4double ey, G4double ez, // Position
|
||||
G4double ee, // Energy
|
||||
G4double epx, G4double epy, G4double epz) // Momentum
|
||||
{
|
||||
// Get/create analysis manager
|
||||
G4AnalysisManager* man = G4AnalysisManager::Instance();
|
||||
|
||||
// Fill 1st ntuple ( id = 1)
|
||||
man->FillNtupleDColumn(1,0, ex);
|
||||
man->FillNtupleDColumn(1,1, ey);
|
||||
man->FillNtupleDColumn(1,2, ez);
|
||||
man->FillNtupleDColumn(1,3, ee);
|
||||
man->FillNtupleDColumn(1,4, epx);
|
||||
man->FillNtupleDColumn(1,5, epy);
|
||||
man->FillNtupleDColumn(1,6, epz);
|
||||
man->AddNtupleRow(1);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
// This function fills a N-tuple with position, energy and momentum of
|
||||
// photons entering the measurement volume.
|
||||
void PurgMagAnalysisManager::fill_Tuple_Gamma(G4double gx, G4double gy, G4double gz, // Position
|
||||
G4double ge, // Energy
|
||||
G4double gpx, G4double gpy, G4double gpz) // Momentum
|
||||
{
|
||||
// Get/create analysis manager
|
||||
G4AnalysisManager* man = G4AnalysisManager::Instance();
|
||||
|
||||
// Fill 2nd ntuple ( id = 2)
|
||||
man->FillNtupleDColumn(2,0, gx);
|
||||
man->FillNtupleDColumn(2,1, gy);
|
||||
man->FillNtupleDColumn(2,2, gz);
|
||||
man->FillNtupleDColumn(2,3, ge);
|
||||
man->FillNtupleDColumn(2,4, gpx);
|
||||
man->FillNtupleDColumn(2,5, gpy);
|
||||
man->FillNtupleDColumn(2,6, gpz);
|
||||
man->AddNtupleRow(2);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
// This function fills a N-tuple with position, energy and momentum of
|
||||
// positrons entering the measurement volume.
|
||||
void PurgMagAnalysisManager::fill_Tuple_Positrons(G4double px, G4double py, G4double pz, // Position
|
||||
G4double pe, // Energy
|
||||
G4double ppx, G4double ppy, G4double ppz) // Momentum
|
||||
{
|
||||
// Get/create analysis manager
|
||||
G4AnalysisManager* man = G4AnalysisManager::Instance();
|
||||
|
||||
// Fill 3rd ntuple ( id = 3)
|
||||
man->FillNtupleDColumn(3,0, px);
|
||||
man->FillNtupleDColumn(3,1, py);
|
||||
man->FillNtupleDColumn(3,2, pz);
|
||||
man->FillNtupleDColumn(3,3, pe);
|
||||
man->FillNtupleDColumn(3,4, ppx);
|
||||
man->FillNtupleDColumn(3,5, ppy);
|
||||
man->FillNtupleDColumn(3,6, ppz);
|
||||
man->AddNtupleRow(3);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
void PurgMagAnalysisManager::finish()
|
||||
{
|
||||
// Save histograms
|
||||
G4AnalysisManager* man = G4AnalysisManager::Instance();
|
||||
man->Write();
|
||||
man->CloseFile();
|
||||
// Complete clean-up
|
||||
delete G4AnalysisManager::Instance();
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
// * *
|
||||
// *****************************************
|
||||
//
|
||||
// $Id: PurgMagDetectorConstruction.cc 84393 2014-10-15 07:11:25Z gcosmo $
|
||||
//
|
||||
#include "PurgMagDetectorConstruction.hh"
|
||||
#include "PurgMagTabulatedField3D.hh"
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
// * *
|
||||
// ********************************
|
||||
//
|
||||
// $Id: PurgMagEventAction.cc 72967 2013-08-14 14:57:48Z gcosmo $
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
// ********************************
|
||||
//
|
||||
//
|
||||
// $Id: PurgMagPhysicsList.cc 100654 2016-10-31 10:14:05Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
// * *
|
||||
// ********************************************
|
||||
//
|
||||
// $Id: PurgMagPrimaryGeneratorAction.cc 84393 2014-10-15 07:11:25Z gcosmo $
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
// * *
|
||||
// ******************************
|
||||
//
|
||||
// $Id: PurgMagRunAction.cc 84393 2014-10-15 07:11:25Z gcosmo $
|
||||
//
|
||||
|
||||
#include "PurgMagRunAction.hh"
|
||||
@@ -60,9 +59,7 @@ PurgMagRunAction::~PurgMagRunAction()
|
||||
void PurgMagRunAction::BeginOfRunAction(const G4Run* aRun)
|
||||
{
|
||||
//Analysis must be handled by master and workers
|
||||
PurgMagAnalysisManager* analysis = PurgMagAnalysisManager::getInstance();
|
||||
analysis->book();
|
||||
|
||||
Book();
|
||||
|
||||
if (IsMaster())
|
||||
G4cout << "---> Run " << aRun->GetRunID() << " (master) start."
|
||||
@@ -85,11 +82,7 @@ void PurgMagRunAction::BeginOfRunAction(const G4Run* aRun)
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void PurgMagRunAction::EndOfRunAction(const G4Run* aRun)
|
||||
{
|
||||
|
||||
PurgMagAnalysisManager* analysis = PurgMagAnalysisManager::getInstance();
|
||||
analysis->finish();
|
||||
|
||||
{
|
||||
if (IsMaster())
|
||||
G4cout << "Total number of event = " << aRun->GetNumberOfEvent() << G4endl;
|
||||
else
|
||||
@@ -110,9 +103,56 @@ void PurgMagRunAction::EndOfRunAction(const G4Run* aRun)
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
|
||||
|
||||
|
||||
void PurgMagRunAction::Book()
|
||||
{
|
||||
// Get/create analysis manager
|
||||
G4AnalysisManager* man = G4AnalysisManager::Instance();
|
||||
|
||||
// Open an output file
|
||||
man->OpenFile("purgmag");
|
||||
man->SetFirstNtupleId(1);
|
||||
|
||||
// Create 1st ntuple (id = 1)
|
||||
//
|
||||
man->CreateNtuple("n101", "Electron");
|
||||
man->CreateNtupleDColumn("ex");
|
||||
man->CreateNtupleDColumn("ey");
|
||||
man->CreateNtupleDColumn("ez");
|
||||
man->CreateNtupleDColumn("ee");
|
||||
man->CreateNtupleDColumn("epx");
|
||||
man->CreateNtupleDColumn("epy");
|
||||
man->CreateNtupleDColumn("epz");
|
||||
man->FinishNtuple();
|
||||
G4cout << "Ntuple-1 created" << G4endl;
|
||||
|
||||
// Create 2nd ntuple (id = 2)
|
||||
//
|
||||
man->CreateNtuple("n102", "Gamma");
|
||||
man->CreateNtupleDColumn("gx");
|
||||
man->CreateNtupleDColumn("gy");
|
||||
man->CreateNtupleDColumn("gz");
|
||||
man->CreateNtupleDColumn("ge");
|
||||
man->CreateNtupleDColumn("gpx");
|
||||
man->CreateNtupleDColumn("gpy");
|
||||
man->CreateNtupleDColumn("gpz");
|
||||
man->FinishNtuple();
|
||||
G4cout << "Ntuple-2 created" << G4endl;
|
||||
|
||||
// Create 3rd ntuple (id = 3)
|
||||
//
|
||||
man->CreateNtuple("n103", "Positron");
|
||||
man->CreateNtupleDColumn("px");
|
||||
man->CreateNtupleDColumn("py");
|
||||
man->CreateNtupleDColumn("pz");
|
||||
man->CreateNtupleDColumn("pe");
|
||||
man->CreateNtupleDColumn("ppx");
|
||||
man->CreateNtupleDColumn("ppy");
|
||||
man->CreateNtupleDColumn("ppz");
|
||||
man->FinishNtuple();
|
||||
G4cout << "Ntuple-3 created" << G4endl;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
// * *
|
||||
// ***********************************
|
||||
//
|
||||
// $Id: PurgMagSteppingAction.cc 84366 2014-10-14 12:46:20Z gcosmo $
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -42,6 +41,9 @@
|
||||
#include "PurgMagDetectorConstruction.hh"
|
||||
|
||||
#include "G4SteppingManager.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4VTouchable.hh"
|
||||
#include "G4VPhysicalVolume.hh"
|
||||
|
||||
@@ -65,21 +67,21 @@ PurgMagSteppingAction::~PurgMagSteppingAction()
|
||||
void PurgMagSteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
|
||||
{
|
||||
G4AnalysisManager* man = G4AnalysisManager::Instance();
|
||||
|
||||
//Collection at SSD in N-tuples. Electrons and photons separated
|
||||
//Prestep point in World, next volume MeasureVolume, process transportation
|
||||
PurgMagAnalysisManager* analysis = PurgMagAnalysisManager::getInstance();
|
||||
if ((aStep->GetPreStepPoint()->GetPhysicalVolume() == Detector->GetWorld())&&
|
||||
(aStep->GetTrack()->GetNextVolume() == Detector->GetMeasureVolume())&&
|
||||
//(aStep->GetTrack()->GetMomentumDirection().z()>0.)&& // only particles with positive momentum
|
||||
(aStep->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName() == "Transportation"))
|
||||
{
|
||||
G4double gx, gy, gz, ge, gpx, gpy, gpz, ex, ey, ez, ee;
|
||||
G4double epx, epy, epz, px, py, pz, pe, ppx, ppy, ppz;
|
||||
|
||||
G4double epx, epy, epz, px, py, pz, pe, ppx, ppy, ppz;
|
||||
|
||||
// Electrons
|
||||
if(aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->GetParticleName()
|
||||
== "e-")
|
||||
if(aStep->GetTrack()->GetDynamicParticle()->GetDefinition()
|
||||
== G4Electron::Definition())
|
||||
{//Position
|
||||
ex = (aStep->GetTrack()->GetPosition().x())/cm;
|
||||
ey = (aStep->GetTrack()->GetPosition().y())/cm;
|
||||
@@ -91,13 +93,20 @@ void PurgMagSteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
epy = aStep->GetTrack()->GetMomentum().y();
|
||||
epz = aStep->GetTrack()->GetMomentum().z();
|
||||
|
||||
// Fill N-tuple electrons
|
||||
analysis->fill_Tuple_Electrons(ex, ey, ez, ee, epx, epy, epz);
|
||||
// Fill N-tuple electrons ( id = 1)
|
||||
man->FillNtupleDColumn(1,0, ex);
|
||||
man->FillNtupleDColumn(1,1, ey);
|
||||
man->FillNtupleDColumn(1,2, ez);
|
||||
man->FillNtupleDColumn(1,3, ee);
|
||||
man->FillNtupleDColumn(1,4, epx);
|
||||
man->FillNtupleDColumn(1,5, epy);
|
||||
man->FillNtupleDColumn(1,6, epz);
|
||||
man->AddNtupleRow(1);
|
||||
}
|
||||
|
||||
// Photons
|
||||
if (aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->
|
||||
GetParticleName() == "gamma")
|
||||
if (aStep->GetTrack()->GetDynamicParticle()->GetDefinition() ==
|
||||
G4Gamma::Definition())
|
||||
{
|
||||
|
||||
// Position
|
||||
@@ -113,13 +122,21 @@ void PurgMagSteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
gpy = aStep->GetTrack()->GetMomentum().y();
|
||||
gpz = aStep->GetTrack()->GetMomentum().z();
|
||||
|
||||
// Fill N-tuple photons
|
||||
analysis->fill_Tuple_Gamma(gx, gy, gz, ge, gpx, gpy, gpz);
|
||||
// Fill N-tuple photons (id=2)
|
||||
man->FillNtupleDColumn(2,0, gx);
|
||||
man->FillNtupleDColumn(2,1, gy);
|
||||
man->FillNtupleDColumn(2,2, gz);
|
||||
man->FillNtupleDColumn(2,3, ge);
|
||||
man->FillNtupleDColumn(2,4, gpx);
|
||||
man->FillNtupleDColumn(2,5, gpy);
|
||||
man->FillNtupleDColumn(2,6, gpz);
|
||||
man->AddNtupleRow(2);
|
||||
}
|
||||
|
||||
|
||||
// Positrons
|
||||
if (aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->GetParticleName() == "e+")
|
||||
if (aStep->GetTrack()->GetDynamicParticle()->GetDefinition() ==
|
||||
G4Positron::Definition())
|
||||
{
|
||||
|
||||
// Position
|
||||
@@ -135,8 +152,15 @@ void PurgMagSteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
ppy = aStep->GetTrack()->GetMomentum().y();
|
||||
ppz = aStep->GetTrack()->GetMomentum().z();
|
||||
|
||||
// Fill Ntuple positrons
|
||||
analysis->fill_Tuple_Positrons(px, py, pz, pe, ppx, ppy, ppz);
|
||||
// Fill Ntuple positrons ( id = 3)
|
||||
man->FillNtupleDColumn(3,0, px);
|
||||
man->FillNtupleDColumn(3,1, py);
|
||||
man->FillNtupleDColumn(3,2, pz);
|
||||
man->FillNtupleDColumn(3,3, pe);
|
||||
man->FillNtupleDColumn(3,4, ppx);
|
||||
man->FillNtupleDColumn(3,5, ppy);
|
||||
man->FillNtupleDColumn(3,6, ppz);
|
||||
man->AddNtupleRow(3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
// * *
|
||||
// ************************************
|
||||
//
|
||||
// $Id: PurgMagSteppingVerbose.cc 69086 2013-04-18 07:29:59Z gcosmo $
|
||||
//
|
||||
|
||||
#include "PurgMagSteppingVerbose.hh"
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
// * *
|
||||
// *************************************
|
||||
//
|
||||
// $Id: PurgMagTabulatedField3D.cc 84477 2014-10-16 08:44:04Z gcosmo $
|
||||
//
|
||||
|
||||
#include "PurgMagTabulatedField3D.hh"
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
// * *
|
||||
// ***********************************
|
||||
//
|
||||
// $Id: PurgMagTrackingAction.cc 72967 2013-08-14 14:57:48Z gcosmo $
|
||||
//
|
||||
|
||||
#include "PurgMagTrackingAction.hh"
|
||||
|
||||
Reference in New Issue
Block a user