ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4VPrimitiveScorer.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4VPrimitiveScorer.hh
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
29
#ifndef G4VPrimitiveScorer_h
30
#define G4VPrimitiveScorer_h 1
31
32
class
G4Step
;
33
class
G4HCofThisEvent
;
34
class
G4TouchableHistory
;
35
#include "
globals.hh
"
36
#include "
G4VSDFilter.hh
"
37
#include "
G4MultiFunctionalDetector.hh
"
38
39
// class description:
40
//
41
// This is the base class of the sensitive detector which owns
42
// only one hits collection.
43
// A concrete class object derived from this base class can be
44
// used either as a sensitive detector or to be registered to
45
// G4MultiFunctionalDetector to define multiple functionalities.
46
//
47
//
48
49
class
G4VPrimitiveScorer
50
{
51
friend
class
G4MultiFunctionalDetector
;
52
53
public
:
// with description
54
G4VPrimitiveScorer
(
G4String
name
,
G4int
depth=0);
55
virtual
~G4VPrimitiveScorer
();
56
57
protected
:
// with description
58
virtual
G4bool
ProcessHits
(
G4Step
*,
G4TouchableHistory
*)=0;
59
// This is the method must be implemented in each concrete class.
60
61
virtual
G4int
GetIndex
(
G4Step
*);
62
// This is a function mapping from copy number(s) to an index of
63
// the hit collection. In the default implementation, just the
64
// copy number of the physical volume is taken.
65
66
public
:
// with description
67
G4int
GetCollectionID
(
G4int
);
68
// This method returns the ID of its hitsCollection. This mehod
69
// gives valid value only after it is registered to G4MultiFunctionalDetector
70
// and the G4MultiFunctionalDetector is registered to G4SDManager.
71
72
virtual
void
Initialize
(
G4HCofThisEvent
*);
73
virtual
void
EndOfEvent
(
G4HCofThisEvent
*);
74
virtual
void
clear
();
75
virtual
void
DrawAll
();
76
virtual
void
PrintAll
();
77
// These five methods are exactly identical to those in G4VSensitiveDetector.
78
// These methods are invoked by G4SDManager through G4MultiFunctionalDetector.
79
80
void
SetUnit
(
const
G4String
& unit) {
unitName
= unit; }
81
const
G4String
&
GetUnit
()
const
{
return
unitName
; }
82
G4double
GetUnitValue
()
const
{
return
unitValue
; }
83
84
protected
:
85
void
CheckAndSetUnit
(
const
G4String
& unit,
const
G4String
& category);
86
87
protected
:
88
G4String
primitiveName
;
89
G4MultiFunctionalDetector
*
detector
;
90
G4VSDFilter
*
filter
;
91
G4int
verboseLevel
;
92
G4int
indexDepth
;
93
G4String
unitName
;
94
G4double
unitValue
;
95
96
public
:
// with description
97
// Set/Get methods
98
inline
void
SetMultiFunctionalDetector
(
G4MultiFunctionalDetector
*
d
)
99
{
detector
=
d
; }
100
inline
G4MultiFunctionalDetector
*
GetMultiFunctionalDetector
()
const
101
{
return
detector
; }
102
inline
G4String
GetName
()
const
103
{
return
primitiveName
; }
104
inline
void
SetFilter
(
G4VSDFilter
*
f
)
105
{
filter
=
f
; }
106
inline
G4VSDFilter
*
GetFilter
()
const
107
{
return
filter
; }
108
inline
void
SetVerboseLevel
(
G4int
vl)
109
{
verboseLevel
= vl; }
110
inline
G4int
GetVerboseLevel
()
const
111
{
return
verboseLevel
; }
112
113
private
:
114
inline
G4bool
HitPrimitive
(
G4Step
*aStep,
G4TouchableHistory
*ROhis)
115
{
116
if
(
filter
)
117
{
if
(!(
filter
->
Accept
(aStep)))
return
false
; }
118
return
ProcessHits
(aStep,ROhis);
119
}
120
121
protected
:
122
G4int
fNi
,
fNj
,
fNk
;
// used for 3D scorers
123
public
:
124
inline
void
SetNijk
(
G4int
i,
G4int
j,
G4int
k
)
125
{
fNi
= i;
fNj
= j;
fNk
=
k
; }
126
};
127
128
129
130
#endif
131
geant4
tree
geant4-10.6-release
source
digits_hits
detector
include
G4VPrimitiveScorer.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:12
using
1.8.2 with
ECCE GitHub integration