Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-23 09:22:32

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 //
0027 /// \file Par02PrimaryParticleInformation.hh
0028 /// \brief Definition of the Par02PrimaryParticleInformation class
0029 
0030 #ifndef PAR02_PRIMARY_PARTICLE_INFORMATION_H
0031 #define PAR02_PRIMARY_PARTICLE_INFORMATION_H
0032 
0033 #include "G4ThreeVector.hh"
0034 #include "G4VUserPrimaryParticleInformation.hh"
0035 #include "globals.hh"
0036 
0037 /// Primary particle information
0038 ///
0039 /// Describes the information that can be associated with a G4PrimaryParticle
0040 /// class object.
0041 /// @author Anna Zaborowska
0042 
0043 class Par02PrimaryParticleInformation : public G4VUserPrimaryParticleInformation
0044 {
0045   public:
0046     /// A constructor.
0047     /// @param aID A unique particle ID within event.
0048     /// @param aPDG A PDG code of the particle.
0049     /// @param aMomentum An initial particle momentum (at the primary vertex).
0050     Par02PrimaryParticleInformation(G4int aID, G4int aPDG, G4ThreeVector aMomentum);
0051 
0052     virtual ~Par02PrimaryParticleInformation();
0053 
0054     /// Prints the information about the particle.
0055     virtual void Print() const;
0056 
0057     /// Sets the initial particle momentum (from particle generator).
0058     /// @param aMomentum The particle momentum.
0059     inline void SetMCMomentum(G4ThreeVector aMomentum) { fMomentumMC = aMomentum; };
0060 
0061     /// Gets the initial particle momentum (from particle generator).
0062     inline G4ThreeVector GetMCMomentum() { return fMomentumMC; };
0063 
0064     /// Sets the particle momentum at the entrance to the tracker detector.
0065     /// @param aMomentum The particle momentum.
0066     inline void SetTrackerMomentum(G4ThreeVector aMomentum) { fMomentumTracker = aMomentum; };
0067 
0068     /// Gets the particle momentum at the entrance to the tracker detector.
0069     inline G4ThreeVector GetTrackerMomentum() { return fMomentumTracker; }
0070 
0071     /// Sets the tracker detector resolution.
0072     /// Currently equal to -1 if AtlFast type of smearing is used.
0073     /// @param aResolution The detector resolution
0074     ///                    (particle type and momentum dependent).
0075     inline void SetTrackerResolution(G4double aResolution) { fResolutionTracker = aResolution; };
0076 
0077     /// Gets the tracking detector resolution.
0078     /// Currently equal to -1 if AtlFast type of smearing is used.
0079     inline G4double GetTrackerResolution() { return fResolutionTracker; };
0080 
0081     /// Sets the tracking detector efficiency.
0082     /// Currently not used (efficiency is 1).
0083     /// @param aEfficiency The detector efficiency.
0084     inline void SetTrackerEfficiency(G4double aEfficiency) { fEfficiencyTracker = aEfficiency; };
0085 
0086     /// Gets the tracker detector efficiency.
0087     /// Currently not used (efficiency is 1).
0088     inline G4double GetTrackerEfficiency() { return fEfficiencyTracker; };
0089 
0090     /// Sets the position of the energy deposit in the electromagnetic calorimeter.
0091     /// @param aPosition The position of the energy deposit.
0092     inline void SetEMCalPosition(G4ThreeVector aPosition) { fPositionEMCal = aPosition; };
0093 
0094     /// Gets the position of the energy deposit in the electromagnetic calorimeter.
0095     inline G4ThreeVector GetEMCalPosition() { return fPositionEMCal; };
0096 
0097     /// Sets the energy deposit in the electromagnetic calorimeter.
0098     /// @param aEnergy The energy deposited in the detector.
0099     inline void SetEMCalEnergy(G4double aEnergy) { fEnergyEMCal = aEnergy; };
0100 
0101     /// Sets the energy deposit in the electromagnetic calorimeter.
0102     inline G4double GetEMCalEnergy() { return fEnergyEMCal; };
0103 
0104     /// Sets the electromagnetic calorimeter resolution.
0105     /// Currently equal to -1 if AtlFast type of smearing is used.
0106     /// @param aResolution The calorimeter resolution
0107     ///                    (particle type and momentum dependent).
0108     inline void SetEMCalResolution(G4double aResolution) { fResolutionEMCal = aResolution; };
0109 
0110     /// Gets the electromagnetic calorimeter resolution.
0111     /// Currently equal to -1 if AtlFast type of smearing is used.
0112     inline G4double GetEMCalResolution() { return fResolutionEMCal; };
0113 
0114     /// Sets the electromagnetic calorimeter efficiency.
0115     /// Currently not used (efficiency is 1).
0116     /// @param aEfficiency The detector efficiency.
0117     inline void SetEMCalEfficiency(G4double aEfficiency) { fEfficiencyEMCal = aEfficiency; };
0118 
0119     /// Gets the electromagnetic calorimeter efficiency.
0120     /// Currently not used (efficiency is 1).
0121     inline G4double GetEMCalEfficiency() { return fEfficiencyEMCal; };
0122 
0123     /// Sets the position of the energy deposit in the hadronic calorimeter.
0124     /// @param aPosition The position of the energy deposit.
0125     inline void SetHCalPosition(G4ThreeVector aPosition) { fPositionHCal = aPosition; };
0126 
0127     /// Gets the position of the energy deposit in the hadronic calorimeter.
0128     inline G4ThreeVector GetHCalPosition() { return fPositionHCal; };
0129 
0130     /// Sets the energy deposit in the hadronic calorimeter.
0131     /// @param aEnergy The energy deposited in the detector.
0132     inline void SetHCalEnergy(G4double aEnergy) { fEnergyHCal = aEnergy; };
0133 
0134     /// Sets the energy deposit in the hadronic calorimeter.
0135     inline G4double GetHCalEnergy() { return fEnergyHCal; };
0136 
0137     /// Sets the hadronic calorimeter resolution.
0138     /// Currently equal to -1 if AtlFast type of smearing is used.
0139     /// @param aResolution The calorimeter resolution
0140     ///                    (particle type and momentum dependent).
0141     inline void SetHCalResolution(G4double aResolution) { fResolutionHCal = aResolution; };
0142 
0143     /// Gets the hadronic calorimeter resolution.
0144     /// Currently equal to -1 if AtlFast type of smearing is used.
0145     inline G4double GetHCalResolution() { return fResolutionHCal; };
0146 
0147     /// Sets the hadronic calorimeter efficiency.
0148     /// Currently not used (efficiency is 1).
0149     /// @param aEfficiency The detector efficiency.
0150     inline void SetHCalEfficiency(G4double aEfficiency) { fEfficiencyHCal = aEfficiency; };
0151 
0152     /// Gets the hadronic calorimeter efficiency.
0153     /// Currently not used (efficiency is 1).
0154     inline G4double GetHCalEfficiency() { return fEfficiencyHCal; };
0155 
0156     /// Gets the particle unique ID (within event). Can be set only in the constructor.
0157     inline G4int GetPartID() const { return fPartID; };
0158 
0159     /// Gets the standard PDG code. Can be set only in the constructor.
0160     inline G4int GetPDG() const { return fPDG; };
0161 
0162   private:
0163     /// A particle unique ID.
0164     G4int fPartID;
0165 
0166     /// A particle type (PDG code).
0167     G4int fPDG;
0168 
0169     /// A particle initial momentum (from particle generator).
0170     G4ThreeVector fMomentumMC;
0171 
0172     /// A particle momentum at the entrance to the tracking detector.
0173     G4ThreeVector fMomentumTracker;
0174 
0175     /// A resolution of the tracking detector.
0176     G4double fResolutionTracker;
0177 
0178     /// An efficiency of the tracking detector.
0179     /// Currently not used (equal to 1).
0180     G4double fEfficiencyTracker;
0181 
0182     /// A position of the energy deposited in the electromagnetic calorimeter.
0183     G4ThreeVector fPositionEMCal;
0184 
0185     /// An energy deposited in the electromagnetic calorimeter.
0186     G4double fEnergyEMCal;
0187 
0188     /// The resolution of the electromagnetic calorimeter.
0189     G4double fResolutionEMCal;
0190 
0191     /// The efficiency of the electromagnetic calorimeter.
0192     /// Currently not used (equal to 1).
0193     G4double fEfficiencyEMCal;
0194 
0195     /// A position of the energy deposited in the hadronic calorimeter.
0196     G4ThreeVector fPositionHCal;
0197 
0198     /// An energy deposited in the hadronic calorimeter.
0199     G4double fEnergyHCal;
0200 
0201     /// The resolution of the hadronic calorimeter.
0202     G4double fResolutionHCal;
0203 
0204     /// The efficiency of the hadronic calorimeter.
0205     /// Currently not used (equal to 1).
0206     G4double fEfficiencyHCal;
0207 };
0208 
0209 #endif