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 // 27 /// \file Par02PrimaryParticleInformation.hh 28 /// \brief Definition of the Par02PrimaryParticleInformation class 29 30 #ifndef PAR02_PRIMARY_PARTICLE_INFORMATION_H 31 #define PAR02_PRIMARY_PARTICLE_INFORMATION_H 32 33 #include "G4ThreeVector.hh" 34 #include "G4VUserPrimaryParticleInformation.hh" 35 #include "globals.hh" 36 37 /// Primary particle information 38 /// 39 /// Describes the information that can be associated with a G4PrimaryParticle 40 /// class object. 41 /// @author Anna Zaborowska 42 43 class Par02PrimaryParticleInformation : public G4VUserPrimaryParticleInformation 44 { 45 public: 46 /// A constructor. 47 /// @param aID A unique particle ID within event. 48 /// @param aPDG A PDG code of the particle. 49 /// @param aMomentum An initial particle momentum (at the primary vertex). 50 Par02PrimaryParticleInformation(G4int aID, G4int aPDG, G4ThreeVector aMomentum); 51 52 virtual ~Par02PrimaryParticleInformation(); 53 54 /// Prints the information about the particle. 55 virtual void Print() const; 56 57 /// Sets the initial particle momentum (from particle generator). 58 /// @param aMomentum The particle momentum. 59 inline void SetMCMomentum(G4ThreeVector aMomentum) { fMomentumMC = aMomentum; }; 60 61 /// Gets the initial particle momentum (from particle generator). 62 inline G4ThreeVector GetMCMomentum() { return fMomentumMC; }; 63 64 /// Sets the particle momentum at the entrance to the tracker detector. 65 /// @param aMomentum The particle momentum. 66 inline void SetTrackerMomentum(G4ThreeVector aMomentum) { fMomentumTracker = aMomentum; }; 67 68 /// Gets the particle momentum at the entrance to the tracker detector. 69 inline G4ThreeVector GetTrackerMomentum() { return fMomentumTracker; } 70 71 /// Sets the tracker detector resolution. 72 /// Currently equal to -1 if AtlFast type of smearing is used. 73 /// @param aResolution The detector resolution 74 /// (particle type and momentum dependent). 75 inline void SetTrackerResolution(G4double aResolution) { fResolutionTracker = aResolution; }; 76 77 /// Gets the tracking detector resolution. 78 /// Currently equal to -1 if AtlFast type of smearing is used. 79 inline G4double GetTrackerResolution() { return fResolutionTracker; }; 80 81 /// Sets the tracking detector efficiency. 82 /// Currently not used (efficiency is 1). 83 /// @param aEfficiency The detector efficiency. 84 inline void SetTrackerEfficiency(G4double aEfficiency) { fEfficiencyTracker = aEfficiency; }; 85 86 /// Gets the tracker detector efficiency. 87 /// Currently not used (efficiency is 1). 88 inline G4double GetTrackerEfficiency() { return fEfficiencyTracker; }; 89 90 /// Sets the position of the energy deposit in the electromagnetic calorimeter. 91 /// @param aPosition The position of the energy deposit. 92 inline void SetEMCalPosition(G4ThreeVector aPosition) { fPositionEMCal = aPosition; }; 93 94 /// Gets the position of the energy deposit in the electromagnetic calorimeter. 95 inline G4ThreeVector GetEMCalPosition() { return fPositionEMCal; }; 96 97 /// Sets the energy deposit in the electromagnetic calorimeter. 98 /// @param aEnergy The energy deposited in the detector. 99 inline void SetEMCalEnergy(G4double aEnergy) { fEnergyEMCal = aEnergy; }; 100 101 /// Sets the energy deposit in the electromagnetic calorimeter. 102 inline G4double GetEMCalEnergy() { return fEnergyEMCal; }; 103 104 /// Sets the electromagnetic calorimeter resolution. 105 /// Currently equal to -1 if AtlFast type of smearing is used. 106 /// @param aResolution The calorimeter resolution 107 /// (particle type and momentum dependent). 108 inline void SetEMCalResolution(G4double aResolution) { fResolutionEMCal = aResolution; }; 109 110 /// Gets the electromagnetic calorimeter resolution. 111 /// Currently equal to -1 if AtlFast type of smearing is used. 112 inline G4double GetEMCalResolution() { return fResolutionEMCal; }; 113 114 /// Sets the electromagnetic calorimeter efficiency. 115 /// Currently not used (efficiency is 1). 116 /// @param aEfficiency The detector efficiency. 117 inline void SetEMCalEfficiency(G4double aEfficiency) { fEfficiencyEMCal = aEfficiency; }; 118 119 /// Gets the electromagnetic calorimeter efficiency. 120 /// Currently not used (efficiency is 1). 121 inline G4double GetEMCalEfficiency() { return fEfficiencyEMCal; }; 122 123 /// Sets the position of the energy deposit in the hadronic calorimeter. 124 /// @param aPosition The position of the energy deposit. 125 inline void SetHCalPosition(G4ThreeVector aPosition) { fPositionHCal = aPosition; }; 126 127 /// Gets the position of the energy deposit in the hadronic calorimeter. 128 inline G4ThreeVector GetHCalPosition() { return fPositionHCal; }; 129 130 /// Sets the energy deposit in the hadronic calorimeter. 131 /// @param aEnergy The energy deposited in the detector. 132 inline void SetHCalEnergy(G4double aEnergy) { fEnergyHCal = aEnergy; }; 133 134 /// Sets the energy deposit in the hadronic calorimeter. 135 inline G4double GetHCalEnergy() { return fEnergyHCal; }; 136 137 /// Sets the hadronic calorimeter resolution. 138 /// Currently equal to -1 if AtlFast type of smearing is used. 139 /// @param aResolution The calorimeter resolution 140 /// (particle type and momentum dependent). 141 inline void SetHCalResolution(G4double aResolution) { fResolutionHCal = aResolution; }; 142 143 /// Gets the hadronic calorimeter resolution. 144 /// Currently equal to -1 if AtlFast type of smearing is used. 145 inline G4double GetHCalResolution() { return fResolutionHCal; }; 146 147 /// Sets the hadronic calorimeter efficiency. 148 /// Currently not used (efficiency is 1). 149 /// @param aEfficiency The detector efficiency. 150 inline void SetHCalEfficiency(G4double aEfficiency) { fEfficiencyHCal = aEfficiency; }; 151 152 /// Gets the hadronic calorimeter efficiency. 153 /// Currently not used (efficiency is 1). 154 inline G4double GetHCalEfficiency() { return fEfficiencyHCal; }; 155 156 /// Gets the particle unique ID (within event). Can be set only in the constructor. 157 inline G4int GetPartID() const { return fPartID; }; 158 159 /// Gets the standard PDG code. Can be set only in the constructor. 160 inline G4int GetPDG() const { return fPDG; }; 161 162 private: 163 /// A particle unique ID. 164 G4int fPartID; 165 166 /// A particle type (PDG code). 167 G4int fPDG; 168 169 /// A particle initial momentum (from particle generator). 170 G4ThreeVector fMomentumMC; 171 172 /// A particle momentum at the entrance to the tracking detector. 173 G4ThreeVector fMomentumTracker; 174 175 /// A resolution of the tracking detector. 176 G4double fResolutionTracker; 177 178 /// An efficiency of the tracking detector. 179 /// Currently not used (equal to 1). 180 G4double fEfficiencyTracker; 181 182 /// A position of the energy deposited in the electromagnetic calorimeter. 183 G4ThreeVector fPositionEMCal; 184 185 /// An energy deposited in the electromagnetic calorimeter. 186 G4double fEnergyEMCal; 187 188 /// The resolution of the electromagnetic calorimeter. 189 G4double fResolutionEMCal; 190 191 /// The efficiency of the electromagnetic calorimeter. 192 /// Currently not used (equal to 1). 193 G4double fEfficiencyEMCal; 194 195 /// A position of the energy deposited in the hadronic calorimeter. 196 G4ThreeVector fPositionHCal; 197 198 /// An energy deposited in the hadronic calorimeter. 199 G4double fEnergyHCal; 200 201 /// The resolution of the hadronic calorimeter. 202 G4double fResolutionHCal; 203 204 /// The efficiency of the hadronic calorimeter. 205 /// Currently not used (equal to 1). 206 G4double fEfficiencyHCal; 207 }; 208 209 #endif 210