9 #include <io/AiresUtilities.h>
11 #include <utl/Particle.h>
13 #include <utl/GeometryUtilities.h>
14 #include <utl/AugerUnits.h>
15 #include <utl/ErrorLogger.h>
21 using std::ostringstream;
28 map<int, int> airesToPDGMap;
30 void InsertAiresToPDG(
int theAiresCode,
int thePDGCode) {
32 if (!airesToPDGMap.insert(std::make_pair(theAiresCode,
33 thePDGCode)).second) {
35 msg <<
"Cannot insert pair ("
36 << theAiresCode <<
", " << thePDGCode
37 <<
") into AiresToPDG map.";
44 void InitAiresToPDGMap() {
48 InsertAiresToPDG(2, Particle::ePositron);
49 InsertAiresToPDG(3, Particle::eAntiMuon);
51 InsertAiresToPDG(4, Particle::eAntiTau);
52 InsertAiresToPDG(-4, Particle::eTau);
53 InsertAiresToPDG(6, Particle::eNuElectron);
54 InsertAiresToPDG(-6, Particle::eAntiNuElectron);
55 InsertAiresToPDG(7, Particle::eNuMuon);
56 InsertAiresToPDG(-7, Particle::eAntiNuMuon);
57 InsertAiresToPDG(8, Particle::eNuTau);
58 InsertAiresToPDG(-8, Particle::eAntiNuTau);
59 InsertAiresToPDG(10, Particle::ePiZero);
60 InsertAiresToPDG(-11, Particle::ePiPlus);
61 InsertAiresToPDG(11, Particle::ePiMinus);
62 InsertAiresToPDG(12, Particle::eKaon0S);
63 InsertAiresToPDG(13, Particle::eKaon0L);
64 InsertAiresToPDG(14, Particle::eKaonPlus);
65 InsertAiresToPDG(-14, Particle::eKaonMinus);
66 InsertAiresToPDG(15, Particle::eEta);
68 InsertAiresToPDG(-20, Particle::eAntiLambda);
69 InsertAiresToPDG(-30, Particle::eAntiNeutron);
70 InsertAiresToPDG(30, Particle::eNeutron);
72 InsertAiresToPDG(-31, Particle::eAntiProton);
80 if (theAiresCode < 100) {
82 if (!airesToPDGMap.size())
85 map<int, int>::const_iterator index =
86 airesToPDGMap.find(theAiresCode);
88 if (index != airesToPDGMap.end())
91 }
else if (theAiresCode < 100 * 32*26 + 31) {
98 unsigned int Z = (theAiresCode-100) / 32;
99 unsigned int A = Z + theAiresCode-108-31*Z;
100 return Particle::NucleusCode(Z,A);
int AiresToPDG(int theAiresCode)
Convert AIRES particle code to PDG.
Describes a particle for Simulation.
#define ERROR(message)
Macro for logging error messages.