Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-06-04 04:35:19

0001 
0002 #include "G4SystemOfUnits.hh"
0003 #include "G4DynamicParticle.hh"
0004 #include "G4NistManager.hh"
0005 
0006 #include "SimG4Core/CustomPhysics/interface/CMSSQ.h"
0007 #include "SimG4Core/CustomPhysics/interface/CMSAntiSQ.h"
0008 #include "SimG4Core/CustomPhysics/interface/CMSSQInelasticCrossSection.h"
0009 
0010 CMSSQInelasticCrossSection::CMSSQInelasticCrossSection(double mass) : G4VCrossSectionDataSet("SQ-neutron") {
0011   nist = G4NistManager::Instance();
0012   theSQ = CMSSQ::SQ(mass);
0013   theAntiSQ = CMSAntiSQ::AntiSQ(mass);
0014 }
0015 
0016 CMSSQInelasticCrossSection::~CMSSQInelasticCrossSection() {}
0017 
0018 G4bool CMSSQInelasticCrossSection::IsElementApplicable(const G4DynamicParticle* aPart, G4int Z, const G4Material*) {
0019   return true;
0020 }
0021 
0022 G4double CMSSQInelasticCrossSection::GetElementCrossSection(const G4DynamicParticle* aPart,
0023                                                             G4int Z,
0024                                                             const G4Material*) {
0025   // return zero for particle instead of antiparticle

0026   // sexaquark interaction with matter expected really tiny

0027   if (aPart->GetDefinition() != theAntiSQ)
0028     return 0;
0029 
0030   //I don't want to interact on hydrogen

0031   if (Z <= 1) {
0032     return 0.0;
0033   }
0034 
0035   // get the atomic weight (to estimate nr neutrons)

0036   G4double A = nist->GetAtomicMassAmu(Z);
0037 
0038   // put the X section low for the antiS to get a flat interaction rate,

0039   // but also make it scale with the number of neutrons in the material

0040   // because we are going to interact on neutrons, not on protons

0041   return (100. * (A - (G4double)Z) / (G4double)Z) * millibarn;
0042 }