CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
CMSDarkPairProductionProcess.cc
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // Authors of this file: Dustin Stolp (dostolp@ucdavis.edu)
4 // Sushil S. Chauhan (schauhan@cern.ch)
5 //
6 // -----------------------------------------------------------------------------
7 
9 #include "G4PhysicalConstants.hh"
10 #include "G4SystemOfUnits.hh"
11 #include "G4BetheHeitlerModel.hh"
12 #include "G4PairProductionRelModel.hh"
13 #include "G4Electron.hh"
14 
15 using namespace std;
16 
18  : G4VEmProcess(processName, type), isInitialised(false), darkFactor(df) {
19  SetMinKinEnergy(2.0 * electron_mass_c2);
20  SetProcessSubType(fGammaConversion);
21  SetStartFromNullFlag(true);
22  SetBuildTableFlag(true);
23  SetSecondaryParticle(G4Electron::Electron());
24  SetLambdaBinning(220);
25 }
26 
28 
29 G4bool CMSDarkPairProductionProcess::IsApplicable(const G4ParticleDefinition& p) {
30  G4int pdg = std::abs(p.GetPDGEncoding());
31  return (pdg == 1023 || pdg == 1072000);
32 }
33 
34 void CMSDarkPairProductionProcess::InitialiseProcess(const G4ParticleDefinition* p) {
35  if (!isInitialised) {
36  isInitialised = true;
37 
38  AddEmModel(0, new CMSDarkPairProduction(p, darkFactor));
39  }
40 }
41 
42 G4double CMSDarkPairProductionProcess::MinPrimaryEnergy(const G4ParticleDefinition* p, const G4Material*) {
43  return std::max(2 * CLHEP::electron_mass_c2 - p->GetPDGMass(), 0.0);
44 }
CMSDarkPairProductionProcess(G4double df=1E0, const G4String &processName="conv", G4ProcessType type=fElectromagnetic)
void InitialiseProcess(const G4ParticleDefinition *) override
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
G4double MinPrimaryEnergy(const G4ParticleDefinition *, const G4Material *) override
constexpr char Electron[]
Definition: modules.cc:12
G4bool IsApplicable(const G4ParticleDefinition &) override