LDMX Software
simcore::FCPPhysics Class Reference

Physics constructor for fractionally charged particles. More...

#include <FCPPhysics.h>

Public Member Functions

 FCPPhysics (const G4String &name, const framework::config::Parameters &parameters)
 
void ConstructParticle () override
 Construct fcp+/fcp- particles and register them in the Geant4 particle table.
 
void ConstructProcess () override
 Register gamma -> fcp+ fcp- conversion process on the photon if enabled.
 

Static Public Attributes

static const std::string NAME = "FCPPhysics"
 

Private Attributes

bool enable_
 is this physics constructor enabled?
 
G4double fcp_mass_
 mass of the fcp in MeV
 
G4double fcp_charge_
 charge of the fcp in units of e
 
int fcp_pdg_id_
 PDG ID for the fcp particles.
 
GammaConversionToFCPsgamma_fcp_process_ {nullptr}
 gamma -> fcp conversion process (owned by G4 process manager after registration)
 

Detailed Description

Physics constructor for fractionally charged particles.

Handles:

  1. Constructing fcp+/fcp- particles via G4FractionallyCharged
  2. Registering gamma -> fcp+ fcp- conversion on the photon

This is independent of APrimePhysics and GammaPhysics.

Definition at line 32 of file FCPPhysics.h.

Constructor & Destructor Documentation

◆ FCPPhysics()

simcore::FCPPhysics::FCPPhysics ( const G4String & name,
const framework::config::Parameters & parameters )

Definition at line 7 of file FCPPhysics.cxx.

9 : G4VPhysicsConstructor(name) {
10 enable_ = parameters.get<bool>("enable", false);
11 fcp_mass_ = parameters.get<double>("fcp_mass", 0.) * MeV;
12 fcp_charge_ = parameters.get<double>("fcp_charge", 0.1);
13 fcp_pdg_id_ = parameters.get<int>("fcp_pdg_id", 17);
14
15 ldmx_log(info) << "FCPPhysics configuration:" << " Enabled: "
16 << (enable_ ? "YES" : "NO")
17 << ", FCP mass: " << fcp_mass_ / MeV << " MeV"
18 << ", FCP charge: " << fcp_charge_ << " e"
19 << ", FCP PDG ID: " << fcp_pdg_id_;
20}
const T & get(const std::string &name) const
Retrieve the parameter of the given name.
Definition Parameters.h:78
G4double fcp_mass_
mass of the fcp in MeV
Definition FCPPhysics.h:58
int fcp_pdg_id_
PDG ID for the fcp particles.
Definition FCPPhysics.h:64
bool enable_
is this physics constructor enabled?
Definition FCPPhysics.h:55
G4double fcp_charge_
charge of the fcp in units of e
Definition FCPPhysics.h:61

Member Function Documentation

◆ ConstructParticle()

void simcore::FCPPhysics::ConstructParticle ( )
override

Construct fcp+/fcp- particles and register them in the Geant4 particle table.

Definition at line 22 of file FCPPhysics.cxx.

22 {
23 if (!enable_) return;
24
25 ldmx_log(info) << "Initializing FCP particles with mass " << fcp_mass_ / MeV
26 << " MeV, charge " << fcp_charge_ << " e, PDG ID "
27 << fcp_pdg_id_;
28 G4FractionallyCharged::Initialize(fcp_mass_, fcp_pdg_id_, fcp_charge_);
29}

◆ ConstructProcess()

void simcore::FCPPhysics::ConstructProcess ( )
override

Register gamma -> fcp+ fcp- conversion process on the photon if enabled.

Definition at line 31 of file FCPPhysics.cxx.

31 {
32 if (!enable_) return;
33
34 ldmx_log(debug) << "Setting up gamma -> fcp+ fcp- conversion process...";
35
36 G4ProcessManager* gamma_proc_man = G4Gamma::Gamma()->GetProcessManager();
37 if (gamma_proc_man == nullptr) {
38 ldmx_log(error) << "FATAL: Unable to access process manager for gamma!";
39 EXCEPTION_RAISE("FCPPhysics",
40 "Was unable to access the process manager for gamma, "
41 "something is very wrong!");
42 }
43
44 gamma_fcp_process_ = new GammaConversionToFCPs();
45 gamma_proc_man->AddDiscreteProcess(gamma_fcp_process_);
46 ldmx_log(info)
47 << "gamma -> fcp+ fcp- conversion process registered successfully!";
48}
GammaConversionToFCPs * gamma_fcp_process_
gamma -> fcp conversion process (owned by G4 process manager after registration)
Definition FCPPhysics.h:68

Member Data Documentation

◆ enable_

bool simcore::FCPPhysics::enable_
private

is this physics constructor enabled?

Definition at line 55 of file FCPPhysics.h.

◆ fcp_charge_

G4double simcore::FCPPhysics::fcp_charge_
private

charge of the fcp in units of e

Definition at line 61 of file FCPPhysics.h.

◆ fcp_mass_

G4double simcore::FCPPhysics::fcp_mass_
private

mass of the fcp in MeV

Definition at line 58 of file FCPPhysics.h.

◆ fcp_pdg_id_

int simcore::FCPPhysics::fcp_pdg_id_
private

PDG ID for the fcp particles.

Definition at line 64 of file FCPPhysics.h.

◆ gamma_fcp_process_

GammaConversionToFCPs* simcore::FCPPhysics::gamma_fcp_process_ {nullptr}
private

gamma -> fcp conversion process (owned by G4 process manager after registration)

Definition at line 68 of file FCPPhysics.h.

68{nullptr};

◆ NAME

const std::string simcore::FCPPhysics::NAME = "FCPPhysics"
static

Definition at line 34 of file FCPPhysics.h.


The documentation for this class was generated from the following files: