Belle II Software  release-08-01-10
SensitiveDetector Class Reference

KLM sensitive-detector class. More...

#include <SensitiveDetector.h>

Inheritance diagram for SensitiveDetector:
Collaboration diagram for SensitiveDetector:

Public Member Functions

 SensitiveDetector (const G4String &name, KLMSubdetectorNumber subdetector)
 Constructor. More...
 
bool step (G4Step *, G4TouchableHistory *) override
 Process each step and store KLMSimHits.
 

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. More...
 
static void registerMCParticleRelation (const std::string &name, RelationArray::EConsolidationAction ignoreAction=RelationArray::c_negativeWeight)
 Register an relation involving MCParticles. More...
 
static void registerMCParticleRelation (const RelationArray &relation, RelationArray::EConsolidationAction ignoreAction=RelationArray::c_negativeWeight)
 Overload to make it easer to register MCParticle relations. More...
 

Private Member Functions

bool stepBKLM (G4Step *, G4TouchableHistory *)
 Step in BKLM.
 
bool stepEKLM (G4Step *, G4TouchableHistory *)
 Step in EKLM.
 
void convertHitToRPCStrips (const CLHEP::Hep3Vector &, const bklm::Module *, int &, int &, int &, int &)
 Find the ranges of matching RPC strips for BKLM hits.
 
virtual bool ProcessHits (G4Step *aStep, G4TouchableHistory *aROhist)
 Check if recording hits is enabled and if so call step() and set the correct MCParticle flag. More...
 

Private Attributes

KLMSubdetectorNumber m_Subdetector
 Subdetector.
 
bool m_FirstCall
 Flag to enforce once-only initializations in Initialize().
 
double m_HitTimeMax
 Maximum permissible hit time based on overflow of LeCroy 1877 TDC.
 
BkgSensitiveDetectorm_BkgSensitiveDetector
 Pointer to a sensitive-detector object used for beam-background steps.
 
bklm::GeometryParm_GeoPar
 Pointer to GeometryPar singleton.
 
const EKLMElementNumbersm_ElementNumbers
 EKLM element numbers.
 
DBObjPtr< BKLMSimulationParm_SimPar
 Simulation parameters (from DB).
 
StoreArray< MCParticlem_MCParticles
 MC particles.
 
StoreArray< KLMSimHitm_KLMSimHits
 Simulation hits.
 
RelationArray m_MCParticlesToKLMSimHits {m_MCParticles, m_KLMSimHits}
 Relation array between MCPartices and KLMSimHits.
 
Const::EDetector m_subdetector
 Subdetector the class belongs to.
 

Static Private Attributes

static constexpr int m_DepthSection = 2
 Section depth.
 
static constexpr int m_DepthSector = 3
 Sector depth.
 
static constexpr int m_DepthLayer = 5
 Layer depth.
 
static constexpr int m_DepthPlane = 9
 Plane depth.
 
static constexpr int m_DepthScintillator = 10
 Scintillator depth.
 
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

KLM sensitive-detector class.

Definition at line 38 of file SensitiveDetector.h.

Constructor & Destructor Documentation

◆ SensitiveDetector()

SensitiveDetector ( const G4String &  name,
KLMSubdetectorNumber  subdetector 
)

Constructor.

Parameters
[in]nameSensitive-detector name.
[in]subdetectorSubdetector.

Definition at line 33 of file SensitiveDetector.cc.

34  :
35  SensitiveDetectorBase(name, Const::KLM),
36  m_Subdetector(subdetector),
37  m_FirstCall(true),
38  m_BkgSensitiveDetector(nullptr),
39  m_GeoPar(nullptr)
40 {
41  if (!m_SimPar.isValid())
42  B2FATAL("BKLM simulation parameters are not available.");
43  m_HitTimeMax = m_SimPar->getHitTimeMax();
45  m_KLMSimHits.registerInDataStore();
48 }
DBObjPtr< BKLMSimulationPar > m_SimPar
Simulation parameters (from DB).
bool m_FirstCall
Flag to enforce once-only initializations in Initialize().
KLMSubdetectorNumber m_Subdetector
Subdetector.
RelationArray m_MCParticlesToKLMSimHits
Relation array between MCPartices and KLMSimHits.
bklm::GeometryPar * m_GeoPar
Pointer to GeometryPar singleton.
double m_HitTimeMax
Maximum permissible hit time based on overflow of LeCroy 1877 TDC.
BkgSensitiveDetector * m_BkgSensitiveDetector
Pointer to a sensitive-detector object used for beam-background steps.
StoreArray< MCParticle > m_MCParticles
MC particles.
StoreArray< KLMSimHit > m_KLMSimHits
Simulation hits.
static void registerMCParticleRelation(const std::string &name, RelationArray::EConsolidationAction ignoreAction=RelationArray::c_negativeWeight)
Register an relation involving MCParticles.
SensitiveDetectorBase(const std::string &name, Const::EDetector subdetector)
Create a new Sensitive detecor with a given name and belonging to a given subdetector.
bool isOptional(const std::string &name="")
Tell the DataStore about an optional input.
bool registerInDataStore(DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut)
Register the object/array in the DataStore.

Member Function Documentation

◆ ProcessHits()

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

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.

◆ registerMCParticleRelation() [1/2]

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

Overload to make it easer to register MCParticle relations.

Parameters
relationRelationArray to register
ignoreAction

Definition at line 66 of file SensitiveDetectorBase.h.

◆ registerMCParticleRelation() [2/2]

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

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.

◆ setActive()

static void setActive ( bool  activeStatus)
inlinestaticinherited

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.


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