ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
RecordingEnvelope Class Reference

Responsible for finding the G4LogicalVolume pointer for each recording envelope and for creating and filling the corresponding TrackRecordCollection. More...

#include <RecordingEnvelope.h>

Collaboration diagram for RecordingEnvelope:

Public Member Functions

 RecordingEnvelope (const std::string &envelopeVolumeName, const std::string &trackRecordCollectionName)
 Constructor. More...
 
 ~RecordingEnvelope ()
 Destructor. More...
 
bool Initialize ()
 Finds the pointer to the G4LogicalVolume called m_envelopeVolumeName and the number of levels beneath the world volume that it lies. More...
 
void BeginOfEvent ()
 Called at the start of each G4 event. More...
 
int GetLevel () const
 Returns the number of levels beneath the world volume that the G4LogicalVolume associated with this recording envelope lies. More...
 
std::string GetVolumeName () const
 Returns the name of the recording envelope volume. More...
 
const G4LogicalVolume * GetLogicalVolume () const
 Returns the pointer to the G4LogicalVolume used by this recording envelope. More...
 
std::string GetTrackRecordCollectionName () const
 Returns the name of the TrackRecordCollection to which tracks crossing this recording envelope should be written. More...
 
void AddTrackRecord (const G4Step *aStep)
 Add a TrackRecord to the TrackRecordCollection owned by this recording envelope based on the information in aStep. More...
 

Private Member Functions

bool checkDaughters (const G4LogicalVolume *possibleParent, const G4VPhysicalVolume *thePhysicalVolume, int &level) const
 Recursively called method used to hunt for the G4LogicalVolume associated with this recording envelope by the Initialize method. More...
 

Private Attributes

int m_level
 The number of levels beneath the world that the G4LogicalVolume called m_envelopeVolumeName lies. More...
 
G4LogicalVolume * m_logicalVolume
 Pointer to the G4LogicalVolume used by this recording envelope. More...
 
const std::string m_envelopeVolumeName
 Name of the G4LogicalVolume used by this recording envelope. More...
 
SG::WriteHandle< TrackRecordCollectionm_trackRecordCollection
 WriteHandle to the TrackRecordCollection used by this envelope. More...
 

Detailed Description

Responsible for finding the G4LogicalVolume pointer for each recording envelope and for creating and filling the corresponding TrackRecordCollection.

Definition at line 24 of file RecordingEnvelope.h.

Constructor & Destructor Documentation

◆ RecordingEnvelope()

RecordingEnvelope::RecordingEnvelope ( const std::string &  envelopeVolumeName,
const std::string &  trackRecordCollectionName 
)

Constructor.

Definition at line 19 of file RecordingEnvelope.cxx.

19  :
20  m_level(-1),
21  m_logicalVolume(nullptr),
22  m_envelopeVolumeName(envelopeVolumeName),
23  m_trackRecordCollection(trackRecordCollectionName)
24 {
25 
26 }

◆ ~RecordingEnvelope()

RecordingEnvelope::~RecordingEnvelope ( )

Destructor.

Definition at line 28 of file RecordingEnvelope.cxx.

29 {
30 
31 }

Member Function Documentation

◆ AddTrackRecord()

void RecordingEnvelope::AddTrackRecord ( const G4Step *  aStep)

Add a TrackRecord to the TrackRecordCollection owned by this recording envelope based on the information in aStep.

Definition at line 68 of file RecordingEnvelope.cxx.

69 {
70  const std::string pname = aStep->GetTrack()->GetDefinition()->GetParticleName();
71  const int pdgcode = (pname=="geantino") ? 999 : aStep->GetTrack()->GetDefinition()->GetPDGEncoding();
72  TrackHelper trHelp(aStep->GetTrack());
73  const int barcode = trHelp.GetBarcode();
74  const int status = trHelp.GetStatus();
75  const int id = trHelp.GetUniqueID();
76 
77  G4StepPoint *postStep=aStep->GetPostStepPoint();
78  G4ThreeVector pos=postStep->GetPosition();
79  G4ThreeVector mom=postStep->GetMomentum();
80  const double ener=postStep->GetTotalEnergy();
81  const double time=postStep->GetGlobalTime();
82 
83  G4StepPoint *preStep=aStep->GetPreStepPoint();
84  G4VPhysicalVolume *preVol=preStep->GetPhysicalVolume();
85 
86  m_trackRecordCollection->Emplace(pdgcode,status,ener,mom,pos,time,barcode,id,preVol->GetName());
87 
88  return;
89 }

◆ BeginOfEvent()

void RecordingEnvelope::BeginOfEvent ( )

Called at the start of each G4 event.

Recreates the TrackRecordCollection if necessary.

Definition at line 63 of file RecordingEnvelope.cxx.

64 {
65  if (!m_trackRecordCollection.isValid()) m_trackRecordCollection = std::make_unique<TrackRecordCollection>(m_trackRecordCollection.name());
66  return;
67 }

◆ checkDaughters()

bool RecordingEnvelope::checkDaughters ( const G4LogicalVolume *  possibleParent,
const G4VPhysicalVolume *  thePhysicalVolume,
int &  level 
) const
private

