CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Attributes
CMSEmNoDeltaRay Class Reference

#include <CMSEmNoDeltaRay.h>

Inheritance diagram for CMSEmNoDeltaRay:

Public Member Functions

 CMSEmNoDeltaRay (const G4String &name, G4int ver, const std::string &reg)
 
void ConstructParticle () override
 
void ConstructProcess () override
 
 ~CMSEmNoDeltaRay () override
 

Private Attributes

std::string region
 

Detailed Description

Definition at line 8 of file CMSEmNoDeltaRay.h.

Constructor & Destructor Documentation

CMSEmNoDeltaRay::CMSEmNoDeltaRay ( const G4String &  name,
G4int  ver,
const std::string &  reg 
)

Definition at line 51 of file CMSEmNoDeltaRay.cc.

52  : G4VPhysicsConstructor(name), region(reg) {
53  G4EmParameters* param = G4EmParameters::Instance();
54  param->SetDefaults();
55  param->SetVerbose(ver);
56  param->SetApplyCuts(true);
57  param->SetMscRangeFactor(0.2);
58  param->SetMscStepLimitType(fMinimal);
59  SetPhysicsType(bElectromagnetic);
60 }
std::string region
CMSEmNoDeltaRay::~CMSEmNoDeltaRay ( )
override

Definition at line 62 of file CMSEmNoDeltaRay.cc.

62 {}

Member Function Documentation

void CMSEmNoDeltaRay::ConstructParticle ( )
override

Definition at line 64 of file CMSEmNoDeltaRay.cc.

64  {
65  // minimal set of particles for EM physics
66  G4EmBuilder::ConstructMinimalEmSet();
67 }
void CMSEmNoDeltaRay::ConstructProcess ( )
override

Definition at line 69 of file CMSEmNoDeltaRay.cc.

References EmParticleList::PartNames(), region, and TableParser::table.

69  {
70  // Add standard EM Processes
71  G4Region* reg = nullptr;
72  if (region != " ") {
73  G4RegionStore* regStore = G4RegionStore::GetInstance();
74  reg = regStore->GetRegion(region, false);
75  }
76 
77  G4ParticleTable* table = G4ParticleTable::GetParticleTable();
78  EmParticleList emList;
79  for (const auto& particleName : emList.PartNames()) {
80  G4ParticleDefinition* particle = table->FindParticle(particleName);
81  G4ProcessManager* pmanager = particle->GetProcessManager();
82  if (verboseLevel > 1)
83  edm::LogVerbatim("PhysicsList") << "### " << GetPhysicsName() << " instantiates for " << particleName;
84 
85  if (particleName == "gamma") {
86  pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
87  pmanager->AddDiscreteProcess(new G4ComptonScattering);
88  pmanager->AddDiscreteProcess(new G4GammaConversion);
89 
90  } else if (particleName == "e-") {
91  G4eMultipleScattering* msc = new G4eMultipleScattering;
92  msc->SetStepLimitType(fMinimal);
93  if (reg != nullptr) {
94  G4UrbanMscModel* msc_el = new G4UrbanMscModel();
95  msc_el->SetRangeFactor(0.04);
96  msc->AddEmModel(0, msc_el, reg);
97  }
98  pmanager->AddProcess(msc, -1, 1, -1);
99  pmanager->AddProcess(new G4hhIonisation, -1, 2, 1);
100  pmanager->AddProcess(new G4eBremsstrahlung, -1, -3, 2);
101 
102  } else if (particleName == "e+") {
103  G4eMultipleScattering* msc = new G4eMultipleScattering;
104  msc->SetStepLimitType(fMinimal);
105  if (reg != nullptr) {
106  G4UrbanMscModel* msc_pos = new G4UrbanMscModel();
107  msc_pos->SetRangeFactor(0.04);
108  msc->AddEmModel(0, msc_pos, reg);
109  }
110  pmanager->AddProcess(msc, -1, 1, -1);
111  pmanager->AddProcess(new G4hhIonisation, -1, 2, -1);
112  pmanager->AddProcess(new G4eBremsstrahlung, -1, -3, 1);
113  pmanager->AddProcess(new G4eplusAnnihilation, 0, -1, 2);
114 
115  } else if (particleName == "mu+" || particleName == "mu-") {
116  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, -1);
117  pmanager->AddProcess(new G4hhIonisation, -1, 2, -1);
118  pmanager->AddProcess(new G4MuBremsstrahlung, -1, -3, 1);
119  pmanager->AddProcess(new G4MuPairProduction, -1, -4, 2);
120 
121  } else if (particleName == "alpha" || particleName == "He3" || particleName == "GenericIon") {
122  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, -1);
123  pmanager->AddProcess(new G4hhIonisation, -1, 2, -1);
124 
125  } else if (particleName == "pi+" || particleName == "kaon+" || particleName == "kaon-" ||
126  particleName == "proton" || particleName == "pi-") {
127  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, -1);
128  pmanager->AddProcess(new G4hhIonisation, -1, 2, -1);
129  pmanager->AddProcess(new G4hBremsstrahlung(), -1, -3, 1);
130  pmanager->AddProcess(new G4hPairProduction(), -1, -4, 2);
131 
132  } else if (particle->GetPDGCharge() != 0.0) {
133  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, -1);
134  pmanager->AddProcess(new G4hhIonisation, -1, 2, -1);
135  }
136  }
137 }
Log< level::Info, true > LogVerbatim
const std::vector< G4String > & PartNames() const
std::string region

Member Data Documentation

std::string CMSEmNoDeltaRay::region
private

Definition at line 17 of file CMSEmNoDeltaRay.h.

Referenced by ConstructProcess().