Files
geant4/source/processes/hadronic/models/im_r_matrix/src/G4ResonanceNames.cc
T
2024-12-06 11:11:40 +01:00

375 lines
12 KiB
C++

//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
#include "globals.hh"
#include "G4ResonanceNames.hh"
#include "G4VCrossSectionSource.hh"
#include "G4KineticTrack.hh"
#include "G4CrossSectionVector.hh"
#include "G4ParticleDefinition.hh"
#include "G4ShortLivedConstructor.hh"
#include "G4ParticleTable.hh"
#include "G4PionPlus.hh"
G4ResonanceNames::G4ResonanceNames()
{
// Excited N resonances
nameNstar.push_back("N(1440)+");
nameNstar.push_back("N(1440)0");
nameNstar.push_back("N(1520)+");
nameNstar.push_back("N(1520)0");
nameNstar.push_back("N(1535)+");
nameNstar.push_back("N(1535)0");
nameNstar.push_back("N(1650)+");
nameNstar.push_back("N(1650)0");
nameNstar.push_back("N(1675)+");
nameNstar.push_back("N(1675)0");
nameNstar.push_back("N(1680)+");
nameNstar.push_back("N(1680)0");
nameNstar.push_back("N(1700)+");
nameNstar.push_back("N(1700)0");
nameNstar.push_back("N(1710)+");
nameNstar.push_back("N(1710)0");
nameNstar.push_back("N(1720)+");
nameNstar.push_back("N(1720)0");
nameNstar.push_back("N(1900)+");
nameNstar.push_back("N(1900)0");
nameNstar.push_back("N(1990)+");
nameNstar.push_back("N(1990)0");
nameNstar.push_back("N(2090)+");
nameNstar.push_back("N(2090)0");
nameNstar.push_back("N(2190)+");
nameNstar.push_back("N(2190)0");
nameNstar.push_back("N(2220)+");
nameNstar.push_back("N(2220)0");
nameNstar.push_back("N(2250)+");
nameNstar.push_back("N(2250)0");
// Delta
const G4String& d1232Minus("delta-");
const G4String& d1232Zero("delta0");
const G4String& d1232Plus("delta+");
const G4String& d1232PlusPlus("delta++");
nameDelta.push_back(d1232Minus);
nameDelta.push_back(d1232Zero);
nameDelta.push_back(d1232Plus);
nameDelta.push_back(d1232PlusPlus);
// Excited Delta resonances
nameDeltastar.push_back("delta(1600)+");
nameDeltastar.push_back("delta(1600)++");
nameDeltastar.push_back("delta(1600)-");
nameDeltastar.push_back("delta(1600)0");
nameDeltastar.push_back("delta(1620)+");
nameDeltastar.push_back("delta(1620)++");
nameDeltastar.push_back("delta(1620)-");
nameDeltastar.push_back("delta(1620)0");
nameDeltastar.push_back("delta(1700)+");
nameDeltastar.push_back("delta(1700)++");
nameDeltastar.push_back("delta(1700)-");
nameDeltastar.push_back("delta(1700)0");
nameDeltastar.push_back("delta(1900)+");
nameDeltastar.push_back("delta(1900)++");
nameDeltastar.push_back("delta(1900)-");
nameDeltastar.push_back("delta(1900)0");
nameDeltastar.push_back("delta(1905)+");
nameDeltastar.push_back("delta(1905)++");
nameDeltastar.push_back("delta(1905)-");
nameDeltastar.push_back("delta(1905)0");
nameDeltastar.push_back("delta(1910)+");
nameDeltastar.push_back("delta(1910)++");
nameDeltastar.push_back("delta(1910)-");
nameDeltastar.push_back("delta(1910)0");
nameDeltastar.push_back("delta(1920)+");
nameDeltastar.push_back("delta(1920)++");
nameDeltastar.push_back("delta(1920)-");
nameDeltastar.push_back("delta(1920)0");
nameDeltastar.push_back("delta(1930)+");
nameDeltastar.push_back("delta(1930)++");
nameDeltastar.push_back("delta(1930)-");
nameDeltastar.push_back("delta(1930)0");
nameDeltastar.push_back("delta(1950)+");
nameDeltastar.push_back("delta(1950)++");
nameDeltastar.push_back("delta(1950)-");
nameDeltastar.push_back("delta(1950)0");
// Lambda
nameLambda.push_back("lambda");
nameLambda.push_back("lambda(1405)");
nameLambda.push_back("lambda(1520)");
nameLambda.push_back("lambda(1600)");
nameLambda.push_back("lambda(1670)");
nameLambda.push_back("lambda(1690)");
nameLambda.push_back("lambda(1800)");
nameLambda.push_back("lambda(1810)");
nameLambda.push_back("lambda(1820)");
nameLambda.push_back("lambda(1830)");
nameLambda.push_back("lambda(1890)");
nameLambda.push_back("lambda(2100)");
nameLambda.push_back("lambda(2110)");
// Sigma
nameSigma.push_back("sigma(1385)+");
nameSigma.push_back("sigma(1385)-");
nameSigma.push_back("sigma(1385)0");
nameSigma.push_back("sigma(1660)+");
nameSigma.push_back("sigma(1660)-");
nameSigma.push_back("sigma(1660)0");
nameSigma.push_back("sigma(1670)+");
nameSigma.push_back("sigma(1670)-");
nameSigma.push_back("sigma(1670)0");
nameSigma.push_back("sigma(1750)+");
nameSigma.push_back("sigma(1750)-");
nameSigma.push_back("sigma(1750)0");
nameSigma.push_back("sigma(1775)+");
nameSigma.push_back("sigma(1775)-");
nameSigma.push_back("sigma(1775)0");
nameSigma.push_back("sigma(1915)+");
nameSigma.push_back("sigma(1915)-");
nameSigma.push_back("sigma(1915)0");
nameSigma.push_back("sigma(1940)+");
nameSigma.push_back("sigma(1940)-");
nameSigma.push_back("sigma(1940)0");
nameSigma.push_back("sigma(2030)+");
nameSigma.push_back("sigma(2030)-");
nameSigma.push_back("sigma(2030)0");
// Xi
nameXi.push_back("xi(1530)-");
nameXi.push_back("xi(1530)0");
nameXi.push_back("xi(1690)-");
nameXi.push_back("xi(1690)0");
nameXi.push_back("xi(1820)-");
nameXi.push_back("xi(1820)0");
nameXi.push_back("xi(1950)-");
nameXi.push_back("xi(1950)0");
nameXi.push_back("xi(2030)-");
nameXi.push_back("xi(2030)0");
G4ShortLivedConstructor ShortLived;
ShortLived.ConstructParticle();
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
size_t i;
// Fill a map with the lowest resonance for each category
for (i=0; i<nameNstar.size(); i++)
{
lowResMap[nameNstar[i]] = particleTable->FindParticle("N(1440)0");
}
for (i=0; i<nameDeltastar.size(); i++)
{
lowResMap[nameDeltastar[i]] = particleTable->FindParticle("delta0");
}
for (i=0; i<nameDelta.size(); i++)
{
lowResMap[nameDelta[i]] = particleTable->FindParticle("delta0");
}
for (i=0; i<nameLambda.size(); i++)
{
lowResMap[nameLambda[i]] = particleTable->FindParticle("lambda");
}
for (i=0; i<nameSigma.size(); i++)
{
lowResMap[nameSigma[i]] = particleTable->FindParticle("sigma0");
}
shortMap["N(1440)0"] = "N(1440)";
shortMap["N(1440)+"] = "N(1440)";
shortMap["N(1520)0"] = "N(1520)";;
shortMap["N(1520)+"] = "N(1520)";
shortMap["N(1535)0"] = "N(1535)";
shortMap["N(1535)+"] = "N(1535)";
shortMap["N(1650)0"] = "N(1650)";
shortMap["N(1650)+"] = "N(1650)";
shortMap["N(1675)0"] = "N(1675)";
shortMap["N(1675)+"] = "N(1675)";
shortMap["N(1680)0"] = "N(1680)";
shortMap["N(1680)+"] = "N(1680)";
shortMap["N(1700)0"] = "N(1700)";
shortMap["N(1700)+"] = "N(1700)";
shortMap["N(1710)0"] = "N(1710)";
shortMap["N(1710)+"] = "N(1710)";
shortMap["N(1720)0"] = "N(1720)";
shortMap["N(1720)+"] = "N(1720)";
shortMap["N(1900)0"] = "N(1900)";
shortMap["N(1900)+"] = "N(1900)";
shortMap["N(1990)0"] = "N(1990)";
shortMap["N(1990)+"] = "N(1990)";
shortMap["N(2090)0"] = "N(2090)";
shortMap["N(2090)+"] = "N(2090)";
shortMap["N(2190)0"] = "N(2190)";
shortMap["N(2190)+"] = "N(2190)";
shortMap["N(2220)0"] = "N(2220)";
shortMap["N(2220)+"] = "N(2220)";
shortMap["N(2250)0"] = "N(2250)";
shortMap["N(2250)+"] = "N(2250)";
// Excited Delta
shortMap["delta(1600)-"] = "delta(1600)";
shortMap["delta(1600)0"] = "delta(1600)";
shortMap["delta(1600)+"] = "delta(1600)";
shortMap["delta(1600)++"] = "delta(1600)";
shortMap["delta(1620)-"] = "delta(1620)";
shortMap["delta(1620)0"] = "delta(1620)";
shortMap["delta(1620)+"] = "delta(1620)";
shortMap["delta(1620)++"] = "delta(1620)";
shortMap["delta(1700)-"] = "delta(1700)";
shortMap["delta(1700)0"] = "delta(1700)";
shortMap["delta(1700)+"] = "delta(1700)";
shortMap["delta(1700)++"] = "delta(1700)";
shortMap["delta(1900)-"] = "delta(1900)";
shortMap["delta(1900)0"] = "delta(1900)";
shortMap["delta(1900)+"] = "delta(1900)";
shortMap["delta(1900)++"] = "delta(1900)";
shortMap["delta(1905)-"] = "delta(1905)";
shortMap["delta(1905)0"] = "delta(1905)";
shortMap["delta(1905)+"] = "delta(1905)";
shortMap["delta(1905)++"] = "delta(1905)";
shortMap["delta(1910)-"] = "delta(1910)";
shortMap["delta(1910)0"] = "delta(1910)";
shortMap["delta(1910)+"] = "delta(1910)";
shortMap["delta(1910)++"] = "delta(1910)";
shortMap["delta(1920)-"] = "delta(1920)";
shortMap["delta(1920)0"] = "delta(1920)";
shortMap["delta(1920)+"] = "delta(1920)";
shortMap["delta(1920)++"] = "delta(1920)";
shortMap["delta(1930)-"] = "delta(1930)";
shortMap["delta(1930)0"] = "delta(1930)";
shortMap["delta(1930)+"] = "delta(1930)";
shortMap["delta(1930)++"] = "delta(1930)";
shortMap["delta(1950)-"] = "delta(1950)";
shortMap["delta(1950)0"] = "delta(1950)";
shortMap["delta(1950)+"] = "delta(1950)";
shortMap["delta(1950)++"] = "delta(1950)";
// Delta
shortMap["delta-"] = "delta";
shortMap["delta0"] = "delta";
shortMap["delta+"] = "delta";
shortMap["delta++"] = "delta";
}
G4ResonanceNames::~G4ResonanceNames()
{ }
G4bool G4ResonanceNames::operator==(const G4ResonanceNames &right) const
{
return(this == (G4ResonanceNames*) &right);
}
G4bool G4ResonanceNames::operator!=(const G4ResonanceNames &right) const
{
return (this != (G4ResonanceNames*) &right);
}
G4double G4ResonanceNames::MinMass(const G4String& name)
{
// Cut, from UrQMD (reference still to be detailed)
static const G4double coeff = 0.001;
G4double lowMass = 0.;
G4ParticleDefinition* def = 0;
if (lowResMap.find(name) != lowResMap.end())
{
def = lowResMap[name];
}
else
{
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
def = particleTable->FindParticle(name);
}
if (def != 0)
{
G4ParticleDefinition* pion = G4PionPlus::PionPlusDefinition();
lowMass = (1. + coeff) * def->GetPDGMass() + pion->GetPDGMass();
}
else
{
G4cout << "G4ResonanceNames::MinMass - " << name << " not found" << G4endl;
throw G4HadronicException(__FILE__, __LINE__, "G4ResonanceNames::MinMass - resonance name not found");
}
return lowMass;
}
const G4String G4ResonanceNames::ShortName(const G4String& name)
{
G4String shortName = "";
if (shortMap.find(name) != shortMap.end())
{
shortName = shortMap[name];
}
return shortName;
}