12#ifndef ALICEO2_EMCAL_DETECTOR_H_
13#define ALICEO2_EMCAL_DETECTOR_H_
19#include "RStringView.h"
22#include <unordered_map>
91 Hit*
AddHit(Int_t trackID, Int_t primary, Double_t initialEnergy, Int_t detID,
92 const math_utils::
Point3D<
float>&
pos, const math_utils::Vector3D<
float>& mom, Double_t
time, Double_t energyloss);
190 std::vector<
std::
string> mSensitive;
193 Int_t mVolumeIDScintillator;
196 std::unordered_map<
int,
int> mSuperParentsIndices;
197 std::unordered_map<
int,
Parent> mSuperParents;
198 Parent* mCurrentSuperparent;
202 Int_t mCurrentPrimaryID;
203 Int_t mCurrentParentID;
205 Double_t mSampleWidth;
210 Double_t mDCALInnerGap;
211 Double_t mParEMOD[5];
213 template <typename Det>
227 static constexpr bool value =
true;
Definition of the Detector class.
Detector simulation class for the EMCAL detector.
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.
void CreateEmcalModuleGeometry(const std::string_view mother="SMOD", const std::string_view child="EMOD")
Generate module geometry (2x2 towers)
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) acco...
Parent * AddSuperparent(Int_t trackID, Int_t pdg, Double_t energy)
Hit * FindHit(Int_t cellID, Int_t parentID)
Try to find hit with same cell and parent track ID.
void CreateSupermoduleGeometry(const std::string_view mother="XEN1")
Generate super module geometry.
~Detector() override
Destructor.
void InitializeO2Detector() override
Initializing detector.
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.
Geometry * GetGeometry()
Get the EMCAL geometry desciption.
Detector()=default
Default constructor.
std::vector< Hit > * getHits(Int_t iColl) const
Get access to the hits.
void CreateEmcalEnvelope()
Generate EMCAL envelop (mother volume of all supermodules)
void Register() override
register container with hits
void FinishPrimary() override
Finish current primary.
void ConstructGeometry() override
void CreateMaterials()
Creating detector materials for the EMCAL detector and space frame.
Bool_t ProcessHits(FairVolume *v=nullptr) final
Processing hit creation in the EMCAL scintillator volume.
void EndOfEvent() final
Steps to be carried out at the end of the event.
void BeginPrimary() override
Begin primaray.
void Reset() final
Clean point collection.
void CreateShiskebabGeometry()
Generate tower geometry.
void CreateAlFrontPlate(const std::string_view mother="EMOD", const std::string_view child="ALFP")
Generate aluminium plates geometry.
friend class o2::base::DetImpl
EMCAL geometry definition.
EMCAL simulation hit information.
GLuint const GLchar * name
GLsizei const GLfloat * value
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Defining DataPointCompositeObject explicitly as copiable.
Information about superparent (particle entering EMCAL)
double mEnergy
Total energy.
bool mHasTrackReference
Flag indicating whether parent has a track reference.