CMS 3D CMS Logo

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
 
G4int verbose
 

Detailed Description

Definition at line 9 of file CMSEmNoDeltaRay.h.

Constructor & Destructor Documentation

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

Definition at line 69 of file CMSEmNoDeltaRay.cc.

70  : G4VPhysicsConstructor(name), verbose(ver), region(reg) {
71  G4EmParameters* param = G4EmParameters::Instance();
72  param->SetDefaults();
73  param->SetVerbose(verbose);
74  param->SetApplyCuts(true);
75  param->SetMscRangeFactor(0.2);
76  param->SetMscStepLimitType(fMinimal);
77  SetPhysicsType(bElectromagnetic);
78 }
std::string region
CMSEmNoDeltaRay::~CMSEmNoDeltaRay ( )
override

Definition at line 80 of file CMSEmNoDeltaRay.cc.

80 {}

Member Function Documentation

void CMSEmNoDeltaRay::ConstructParticle ( )
override

Definition at line 82 of file CMSEmNoDeltaRay.cc.

References nanoDQM_cff::Electron, and Gamma.

82  {
83  // gamma
85 
86  // leptons
88  G4Positron::Positron();
89  G4MuonPlus::MuonPlus();
90  G4MuonMinus::MuonMinus();
91  G4TauMinus::TauMinusDefinition();
92  G4TauPlus::TauPlusDefinition();
93 
94  // mesons
95  G4PionPlus::PionPlusDefinition();
96  G4PionMinus::PionMinusDefinition();
97  G4KaonPlus::KaonPlusDefinition();
98  G4KaonMinus::KaonMinusDefinition();
99  G4DMesonMinus::DMesonMinusDefinition();
100  G4DMesonPlus::DMesonPlusDefinition();
101  G4BMesonMinus::BMesonMinusDefinition();
102  G4BMesonPlus::BMesonPlusDefinition();
103 
104  // barions
105  G4Proton::Proton();
106  G4AntiProton::AntiProton();
107  G4SigmaMinus::SigmaMinusDefinition();
108  G4AntiSigmaMinus::AntiSigmaMinusDefinition();
109  G4SigmaPlus::SigmaPlusDefinition();
110  G4AntiSigmaPlus::AntiSigmaPlusDefinition();
111  G4XiMinus::XiMinusDefinition();
112  G4AntiXiMinus::AntiXiMinusDefinition();
113  G4OmegaMinus::OmegaMinusDefinition();
114  G4AntiOmegaMinus::AntiOmegaMinusDefinition();
115  G4LambdacPlus::LambdacPlusDefinition();
116  G4AntiLambdacPlus::AntiLambdacPlusDefinition();
117  G4XicPlus::XicPlusDefinition();
118  G4AntiXicPlus::AntiXicPlusDefinition();
119 
120  // ions
121  G4Deuteron::Deuteron();
122  G4Triton::Triton();
123  G4He3::He3();
124  G4Alpha::Alpha();
125  G4GenericIon::GenericIonDefinition();
126 }
dbl * Gamma
Definition: mlp_gen.cc:38
void CMSEmNoDeltaRay::ConstructProcess ( )
override

Definition at line 128 of file CMSEmNoDeltaRay.cc.

References ecalTB2006H4_GenSimDigiReco_cfg::G4cout, AnalysisDataFormats_SUSYBSMObjects::msc, HiggsValidation_cfi::particleName, EmParticleList::PartNames(), and region.

