CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CMSDarkPairProduction.cc
Go to the documentation of this file.
1 //
2 // Authors of this file: Dustin Stolp (dostolp@ucdavis.edu)
3 // Sushil S. Chauhan (schauhan@cern.ch)
4 // Creation date: 01.22.2015
5 //
6 // -------------------------------------------------------------------
7 //
8 #include "SimG4Core/CustomPhysics/interface/CMSDarkPairProduction.hh"
9 #include "G4PhysicalConstants.hh"
10 #include "G4SystemOfUnits.hh"
11 #include "G4PairProductionRelModel.hh"
12 
13 using namespace std;
14 
15 static const G4double xsfactor =
16  4*fine_structure_const*classic_electr_radius*classic_electr_radius;
17 
18 static G4double dark_factor;
19 
20 CMSDarkPairProduction::CMSDarkPairProduction(const G4ParticleDefinition* p,G4double df,const G4String& nam) : G4PairProductionRelModel(p,nam){
21  dark_factor = df;
22 
23 }
24 
25 CMSDarkPairProduction::~CMSDarkPairProduction(){}
26 
27 G4double CMSDarkPairProduction::ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
28  G4double gammaEnergy, G4double Z,
29  G4double, G4double, G4double)
30 {
31 
32  G4double crossSection = 0.0 ;
33  if ( gammaEnergy <= 2.0*electron_mass_c2 ) return crossSection;
34 
35  SetCurrentElement(Z);
36  // choose calculator according to parameters and switches
37  // in the moment only one calculator:
38  crossSection=ComputeXSectionPerAtom(gammaEnergy,Z);
39 
40  G4double xi = Finel/(Fel - fCoulomb); // inelastic contribution
41  crossSection *= dark_factor * xsfactor*Z*(Z+xi);
42  return crossSection;
43 }
44 void
45 CMSDarkPairProduction::SampleSecondaries(std::vector<G4DynamicParticle*>* fvect,
46  const G4MaterialCutsCouple* couple,
47  const G4DynamicParticle* aDynamicGamma,
48  G4double e1,
49  G4double e2)
50 {
51 G4PairProductionRelModel::SampleSecondaries(fvect, couple, aDynamicGamma, e1, e2);
52 
53 }
54 
const double Z[kNumberCalorimeter]
static const G4double xsfactor
static G4double dark_factor