ATLAS Offline Software
Loading...
Searching...
No Matches
GenericMuonSensitiveDetector Class Reference

#include <GenericMuonSensitiveDetector.h>

Inheritance diagram for GenericMuonSensitiveDetector:
Collaboration diagram for GenericMuonSensitiveDetector:

Public Member Functions

 GenericMuonSensitiveDetector (const std::string &name, const std::string &hitCollectionName)
 construction/destruction
void Initialize (G4HCofThisEvent *HCE) override final
 member functions
G4bool ProcessHits (G4Step *aStep, G4TouchableHistory *ROhist) override final

Private Member Functions

 FRIEND_TEST (GenericMuonSensitiveDetectortest, Initialize)
 FRIEND_TEST (GenericMuonSensitiveDetectortest, ProcessHits)

Private Attributes

std::string m_hitCollectionName
GenericMuonSimHitCollectionm_GenericMuonHitCollection {nullptr}
AtlasG4EventUserInfom_g4UserEventInfo {nullptr}

Detailed Description

Definition at line 15 of file GenericMuonSensitiveDetector.h.

Constructor & Destructor Documentation

◆ GenericMuonSensitiveDetector()

GenericMuonSensitiveDetector::GenericMuonSensitiveDetector ( const std::string & name,
const std::string & hitCollectionName )

construction/destruction

Definition at line 18 of file GenericMuonSensitiveDetector.cxx.

19 : G4VSensitiveDetector( name )
20 , m_hitCollectionName( hitCollectionName )
21{
22 G4cout << " creating a GenericMuonSensitiveDetector: "<<name << G4endl;
23}

Member Function Documentation

◆ FRIEND_TEST() [1/2]

GenericMuonSensitiveDetector::FRIEND_TEST ( GenericMuonSensitiveDetectortest ,
Initialize  )
private

◆ FRIEND_TEST() [2/2]

GenericMuonSensitiveDetector::FRIEND_TEST ( GenericMuonSensitiveDetectortest ,
ProcessHits  )
private

◆ Initialize()

void GenericMuonSensitiveDetector::Initialize ( G4HCofThisEvent * HCE)
finaloverride

member functions

Definition at line 26 of file GenericMuonSensitiveDetector.cxx.

27{
29 if (auto* eventInfo = AtlasG4EventUserInfo::GetEventUserInfo()) {
30 m_GenericMuonHitCollection = eventInfo->GetHitCollectionMap()->Find<GenericMuonSimHitCollection>(m_hitCollectionName);
31 m_g4UserEventInfo = eventInfo;
32 }
33}
AtlasHitsVector< GenericMuonSimHit > GenericMuonSimHitCollection
static AtlasG4EventUserInfo * GetEventUserInfo()
GenericMuonSimHitCollection * m_GenericMuonHitCollection

◆ ProcessHits()

G4bool GenericMuonSensitiveDetector::ProcessHits ( G4Step * aStep,
G4TouchableHistory * ROhist )
finaloverride

Definition at line 35 of file GenericMuonSensitiveDetector.cxx.

36{
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}
Amg::Vector3D Hep3VectorToEigen(const CLHEP::Hep3Vector &CLHEPvector)
Converts a CLHEP-based CLHEP::Hep3Vector into an Eigen-based Amg::Vector3D.
Eigen::Matrix< double, 3, 1 > Vector3D

Member Data Documentation

◆ m_g4UserEventInfo

AtlasG4EventUserInfo* GenericMuonSensitiveDetector::m_g4UserEventInfo {nullptr}
private

Definition at line 30 of file GenericMuonSensitiveDetector.h.

30{nullptr};

◆ m_GenericMuonHitCollection

GenericMuonSimHitCollection* GenericMuonSensitiveDetector::m_GenericMuonHitCollection {nullptr}
private

Definition at line 29 of file GenericMuonSensitiveDetector.h.

29{nullptr};

◆ m_hitCollectionName

std::string GenericMuonSensitiveDetector::m_hitCollectionName
private

Definition at line 28 of file GenericMuonSensitiveDetector.h.


The documentation for this class was generated from the following files: