ATLAS Offline Software
Loading...
Searching...
No Matches
CharginosPhysicsTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5// Include files
6
7// local
9#include "AMSBCharginoPlus.hh"
10#include "AMSBCharginoMinus.hh"
11#include "AMSBNeutralino.hh"
12
13// Geant4 physics lists
14#include "G4ProcessManager.hh"
15#include "G4ParticleTable.hh"
16#include "G4hIonisation.hh"
17#include "G4hMultipleScattering.hh"
18#include "G4Transportation.hh"
19#include "G4MuIonisation.hh"
20#include "G4DecayTable.hh"
21#include "G4VDecayChannel.hh"
22#include "G4PhaseSpaceDecayChannel.hh"
23
24// CLHEP headers
25#include "CLHEP/Units/SystemOfUnits.h"
26
27//-----------------------------------------------------------------------------
28// Implementation file for class : CharginosPhysicsTool
29//
30// 15-05-2015 : Edoardo Farina
31//-----------------------------------------------------------------------------
32
33
34
35//=============================================================================
36// Standard constructor, initializes variables
37//=============================================================================
39 const std::string& name,
40 const IInterface* parent)
41 : base_class(type, name, parent) {
42 m_physicsOptionType = G4AtlasPhysicsOption::Type::BSMPhysics;
43 declareProperty("CharginoPlusMass",
44 m_CharginoPlusParams.mass = 101.0 * CLHEP::GeV,
45 "CharginoPlus Mass");
46 declareProperty("CharginoPlusWidth",
47 m_CharginoPlusParams.width = 0.0 * CLHEP::MeV,
48 "CharginoPlus Width");
49 declareProperty("CharginoPlusCharge",
50 m_CharginoPlusParams.charge = +1. * CLHEP::eplus,
51 "CharginoPlus charge");
52 declareProperty("CharginoPlusPDGCode", m_CharginoPlusParams.pdgCode = 1000024,
53 "CharginoPlus PDG CODE");
54 declareProperty("CharginoPlusStable", m_CharginoPlusParams.stable = true,
55 "CharginoPlus Stable");
56 declareProperty("CharginoPlusLifetime", m_CharginoPlusParams.lifetime = -1,
57 "CharginoPlus Lifetime");
58 declareProperty("CharginoPlusShortlived",
59 m_CharginoPlusParams.shortlived = false,
60 "CharginoPlus Shortlived");
61
62 declareProperty("CharginoMinusMass",
63 m_CharginoMinusParams.mass = 101.0 * CLHEP::GeV,
64 "CharginoMinus Mass");
65 declareProperty("CharginoMinusWidth",
66 m_CharginoMinusParams.width = 0.0 * CLHEP::MeV,
67 "CharginoMinus Width");
68 declareProperty("CharginoMinusCharge",
69 m_CharginoMinusParams.charge = -1. * CLHEP::eplus,
70 "CharginoMinus charge");
71 declareProperty("CharginoMinusPDGCode",
72 m_CharginoMinusParams.pdgCode = -1000024,
73 "CharginoMinus PDG CODE");
74 declareProperty("CharginoMinusStable", m_CharginoMinusParams.stable = true,
75 "CharginoMinus Stable");
76 declareProperty("CharginoMinusLifetime", m_CharginoMinusParams.lifetime = -1,
77 "CharginoMinus Lifetime");
78 declareProperty("CharginoMinusShortlived",
79 m_CharginoMinusParams.shortlived = false,
80 "CharginoMinus Shortlived");
81
82 declareProperty("NeutralinoMass",
83 m_NeutralinoParams.mass = 100.0 * CLHEP::GeV,
84 "Neutralino Mass");
85 declareProperty("NeutralinoWidth",
86 m_NeutralinoParams.width = 0.0 * CLHEP::MeV,
87 "Neutralino Width");
88 declareProperty("NeutralinoCharge",
89 m_NeutralinoParams.charge = 0. * CLHEP::eplus,
90 "Neutralino charge");
91 declareProperty("NeutralinoPDGCode", m_NeutralinoParams.pdgCode = 1000022,
92 "Neutralino PDG CODE");
93 declareProperty("NeutralinoStable", m_NeutralinoParams.stable = true,
94 "Neutralino Stable");
95 declareProperty("NeutralinoLifetime", m_NeutralinoParams.lifetime = -1,
96 "Neutralino Lifetime");
97 declareProperty("NeutralinoShortlived", m_NeutralinoParams.shortlived = false,
98 "Neutralino Shortlived");
99}
100
101//=============================================================================
102// Destructor
103//=============================================================================
104
109
110//=============================================================================
111// Initialize
112//=============================================================================
114{
115 ATH_MSG_INFO("CharginosPhysicsTool::initialize( )");
116 return StatusCode::SUCCESS;
117}
118
119auto CharginosPhysicsTool::GetPhysicsOption() -> UPPhysicsConstructor {
120
121 ATH_MSG_INFO("CharginosPhysicsTool::GetPhysicsOption( )");
122 return std::make_unique<CharginosPhysicsTool::PhysicsConstructor>(
123 name(), this->msgLevel(), *this);
124}
125
127 ATH_MSG_DEBUG("ConstructParticle for the Charginos being run");
128
129 m_theCharginoMinus = AMSBCharginoMinus::Definition(
133 m_CharginoMinusParams.shortlived);
134
135 m_theCharginoPlus = AMSBCharginoPlus::Definition(
139 m_CharginoPlusParams.shortlived);
140
141 m_theNeutralino = AMSBNeutralino::Definition(
144 m_NeutralinoParams.stable, m_NeutralinoParams.lifetime,
145 m_NeutralinoParams.shortlived);
146}
147
149 ATH_MSG_DEBUG("ConstructProcess for Charginos being run");
150
151 G4ProcessManager *charginoPlus = m_theCharginoPlus->GetProcessManager();
152 G4ProcessManager *charginoMinus = m_theCharginoMinus->GetProcessManager();
153
154 charginoPlus->AddProcess(new G4hMultipleScattering,-1,1,1);
155 charginoMinus->AddProcess(new G4hMultipleScattering,-1,1,1);
156 charginoPlus->AddProcess(new G4hIonisation,-1,2,2);
157 charginoMinus->AddProcess(new G4hIonisation,-1,2,2);
158}
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
ParticleDefinitionParams const & m_NeutralinoParams
ParticleDefinitionParams const & m_CharginoMinusParams
ParticleDefinitionParams const & m_CharginoPlusParams
virtual ~CharginosPhysicsTool()
Destructor.
virtual UPPhysicsConstructor GetPhysicsOption() override final
Implements.
ParticleDefinitionParams m_CharginoPlusParams
virtual StatusCode initialize() override final
Initialize method.
ParticleDefinitionParams m_CharginoMinusParams
ParticleDefinitionParams m_NeutralinoParams
CharginosPhysicsTool(const std::string &type, const std::string &name, const IInterface *parent)
Standard constructor.