Recursively called method used to hunt for the G4LogicalVolume associated with this recording envelope by the Initialize method.

Definition at line 33 of file RecordingEnvelope.cxx.

34 {
35  if (possibleParent->IsDaughter(thePhysicalVolume))
36  {
37  ++level;
38  return true;
39  }
40  // Otherwise Loop over the daughters
41  const G4int nDaughters(possibleParent->GetNoDaughters());
42  for(G4int daughter(0); daughter<nDaughters; ++daughter)
43  {
44  const G4VPhysicalVolume* daughterPhysVol = possibleParent->GetDaughter(daughter);
45  const G4LogicalVolume* daughterLogVol = daughterPhysVol->GetLogicalVolume();
46  if (this->checkDaughters(daughterLogVol, thePhysicalVolume,level))
47  {
48  ++level;
49  return true;
50  }
51  }
52  return false;
53 }

◆ GetLevel()

int RecordingEnvelope::GetLevel ( ) const
inline

Returns the number of levels beneath the world volume that the G4LogicalVolume associated with this recording envelope lies.

Definition at line 98 of file RecordingEnvelope.h.

99 {
100  return m_level;
101 }

◆ GetLogicalVolume()

const G4LogicalVolume * RecordingEnvelope::GetLogicalVolume ( ) const
inline

Returns the pointer to the G4LogicalVolume used by this recording envelope.

Definition at line 88 of file RecordingEnvelope.h.

89 {
90  return m_logicalVolume;
91 }

◆ GetTrackRecordCollectionName()

std::string RecordingEnvelope::GetTrackRecordCollectionName ( ) const
inline

Returns the name of the TrackRecordCollection to which tracks crossing this recording envelope should be written.

Definition at line 93 of file RecordingEnvelope.h.

94 {
95  return m_trackRecordCollection.name();
96 }

◆ GetVolumeName()

std::string RecordingEnvelope::GetVolumeName ( ) const
inline

Returns the name of the recording envelope volume.

Definition at line 83 of file RecordingEnvelope.h.

84 {
85  return m_envelopeVolumeName;
86 }

◆ Initialize()

bool RecordingEnvelope::Initialize ( )

Finds the pointer to the G4LogicalVolume called m_envelopeVolumeName and the number of levels beneath the world volume that it lies.

Definition at line 54 of file RecordingEnvelope.cxx.

55 {
56  const G4VPhysicalVolume *thePhysicalVolume = G4PhysicalVolumeStore::GetInstance()->GetVolume(m_envelopeVolumeName,false);
57  m_logicalVolume=thePhysicalVolume->GetLogicalVolume();
58  const G4LogicalVolume * logicalWorld = G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume()->GetLogicalVolume();
59  m_level=0;
60  return this->checkDaughters(logicalWorld, thePhysicalVolume,m_level);
61 }

Member Data Documentation

◆ m_envelopeVolumeName

const std::string RecordingEnvelope::m_envelopeVolumeName
private

Name of the G4LogicalVolume used by this recording envelope.

Definition at line 77 of file RecordingEnvelope.h.

◆ m_level

int RecordingEnvelope::m_level
private

The number of levels beneath the world that the G4LogicalVolume called m_envelopeVolumeName lies.

Definition at line 69 of file RecordingEnvelope.h.

◆ m_logicalVolume

G4LogicalVolume* RecordingEnvelope::m_logicalVolume
private

Pointer to the G4LogicalVolume used by this recording envelope.

Definition at line 74 of file RecordingEnvelope.h.

◆ m_trackRecordCollection

SG::WriteHandle<TrackRecordCollection> RecordingEnvelope::m_trackRecordCollection
private

WriteHandle to the TrackRecordCollection used by this envelope.

Definition at line 80 of file RecordingEnvelope.h.


The documentation for this class was generated from the following files:
RecordingEnvelope::m_level
int m_level
The number of levels beneath the world that the G4LogicalVolume called m_envelopeVolumeName lies.
Definition: RecordingEnvelope.h:69
RecordingEnvelope::m_trackRecordCollection
SG::WriteHandle< TrackRecordCollection > m_trackRecordCollection
WriteHandle to the TrackRecordCollection used by this envelope.
Definition: RecordingEnvelope.h:80
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
TrackHelper
Definition: TrackHelper.h:14
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
RecordingEnvelope::checkDaughters
bool checkDaughters(const G4LogicalVolume *possibleParent, const G4VPhysicalVolume *thePhysicalVolume, int &level) const
Recursively called method used to hunt for the G4LogicalVolume associated with this recording envelop...
Definition: RecordingEnvelope.cxx:33
HepMC::barcode
int barcode(const T *p)
Definition: Barcode.h:16
RecordingEnvelope::m_logicalVolume
G4LogicalVolume * m_logicalVolume
Pointer to the G4LogicalVolume used by this recording envelope.
Definition: RecordingEnvelope.h:74
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
RecordingEnvelope::m_envelopeVolumeName
const std::string m_envelopeVolumeName
Name of the G4LogicalVolume used by this recording envelope.
Definition: RecordingEnvelope.h:77
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
merge.status
status
Definition: merge.py:17