Project
Loading...
Searching...
No Matches
O2MonopolePhysics.cxx File Reference

Opt-in magnetic-monopole ionisation physics for the O2 Geant4 engine. More...

#include "SimSetup/O2MonopolePhysics.h"
#include "CommonUtils/ConfigurableParam.h"
#include "SimulationDataFormat/MonopoleParticles.h"
#include <boost/property_tree/ptree.hpp>
#include <TGeoManager.h>
#include <fairlogger/Logger.h>
#include "TG4ComposedPhysicsList.h"
#include "SimSetup/G4RunConfiguration.h"
#include <G4VUserPhysicsList.hh>
#include <G4ParticleTable.hh>
#include <G4ParticleDefinition.hh>
#include <G4PhysicsListHelper.hh>
#include <G4ProcessManager.hh>
#include <G4ProcessVector.hh>
#include <G4mplIonisation.hh>
#include <G4ChargeState.hh>
#include <G4ChordFinder.hh>
#include <G4ClassicalRK4.hh>
#include <G4EquationOfMotion.hh>
#include <G4FieldManager.hh>
#include <G4MagneticField.hh>
#include <G4PropagatorInField.hh>
#include <G4Track.hh>
#include <G4CoupledTransportation.hh>
#include <G4Transportation.hh>
#include <G4TransportationManager.hh>
#include <CLHEP/Units/SystemOfUnits.h>
#include <CLHEP/Units/PhysicalConstants.h>
#include <array>
#include <cmath>

Go to the source code of this file.

Classes

class  o2::g4config::O2MonopoleEquation
 Equation of motion implementing the dual Lorentz force of a magnetic charge. More...
 
struct  o2::g4config::MonopoleFieldSetup
 The chord finder integrating O2MonopoleEquation, and that equation. More...
 
class  o2::g4config::O2MonopoleTransportation
 
class  o2::g4config::O2MonopolePhysics
 
class  o2::g4config::O2G4RunConfiguration
 

Namespaces

namespace  o2
 a couple of static helper functions to create timestamp values for CCDB queries or override obsolete objects
 
namespace  o2::g4config
 

Functions

MonopoleFieldSetup o2::g4config::buildMonopoleFieldSetup (double magneticChargeEplusUnits, double tpcDriftFieldGeant4)
 
void o2::g4config::installMonopoleTransport (G4ProcessManager *pmanager, const G4ParticleDefinition *particle, const MonopoleFieldSetup &fieldSetup)
 
TG4RunConfiguration * o2::g4config::createMonopoleRunConfiguration (const TString &userGeometry, const TString &physicsList, const TString &specialProcess, bool specialStacking, bool mtApplication, double magneticChargeDirac)
 

Detailed Description

Opt-in magnetic-monopole ionisation physics for the O2 Geant4 engine.

Author
M+Giacalone - July 2026

O2 defines the BSM monopole particles (PDG +-4110000 / +-4120000) via O2MCApplication::AddParticles(), so they are transported by Geant4, but no energy-loss process is attached to them by any of the stock reference physics lists.

This file adds - the magnetic-monopole ionisation process G4mplIonisation (Ahlen stopping power, Rev. Mod. Phys. 52 (1980) 121) to those particles, when requested. The implementation takes Geant4 examples/extended/exoticphysics/monopole example (and the equivalent geant4_vmc "monopole" physics builder). The main difference is that here the process is attached to the pre-existing O2 monopole particles (with correct PDG ID() rather than to a freshly created G4Monopole

G4mplIonisation and G4mplIonisationWithDeltaModel are taken directly from the standard Geant4 libraries (libG4processes)

Definition in file O2MonopolePhysics.cxx.