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
GFlashHitMaker.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file GFlashHitMaker.cc
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
// GEANT 4 class implementation
30
//
31
// ---------------- GFlashHitMaker ----------------
32
//
33
// Authors: E.Barberio & Joanna Weng
34
// ------------------------------------------------------------
35
36
#include "
G4ios.hh
"
37
#include "
G4TransportationManager.hh
"
38
#include "
G4VSensitiveDetector.hh
"
39
#include "
G4TouchableHandle.hh
"
40
#include "
G4VGFlashSensitiveDetector.hh
"
41
42
#include "
GFlashHitMaker.hh
"
43
#include "
G4GFlashSpot.hh
"
44
45
GFlashHitMaker::GFlashHitMaker
()
46
{
47
fTouchableHandle
=
new
G4TouchableHistory
();
// talk to ?@@@
48
fpNavigator
=
new
G4Navigator
();
49
fNaviSetup
=
false
;
50
fWorldWithSdName
=
""
;
51
}
52
53
GFlashHitMaker::~GFlashHitMaker
()
54
{
55
delete
fpNavigator
;
56
}
57
58
void
GFlashHitMaker::make
(
GFlashEnergySpot
* aSpot,
const
G4FastTrack
* aT)
59
{
60
// Locate the spot
61
if
(!
fNaviSetup
)
62
{
63
// Choose the world volume that contains the sensitive detector based on its name (empty name for mass geometry)
64
G4VPhysicalVolume
* worldWithSD =
nullptr
;
65
if
(
fWorldWithSdName
.empty()) {
66
worldWithSD =
G4TransportationManager::GetTransportationManager
()->
GetNavigatorForTracking
()->
GetWorldVolume
();
67
}
else
{
68
worldWithSD =
G4TransportationManager::GetTransportationManager
()->
GetParallelWorld
(
fWorldWithSdName
);
69
}
70
fpNavigator
->
SetWorldVolume
(worldWithSD);
71
fpNavigator
->
72
LocateGlobalPointAndUpdateTouchable(aSpot->
GetPosition
(),
73
fTouchableHandle
(),
false
);
74
fNaviSetup
=
true
;
75
}
76
else
77
{
78
fpNavigator
->
79
LocateGlobalPointAndUpdateTouchable(aSpot->
GetPosition
(),
80
fTouchableHandle
());
81
}
82
83
//--------------------------------------
84
// Fills attribute of the G4Step needed
85
// by our sensitive detector:
86
//-------------------------------------
87
// set spot information:
88
G4GFlashSpot
theSpot(aSpot, aT,
fTouchableHandle
);
90
//--------------------------------------
91
// Produce Hits
92
// call sensitive part: taken/adapted from the stepping:
93
// Send G4Step information to Hit/Dig if the volume is sensitive
94
//--------------G4TouchableHistory----------------------------------------
95
96
G4VPhysicalVolume
* pCurrentVolume =
fTouchableHandle
()->
GetVolume
();
97
G4VSensitiveDetector
* pSensitive;
98
if
( pCurrentVolume != 0 )
99
{
100
pSensitive = pCurrentVolume->
GetLogicalVolume
()->
GetSensitiveDetector
();
101
G4VGFlashSensitiveDetector
* gflashSensitive =
102
dynamic_cast<
G4VGFlashSensitiveDetector
*
>
(pSensitive);
103
if
( gflashSensitive )
104
{
105
gflashSensitive->
Hit
(&theSpot);
106
}
107
else
if
(( pSensitive ) &&
108
( pCurrentVolume->
GetLogicalVolume
()->
GetFastSimulationManager
() )
109
)
// Using gflash without implementing the
110
// gflashSensitive detector interface -> not allowed!
111
112
{
113
G4cerr
<<
"ERROR - GFlashHitMaker::make()"
<<
G4endl
114
<<
" It is required to implement the "
<<
G4endl
115
<<
" G4VGFlashSensitiveDetector interface in "
<<
G4endl
116
<<
" addition to the usual SensitiveDetector class."
117
<<
G4endl
;
118
G4Exception
(
"GFlashHitMaker::make()"
,
"InvalidSetup"
,
FatalException
,
119
"G4VGFlashSensitiveDetector interface not implemented."
);
120
}
121
}
122
else
123
{
124
#ifdef GFLASH_DEBUG
125
G4cout
<<
"GFlashHitMaker::Out of volume "
<<
G4endl
;
126
#endif
127
}
128
}
geant4
tree
geant4-10.6-release
source
parameterisations
gflash
src
GFlashHitMaker.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:23
using
1.8.2 with
ECCE GitHub integration