Belle II Software development
SensitiveDetectorBase Class Referenceabstract

Base class for all Sensitive Detectors to create hits during simulation. More...

#include <SensitiveDetectorBase.h>

Inheritance diagram for SensitiveDetectorBase:
AWESOMESensitiveDetector BkgSensitiveDetector CDCSensitiveDetector BkgSensitiveDiode SensitiveDetector SensitiveDiode SensitiveDetector SensitiveBar SensitivePMT SensitiveDetectorBase SensitiveAero SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector SensitiveDetector

Public Member Functions

 SensitiveDetectorBase (const std::string &name, Const::EDetector subdetector)
 Create a new Sensitive detecor with a given name and belonging to a given subdetector.
 
virtual ~SensitiveDetectorBase ()
 virtual destructor for inheritance
 

Static Public Member Functions

static const std::map< std::string, RelationArray::EConsolidationAction > & getMCParticleRelations ()
 Return a list of all registered Relations with MCParticles.
 
static void setActive (bool activeStatus)
 Enable/Disable all Sensitive Detectors.
 
static void registerMCParticleRelation (const std::string &name, RelationArray::EConsolidationAction ignoreAction=RelationArray::c_negativeWeight)
 Register an relation involving MCParticles.
 
static void registerMCParticleRelation (const RelationArray &relation, RelationArray::EConsolidationAction ignoreAction=RelationArray::c_negativeWeight)
 Overload to make it easer to register MCParticle relations.
 

Protected Member Functions

virtual bool step (G4Step *step, G4TouchableHistory *ROhist)=0
 Process a Geant4 step in any of the sensitive volumes attached to this sensitive detector.
 

Private Member Functions

virtual bool ProcessHits (G4Step *aStep, G4TouchableHistory *aROhist)
 Check if recording hits is enabled and if so call step() and set the correct MCParticle flag.
 

Private Attributes

Const::EDetector m_subdetector
 Subdetector the class belongs to.
 

Static Private Attributes

static std::map< std::string, RelationArray::EConsolidationActions_mcRelations
 Static set holding all relations which have to be updated at the end of the Event.
 
static bool s_active
 Static bool which indicates wether recording of hits is enabled.
 

Detailed Description

Base class for all Sensitive Detectors to create hits during simulation.

Definition at line 28 of file SensitiveDetectorBase.h.

Constructor & Destructor Documentation

◆ SensitiveDetectorBase()

SensitiveDetectorBase ( const std::string &  name,
Const::EDetector  subdetector 
)
inline

Create a new Sensitive detecor with a given name and belonging to a given subdetector.

Parameters
namename of the sensitive detector
subdetectorsubdetector the sensitive detector class belongs to

Definition at line 35 of file SensitiveDetectorBase.h.

35 :
36 G4VSensitiveDetector(name), m_subdetector(subdetector) {}
Const::EDetector m_subdetector
Subdetector the class belongs to.

◆ ~SensitiveDetectorBase()

virtual ~SensitiveDetectorBase ( )
inlinevirtual

virtual destructor for inheritance

Reimplemented in SensitiveDetectorBase.

Definition at line 39 of file SensitiveDetectorBase.h.

39{}

Member Function Documentation

◆ getMCParticleRelations()

static const std::map< std::string, RelationArray::EConsolidationAction > & getMCParticleRelations ( )
inlinestatic

Return a list of all registered Relations with MCParticles.

Definition at line 42 of file SensitiveDetectorBase.h.

42{ return s_mcRelations; }
static std::map< std::string, RelationArray::EConsolidationAction > s_mcRelations
Static set holding all relations which have to be updated at the end of the Event.

◆ ProcessHits()

bool ProcessHits ( G4Step *  aStep,
G4TouchableHistory *  aROhist 
)
inlineprivatevirtual

Check if recording hits is enabled and if so call step() and set the correct MCParticle flag.

Called by Geant4 for each step inside the sensitive volumes attached

Definition at line 94 of file SensitiveDetectorBase.h.

