ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonG4
MuonG4SD
src
GenericMuonSensitiveDetector.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
GenericMuonSensitiveDetector.h
"
6
#include "
MCTruth/AtlasG4EventUserInfo.h
"
7
#include "
MCTruth/TrackHelper.h
"
8
9
10
#include "G4Exception.hh"
11
#include "G4Track.hh"
12
13
#include <string>
14
15
#include "
GeoPrimitives/CLHEPtoEigenConverter.h
"
16
17
// construction/destruction
18
GenericMuonSensitiveDetector::GenericMuonSensitiveDetector
(
const
std::string& name,
const
std::string& hitCollectionName)
19
: G4VSensitiveDetector( name )
20
,
m_hitCollectionName
( hitCollectionName )
21
{
22
G4cout <<
" creating a GenericMuonSensitiveDetector: "
<<name << G4endl;
23
}
24
25
// Implemenation of memebr functions
26
void
GenericMuonSensitiveDetector::Initialize
(G4HCofThisEvent*)
27
{
28
m_GenericMuonHitCollection
=
nullptr
;
29
if
(
auto
* eventInfo =
AtlasG4EventUserInfo::GetEventUserInfo
()) {
30
m_GenericMuonHitCollection
= eventInfo->GetHitCollectionMap()->Find<
GenericMuonSimHitCollection
>(
m_hitCollectionName
);
31
m_g4UserEventInfo
= eventInfo;
32
}
33
}
34
35
G4bool
GenericMuonSensitiveDetector::ProcessHits
(G4Step* aStep,G4TouchableHistory*
/*ROHist*/
)
36
{
37
if
(!
m_GenericMuonHitCollection
) {
38
G4Exception(
"GenericMuonSensitiveDetector::ProcessHits"
,
"GenericMuonHitCollectionMissing"
, FatalException,
39
"Hit collection not initialized; did SetupEvent run?"
);
40
return
false
;
41
}
42
G4cout <<
"Hit in a sensitive layer!!!!! "
<< G4endl;
43
G4Track* currentTrack = aStep->GetTrack();
44
const
G4AffineTransform trans = currentTrack->GetTouchable()->GetHistory()->GetTopTransform();
// from global to local
45
G4StepPoint* postStep=aStep->GetPostStepPoint();
46
G4StepPoint* preStep=aStep->GetPreStepPoint();
47
const
G4Step* post_Step=aStep->GetTrack()->GetStep();
48
49
Amg::Vector3D
position =
Amg::Hep3VectorToEigen
( postStep->GetPosition() );
50
Amg::Vector3D
preposition =
Amg::Hep3VectorToEigen
( preStep->GetPosition() );
51
52
Amg::Vector3D
local_position =
Amg::Hep3VectorToEigen
( trans.TransformPoint( postStep->GetPosition() ) ) ;
53
Amg::Vector3D
local_preposition =
Amg::Hep3VectorToEigen
( trans.TransformPoint( preStep->GetPosition() ) );
54
55
int
pdgCode=currentTrack->GetDefinition()->GetPDGEncoding();
56
57
float
globalTime=postStep->GetGlobalTime();
58
float
globalpreTime=preStep->GetGlobalTime();
59
float
eKin=postStep->GetKineticEnergy();
60
61
Amg::Vector3D
direction =
Amg::Hep3VectorToEigen
( postStep->GetMomentumDirection() );
62
float
depositEnergy=post_Step->GetTotalEnergyDeposit();
63
float
StepLength=post_Step->GetStepLength();
64
65
TrackHelper
trHelp(aStep->GetTrack());
66
67
//G4cout << aHit->print() << G4endl;
68
m_GenericMuonHitCollection
->Emplace( 0
/* HitID id generic*/
,globalTime,globalpreTime,position,local_position,preposition,local_preposition,pdgCode,eKin,direction,depositEnergy,StepLength,
69
trHelp.
GenerateParticleLink
(
m_g4UserEventInfo
?
m_g4UserEventInfo
->GetEventStore() :
nullptr
));
70
71
return
true
;
72
}
AtlasG4EventUserInfo.h
CLHEPtoEigenConverter.h
GenericMuonSensitiveDetector.h
GenericMuonSimHitCollection
AtlasHitsVector< GenericMuonSimHit > GenericMuonSimHitCollection
Definition
GenericMuonSimHitCollection.h:15
TrackHelper.h
AtlasG4EventUserInfo::GetEventUserInfo
static AtlasG4EventUserInfo * GetEventUserInfo()
Definition
AtlasG4EventUserInfo.h:96
GenericMuonSensitiveDetector::ProcessHits
G4bool ProcessHits(G4Step *aStep, G4TouchableHistory *ROhist) override final
Definition
GenericMuonSensitiveDetector.cxx:35
GenericMuonSensitiveDetector::GenericMuonSensitiveDetector
GenericMuonSensitiveDetector(const std::string &name, const std::string &hitCollectionName)
construction/destruction
Definition
GenericMuonSensitiveDetector.cxx:18
GenericMuonSensitiveDetector::m_hitCollectionName
std::string m_hitCollectionName
Definition
GenericMuonSensitiveDetector.h:28
GenericMuonSensitiveDetector::m_g4UserEventInfo
AtlasG4EventUserInfo * m_g4UserEventInfo
Definition
GenericMuonSensitiveDetector.h:30
GenericMuonSensitiveDetector::Initialize
void Initialize(G4HCofThisEvent *HCE) override final
member functions
Definition
GenericMuonSensitiveDetector.cxx:26
GenericMuonSensitiveDetector::m_GenericMuonHitCollection
GenericMuonSimHitCollection * m_GenericMuonHitCollection
Definition
GenericMuonSensitiveDetector.h:29
TrackHelper
Definition
TrackHelper.h:20
TrackHelper::GenerateParticleLink
HepMcParticleLink GenerateParticleLink()
Generates a new HepMcParticleLink object on the stack based on the generation-zero unique id,...
Definition
TrackHelper.h:75
Amg::Hep3VectorToEigen
Amg::Vector3D Hep3VectorToEigen(const CLHEP::Hep3Vector &CLHEPvector)
Converts a CLHEP-based CLHEP::Hep3Vector into an Eigen-based Amg::Vector3D.
Definition
CLHEPtoEigenConverter.h:137
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
Generated on
for ATLAS Offline Software by
1.17.0