Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-14 08:29:00

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 /// \file Par02PrimaryParticleInformation.hh
0027 /// \brief Definition of the Par02PrimaryParticleInformation class
0028 
0029 #ifndef PAR02_PRIMARY_PARTICLE_INFORMATION_H
0030 #define PAR02_PRIMARY_PARTICLE_INFORMATION_H
0031 
0032 #include "G4ThreeVector.hh"
0033 #include "G4VUserPrimaryParticleInformation.hh"
0034 #include "globals.hh"
0035 
0036 /// Primary particle information
0037 ///
0038 /// Describes the information that can be associated with a G4PrimaryParticle
0039 /// class object.
0040 /// @author Anna Zaborowska
0041 
0042 class Par02PrimaryParticleInformation : public G4VUserPrimaryParticleInformation
0043 {
0044   public:
0045     /// A constructor.
0046     /// @param aID A unique particle ID within event.
0047     /// @param aPDG A PDG code of the particle.
0048     /// @param aMomentum An initial particle momentum (at the primary vertex).
0049     Par02PrimaryParticleInformation(G4int aID, G4int aPDG, G4ThreeVector aMomentum);
0050 
0051     virtual ~Par02PrimaryParticleInformation();
0052 
0053     /// Prints the information about the particle.
0054     virtual void Print() const;
0055 
0056     /// Sets the initial particle momentum (from particle generator).
0057     /// @param aMomentum The particle momentum.
0058     inline void SetMCMomentum(G4ThreeVector aMomentum) { fMomentumMC = aMomentum; };
0059 
0060     /// Gets the initial particle momentum (from particle generator).
0061     inline G4ThreeVector GetMCMomentum() { return fMomentumMC; };
0062 
0063     /// Sets the particle momentum at the entrance to the tracker detector.
0064     /// @param aMomentum The particle momentum.
0065     inline void SetTrackerMomentum(G4ThreeVector aMomentum) { fMomentumTracker = aMomentum; };
0066 
0067     /// Gets the particle momentum at the entrance to the tracker detector.
0068     inline G4ThreeVector GetTrackerMomentum() { return fMomentumTracker; }
0069 
0070     /// Sets the tracker detector resolution.
0071     /// Currently equal to -1 if AtlFast type of smearing is used.
0072     /// @param aResolution The detector resolution
0073     ///                    (particle type and momentum dependent).
0074     inline void SetTrackerResolution(G4double aResolution) { fResolutionTracker = aResolution; };
0075 
0076     /// Gets the tracking detector resolution.
0077     /// Currently equal to -1 if AtlFast type of smearing is used.
0078     inline G4double GetTrackerResolution() { return fResolutionTracker; };
0079 
0080     /// Sets the tracking detector efficiency.
0081     /// Currently not used (efficiency is 1).
0082     /// @param aEfficiency The detector efficiency.
0083     inline void SetTrackerEfficiency(G4double aEfficiency) { fEfficiencyTracker = aEfficiency; };
0084 
0085     /// Gets the tracker detector efficiency.
0086     /// Currently not used (efficiency is 1).
0087     inline G4double GetTrackerEfficiency() { return fEfficiencyTracker; };
0088 
0089     /// Sets the position of the energy deposit in the electromagnetic calorimeter.
0090     /// @param aPosition The position of the energy deposit.
0091     inline void SetEMCalPosition(G4ThreeVector aPosition) { fPositionEMCal = aPosition; };
0092 
0093     /// Gets the position of the energy deposit in the electromagnetic calorimeter.
0094     inline G4ThreeVector GetEMCalPosition() { return fPositionEMCal; };
0095 
0096     /// Sets the energy deposit in the electromagnetic calorimeter.
0097     /// @param aEnergy The energy deposited in the detector.
0098     inline void SetEMCalEnergy(G4double aEnergy) { fEnergyEMCal = aEnergy; };
0099 
0100     /// Sets the energy deposit in the electromagnetic calorimeter.
0101     inline G4double GetEMCalEnergy() { return fEnergyEMCal; };
0102 
0103     /// Sets the electromagnetic calorimeter resolution.
0104     /// Currently equal to -1 if AtlFast type of smearing is used.
0105     /// @param aResolution The calorimeter resolution
0106     ///                    (particle type and momentum dependent).
0107     inline void SetEMCalResolution(G4double aResolution) { fResolutionEMCal = aResolution; };
0108 
0109     /// Gets the electromagnetic calorimeter resolution.
0110     /// Currently equal to -1 if AtlFast type of smearing is used.
0111     inline G4double GetEMCalResolution() { return fResolutionEMCal; };
0112 
0113     /// Sets the electromagnetic calorimeter efficiency.
0114     /// Currently not used (efficiency is 1).
0115     /// @param aEfficiency The detector efficiency.
0116     inline void SetEMCalEfficiency(G4double aEfficiency) { fEfficiencyEMCal = aEfficiency; };
0117 
0118     /// Gets the electromagnetic calorimeter efficiency.
0119     /// Currently not used (efficiency is 1).
0120     inline G4double GetEMCalEfficiency() { return fEfficiencyEMCal; };
0121 
0122     /// Sets the position of the energy deposit in the hadronic calorimeter.
0123     /// @param aPosition The position of the energy deposit.
0124     inline void SetHCalPosition(G4ThreeVector aPosition) { fPositionHCal = aPosition; };
0125 
0126     /// Gets the position of the energy deposit in the hadronic calorimeter.
0127     inline G4ThreeVector GetHCalPosition() { return fPositionHCal; };
0128 
0129     /// Sets the energy deposit in the hadronic calorimeter.
0130     /// @param aEnergy The energy deposited in the detector.
0131     inline void SetHCalEnergy(G4double aEnergy) { fEnergyHCal = aEnergy; };
0132 
0133     /// Sets the energy deposit in the hadronic calorimeter.
0134     inline G4double GetHCalEnergy() { return fEnergyHCal; };
0135 
0136     /// Sets the hadronic calorimeter resolution.
0137     /// Currently equal to -1 if AtlFast type of smearing is used.
0138     /// @param aResolution The calorimeter resolution
0139     ///                    (particle type and momentum dependent).
0140     inline void SetHCalResolution(G4double aResolution) { fResolutionHCal = aResolution; };
0141 
0142     /// Gets the hadronic calorimeter resolution.
0143     /// Currently equal to -1 if AtlFast type of smearing is used.
0144     inline G4double GetHCalResolution() { return fResolutionHCal; };
0145 
0146     /// Sets the hadronic calorimeter efficiency.
0147     /// Currently not used (efficiency is 1).
0148     /// @param aEfficiency The detector efficiency.
0149     inline void SetHCalEfficiency(G4double aEfficiency) { fEfficiencyHCal = aEfficiency; };
0150 
0151     /// Gets the hadronic calorimeter efficiency.
0152     /// Currently not used (efficiency is 1).
0153     inline G4double GetHCalEfficiency() { return fEfficiencyHCal; };
0154 
0155     /// Gets the particle unique ID (within event). Can be set only in the constructor.
0156     inline G4int GetPartID() const { return fPartID; };
0157 
0158     /// Gets the standard PDG code. Can be set only in the constructor.
0159     inline G4int GetPDG() const { return fPDG; };
0160 
0161   private:
0162     /// A particle unique ID.
0163     G4int fPartID;
0164 
0165     /// A particle type (PDG code).
0166     G4int fPDG;
0167 
0168     /// A particle initial momentum (from particle generator).
0169     G4ThreeVector fMomentumMC;
0170 
0171     /// A particle momentum at the entrance to the tracking detector.
0172     G4ThreeVector fMomentumTracker;
0173 
0174     /// A resolution of the tracking detector.
0175     G4double fResolutionTracker;
0176 
0177     /// An efficiency of the tracking detector.
0178     /// Currently not used (equal to 1).
0179     G4double fEfficiencyTracker;
0180 
0181     /// A position of the energy deposited in the electromagnetic calorimeter.
0182     G4ThreeVector fPositionEMCal;
0183 
0184     /// An energy deposited in the electromagnetic calorimeter.
0185     G4double fEnergyEMCal;
0186 
0187     /// The resolution of the electromagnetic calorimeter.
0188     G4double fResolutionEMCal;
0189 
0190     /// The efficiency of the electromagnetic calorimeter.
0191     /// Currently not used (equal to 1).
0192     G4double fEfficiencyEMCal;
0193 
0194     /// A position of the energy deposited in the hadronic calorimeter.
0195     G4ThreeVector fPositionHCal;
0196 
0197     /// An energy deposited in the hadronic calorimeter.
0198     G4double fEnergyHCal;
0199 
0200     /// The resolution of the hadronic calorimeter.
0201     G4double fResolutionHCal;
0202 
0203     /// The efficiency of the hadronic calorimeter.
0204     /// Currently not used (equal to 1).
0205     G4double fEfficiencyHCal;
0206 };
0207 
0208 #endif