CMS 3D CMS Logo

CMSSQInelasticCrossSection.cc
Go to the documentation of this file.
1 
2 #include "G4SystemOfUnits.hh"
3 #include "G4DynamicParticle.hh"
4 #include "G4NistManager.hh"
5 
9 
10 CMSSQInelasticCrossSection::CMSSQInelasticCrossSection(double mass) : G4VCrossSectionDataSet("SQ-neutron") {
11  nist = G4NistManager::Instance();
12  theSQ = CMSSQ::SQ(mass);
14 }
15 
17 
18 G4bool CMSSQInelasticCrossSection::IsElementApplicable(const G4DynamicParticle* aPart, G4int Z, const G4Material*) {
19  return true;
20 }
21 
22 G4double CMSSQInelasticCrossSection::GetElementCrossSection(const G4DynamicParticle* aPart,
23  G4int Z,
24  const G4Material*) {
25  // return zero for particle instead of antiparticle
26  // sexaquark interaction with matter expected really tiny
27  if (aPart->GetDefinition() != theAntiSQ)
28  return 0;
29 
30  //I don't want to interact on hydrogen
31  if (Z <= 1) {
32  return 0.0;
33  }
34 
35  // get the atomic weight (to estimate nr neutrons)
36  G4double A = nist->GetAtomicMassAmu(Z);
37 
38  // put the X section low for the antiS to get a flat interaction rate,
39  // but also make it scale with the number of neutrons in the material
40  // because we are going to interact on neutrons, not on protons
41  return (100. * (A - (G4double)Z) / (G4double)Z) * millibarn;
42 }
virtual G4bool IsElementApplicable(const G4DynamicParticle *aPart, G4int Z, const G4Material *)
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *)
static CMSSQ * SQ(double mass)
Definition: CMSSQ.cc:41
static CMSAntiSQ * AntiSQ(double mass)
Definition: CMSAntiSQ.cc:41
Definition: APVGainStruct.h:7