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.
 
GammaConversionToFCPs * gamma_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 30 of file FCPPhysics.h.

Constructor & Destructor Documentation

◆ FCPPhysics()

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

Definition at line 10 of file FCPPhysics.cxx.

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

Member Function Documentation

◆ ConstructParticle()

void simcore::FCPPhysics::ConstructParticle ( )
override

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

Definition at line 25 of file FCPPhysics.cxx.

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

◆ ConstructProcess()

void simcore::FCPPhysics::ConstructProcess ( )
override

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

Definition at line 34 of file FCPPhysics.cxx.

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

Member Data Documentation

◆ enable_

bool simcore::FCPPhysics::enable_
private

is this physics constructor enabled?

Definition at line 53 of file FCPPhysics.h.

◆ fcp_charge_

G4double simcore::FCPPhysics::fcp_charge_
private

charge of the fcp in units of e

Definition at line 59 of file FCPPhysics.h.

◆ fcp_mass_

G4double simcore::FCPPhysics::fcp_mass_
private

mass of the fcp in MeV

Definition at line 56 of file FCPPhysics.h.

◆ fcp_pdg_id_

int simcore::FCPPhysics::fcp_pdg_id_
private

PDG ID for the fcp particles.

Definition at line 62 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 66 of file FCPPhysics.h.

66{nullptr};

◆ NAME

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

Definition at line 32 of file FCPPhysics.h.


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