Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/gammaray_telescope/include/GammaRayTelDigi.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 // ------------------------------------------------------------
 28 //      GEANT 4 class header file
 29 //      CERN Geneva Switzerland
 30 //
 31 //
 32 //      ------------ GammaRayTelDigi ------
 33 //           by F.Longo, R.Giannitrapani & G.Santin (24 oct 2001)
 34 //
 35 // ************************************************************
 36 
 37 // This Class describe the digits 
 38 
 39 #ifndef GammaRayTelDigi_h
 40 #define GammaRayTelDigi_h 1
 41 
 42 #include "G4VDigi.hh"
 43 #include "G4TDigiCollection.hh"
 44 #include "G4Allocator.hh"
 45 #include "G4ThreeVector.hh"
 46 
 47 class GammaRayTelDigi: public G4VDigi {
 48 public:
 49   explicit GammaRayTelDigi();
 50 
 51   ~GammaRayTelDigi() override;
 52 
 53   GammaRayTelDigi(const GammaRayTelDigi&);
 54 
 55   auto operator=(const GammaRayTelDigi& right) -> const GammaRayTelDigi&;
 56 
 57   auto operator==(const GammaRayTelDigi &right) const -> G4bool;
 58 
 59   inline auto operator new(size_t) -> void*;
 60 
 61   inline auto operator delete(void *digit) -> void;
 62 
 63   void Draw() override;
 64 
 65   void Print() override;
 66 
 67   inline void SetPlaneNumber(G4int value) {
 68     planeNumber = value;
 69   }
 70 
 71   inline void SetPlaneType(G4int value) {
 72     planeType = value;
 73   }
 74 
 75   inline void SetStripNumber(G4int value) {
 76     stripNumber = value;
 77   }
 78 
 79   inline void SetDigitType(G4int value) {
 80     digitType = value;
 81   }
 82 
 83   inline void SetEnergy(G4double value) {
 84     energy = value;
 85   }
 86 
 87   [[nodiscard]]
 88   inline auto GetPlaneNumber() const -> G4int {
 89     return planeNumber;
 90   }
 91 
 92   [[nodiscard]]
 93   inline auto GetPlaneType() const -> G4int {
 94     return planeType;
 95   }
 96 
 97   [[nodiscard]]
 98   inline auto GetStripNumber() const -> G4int {
 99     return stripNumber;
100   }
101 
102   [[nodiscard]]
103   inline auto GetDigitType() const -> G4int {
104     return digitType;
105   }
106 
107   [[nodiscard]]
108   inline auto GetEnergy() const -> G4double {
109     return energy;
110   }
111 
112 private:
113     G4int planeType{0}; // (0: X plane, 1: Y plane)
114 
115     G4int planeNumber{0}; //  (active detector)
116 
117     G4int stripNumber{0}; // strip number
118 
119     G4int digitType{0}; // (0: TKR, 1: CAL, 2: ACD)
120 
121     G4double energy{0.}; // only for CAL
122 };
123 
124 using GammaRayTelDigitsCollection = G4TDigiCollection<GammaRayTelDigi>;
125 extern G4ThreadLocal G4Allocator<GammaRayTelDigi> *digitAllocator;
126 
127 inline auto GammaRayTelDigi::operator new(size_t) -> void* {
128   if (digitAllocator == nullptr) {
129       digitAllocator = new G4Allocator<GammaRayTelDigi>;
130   }
131   return (void*) digitAllocator->MallocSingle();
132 }
133 
134 inline auto GammaRayTelDigi::operator delete(void *digit) -> void {
135     digitAllocator->FreeSingle((GammaRayTelDigi*) digit);
136 }
137 #endif
138