95 {
96 if (!s_active) return false;
97 bool result = step(aStep, aROhist);
98 // Do not include hits from invalid detector (beast,teastbeam, etc.)
99 if (result && (m_subdetector != Const::invalidDetector)) TrackInfo::getInfo(*aStep->GetTrack()).addSeenInDetector(m_subdetector);
100 return result;
101 }
virtual bool step(G4Step *step, G4TouchableHistory *ROhist)=0
Process a Geant4 step in any of the sensitive volumes attached to this sensitive detector.
static bool s_active
Static bool which indicates wether recording of hits is enabled.
static Payload getInfo(Carrier &obj)
Static function to just return UserInformation attached to the obj of type Carrier.
Definition: UserInfo.h:100

◆ registerMCParticleRelation() [1/2]

static void registerMCParticleRelation ( const RelationArray relation,
RelationArray::EConsolidationAction  ignoreAction = RelationArray::c_negativeWeight 
)
inlinestatic

Overload to make it easer to register MCParticle relations.

Parameters
relationRelationArray to register
ignoreAction

Definition at line 66 of file SensitiveDetectorBase.h.

67 { registerMCParticleRelation(relation.getName(), ignoreAction); }
static void registerMCParticleRelation(const std::string &name, RelationArray::EConsolidationAction ignoreAction=RelationArray::c_negativeWeight)
Register an relation involving MCParticles.

◆ registerMCParticleRelation() [2/2]

void registerMCParticleRelation ( const std::string &  name,
RelationArray::EConsolidationAction  ignoreAction = RelationArray::c_negativeWeight 
)
static

Register an relation involving MCParticles.

All Relations which point from an MCParticle to something have to be registered with addMCParticleRelation() because the index of the MCParticles might change at the end of the event. During simulation, the TrackID should be used as index of the MCParticle

Parameters
nameName of the relation to register
ignoreAction

Definition at line 22 of file SensitiveDetectorBase.cc.

23 {
24 std::pair<std::map<std::string, RelationArray::EConsolidationAction>::iterator, bool> insert = s_mcRelations.insert(std::make_pair(
25 name, ignoreAction));
26 //If the relation already exists and the ignoreAction is different we do have a problem
27 if (!insert.second && insert.first->second != ignoreAction) {
28 B2FATAL("MCParticle Relation " << name << " already registered with different ignore action.");
29 }
30 }

◆ setActive()

static void setActive ( bool  activeStatus)
inlinestatic

Enable/Disable all Sensitive Detectors.

By default, all sensitive detectors won't create hits to make it possible to use the Geant4 Navigator for non-simulation purposes. Only during simulation the sensitive detectors will be enabled to record hits

Parameters
activeStatusbool to indicate wether hits should be recorded

Definition at line 50 of file SensitiveDetectorBase.h.

50{ s_active = activeStatus; }

◆ step()

virtual bool step ( G4Step *  step,
G4TouchableHistory *  ROhist 
)
protectedpure virtual

Process a Geant4 step in any of the sensitive volumes attached to this sensitive detector.

This is the main function to be implemented by subclasses. The original ProcessHits is now used to check if recordign of hits is enabled and to set the correct MCParticle flag automatically on creation of a hit

Parameters
stepGeant4 step which has all the information
ROhistTouchableHistory of the ReadoutGeometry if any is defined
Returns
true if a hit was recorded, false otherwise

Implemented in SensitiveDetector, SensitiveAero, SensitiveDetector, SensitiveDetector, SensitiveDetector, BkgSensitiveDetector, SensitiveBar, SensitivePMT, CDCSensitiveDetector, SensitiveDetector, SensitiveDiode, BkgSensitiveDiode, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, SensitiveDetector, AWESOMESensitiveDetector, and SensitiveDetectorBase.

Member Data Documentation

◆ m_subdetector

Const::EDetector m_subdetector
private

Subdetector the class belongs to.

Definition at line 91 of file SensitiveDetectorBase.h.

◆ s_active

bool s_active
staticprivate

Static bool which indicates wether recording of hits is enabled.

Definition at line 89 of file SensitiveDetectorBase.h.

◆ s_mcRelations

map< string, RelationArray::EConsolidationAction > s_mcRelations
staticprivate

Static set holding all relations which have to be updated at the end of the Event.

Definition at line 87 of file SensitiveDetectorBase.h.


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