128  {
129  // Add standard EM Processes
130  G4Region* reg = nullptr;
131  if (region != " ") {
132  G4RegionStore* regStore = G4RegionStore::GetInstance();
133  reg = regStore->GetRegion(region, true);
134  }
135 
136  G4ParticleTable* table = G4ParticleTable::GetParticleTable();
137  EmParticleList emList;
138  for (const auto& particleName : emList.PartNames()) {
139  G4ParticleDefinition* particle = table->FindParticle(particleName);
140  G4ProcessManager* pmanager = particle->GetProcessManager();
141  if (verbose > 1)
142  G4cout << "### " << GetPhysicsName() << " instantiates for " << particleName << " at " << particle << G4endl;
143 
144  if (particleName == "gamma") {
145  pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
146  pmanager->AddDiscreteProcess(new G4ComptonScattering);
147  pmanager->AddDiscreteProcess(new G4GammaConversion);
148 
149  } else if (particleName == "e-") {
150  G4eMultipleScattering* msc = new G4eMultipleScattering;
151  msc->SetStepLimitType(fMinimal);
152  if (reg != nullptr) {
153  G4UrbanMscModel* msc_el = new G4UrbanMscModel();
154  msc_el->SetRangeFactor(0.04);
155  msc->AddEmModel(0, msc_el, reg);
156  }
157  pmanager->AddProcess(msc, -1, 1, 1);
158  pmanager->AddProcess(new G4hhIonisation, -1, 2, 2);
159  pmanager->AddProcess(new G4eBremsstrahlung, -1, -3, 3);
160 
161  } else if (particleName == "e+") {
162  // G4eIonisation* eioni = new G4eIonisation();
163  // eioni->SetStepFunction(0.8, 1.0*mm);
164  G4eMultipleScattering* msc = new G4eMultipleScattering;
165  msc->SetStepLimitType(fMinimal);
166  if (reg != nullptr) {
167  G4UrbanMscModel* msc_pos = new G4UrbanMscModel();
168  msc_pos->SetRangeFactor(0.04);
169  msc->AddEmModel(0, msc_pos, reg);
170  }
171  pmanager->AddProcess(msc, -1, 1, 1);
172  pmanager->AddProcess(new G4hhIonisation, -1, 2, 2);
173  pmanager->AddProcess(new G4eBremsstrahlung, -1, -3, 3);
174  pmanager->AddProcess(new G4eplusAnnihilation, 0, -1, 4);
175 
176  } else if (particleName == "mu+" || particleName == "mu-") {
177  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
178  pmanager->AddProcess(new G4hhIonisation, -1, 2, 2);
179  pmanager->AddProcess(new G4MuBremsstrahlung, -1, -3, 3);
180  pmanager->AddProcess(new G4MuPairProduction, -1, -4, 4);
181 
182  } else if (particleName == "alpha" || particleName == "He3" || particleName == "GenericIon") {
183  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
184  pmanager->AddProcess(new G4hhIonisation, -1, 2, 2);
185 
186  } else if (particleName == "pi+" || particleName == "kaon+" || particleName == "kaon-" ||
187  particleName == "proton" || particleName == "pi-") {
188  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
189  pmanager->AddProcess(new G4hhIonisation, -1, 2, 2);
190  pmanager->AddProcess(new G4hBremsstrahlung(), -1, -3, 3);
191  pmanager->AddProcess(new G4hPairProduction(), -1, -4, 4);
192 
193  } else if (particleName == "B+" || particleName == "B-" || particleName == "D+" || particleName == "D-" ||
194  particleName == "Ds+" || particleName == "Ds-" || particleName == "anti_lambda_c+" ||
195  particleName == "anti_omega-" || particleName == "anti_proton" || particleName == "anti_sigma_c+" ||
196  particleName == "anti_sigma_c++" || particleName == "anti_sigma+" || particleName == "anti_sigma-" ||
197  particleName == "anti_xi_c+" || particleName == "anti_xi-" || particleName == "deuteron" ||
198  particleName == "lambda_c+" || particleName == "omega-" || particleName == "sigma_c+" ||
199  particleName == "sigma_c++" || particleName == "sigma+" || particleName == "sigma-" ||
200  particleName == "tau+" || particleName == "tau-" || particleName == "triton" ||
201  particleName == "xi_c+" || particleName == "xi-") {
202  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
203  pmanager->AddProcess(new G4hhIonisation, -1, 2, 2);
204  }
205  }
206 }
const std::vector< G4String > & PartNames() const
susybsm::MuonSegmentCollection msc
Definition: classes.h:32
std::string region

Member Data Documentation

std::string CMSEmNoDeltaRay::region
private

Definition at line 19 of file CMSEmNoDeltaRay.h.

Referenced by ConstructProcess().

G4int CMSEmNoDeltaRay::verbose
private

Definition at line 18 of file CMSEmNoDeltaRay.h.