Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // G4PDGCodeChecker 27 28 // Author: Hisaya Kurashige, 17 August 1999 29 // -------------------------------------------------------------------- 30 #ifndef G4PDGCodeChecker_hh 31 #define G4PDGCodeChecker_hh 1 32 33 #include "G4ios.hh" 34 #include "globals.hh" 35 36 class G4PDGCodeChecker 37 { 38 public: 39 G4PDGCodeChecker(); 40 ~G4PDGCodeChecker() = default; 41 42 G4int CheckPDGCode(G4int code, const G4String& type); 43 44 inline G4int GetQuarkContent(G4int flavor) const; 45 inline G4int GetAntiQuarkContent(G4int flavor) const; 46 47 inline G4bool IsAntiParticle() const; 48 49 inline G4int GetQuarkFlavor(G4int idx) const; 50 51 inline G4int GetSpin() const; 52 inline G4int GetExotic() const; 53 inline G4int GetRadial() const; 54 inline G4int GetMultiplet() const; 55 56 G4bool CheckCharge(G4double charge) const; 57 58 inline G4int GetVerboseLevel() const; 59 inline void SetVerboseLevel(G4int verbose); 60 61 protected: 62 enum 63 { 64 NumberOfQuarkFlavor = 8 65 }; 66 67 private: 68 void GetDigits(G4int code); 69 G4int CheckForQuarks(); 70 G4int CheckForDiQuarks(); 71 G4int CheckForMesons(); 72 G4int CheckForBaryons(); 73 G4int CheckForNuclei(); 74 75 private: 76 G4int verboseLevel = 0; 77 78 G4int code = 0; 79 G4String theParticleType = ""; 80 81 G4int higherSpin = 0; 82 G4int exotic = 0; 83 G4int radial = 0; 84 G4int multiplet = 0; 85 G4int quark1 = 0; 86 G4int quark2 = 0; 87 G4int quark3 = 0; 88 G4int spin = 0; 89 90 G4int theQuarkContent[NumberOfQuarkFlavor]; 91 G4int theAntiQuarkContent[NumberOfQuarkFlavor]; 92 // The number of quark (minus Sign means anti-quark) contents 93 // The value of flavor is assigned as follows 94 // 0:d, 1:u, 2:s, 3:c, 95 // 4:b, 5:t, 6:l(down type quark) 7:h(up type quark) 96 }; 97 98 // ------------------------ 99 // Inline methods 100 // ------------------------ 101 102 inline G4int G4PDGCodeChecker::GetQuarkContent(G4int flavor) const 103 { 104 G4int value = 0; 105 if ((flavor >= 0) && (flavor < NumberOfQuarkFlavor)) { 106 value = theQuarkContent[flavor]; 107 } 108 return value; 109 } 110 111 inline G4int G4PDGCodeChecker::GetAntiQuarkContent(G4int flavor) const 112 { 113 G4int value = 0; 114 if ((flavor >= 0) && (flavor < NumberOfQuarkFlavor)) { 115 value = theAntiQuarkContent[flavor]; 116 } 117 return value; 118 } 119 120 inline G4int G4PDGCodeChecker::GetQuarkFlavor(G4int idx) const 121 { 122 G4int value; 123 if (idx == 0) 124 value = quark1; 125 else if (idx == 1) 126 value = quark2; 127 else if (idx == 2) 128 value = quark3; 129 else 130 value = -1; 131 return value; 132 } 133 134 inline G4int G4PDGCodeChecker::GetExotic() const 135 { 136 return exotic; 137 } 138 139 inline G4int G4PDGCodeChecker::GetRadial() const 140 { 141 return radial; 142 } 143 144 inline G4int G4PDGCodeChecker::GetMultiplet() const 145 { 146 return multiplet; 147 } 148 149 inline G4int G4PDGCodeChecker::GetSpin() const 150 { 151 return spin; 152 } 153 154 inline G4bool G4PDGCodeChecker::IsAntiParticle() const 155 { 156 return (code < 0); 157 } 158 159 inline void G4PDGCodeChecker::SetVerboseLevel(G4int value) 160 { 161 verboseLevel = value; 162 } 163 164 inline G4int G4PDGCodeChecker::GetVerboseLevel() const 165 { 166 return verboseLevel; 167 } 168 169 #endif 170