Geant4
10.02.p03
F02CalorimeterSD.cc
Go to the documentation of this file.
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
//
28
//
29
//
30
// $Id: F02CalorimeterSD.cc 76247 2013-11-08 11:18:52Z gcosmo $
31
//
32
//
33
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
34
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
35
36
#include "
F02CalorimeterSD.hh
"
37
38
#include "
F02CalorHit.hh
"
39
#include "
F02DetectorConstruction.hh
"
40
41
#include "
G4VPhysicalVolume.hh
"
42
#include "G4Step.hh"
43
#include "
G4VTouchable.hh
"
44
#include "
G4TouchableHistory.hh
"
45
#include "
G4SDManager.hh
"
46
47
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
48
49
F02CalorimeterSD::F02CalorimeterSD
(
G4String
name
,
50
F02DetectorConstruction
* det)
51
:
G4VSensitiveDetector
(name),
52
fCalCollection(0),
53
fDetector(det),
54
fHitID(new
G4int
[500])
55
{
56
collectionName
.
insert
(
"CalCollection"
);
57
}
58
59
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
60
61
F02CalorimeterSD::~F02CalorimeterSD
()
62
{
63
delete
[]
fHitID
;
64
}
65
66
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
67
68
void
F02CalorimeterSD::Initialize
(
G4HCofThisEvent
*)
69
{
70
fCalCollection
=
new
F02CalorHitsCollection
71
(
SensitiveDetectorName
,
collectionName
[0]);
72
for
(
G4int
j=0;j<1; j++) {
fHitID
[j] = -1;};
73
}
74
75
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
76
77
G4bool
F02CalorimeterSD::ProcessHits
(G4Step* step,
G4TouchableHistory
*)
78
{
79
G4double
edep
= step->GetTotalEnergyDeposit();
80
G4double
stepl = 0.;
81
82
stepl = step->GetStepLength();
83
84
if
((edep == 0.) && (stepl == 0.) )
return
false
;
85
86
G4TouchableHistory
* theTouchable
87
= (
G4TouchableHistory
*)(step->GetPreStepPoint()->GetTouchable());
88
89
G4VPhysicalVolume
* physVol = theTouchable->
GetVolume
();
90
91
G4int
number = 0;
92
if
(
fHitID
[number]==-1)
93
{
94
F02CalorHit
* calHit =
new
F02CalorHit
();
95
if
(physVol ==
fDetector
->
GetAbsorber
()) calHit->
AddAbs
(edep,stepl);
96
fHitID
[number] =
fCalCollection
->
insert
(calHit) - 1;
97
if
(
verboseLevel
>0)
98
G4cout
<<
" New Calorimeter Hit on F02: "
<< number <<
G4endl
;
99
}
100
else
101
{
102
if
(physVol ==
fDetector
->
GetAbsorber
())
103
(*
fCalCollection
)[
fHitID
[number]]->AddAbs(edep,stepl);
104
if
(
verboseLevel
>0)
105
G4cout
<<
" Energy added to F02: "
<< number <<
G4endl
;
106
}
107
108
return
true
;
109
}
110
111
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
112
113
void
F02CalorimeterSD::EndOfEvent
(
G4HCofThisEvent
* hce)
114
{
115
static
G4int
hcID = -1;
116
if
(hcID<0)
117
{ hcID =
G4SDManager::GetSDMpointer
()->
GetCollectionID
(
collectionName
[0]); }
118
hce->
AddHitsCollection
(hcID,
fCalCollection
);
119
}
120
121
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VSensitiveDetector::SensitiveDetectorName
G4String SensitiveDetectorName
Definition:
G4VSensitiveDetector.hh:105
G4TouchableHistory.hh
G4SDManager::GetCollectionID
G4int GetCollectionID(G4String colName)
Definition:
G4SDManager.cc:135
G4VPhysicalVolume
Definition:
G4VPhysicalVolume.hh:82
name
G4String name
Definition:
TRTMaterials.hh:40
G4VSensitiveDetector
Definition:
G4VSensitiveDetector.hh:50
F02CalorimeterSD::F02CalorimeterSD
F02CalorimeterSD(G4String, F02DetectorConstruction *)
Definition:
F02CalorimeterSD.cc:49
F02CalorHit::AddAbs
void AddAbs(G4double de, G4double dl)
Definition:
F02CalorHit.hh:61
F02CalorimeterSD::fHitID
G4int * fHitID
Definition:
F02CalorimeterSD.hh:61
F02CalorimeterSD::fCalCollection
F02CalorHitsCollection * fCalCollection
Definition:
F02CalorimeterSD.hh:59
G4THitsCollection::insert
G4int insert(T *aHit)
Definition:
examples/extended/parallel/TopC/ParN02/AnnotatedFiles/G4THitsCollection.hh:105
G4int
int G4int
Definition:
G4Types.hh:78
edep
Double_t edep
Definition:
brachytherapy/macro.C:11
F02DetectorConstruction.hh
Definition of the F02DetectorConstruction class.
G4cout
G4GLOB_DLL std::ostream G4cout
G4CollectionNameVector::insert
void insert(G4String str)
Definition:
G4CollectionNameVector.hh:42
G4SDManager.hh
G4bool
bool G4bool
Definition:
G4Types.hh:79
G4VSensitiveDetector::verboseLevel
G4int verboseLevel
Definition:
G4VSensitiveDetector.hh:108
F02DetectorConstruction::GetAbsorber
const G4VPhysicalVolume * GetAbsorber()
Definition:
F02DetectorConstruction.hh:95
F02CalorimeterSD.hh
Definition of the F02CalorimeterSD class.
F02CalorHit.hh
Definition of the F02CalorHit class.
G4HCofThisEvent::AddHitsCollection
void AddHitsCollection(G4int HCID, G4VHitsCollection *aHC)
Definition:
G4HCofThisEvent.cc:57
F02CalorHit
Definition:
F02CalorHit.hh:43
F02DetectorConstruction
Definition:
F02DetectorConstruction.hh:56
F02CalorimeterSD::Initialize
virtual void Initialize(G4HCofThisEvent *)
Definition:
F02CalorimeterSD.cc:68
G4TouchableHistory
Definition:
G4TouchableHistory.hh:53
F02CalorimeterSD::~F02CalorimeterSD
virtual ~F02CalorimeterSD()
Definition:
F02CalorimeterSD.cc:61
G4SDManager::GetSDMpointer
static G4SDManager * GetSDMpointer()
Definition:
G4SDManager.cc:40
F02CalorHitsCollection
G4THitsCollection< F02CalorHit > F02CalorHitsCollection
Definition:
F02CalorHit.hh:80
G4HCofThisEvent
Definition:
examples/extended/parallel/TopC/ParN02/AnnotatedFiles/G4HCofThisEvent.hh:64
F02CalorimeterSD::fDetector
F02DetectorConstruction * fDetector
Definition:
F02CalorimeterSD.hh:60
F02CalorimeterSD::EndOfEvent
virtual void EndOfEvent(G4HCofThisEvent *)
Definition:
F02CalorimeterSD.cc:113
G4VTouchable.hh
G4endl
#define G4endl
Definition:
G4ios.hh:61
G4TouchableHistory::GetVolume
G4VPhysicalVolume * GetVolume(G4int depth=0) const
G4VSensitiveDetector::collectionName
G4CollectionNameVector collectionName
Definition:
G4VSensitiveDetector.hh:99
G4VPhysicalVolume.hh
G4double
double G4double
Definition:
G4Types.hh:76
F02CalorimeterSD::ProcessHits
virtual G4bool ProcessHits(G4Step *, G4TouchableHistory *)
Definition:
F02CalorimeterSD.cc:77
G4String
Definition:
examples/extended/parallel/TopC/ParN02/AnnotatedFiles/G4String.hh:45
Geant4
Geant4.10.02.p03
examples
extended
field
field02
src
F02CalorimeterSD.cc
Generated by
1.8.13