G4XAqmTotal.cc

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // -------------------------------------------------------------------
00028 //      GEANT4 Class file
00029 //
00030 //      For information related to this code contact:
00031 //
00032 //      File name:     G4XAqmTotal
00033 //
00034 //      Author:        
00035 // 
00036 //      Creation date: 15 April 1999
00037 //
00038 //      Modifications: 
00039 //      
00040 // Additive Quark Model total cross section 
00041 // (H.J. Lipkin and F. Scheck, Phys.Rev. 16 (1966) 71
00042 //
00043 // -------------------------------------------------------------------
00044 
00045 #include "globals.hh"
00046 #include "G4ios.hh"
00047 #include "G4SystemOfUnits.hh"
00048 #include "G4XAqmTotal.hh"
00049 #include "G4KineticTrack.hh"
00050 #include "G4ParticleDefinition.hh"
00051 
00052 
00053 // Validity range of this cross-section
00054 const G4double G4XAqmTotal::_lowLimit = 0.;
00055 const G4double G4XAqmTotal::_highLimit = DBL_MAX;
00056 
00057 G4XAqmTotal::G4XAqmTotal()
00058 { 
00059   // As a first approximation the model is assumed to be valid over 
00060   // the entire energy range
00061 }
00062 
00063 
00064 G4XAqmTotal::~G4XAqmTotal()
00065 { }
00066 
00067 
00068 G4bool G4XAqmTotal::operator==(const G4XAqmTotal &right) const
00069 {
00070   return (this == (G4XAqmTotal *) &right);
00071 }
00072 
00073 
00074 G4bool G4XAqmTotal::operator!=(const G4XAqmTotal &right) const
00075 {
00076   return (this != (G4XAqmTotal *) &right);
00077 }
00078 
00079 
00080 G4double G4XAqmTotal::CrossSection(const G4KineticTrack& trk1, const G4KineticTrack& trk2) const
00081 {
00082   G4double sigma = 0.;
00083 
00084   // Get strangeness content
00085   G4ParticleDefinition* def1 = trk1.GetDefinition();
00086   G4int sTrk1 = def1->GetQuarkContent(3) + def1->GetAntiQuarkContent(3);
00087   G4ParticleDefinition* def2 = trk2.GetDefinition();
00088   G4int sTrk2 = def2->GetQuarkContent(3) + def2->GetAntiQuarkContent(3);
00089   
00090   // Get non-strange quark content
00091   G4int qTrk1 = def1->GetQuarkContent(1) + def1->GetAntiQuarkContent(1) +
00092                 def1->GetQuarkContent(2) + def1->GetAntiQuarkContent(2) +
00093                 def1->GetQuarkContent(4) + def1->GetAntiQuarkContent(4) +
00094                 def1->GetQuarkContent(5) + def1->GetAntiQuarkContent(5) +
00095                 def1->GetQuarkContent(6) + def1->GetAntiQuarkContent(6);
00096 
00097   G4int qTrk2 = def2->GetQuarkContent(1) + def2->GetAntiQuarkContent(1) +
00098                 def2->GetQuarkContent(2) + def2->GetAntiQuarkContent(2) +
00099                 def2->GetQuarkContent(4) + def2->GetAntiQuarkContent(4) +
00100                 def2->GetQuarkContent(5) + def2->GetAntiQuarkContent(5) +
00101                 def2->GetQuarkContent(6) + def2->GetAntiQuarkContent(6);
00102 
00103   G4double sRatio1 = 0.;
00104   if (qTrk1 != 0) sRatio1 = sTrk1 / qTrk1;
00105   
00106   G4double sRatio2 = 0.;
00107   if (qTrk2 != 0) sRatio2 = sTrk2 / qTrk2;
00108   
00109   // Calculate the number of colliding mesons
00110   G4int nMesons = 0;
00111   G4int nQ1 = sTrk1 + qTrk1;
00112 
00113   if (nQ1 == 2) nMesons++;
00114   G4int nQ2 = sTrk2 + qTrk2;
00115   if (nQ2 == 2) nMesons++;
00116 
00117   // Cross-section (units to be checked!)
00118   sigma = 40. * std::pow((2.0/3.0),nMesons) * (1. - 0.4 * sRatio1) * (1. - 0.4 * sRatio2) * millibarn;
00119 
00120   return sigma;
00121 }
00122 
00123 
00124 G4String G4XAqmTotal::Name() const
00125 {
00126   G4String name("AqmTotalCrossSection");
00127   return name;
00128 }
00129 
00130 
00131 
00132 G4bool G4XAqmTotal::IsValid(G4double e) const
00133 {
00134   G4bool answer = InLimits(e,_lowLimit,_highLimit);
00135 
00136   return answer;
00137 }

Generated on Mon May 27 17:50:26 2013 for Geant4 by  doxygen 1.4.7