![]() |
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 | isMTSafe () const override |
| whether this detector may run in multithreaded Geant4, with one clone per worker thread | |
| 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. | |
Public Member Functions inherited from o2::base::DetImpl< Detector > | |
| DetImpl (const DetImpl &rhs) | |
| copy for a worker thread of multithreaded Geant4; the copy creates its own hit buffers in initializeLate | |
| DetImpl & | operator= (const DetImpl &)=delete |
| 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 |
| auto & | hitCollector () |
| 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, bool shm) 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 | |
| void | Streamer (TBuffer &) |
| Detector (const char *name, Bool_t Active) | |
| Detector () | |
| Default Constructor. | |
| Detector (const Detector &origin) | |
Public Member Functions inherited from o2::base::Detector | |
| 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, Double_t theta1, Double_t phi1, Double_t theta2, Double_t phi2, Double_t theta3, Double_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 |
Public Member Functions inherited from FairDetector | |
| FairDetector (const char *Name, Bool_t Active, Int_t DetId=0) | |
| FairDetector () | |
| virtual | ~FairDetector () |
| virtual TClonesArray * | GetCollection (Int_t iColl) const =0 |
| virtual void | CopyClones (TClonesArray *, TClonesArray *, Int_t) |
| virtual void | FinishRun () |
| virtual void | PostTrack () |
| virtual void | PreTrack () |
| virtual void | FinishEvent () |
| void | SaveGeoParams () |
| Int_t | GetDetId () |
Public Member Functions inherited from FairModule | |
| FairModule () | |
| FairModule (const char *Name, const char *title, Bool_t Active=kFALSE) | |
| virtual | ~FairModule () |
| virtual void | Print (Option_t *) const |
| virtual void | SetGeometryFileName (TString fname, TString geoVer="0") |
| virtual TString | GetGeometryFileName () |
| virtual TString | GetGeometryFileVer () |
| virtual void | ConstructOpGeometry () |
| virtual void | ConstructRootGeometry (TGeoMatrix *shiftM=nullptr) |
| virtual void | ConstructASCIIGeometry () |
| virtual void | ModifyGeometry () __attribute__((deprecated("Use FairAlignmentHandler instead |
| virtual void | RegisterAlignmentMatrices () |
| virtual void | ConstructGDMLGeometry (__attribute__((unused)) TGeoMatrix *posrot) |
| virtual void | BeginWorkerRun () const |
| virtual void | FinishWorkerRun () const |
| virtual Bool_t | IsSensitive (const std::string &name) |
| virtual Bool_t | CheckIfSensitive (__attribute__((unused)) std::string name) __attribute__((deprecated("The method CheckIfSensitive is deprecated. Implement IsSensitive in the detector classes."))) |
| virtual void | ExpandNode (TGeoNode *Node) |
| virtual void | ExpandNodeForGDML (__attribute__((unused)) TGeoNode *curNode) |
| virtual Int_t | getVolId (const TString &) const |
| Int_t | GetModId () |
| void | SetVerboseLevel (Int_t level) |
| Bool_t | IsActive () |
| void | SetModId (Int_t id) |
| void | SetMotherVolume (TString volName) |
| virtual void | SetParContainers () |
| virtual void | InitParContainers () |
| TList * | GetListOfGeoPar () |
| FairVolume * | getFairVolume (FairGeoNode *fNode) |
| void | AddSensitiveVolume (TGeoVolume *v) |
| void | SetMC (TVirtualMC *mc) |
| cahed pointer to MC (available only after initialization) | |
| ClassDef (FairModule, 4) | |
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. | |
Protected Member Functions inherited from o2::base::DetImpl< Detector > | |
| ClassDefOverride (DetImpl, 0) | |
| type-erased hit buffers of this instance in the hit merger (see hitCollector()) | |
Protected Member Functions inherited from o2::base::Detector | |
| Detector (const Detector &origin) | |
| Detector & | operator= (const Detector &) |
Protected Member Functions inherited from FairDetector | |
| FairDetector (const FairDetector &) | |
| FairDetector & | operator= (const FairDetector &) |
| void | DefineSensitiveVolumes () |
| ClassDef (FairDetector, 1) | |
| /// FairLogger | |
Protected Member Functions inherited from FairModule | |
| FairModule (const FairModule &) | |
| FairModule & | operator= (const FairModule &) |
Friends | |
| template<typename Det > | |
| class | o2::base::DetImpl |
Additional Inherited Members | |
Static Public Member Functions inherited from o2::base::Detector | |
| static void | setDensityFactor (Float_t density) |
| static Float_t | getDensityFactor () |
| static int | updatedTrackIndex (std::map< int, int > const &indexmapping, int trackID) |
| static int | offsetTrackIndex (int trackID, int nprimaries, int primaryOffset, int secondaryOffset) |
| 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 () |
Public Attributes inherited from FairModule | |
| virtual void see Tutorial4 for | examples |
| TString | fMotherVolumeName |
Static Public Attributes inherited from FairModule | |
| static thread_local FairVolumeList * | vList = 0 |
| static thread_local Int_t | fNbOfVolumes = 0 |
| static thread_local TRefArray * | svList = 0 |
| static thread_local TArrayI * | volNumber = 0 |
Protected Attributes inherited from o2::base::DetImpl< Detector > | |
| ShmBusyFlag * | mShmBusy [NHITBUFFERS] |
| std::vector< void * > | mCachedPtr [NHITBUFFERS] |
| pointer to flag in shared mem indicating of IO busy | |
| int | mCurrentBuffer |
| int | mInitialized |
| std::shared_ptr< void > | mHitCollector |
Protected Attributes inherited from FairDetector | |
| Int_t | fDetId |
| FairLogger * | fLogger |
Protected Attributes inherited from FairModule | |
| TString | fgeoVer |
| TString | fgeoName |
| Int_t | fModId |
| Bool_t | fActive |
| Int_t | fNbOfSensitiveVol |
| Int_t | fVerboseLevel |
| TList * | flGeoPar |
| Bool_t | fGeoSaved |
| list of Detector Geometry parameters | |
| TVirtualMC * | fMC |
| flag for initialisation | |
Static Protected Attributes inherited from o2::base::DetImpl< Detector > | |
| 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 41 of file Detector.cxx.
|
override |
Destructor.
Definition at line 111 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.
|
overridevirtual |
Begin primaray.
Caching current primary ID and set current parent ID to the current primary ID
Reimplemented from FairDetector.
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.
|
overrideprotectedvirtual |
method called from the MC application to construct the geometry, has to be implimented by user
Reimplemented from FairModule.
Definition at line 142 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.
|
finalvirtual |
Steps to be carried out at the end of the event.
For EMCAL cleaning the hit collection and the lookup table
Reimplemented from FairDetector.
Definition at line 140 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 |
|
overridevirtual |
Finish current primary.
Reset caches for current primary, current parent and current cell
Reimplemented from FairDetector.
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 |
|
inlineoverridevirtual |
whether this detector may run in multithreaded Geant4, with one clone per worker thread
Reimplemented from o2::base::Detector.
Definition at line 74 of file Detector.h.
|
finalvirtual |
Processing hit creation in the EMCAL scintillator volume.
| v | Current sensitive volume |
check handling of primary particles
Implements FairDetector.
Definition at line 169 of file Detector.cxx.
|
overridevirtual |
|
finalvirtual |
|
friend |
Definition at line 215 of file Detector.h.