File indexing completed on 2026-05-04 08:06:39
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifndef F02CalorHit_h
0030 #define F02CalorHit_h 1
0031
0032 #include "G4Allocator.hh"
0033 #include "G4THitsCollection.hh"
0034 #include "G4VHit.hh"
0035
0036
0037
0038 class F02CalorHit : public G4VHit
0039 {
0040 public:
0041 F02CalorHit() = default;
0042 F02CalorHit(const F02CalorHit&);
0043 ~F02CalorHit() override = default;
0044
0045 const F02CalorHit& operator=(const F02CalorHit&);
0046 G4bool operator==(const F02CalorHit&) const;
0047
0048 inline void* operator new(size_t);
0049 inline void operator delete(void*);
0050
0051 void Print() override;
0052
0053 public:
0054 void AddAbs(G4double de, G4double dl)
0055 {
0056 fEdepAbs += de;
0057 fTrackLengthAbs += dl;
0058 };
0059 void AddGap(G4double de, G4double dl)
0060 {
0061 fEdepGap += de;
0062 fTrackLengthGap += dl;
0063 };
0064
0065 G4double GetEdepAbs() { return fEdepAbs; };
0066 G4double GetTrackAbs() { return fTrackLengthAbs; };
0067 G4double GetEdepGap() { return fEdepGap; };
0068 G4double GetTrackGap() { return fTrackLengthGap; };
0069
0070 private:
0071 G4double fEdepAbs = 0.;
0072 G4double fTrackLengthAbs = 0.;
0073 G4double fEdepGap = 0.;
0074 G4double fTrackLengthGap = 0.;
0075 };
0076
0077
0078
0079 using F02CalorHitsCollection = G4THitsCollection<F02CalorHit>;
0080
0081 extern G4ThreadLocal G4Allocator<F02CalorHit>* F02CalorHitAllocator;
0082
0083
0084
0085 inline void* F02CalorHit::operator new(size_t)
0086 {
0087 if (!F02CalorHitAllocator) F02CalorHitAllocator = new G4Allocator<F02CalorHit>;
0088 return (void*)F02CalorHitAllocator->MallocSingle();
0089 }
0090
0091
0092
0093 inline void F02CalorHit::operator delete(void* aHit)
0094 {
0095 F02CalorHitAllocator->FreeSingle((F02CalorHit*)aHit);
0096 }
0097
0098 #endif