DD4hep - The AIDA detector description toolkit for high energy physics experiments
DD4hep  Rev:Unversioneddirectory
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Geant4Hits.h
Go to the documentation of this file.
1 // $Id$
2 //==========================================================================
3 // AIDA Detector description implementation for LCD
4 //--------------------------------------------------------------------------
5 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
6 // All rights reserved.
7 //
8 // For the licensing terms see $DD4hepINSTALL/LICENSE.
9 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
10 //
11 // Author : M.Frank
12 //
13 //==========================================================================
14 
15 #ifndef DD4HEP_GEANT4HITS_H
16 #define DD4HEP_GEANT4HITS_H
17 
18 // Framework include files
19 #include "DD4hep/Objects.h"
20 #include "DDG4/Geant4StepHandler.h"
21 
22 // Geant4 include files
23 #include "G4VHit.hh"
24 #include "G4Step.hh"
25 #include "G4StepPoint.hh"
26 
28 namespace DD4hep {
29 
31  namespace Simulation {
32 
33  // Forward declarations;
34  class Geant4Hit;
35  class Geant4TrackerHit;
36  class Geant4CalorimeterHit;
37 
39 
44  template <class HIT> class HitCompare {
45  public:
47  virtual ~HitCompare() {}
49  virtual bool operator()(const HIT* h) const = 0;
50  };
51 
53 
58  template <class HIT> struct HitPositionCompare: public HitCompare<HIT> {
59  const Position& pos;
61  HitPositionCompare(const Position& p) : pos(p) {}
63  virtual ~HitPositionCompare() {}
65  virtual bool operator()(const HIT* h) const {
66  return pos == h->position;
67  }
68  };
69 
71 
80  class Geant4Hit: public G4VHit {
81  public:
82 
83  // cellID
84  unsigned long cellID = 0;
85 
89  int trackID = -1;
91  int pdgID = -1;
93  double deposit = 0.0;
95  double time = 0.0;
97  MonteCarloContrib() = default;
99  MonteCarloContrib(const MonteCarloContrib& c) = default;
101  MonteCarloContrib(int track_id, double dep, double time_stamp)
102  : trackID(track_id), pdgID(-1), deposit(dep), time(time_stamp) {}
104  MonteCarloContrib(int track_id, int pdg, double dep, double time_stamp)
105  : trackID(track_id), pdgID(pdg), deposit(dep), time(time_stamp) {}
107  MonteCarloContrib& operator=(const MonteCarloContrib& c) = default;
109  void clear() {
110  time = deposit = 0.0;
111  pdgID = trackID = -1;
112  }
113  };
115  typedef std::vector<MonteCarloContrib> Contributions;
116 
117  public:
119  Geant4Hit() = default;
121  virtual ~Geant4Hit() { }
123  static bool isGeantino(G4Track* track);
125  static Contribution extractContribution(G4Step* step);
126  };
127 
129 
137  class Geant4TrackerHit: public Geant4Hit {
138  public:
144  double length;
147 
149 
150  public:
154  Geant4TrackerHit(int track_id, int pdg_id, double deposit, double time_stamp);
156  virtual ~Geant4TrackerHit() {}
160  Geant4TrackerHit& storePoint(G4Step* step, G4StepPoint* point);
161 
165  void *operator new(size_t);
167  void operator delete(void *ptr);
168  };
169 
171 
180  public:
187  public:
189  Geant4CalorimeterHit(const Position& cell_pos);
191  virtual ~Geant4CalorimeterHit() { }
193  void *operator new(size_t);
195  void operator delete(void *ptr);
196  };
197 
198  } // End namespace Simulation
199 } // End namespace DD4hep
200 
201 #endif // DD4HEP_GEANT4HITS_H
int pdgID
Particle ID from the PDG table.
Definition: Geant4Hits.h:91
std::vector< MonteCarloContrib > Contributions
Definition: Geant4Hits.h:115
Position position
Hit position.
Definition: Geant4Hits.h:140
Geant4Hit()=default
Standard constructor.
Deprecated: Base class for hit comparisons.
Definition: Geant4Hits.h:44
Geant4TrackerHit & clear()
Clear hit content.
Definition: Geant4Hits.cpp:80
Direction momentum
Hit direction.
Definition: Geant4Hits.h:142
virtual ~Geant4CalorimeterHit()
Default destructor.
Definition: Geant4Hits.h:191
double deposit
Total energy deposit in this hit.
Definition: Geant4Hits.h:93
Deprecated: Seek the hits of an arbitrary collection for the same position.
Definition: Geant4Hits.h:58
Class of the Geant4 toolkit. See http://www-geant4.kek.jp/Reference.
Definition: Geant4Classes.h:36
double energyDeposit
Total energy deposit.
Definition: Geant4Hits.h:186
virtual ~HitCompare()
Default destructor.
Definition: Geant4Hits.h:47
Deprecated: Geant4 calorimeter hit class for deprecated sensitive detectors.
Definition: Geant4Hits.h:179
MonteCarloContrib()=default
Default constructor.
virtual ~Geant4Hit()
Default destructor.
Definition: Geant4Hits.h:121
MonteCarloContrib(int track_id, int pdg, double dep, double time_stamp)
Initializing constructor.
Definition: Geant4Hits.h:104
Geant4TrackerHit & operator=(const Geant4TrackerHit &c)
Assignment operator.
Definition: Geant4Hits.cpp:68
Contributions truth
Hit contributions by individual particles.
Definition: Geant4Hits.h:184
Geant4TrackerHit & storePoint(G4Step *step, G4StepPoint *point)
Store Geant4 point and step information into tracker hit structure.
Definition: Geant4Hits.cpp:90
static bool isGeantino(G4Track *track)
Check if the Geant4 track is a Geantino.
Definition: Geant4Hits.cpp:36
Contribution truth
Monte Carlo / Geant4 information.
Definition: Geant4Hits.h:146
ROOT::Math::XYZVector Position
Definition: Objects.h:75
HitPositionCompare(const Position &p)
Constructor.
Definition: Geant4Hits.h:61
Position Direction
Definition: Fields.h:31
MonteCarloContrib(int track_id, double dep, double time_stamp)
Initializing constructor.
Definition: Geant4Hits.h:101
int trackID
Geant 4 Track identifier.
Definition: Geant4Hits.h:89
Deprecated: Geant4 tracker hit class for deprecated sensitive detectors.
Definition: Geant4Hits.h:137
double length
Length of the track segment contributing to this hit.
Definition: Geant4Hits.h:144
virtual bool operator()(const HIT *h) const
Comparison function.
Definition: Geant4Hits.h:65
virtual bool operator()(const HIT *h) const =0
Comparison function.
MonteCarloContrib Contribution
Definition: Geant4Hits.h:114
virtual ~HitPositionCompare()
Default destructor.
Definition: Geant4Hits.h:63
virtual ~Geant4TrackerHit()
Default destructor.
Definition: Geant4Hits.h:156
MonteCarloContrib & operator=(const MonteCarloContrib &c)=default
Assignment operator.
double time
Timestamp when this energy was deposited.
Definition: Geant4Hits.h:95
Deprecated: basic geant4 hit class for deprecated sensitive detectors.
Definition: Geant4Hits.h:80
static Contribution extractContribution(G4Step *step)
Extract the MC contribution for a given hit from the step information.
Definition: Geant4Hits.cpp:48
Geant4CalorimeterHit(const Position &cell_pos)
Standard constructor.
Definition: Geant4Hits.cpp:120
Geant4TrackerHit()
Default constructor.
Definition: Geant4Hits.cpp:58