![]() |
Project
|
FOCAL detector simulation. More...
#include <Detector.h>
Inherits o2::base::DetImpl< Detector >.
Public Types | |
| enum | MediumType_t { ID_TUNGSTEN = 0 , ID_SIPAD = 1 , ID_SIPIX = 2 , ID_G10 = 3 , ID_COPPER = 4 , ID_STEEL = 5 , ID_ALLOY = 6 , ID_CERAMIC = 7 , ID_PB = 8 , ID_SC = 9 , ID_SIINSENS = 10 , ID_ALUMINIUM = 11 , ID_VAC = 12 , ID_AIR = 13 } |
Public Member Functions | |
| Detector ()=default | |
| Dummy constructor. | |
| Detector (Bool_t isActive, std::string geofilename="default") | |
| 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 FOCAL sensitive volume. | |
| Hit * | AddHit (int trackID, int primary, double initialEnergy, int detID, o2::focal::Hit::Subsystem_t subsystem, const math_utils::Point3D< float > &pos, double time, double energyloss) |
| Add FOCAL hit. | |
| 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. | |
| void | BeginPrimary () override |
| Begin primaray. | |
| void | FinishPrimary () override |
| Finish current primary. | |
| Geometry * | getGeometry (std::string name="") |
| Get the FOCAL geometry desciption. | |
| Hit * | FindHit (int parentID, int col, int row, int layer) |
| Try to find hit with same cell and parent track ID. | |
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 | 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 FOCAL detector. | |
| virtual void | addAlignableVolumes () const override |
| declare alignable volumes of detector | |
| void | addAlignableVolumesHCAL () const |
| void | addAlignableVolumesECAL () const |
| void | ConstructGeometry () override |
| virtual void | CreateHCALSpaghetti () |
| virtual void | CreateHCALSandwich () |
| virtual void | CreateHCALSheets () |
| TGeoVolumeAssembly * | CreatePitchAssembly (double Lx=498.1, double Ly1=2.0, double Ly2=1.5, double Lz=1100.0, double hole_diameter=1.1, double hole_spacing=4.0, int nholes=124, double fiber_radius=0.5, std::string suffix="") |
| void | CreateECALGeometry () |
| Generate ECAL geometry. | |
| Parent * | AddSuperparent (int trackID, int pdg, double energy) |
| Add new superparent to the container. | |
| bool | ProcessHitsEPad (FairVolume *v=nullptr) |
| Processing hit creation in the ECAL Pad sensitive volume. | |
| bool | ProcessHitsEPix (FairVolume *v=nullptr) |
| Processing hit creation in the ECAL Pixel sensitive volume. | |
| bool | ProcessHitsHCAL (FairVolume *v=nullptr) |
| Processing hit creation in the HCAL sensitive volume. | |
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 |
FOCAL detector simulation.
The detector class handles the implementation of the FOCAL detector within the virtual Monte-Carlo framework and the simulation of the FOCAL detector up to hit generation
Definition at line 54 of file Detector.h.
| Enumerator | |
|---|---|
| ID_TUNGSTEN | |
| ID_SIPAD | |
| ID_SIPIX | |
| ID_G10 | |
| ID_COPPER | |
| ID_STEEL | |
| ID_ALLOY | |
| ID_CERAMIC | |
| ID_PB | |
| ID_SC | |
| ID_SIINSENS | |
| ID_ALUMINIUM | |
| ID_VAC | |
| ID_AIR | |
Definition at line 57 of file Detector.h.
|
default |
Dummy constructor.
| o2::focal::Detector::Detector | ( | Bool_t | isActive, |
| std::string | geofilename = "default" |
||
| ) |
Main constructor.
| isActive | Switch whether detector is active in simulation |
|
override |
Destructor.
Definition at line 70 of file Detector.cxx.
|
overrideprotectedvirtual |
declare alignable volumes of detector
Reimplemented from o2::base::Detector.
Definition at line 400 of file Detector.cxx.
|
protected |
Definition at line 423 of file Detector.cxx.
|
protected |
Definition at line 412 of file Detector.cxx.
| Hit * Detector::AddHit | ( | int | trackID, |
| int | primary, | ||
| double | initialEnergy, | ||
| int | detID, | ||
| o2::focal::Hit::Subsystem_t | subsystem, | ||
| const math_utils::Point3D< float > & | pos, | ||
| double | time, | ||
| double | energyloss | ||
| ) |
Add FOCAL 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 FOCAL |
| 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 FOCAL |
Internally adding hits coming from the same track
Definition at line 168 of file Detector.cxx.
|
protected |
Add new superparent to the container.
| trackID | Track ID of the superparent |
| pdg | PDG code of the superparent |
| energy | Energy of the superparent |
Definition at line 193 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 1285 of file Detector.cxx.
|
overrideprotectedvirtual |
method called from the MC application to construct the geometry, has to be implimented by user
-1 means get all the material object
Reimplemented from FairModule.
Definition at line 433 of file Detector.cxx.
|
protected |
Generate ECAL geometry.
make big volume containing all the longitudinal layers
Definition at line 1037 of file Detector.cxx.
|
protectedvirtual |
make big volume containing all the longitudinal layers
Definition at line 915 of file Detector.cxx.
|
protectedvirtual |
Definition at line 836 of file Detector.cxx.
|
protectedvirtual |
Definition at line 509 of file Detector.cxx.
|
protected |
Creating detector materials for the FOCAL detector.
Silicon
W plate -> idtmed[3599];
Si plate -> idtmed[3600];
Si plate
Pb plate --> idtmed[3608]
Scintillator --> idtmed[3609]
Si plate -> idtmed[3610];
idtmed[3697]
idtmed[3698]
Definition at line 221 of file Detector.cxx.
|
protected |
Definition at line 702 of file Detector.cxx.
|
finalvirtual |
Steps to be carried out at the end of the event.
For FOCAL cleaning the hit collection and the lookup table
Reimplemented from FairDetector.
Definition at line 200 of file Detector.cxx.
| Hit * Detector::FindHit | ( | int | parentID, |
| int | col, | ||
| int | row, | ||
| int | layer | ||
| ) |
Try to find hit with same cell and parent track ID.
| parentID | ID of the parent track |
| col | Column of the cell |
| row | Row of the cell |
| Layer | Layer of cell |
Definition at line 181 of file Detector.cxx.
|
overridevirtual |
Finish current primary.
Reset caches for current primary, current parent and current cell
Reimplemented from FairDetector.
Definition at line 1291 of file Detector.cxx.
| Geometry * Detector::getGeometry | ( | std::string | name = "" | ) |
Get the FOCAL geometry desciption.
Will be created the first time the function is called
Definition at line 75 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 84 of file Detector.h.
|
finalvirtual |
Processing hit creation in the FOCAL sensitive volume.
| v | Current sensitive volume |
Implements FairDetector.
Definition at line 113 of file Detector.cxx.
|
protected |
Processing hit creation in the ECAL Pad sensitive volume.
| v | Current sensitive volume |
check handling of primary particles
Definition at line 1298 of file Detector.cxx.
|
protected |
Processing hit creation in the ECAL Pixel sensitive volume.
| v | Current sensitive volume |
check handling of primary particles
Definition at line 1398 of file Detector.cxx.
|
protected |
Processing hit creation in the HCAL sensitive volume.
| v | Current sensitive volume |
check handling of primary particles
Definition at line 1348 of file Detector.cxx.
|
overridevirtual |
|
finalvirtual |
|
friend |
Definition at line 223 of file Detector.h.