![]() |
Project
|
Detector simulation class for the EMCAL detector. More...
#include <Detector.h>
Inherits o2::base::DetImpl< Detector >.
Public Types | |
enum | MediumType_t { ID_AIR = 0 , ID_PB = 1 , ID_SC = 2 , ID_AL = 3 , ID_STEEL = 4 , ID_PAPER = 5 } |
Public Member Functions | |
Detector ()=default | |
Default constructor. | |
Detector (Bool_t isActive) | |
Main constructor. | |
~Detector () override | |
Destructor. | |
void | InitializeO2Detector () override |
Initializing detector. | |
Bool_t | ProcessHits (FairVolume *v=nullptr) final |
Processing hit creation in the EMCAL scintillator volume. | |
Hit * | AddHit (Int_t trackID, Int_t primary, Double_t initialEnergy, Int_t detID, const math_utils::Point3D< float > &pos, const math_utils::Vector3D< float > &mom, Double_t time, Double_t energyloss) |
Add EMCAL hit. | |
Parent * | AddSuperparent (Int_t trackID, Int_t pdg, Double_t energy) |
void | Register () override |
register container with hits | |
std::vector< Hit > * | getHits (Int_t iColl) const |
Get access to the hits. | |
void | Reset () final |
Clean point collection. | |
void | EndOfEvent () final |
Steps to be carried out at the end of the event. | |
Geometry * | GetGeometry () |
Get the EMCAL geometry desciption. | |
void | BeginPrimary () override |
Begin primaray. | |
void | FinishPrimary () override |
Finish current primary. | |
![]() | |
std::string | getHitBranchNames (int probe) const override |
void | updateHitTrackIndices (std::map< int, int > const &indexmapping) override |
void | attachHits (fair::mq::Channel &channel, fair::mq::Parts &parts) override |
void | mergeAndAdjustHits (std::string const &brname, TTree &origin, TTree &target, std::vector< int > const &trackoffsets, std::vector< int > const &nprimaries, std::vector< int > const &subevtsOrdered) |
void | mergeAndAdjustHits (std::string const &brname, L &hitbuffervector, TTree &target, std::vector< int > const &trackoffsets, std::vector< int > const &nprimaries, std::vector< int > const &subevtsOrdered) |
void | mergeHitEntries (TTree &origin, TTree &target, std::vector< int > const &trackoffsets, std::vector< int > const &nprimaries, std::vector< int > const &subevtsOrdered) final |
void | mergeHitEntriesAndFlush (int eventID, TTree &target, std::vector< int > const &trackoffsets, std::vector< int > const &nprimaries, std::vector< int > const &subevtsOrdered) final |
void | collectHits (int eventID, fair::mq::Parts &parts, int &index) override |
void | fillHitBranch (TTree &tr, fair::mq::Parts &parts, int &index) override |
FairModule * | CloneModule () const final |
void | freeHitBuffers () |
bool | setHits (int i, std::vector< Hit_t > *ptr) |
void | createHitBuffers () |
void | initializeLate () final |
void | BeginEvent () final |
~DetImpl () override | |
Detector (const char *name, Bool_t Active) | |
Detector () | |
Default Constructor. | |
Detector (const Detector &origin) | |
![]() | |
Detector (const char *name, Bool_t Active) | |
Detector () | |
Default Constructor. | |
~Detector () override | |
Default Destructor. | |
void | Material (Int_t imat, const char *name, Float_t a, Float_t z, Float_t dens, Float_t radl, Float_t absl, Float_t *buf=nullptr, Int_t nwbuf=0) |
void | Mixture (Int_t imat, const char *name, Float_t *a, Float_t *z, Float_t dens, Int_t nlmat, Float_t *wmat) |
void | Medium (Int_t numed, const char *name, Int_t nmat, Int_t isvol, Int_t ifield, Float_t fieldm, Float_t tmaxfd, Float_t stemax, Float_t deemax, Float_t epsil, Float_t stmin, Float_t *ubuf=nullptr, Int_t nbuf=0) |
void | SpecialCuts (Int_t numed, const std::initializer_list< std::pair< ECut, Float_t > > &parIDValMap) |
Custom processes and transport cuts. | |
void | SpecialCut (Int_t numed, ECut parID, Float_t val) |
Set cut by name and value. | |
void | SpecialProcesses (Int_t numed, const std::initializer_list< std::pair< EProc, int > > &parIDValMap) |
void | SpecialProcess (Int_t numed, EProc parID, int val) |
Set process by name and value. | |
void | Matrix (Int_t &nmat, Float_t theta1, Float_t phi1, Float_t theta2, Float_t phi2, Float_t theta3, Float_t phi3) const |
void | SetSpecialPhysicsCuts () override |
virtual void | addAlignableVolumes () const |
declare alignable volumes of detector | |
virtual void | fillParallelWorld () const |
fill parallel geometry with sensitive volumes of detector | |
virtual void | defineWrapperVolume (Int_t id, Double_t rmin, Double_t rmax, Double_t zspan) |
Sets per wrapper volume parameters. | |
virtual void | setNumberOfWrapperVolumes (Int_t n) |
Books arrays for wrapper volumes. | |
virtual void | defineLayer (Int_t nlay, Double_t phi0, Double_t r, Int_t nladd, Int_t nmod, Double_t lthick=0., Double_t dthick=0., UInt_t detType=0, Int_t buildFlag=0) |
virtual void | defineLayerTurbo (Int_t nlay, Double_t phi0, Double_t r, Int_t nladd, Int_t nmod, Double_t width, Double_t tilt, Double_t lthick=0., Double_t dthick=0., UInt_t detType=0, Int_t buildFlag=0) |
int | getMaterialID (int imat) const |
int | getMediumID (int imed) const |
void | getMediumIDMappingAsVector (std::vector< int > &mapping) |
std::string | addNameTo (const char *ext) const |
void | Initialize () final |
int | registerSensitiveVolumeAndGetVolID (std::string const &name) |
int | registerSensitiveVolumeAndGetVolID (TGeoVolume const *vol) |
TClonesArray * | GetCollection (int iColl) const final |
Protected Member Functions | |
void | CreateMaterials () |
Creating detector materials for the EMCAL detector and space frame. | |
void | ConstructGeometry () override |
void | CreateEmcalEnvelope () |
Generate EMCAL envelop (mother volume of all supermodules) | |
void | CreateShiskebabGeometry () |
Generate tower geometry. | |
void | CreateSupermoduleGeometry (const std::string_view mother="XEN1") |
Generate super module geometry. | |
void | CreateEmcalModuleGeometry (const std::string_view mother="SMOD", const std::string_view child="EMOD") |
Generate module geometry (2x2 towers) | |
void | CreateAlFrontPlate (const std::string_view mother="EMOD", const std::string_view child="ALFP") |
Generate aluminium plates geometry. | |
int | CreateEMCALVolume (const std::string_view name, const std::string_view shape, MediumType_t mediumID, Double_t *shapeParams, Int_t nparams) |
Create new EMCAL volume and add it to the list of sensitive volumes. | |
Double_t | CalculateLightYield (Double_t energydeposit, Double_t tracklength, Int_t charge) const |
Calculate the amount of light seen by the APD for a given track segment (charged particles only) according to Bricks law. | |
Hit * | FindHit (Int_t cellID, Int_t parentID) |
Try to find hit with same cell and parent track ID. | |
![]() | |
ClassDefOverride (DetImpl, 0) | |
pointer to hit (collector) buffer location (strictly internal) | |
![]() | |
Detector (const Detector &origin) | |
Detector & | operator= (const Detector &) |
Friends | |
template<typename Det > | |
class | o2::base::DetImpl |
Additional Inherited Members | |
![]() | |
static void | setDensityFactor (Float_t density) |
static Float_t | getDensityFactor () |
static void | initFieldTrackingParams (int &mode, float &maxfield) |
static void | setDetId2HitBitIndex (std::vector< int > const &v) |
set the DetID to HitBitIndex mapping. Succeeds if not already set. | |
static std::vector< int > const & | getDetId2HitBitIndex () |
![]() | |
bool * | mShmBusy [NHITBUFFERS] |
std::vector< void * > | mCachedPtr [NHITBUFFERS] |
pointer to bool in shared mem indicating of IO busy | |
int | mCurrentBuffer |
int | mInitialized |
char * | mHitCollectorBufferPtr |
![]() | |
static constexpr int | NHITBUFFERS |
Detector simulation class for the EMCAL detector.
The detector class handles the implementation of the EMCAL detector within the virtual Monte-Carlo framework and the simulation of the EMCAL detector up to hit generation
Definition at line 51 of file Detector.h.
Enumerator | |
---|---|
ID_AIR | |
ID_PB | |
ID_SC | |
ID_AL | |
ID_STEEL | |
ID_PAPER |
Definition at line 54 of file Detector.h.
|
default |
Default constructor.
Detector::Detector | ( | Bool_t | isActive | ) |
Main constructor.
isActive | Switch whether detector is active in simulation |
Definition at line 42 of file Detector.cxx.
|
override |
Destructor.
Definition at line 112 of file Detector.cxx.
Hit * Detector::AddHit | ( | Int_t | trackID, |
Int_t | primary, | ||
Double_t | initialEnergy, | ||
Int_t | detID, | ||
const math_utils::Point3D< float > & | pos, | ||
const math_utils::Vector3D< float > & | mom, | ||
Double_t | time, | ||
Double_t | energyloss | ||
) |
Add EMCAL hit.
trackID | Index of the track in the MC stack |
primary | Index of the primary particle in the MC stack |
initialEnergy | Energy of the particle entering the EMCAL |
detID | Index of the detector (cell) for which the hit is created |
pos | Position vector of the particle at the hit |
mom | Momentum vector of the particle at the hit |
time | Time of the hit |
energyloss | Energy deposit in EMCAL |
Internally adding hits coming from the same track
Definition at line 322 of file Detector.cxx.
Parent * Detector::AddSuperparent | ( | Int_t | trackID, |
Int_t | pdg, | ||
Double_t | energy | ||
) |
Definition at line 332 of file Detector.cxx.
|
override |
Begin primaray.
Caching current primary ID and set current parent ID to the current primary ID
Definition at line 1010 of file Detector.cxx.
|
protected |
Calculate the amount of light seen by the APD for a given track segment (charged particles only) according to Bricks law.
[in] | energydeposit | Energy deposited by a charged particle in the track segment |
[in] | tracklength | Length of the track segment |
[in] | charge | Track charge (in units of elementary charge) |
Definition at line 339 of file Detector.cxx.
|
overrideprotected |
Definition at line 143 of file Detector.cxx.
|
protected |
Generate aluminium plates geometry.
Definition at line 984 of file Detector.cxx.
|
protected |
Generate EMCAL envelop (mother volume of all supermodules)
Definition at line 402 of file Detector.cxx.
|
protected |
Generate module geometry (2x2 towers)
!!DCSM from 8th to 23th
Definition at line 887 of file Detector.cxx.
|
protected |
Create new EMCAL volume and add it to the list of sensitive volumes.
name | Name of the volume |
shape | Volume shape type |
mediumID | ID of the medium |
shapeParams | Shape parameters |
nparams | Number of shape parameters |
Should be called for all EMCAL volumes. Internally calls TVirtualMC::Gsvolu(...). Gsvolu should not be used directly as this function adds the volume to the list of sensitive volumes. Making all volumes sensitive is essential in order to not have broken decay chains in the cache due to missing stepping in volumes. This is relevant for the detector itself, not the space frame.
Definition at line 1003 of file Detector.cxx.
|
protected |
Creating detector materials for the EMCAL detector and space frame.
Definition at line 635 of file Detector.cxx.
|
protected |
Generate tower geometry.
Definition at line 454 of file Detector.cxx.
|
protected |
Generate super module geometry.
Definition at line 718 of file Detector.cxx.
|
final |
Steps to be carried out at the end of the event.
For EMCAL cleaning the hit collection and the lookup table
Definition at line 141 of file Detector.cxx.
|
protected |
Try to find hit with same cell and parent track ID.
cellID | ID of the tower |
parentID | ID of the parent track |
|
override |
Finish current primary.
Reset caches for current primary, current parent and current cell
Definition at line 1016 of file Detector.cxx.
Geometry * Detector::GetGeometry | ( | ) |
Get the EMCAL geometry desciption.
Will be created the first time the function is called
Definition at line 391 of file Detector.cxx.
|
inline |
|
overridevirtual |
|
final |
Processing hit creation in the EMCAL scintillator volume.
v | Current sensitive volume |
check handling of primary particles
Definition at line 170 of file Detector.cxx.
|
override |
register container with hits
Definition at line 374 of file Detector.cxx.
|
final |
Clean point collection.
Definition at line 379 of file Detector.cxx.
|
friend |
Definition at line 214 of file Detector.h.