Import Geant4 9.6.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 17:01:34 +02:00
parent b1eb5424d2
commit e2d2f9810a
10384 changed files with 698580 additions and 628834 deletions
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: DetectorConstruction.hh,v 1.3 2010-06-04 19:03:36 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/DetectorConstruction.hh
/// \brief Definition of the DetectorConstruction class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -34,7 +36,6 @@
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
#include "G4ThreeVector.hh"
class G4LogicalVolume;
class G4Material;
@@ -51,45 +52,40 @@ public:
DetectorConstruction();
~DetectorConstruction();
void SetSizeX (G4double);
void SetSizeYZ (G4double);
void SetMaterial (G4String);
void SetMagField (G4double);
void SetMaxStepSize (G4double);
G4VPhysicalVolume* Construct();
void UpdateGeometry();
G4double GetWorldSizeX() {return worldSizeX;};
G4double GetWorldSizeYZ() {return worldSizeYZ;};
G4Material* GetWorldMaterial() {return worldMaterial;};
G4double GetAbsorSizeX() {return absorSizeX;};
G4double GetAbsorSizeYZ() {return absorSizeYZ;};
G4double GetMaxStepSize() {return maxStepSize;};
G4Material* GetAbsorMaterial() {return absorMaterial;};
void PrintParameters();
// set geometry and field parameters
void SetSizeX(G4double);
void SetSizeYZ(G4double);
void SetMaterial(const G4String&);
void SetMagField(G4double);
void SetMaxStepSize(G4double);
void UpdateGeometry();
// access to geometry
inline G4double GetWorldSizeX() {return fWorldSizeX;};
inline G4double GetAbsorSizeX() {return fAbsorSizeX;};
inline G4double GetMaxStepSize() {return fMaxStepSize;};
inline const G4Material* GetAbsorMaterial() {return fAbsorMaterial;};
private:
void DefineMaterials();
G4VPhysicalVolume* ConstructVolumes();
void PrintParameters();
G4double worldSizeX;
G4double worldSizeYZ;
G4Material* worldMaterial;
G4double absorSizeX;
G4double absorSizeYZ;
G4double maxStepSize;
G4Material* absorMaterial;
G4double fWorldSizeX;
G4double fWorldSizeYZ;
G4Material* fWorldMaterial;
G4double fAbsorSizeX;
G4double fAbsorSizeYZ;
G4double fMaxStepSize;
G4Material* fAbsorMaterial;
G4UniformMagField* magField;
G4MonopoleFieldSetup* fMFieldSetup;
G4UniformMagField* fMagField;
G4MonopoleFieldSetup* fMonFieldSetup;
G4LogicalVolume* lAbsor;
G4LogicalVolume* fLogAbsor;
DetectorMessenger* detectorMessenger;
DetectorMessenger* fDetectorMessenger;
};
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: DetectorMessenger.hh,v 1.1 2007-08-16 10:32:04 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/DetectorMessenger.hh
/// \brief Definition of the DetectorMessenger class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -46,25 +48,25 @@ class G4UIcmdWithoutParameter;
class DetectorMessenger: public G4UImessenger
{
public:
public:
DetectorMessenger(DetectorConstruction* );
~DetectorMessenger();
DetectorMessenger(DetectorConstruction* );
~DetectorMessenger();
void SetNewValue(G4UIcommand*, G4String);
void SetNewValue(G4UIcommand*, G4String);
private:
private:
DetectorConstruction* Detector;
DetectorConstruction* fDetector;
G4UIdirectory* detDir;
G4UIcmdWithAString* MaterCmd;
G4UIcmdWithADoubleAndUnit* SizeXCmd;
G4UIcmdWithADoubleAndUnit* SizeYZCmd;
G4UIcmdWithADoubleAndUnit* StepSizeCmd;
G4UIcmdWithADoubleAndUnit* MagFieldCmd;
G4UIdirectory* fDetDir;
G4UIcmdWithAString* fMaterCmd;
G4UIcmdWithADoubleAndUnit* fSizeXCmd;
G4UIcmdWithADoubleAndUnit* fSizeYZCmd;
G4UIcmdWithADoubleAndUnit* fStepSizeCmd;
G4UIcmdWithADoubleAndUnit* fMagFieldCmd;
G4UIcmdWithoutParameter* UpdateCmd;
G4UIcmdWithoutParameter* fUpdateCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: EventAction.hh,v 1.1 2007-08-16 10:32:04 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/EventAction.hh
/// \brief Definition of the EventAction class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -41,22 +43,20 @@ class EventActionMessenger;
class EventAction : public G4UserEventAction
{
public:
EventAction();
~EventAction();
public:
public:
void BeginOfEventAction(const G4Event*);
void EndOfEventAction(const G4Event*);
EventAction();
~EventAction();
void BeginOfEventAction(const G4Event*);
void EndOfEventAction(const G4Event*);
void SetDrawFlag(G4String val) {drawFlag = val;};
void SetPrintModulo(G4int val) {printModulo = val;};
inline void SetPrintModulo(G4int val) { fPrintModulo = val; };
private:
G4String drawFlag;
G4int printModulo;
EventActionMessenger* eventMessenger;
private:
G4int fPrintModulo;
EventActionMessenger* fEventMessenger;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: EventActionMessenger.hh,v 1.1 2007-08-16 10:32:04 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/EventActionMessenger.hh
/// \brief Definition of the EventActionMessenger class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -37,24 +39,24 @@
class EventAction;
class G4UIdirectory;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class EventActionMessenger: public G4UImessenger
{
public:
EventActionMessenger(EventAction*);
~EventActionMessenger();
public:
EventActionMessenger(EventAction*);
~EventActionMessenger();
void SetNewValue(G4UIcommand*, G4String);
void SetNewValue(G4UIcommand*, G4String);
private:
EventAction* eventAction;
G4UIdirectory* eventDir;
G4UIcmdWithAString* DrawCmd;
G4UIcmdWithAnInteger* PrintCmd;
private:
EventAction* fEventAction;
G4UIdirectory* fEventDir;
G4UIcmdWithAnInteger* fPrintCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -1,121 +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. *
// ********************************************************************
//
//---------------------------------------------------------------------------
//
// ClassName: G4Monopole
//
// Description:
//
// Authors: 21.03.05 V.Ivanchenko
//
// Modified:
//
// 12.07.10 S.Burdin (changed the magnetic and electric charge variables from integer to double)
//----------------------------------------------------------------------------
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4Monopole.hh"
#include "G4ParticleTable.hh"
// ######################################################################
// ### Monopole ###
// ######################################################################
G4Monopole* G4Monopole::theMonopole = 0;
G4double G4Monopole::magCharge = 0.0;
G4Monopole::G4Monopole(
const G4String& aName, G4double mass,
G4double width, G4double charge,
G4int iSpin, G4int iParity,
G4int iConjugation, G4int iIsospin,
G4int iIsospin3, G4int gParity,
const G4String& pType, G4int lepton,
G4int baryon, G4int encoding,
G4bool stable, G4double lifetime,
G4DecayTable *decaytable)
: G4ParticleDefinition( aName, mass, width, charge, iSpin, iParity,
iConjugation, iIsospin, iIsospin3, gParity, pType,
lepton, baryon, encoding, stable, lifetime, decaytable )
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4Monopole::~G4Monopole()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4Monopole* G4Monopole::MonopoleDefinition(G4double mass, G4double mCharge, G4double eCharge)
{
if(!theMonopole) {
magCharge = eplus * mCharge / fine_structure_const * 0.5;
theMonopole = new G4Monopole(
"monopole", mass, 0.0*MeV, eplus*eCharge,
0, 0, 0,
0, 0, 0,
"boson", 0, 0, 0,
true, -1.0, 0);
G4cout << "Monopole is created: m(GeV)= " << theMonopole->GetPDGMass()/GeV
<< " Qel= " << theMonopole->GetPDGCharge()/eplus
<< " Qmag= " << magCharge/eplus
<< G4endl;
}
return theMonopole;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4Monopole* G4Monopole::Monopole()
{
if(!theMonopole) { theMonopole = MonopoleDefinition(); }
return theMonopole;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4double G4Monopole::MagneticCharge() const
{
return magCharge;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -23,6 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/monopole/include/G4Monopole.hh
/// \brief Definition of the G4Monopole class
//
#ifndef G4Monopole_h
#define G4Monopole_h 1
@@ -46,6 +49,8 @@
#include "G4ParticleDefinition.hh"
#include "globals.hh"
#include "CLHEP/Units/SystemOfUnits.h"
// ######################################################################
// ### Monopole ###
// ######################################################################
@@ -71,9 +76,9 @@ private:
public:
static G4Monopole* MonopoleDefinition(G4double mass_ = 100.*GeV,
G4double magCharge_ = 1.0,
G4double elCharge_ = 0.0);
static G4Monopole* MonopoleDefinition(G4double mass = 100.*CLHEP::GeV,
G4double magCharge = 1.0,
G4double elCharge = 0.0);
static G4Monopole* Monopole();
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4MonopoleEquation.hh,v 1.2 2010-11-29 15:14:17 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/G4MonopoleEquation.hh
/// \brief Definition of the G4MonopoleEquation class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -40,7 +42,7 @@
// History:
// - Created. V.Grichine, 10.11.98
// - Modified. S.Burdin, 30.04.10
// B.Bozsogi, 15.06.10
// B.Bozsogi, 15.06.10
// -------------------------------------------------------------------
#ifndef G4MONOPOLEEQUATION_hh
@@ -51,28 +53,28 @@
class G4MonopoleEquation : public G4EquationOfMotion
{
public: // with description
public: // with description
G4MonopoleEquation(G4ElectroMagneticField *emField );
// : G4EquationOfMotion( emField ) {;}
~G4MonopoleEquation() {;}
~G4MonopoleEquation();
void SetChargeMomentumMass(G4double particleMagneticCharge,
G4double particleElectricCharge,
G4double mass);
void SetChargeMomentumMass(G4double particleMagneticCharge,
G4double particleElectricCharge,
G4double mass);
// magnetic charge in e+ units
void EvaluateRhsGivenB(const G4double y[],
const G4double Field[],
G4double dydx[] ) const;
// Given the value of the electromagnetic field, this function
// calculates the value of the derivative dydx.
void EvaluateRhsGivenB(const G4double y[],
const G4double Field[],
G4double dydx[] ) const;
// Given the value of the electromagnetic field, this function
// calculates the value of the derivative dydx.
private:
private:
G4double fMagCharge ;
G4double fElCharge;
G4double fMassCof;
G4double fMagCharge ;
G4double fElCharge;
G4double fMassCof;
};
#endif
@@ -23,6 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/monopole/include/G4MonopoleFieldMessenger.hh
/// \brief Definition of the G4MonopoleFieldMessenger class
//
// GEANT4 tag $Name: not supported by cvs2svn $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -46,19 +49,19 @@ class G4UIcmdWithADoubleAndUnit;
class G4MonopoleFieldMessenger: public G4UImessenger
{
public:
public:
G4MonopoleFieldMessenger(G4MonopoleFieldSetup* );
~G4MonopoleFieldMessenger();
G4MonopoleFieldMessenger(G4MonopoleFieldSetup* );
~G4MonopoleFieldMessenger();
void SetNewValue(G4UIcommand*, G4String);
void SetNewValue(G4UIcommand*, G4String);
private:
private:
G4MonopoleFieldSetup* Field;
G4MonopoleFieldSetup* fField;
G4UIdirectory* fieldDir;
G4UIcmdWithADoubleAndUnit* SetFieldCmd;
G4UIdirectory* fFieldDir;
G4UIcmdWithADoubleAndUnit* fSetFieldCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4MonopoleFieldSetup.hh,v 1.2 2010-11-29 15:14:17 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/G4MonopoleFieldSetup.hh
/// \brief Definition of the G4MonopoleFieldSetup class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -61,19 +63,19 @@ class G4MonopoleFieldMessenger;
class G4MonopoleFieldSetup
{
public:
void InitialiseAll(); // Set parameters and call method below
void SetMagField(G4double fieldValue);
void SetStepperAndChordFinder(G4int val);
static G4MonopoleFieldSetup* GetMonopoleFieldSetup();
protected:
G4MonopoleFieldSetup(G4ThreeVector) ; // The value of the field
G4MonopoleFieldSetup() ; // A zero field
~G4MonopoleFieldSetup() ;
protected:
~G4MonopoleFieldSetup() ;
private:
G4MonopoleFieldSetup();
G4FieldManager* GetGlobalFieldManager() ; // static
G4FieldManager* fFieldManager ;
@@ -86,10 +88,8 @@ protected:
G4MagIntegratorStepper* fMonopoleStepper ;
G4double fMinStep ;
private:
static G4MonopoleFieldSetup* fMonopoleFieldSetup;
static G4MonopoleFieldSetup* fMonopoleFieldSetup;
G4MonopoleFieldMessenger* fMonopoleFieldMessenger;
};
@@ -23,11 +23,12 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/monopole/include/G4MonopolePhysics.hh
/// \brief Definition of the G4MonopolePhysics class
//
// $Id: G4MonopolePhysics.hh,v 1.4 2010-11-29 15:14:17 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
// 12.07.10 S.Burdin (changed the magnetic and electric charge variables from integer to double)
// $Id$
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -68,12 +69,12 @@ private:
G4MonopolePhysics & operator=(const G4MonopolePhysics &right);
G4MonopolePhysics(const G4MonopolePhysics&);
G4double magCharge;
G4double elCharge;
G4double monopoleMass;
G4double fMagCharge;
G4double fElCharge;
G4double fMonopoleMass;
G4MonopolePhysicsMessenger* theMessenger;
G4Monopole* mpl;
G4MonopolePhysicsMessenger* fMessenger;
G4Monopole* fMpl;
};
@@ -23,10 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4MonopolePhysicsMessenger.hh,v 1.2 2010-11-29 15:14:17 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/G4MonopolePhysicsMessenger.hh
/// \brief Definition of the G4MonopolePhysicsMessenger class
//
// $Id$
//
// 12.07.10 S.Burdin (changed the magnetic and electric charge variables from integer to double)
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -56,13 +57,13 @@ public:
private:
G4MonopolePhysics* phys;
G4MonopolePhysics* fPhys;
G4UIdirectory* mPhysicsDir;
G4UIcommand* mPhysicsCmd;
G4UIcmdWithADouble* mCmd;
G4UIcmdWithADouble* zCmd;
G4UIcmdWithADoubleAndUnit* massCmd;
G4UIdirectory* fPhysicsDir;
G4UIcommand* fPhysicsCmd;
G4UIcmdWithADouble* fMCmd;
G4UIcmdWithADouble* fZCmd;
G4UIcmdWithADoubleAndUnit* fMassCmd;
};
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4MonopoleTransportation.hh,v 1.1 2010-06-04 19:03:36 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/G4MonopoleTransportation.hh
/// \brief Definition of the G4MonopoleTransportation class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -133,13 +135,13 @@ class G4MonopoleTransportation : public G4VProcess
const G4Track& ,
G4ForceCondition*
) { return -1.0; };
// No operation in AtRestDoIt.
// No operation in AtRestDoIt.
G4VParticleChange* AtRestDoIt(
const G4Track& ,
const G4Step&
) {return 0;};
// No operation in AtRestDoIt.
// No operation in AtRestDoIt.
void StartTracking(G4Track* aTrack);
// Reset state for new (potentially resumed) track
@@ -157,10 +159,7 @@ class G4MonopoleTransportation : public G4VProcess
G4Navigator* fLinearNavigator;
G4PropagatorInField* fFieldPropagator;
// The Propagators used to transport the particle
// G4FieldManager* fGlobalFieldMgr; // Used MagneticField CC
// Field Manager for the whole Detector
// The Propagators used to transport the particle
G4ThreeVector fTransportEndPosition;
G4ThreeVector fTransportEndMomentumDir;
@@ -170,16 +169,11 @@ class G4MonopoleTransportation : public G4VProcess
G4bool fEnergyChanged;
G4bool fEndGlobalTimeComputed;
G4double fCandidateEndGlobalTime;
// The particle's state after this Step, Store for DoIt
// The particle's state after this Step, Store for DoIt
G4bool fParticleIsLooping;
G4TouchableHandle fCurrentTouchableHandle;
// G4bool fFieldExists;
// Whether a magnetic field exists ...
// A data member for this is problematic: it is useful only if it
// can be initialised and updated -- and a scheme is not yet possible.
G4bool fGeometryLimitedStep;
// Flag to determine whether a boundary was reached.
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4MonopoleTransportation.icc,v 1.1 2010-06-04 19:03:36 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/G4MonopoleTransportation.icc
/// \brief Implementation of the G4MonopoleTransportation class inline functions
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -37,6 +39,8 @@
// =======================================================================
//
#include "CLHEP/Units/SystemOfUnits.h"
inline void
G4MonopoleTransportation::SetPropagatorInField( G4PropagatorInField* pFieldPropagator)
{
@@ -122,7 +126,7 @@ inline void G4MonopoleTransportation::ResetKilledStatistics(G4int report)
}
fSumEnergyKilled= 0;
fMaxEnergyKilled= -1.0*GeV;
fMaxEnergyKilled= -1.0*CLHEP::GeV;
}
// Statistics for tracks killed (currently due to looping in field)
@@ -0,0 +1,142 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file exoticphysics/monopole/include/Histo.hh
/// \brief Definition of the Histo class
//
// $Id$
#ifndef Histo_h
#define Histo_h 1
//---------------------------------------------------------------------------
//
// ClassName: Histo
//
// Description: Utility class to hold and manipulate histograms/nTuples
//
// Author: V.Ivanchenko 30/10/03
//
//----------------------------------------------------------------------------
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "globals.hh"
#include "G4DataVector.hh"
#include <vector>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class G4RootAnalysisManager;
class HistoMessenger;
class Histo
{
public:
Histo();
~Histo();
// Book predefined histogramms
void Book();
// Save histogramms to file
void Save();
// In this method 1-D histogramms are predefined
void Add1D(const G4String&, const G4String&, G4int nb, G4double x1,
G4double x2, G4double u=1.);
// It change bins and boundaries
void SetHisto1D(G4int, G4int, G4double, G4double, G4double);
// Histogram activation/deactivation
void Activate(G4int, G4bool);
// Histogramms are filled
void Fill(G4int, G4double, G4double);
// Histogramms are scaled
void ScaleH1(G4int, G4double);
// In this method nTuple is booked
void AddTuple(const G4String&);
// In this method nTuple is booked
void AddTupleI(const G4String&);
void AddTupleF(const G4String&);
void AddTupleD(const G4String&);
// Fill nTuple parameter
void FillTupleI(G4int, G4int);
void FillTupleF(G4int, G4float);
void FillTupleD(G4int, G4double);
// Save tuple event
void AddRow();
// Set output file
void SetFileName(const G4String&);
void SetFileType(const G4String&);
inline void SetVerbose(G4int val) { fVerbose = val; };
inline G4bool IsActive() const { return fHistoActive; };
private:
G4RootAnalysisManager* fManager;
HistoMessenger* fMessenger;
G4String fHistName;
G4String fHistType;
G4String fTupleName;
G4String fTupleTitle;
G4int fNHisto;
G4int fVerbose;
G4bool fDefaultAct;
G4bool fHistoActive;
G4bool fNtupleActive;
std::vector<G4int> fHisto;
std::vector<G4int> fTupleI;
std::vector<G4int> fTupleF;
std::vector<G4int> fTupleD;
std::vector<G4int> fBins;
std::vector<G4bool> fActive;
std::vector<G4double> fXmin;
std::vector<G4double> fXmax;
std::vector<G4double> fUnit;
std::vector<G4String> fIds;
std::vector<G4String> fTitles;
std::vector<G4String> fNtupleI;
std::vector<G4String> fNtupleF;
std::vector<G4String> fNtupleD;
};
#endif
@@ -0,0 +1,72 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file exoticphysics/monopole/include/HistoMessenger.hh
/// \brief Definition of the HistoMessenger class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef HistoMessenger_h
#define HistoMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class Histo;
class G4UIdirectory;
class G4UIcommand;
class G4UIcmdWithAString;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class HistoMessenger: public G4UImessenger
{
public:
HistoMessenger(Histo* );
~HistoMessenger();
virtual void SetNewValue(G4UIcommand* ,G4String );
private:
Histo* fHisto;
G4UIdirectory* fHistoDir;
G4UIcmdWithAString* fFactoryCmd;
G4UIcmdWithAString* fFileCmd;
G4UIcommand* fHistoCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PrimaryGeneratorAction.hh,v 1.2 2009-07-15 10:19:47 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/PrimaryGeneratorAction.hh
/// \brief Definition of the PrimaryGeneratorAction class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -36,9 +38,7 @@
#include "G4ParticleGun.hh"
#include "globals.hh"
class G4Event;
class DetectorConstruction;
class PrimaryGeneratorMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -49,21 +49,15 @@ public:
PrimaryGeneratorAction(DetectorConstruction*);
~PrimaryGeneratorAction();
void SetRndmBeam(G4double val) {rndmBeam = val;}
void GeneratePrimaries(G4Event*);
void ResetEbeamCumul() {EbeamCumul = 0.;}
G4double GetEbeamCumul() {return EbeamCumul;}
G4ParticleGun* GetParticleGun() {return particleGun;}
inline G4ParticleGun* GetParticleGun() {return fParticleGun;}
private:
G4ParticleGun* particleGun;
DetectorConstruction* detector;
G4double rndmBeam;
G4double EbeamCumul;
PrimaryGeneratorMessenger* gunMessenger;
G4ParticleGun* fParticleGun;
DetectorConstruction* fDetector;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PrimaryGeneratorMessenger.hh,v 1.1 2007-08-16 10:32:04 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/PrimaryGeneratorMessenger.hh
/// \brief Definition of the PrimaryGeneratorMessenger class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -43,17 +45,18 @@ class G4UIcmdWithADoubleAndUnit;
class PrimaryGeneratorMessenger: public G4UImessenger
{
public:
PrimaryGeneratorMessenger(PrimaryGeneratorAction*);
~PrimaryGeneratorMessenger();
public:
PrimaryGeneratorMessenger(PrimaryGeneratorAction*);
~PrimaryGeneratorMessenger();
void SetNewValue(G4UIcommand*, G4String);
void SetNewValue(G4UIcommand*, G4String);
private:
PrimaryGeneratorAction* Action;
G4UIdirectory* testexDir;
G4UIdirectory* gunDir;
G4UIcmdWithADoubleAndUnit* RndmCmd;
private:
PrimaryGeneratorAction* Action;
G4UIdirectory* testexDir;
G4UIdirectory* gunDir;
G4UIcmdWithADoubleAndUnit* RndmCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RunAction.hh,v 1.1 2007-08-16 10:32:04 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/RunAction.hh
/// \brief Definition of the RunAction class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -34,62 +36,50 @@
#include "G4UserRunAction.hh"
#include "globals.hh"
#include "QGSP.hh"
class DetectorConstruction;
class RunActionMessenger;
class PrimaryGeneratorAction;
class G4Run;
namespace AIDA {
class IAnalysisFactory;
class ITree;
class IHistogram1D;
}
class Histo;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class RunAction : public G4UserRunAction
{
public:
RunAction(DetectorConstruction* ,PrimaryGeneratorAction*);
RunAction(DetectorConstruction*, PrimaryGeneratorAction*);
virtual ~RunAction();
void BeginOfRunAction(const G4Run*);
void EndOfRunAction(const G4Run*);
G4double GetBinLength() {return binLength;};
G4double GetOffsetX() {return offsetX;}
void SetBinSize(G4double size);
void FillHisto(G4int id, G4double x, G4double weight = 1.0);
void EndOfRunAction(const G4Run*);
void SetVerbose(G4int verbose) {verboseLevel = verbose;}
void SetHistoName(G4String name) {fname = name;}
void SetHistoType(G4String type) {ftype = type;}
G4int GetVerbose() {return verboseLevel;}
void FillHisto(G4int id, G4double x, G4double weight = 1.0);
// G4double GetBinLength() {return binLength;};
inline void SetBinSize(G4double size) { fBinLength = size; }
inline G4double GetOffsetX() { return fOffsetX;}
inline void SetVerbose(G4int verbose) { fVerboseLevel = verbose;}
inline G4int GetVerbose() { return fVerboseLevel;}
void AddProjRange (G4double x) {projRange += x; projRange2 += x*x;};
inline void AddProjRange (G4double x) { fProjRange += x; fProjRange2 += x*x; };
private:
void bookHisto();
void saveHisto();
DetectorConstruction* detector;
PrimaryGeneratorAction* kinematic;
RunActionMessenger* runActionMessenger;
Histo* fHisto;
DetectorConstruction* fDetector;
PrimaryGeneratorAction* fKinematic;
RunActionMessenger* fRunActionMessenger;
G4int verboseLevel;
G4int fVerboseLevel;
G4double binLength;
G4double offsetX;
G4double projRange, projRange2;
G4String ftype, fname;
G4double fBinLength;
G4double fOffsetX;
G4double fProjRange;
G4double fProjRange2;
AIDA::IAnalysisFactory* af;
AIDA::ITree* tree;
AIDA::IHistogram1D* histo[5];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RunActionMessenger.hh,v 1.1 2007-08-16 10:32:04 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/RunActionMessenger.hh
/// \brief Definition of the RunActionMessenger class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -39,28 +41,25 @@ class RunAction;
class G4UIdirectory;
class G4UIcmdWithADouble;
class G4UIcmdWithAnInteger;
class G4UIcmdWithAString;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class RunActionMessenger: public G4UImessenger
{
public:
public:
RunActionMessenger(RunAction* );
~RunActionMessenger();
RunActionMessenger(RunAction* );
~RunActionMessenger();
void SetNewValue(G4UIcommand*, G4String);
void SetNewValue(G4UIcommand*, G4String);
private:
private:
RunAction* runaction;
RunAction* fRunAction;
G4UIdirectory* actDir;
G4UIcmdWithADouble* binSizeCmd;
G4UIcmdWithAnInteger* verboseCmd;
G4UIcmdWithAString* histoNameCmd;
G4UIcmdWithAString* histoTypeCmd;
G4UIdirectory* fActDir;
G4UIcmdWithADouble* fBinSizeCmd;
G4UIcmdWithAnInteger* fVerboseCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: SteppingAction.hh,v 1.1 2007-08-16 10:32:04 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/SteppingAction.hh
/// \brief Definition of the SteppingAction class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -34,22 +36,22 @@
#include "G4UserSteppingAction.hh"
class DetectorConstruction;
class RunAction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class SteppingAction : public G4UserSteppingAction
{
public:
SteppingAction(DetectorConstruction*,RunAction*);
~SteppingAction();
public:
void UserSteppingAction(const G4Step*);
SteppingAction(RunAction*);
~SteppingAction();
void UserSteppingAction(const G4Step*);
private:
DetectorConstruction* detector;
RunAction* runAction;
private:
RunAction* fRunAction;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,8 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: TrackingAction.hh,v 1.1 2007-08-16 10:32:04 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
/// \file exoticphysics/monopole/include/TrackingAction.hh
/// \brief Definition of the TrackingAction class
//
// $Id$
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -41,14 +43,17 @@ class RunAction;
class TrackingAction : public G4UserTrackingAction {
public:
TrackingAction(RunAction*);
~TrackingAction() {};
public:
TrackingAction(RunAction*);
~TrackingAction();
void PostUserTrackingAction(const G4Track*);
void PostUserTrackingAction(const G4Track*);
private:
RunAction* runAction;
private:
RunAction* fRunAction;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......