12#ifndef ALICEO2_FOCAL_DETECTOR_H_
13#define ALICEO2_FOCAL_DETECTOR_H_
20#include "TGeoManager.h"
77 Detector(Bool_t isActive, std::string geofilename =
"default");
84 bool isMTSafe()
const override {
return true; }
102 Hit*
AddHit(
int trackID,
int primary,
double initialEnergy,
int detID,
o2::focal::
Hit::Subsystem_t subsystem,
168 double hole_diameter = 1.1,
169 double hole_spacing = 4.0,
171 double fiber_radius = 0.5,
172 std::
string suffix = "");
201 int mMedSensHCal = 0;
202 int mMedSensECalPad = 0;
203 int mMedSensECalPix = 0;
208 std::unordered_map<
Hit::HitID,
unsigned int,
Hit::HitIDHasher> mHitIndexMapping;
210 std::unordered_map<
int,
int> mSuperParentsIndices;
211 std::unordered_map<
int,
Parent> mSuperParents;
212 Parent* mCurrentSuperparent;
216 Int_t mCurrentPrimaryID;
217 Int_t mCurrentParentID;
219 std::vector<
std::
string> mSensitive;
220 int mVolumeIDScintillator = -1;
222 template <typename Det>
235 static constexpr bool value =
true;
Definition of the Detector class.
FOCAL detector simulation.
bool ProcessHitsEPad(FairVolume *v=nullptr)
Processing hit creation in the ECAL Pad sensitive volume.
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 addAlignableVolumesHCAL() const
~Detector() override
Destructor.
void InitializeO2Detector() override
Initializing detector.
bool ProcessHitsHCAL(FairVolume *v=nullptr)
Processing hit creation in the HCAL sensitive volume.
std::vector< Hit > * getHits(Int_t iColl) const
Get access to the hits.
virtual void CreateHCALSandwich()
bool isMTSafe() const override
whether this detector may run in multithreaded Geant4, with one clone per worker thread
void Register() override
register container with hits
virtual void CreateHCALSheets()
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 FinishPrimary() override
Finish current primary.
virtual void CreateHCALSpaghetti()
void ConstructGeometry() override
Detector(Bool_t isActive, std::string geofilename="default")
Main constructor.
void addAlignableVolumesECAL() const
bool ProcessHitsEPix(FairVolume *v=nullptr)
Processing hit creation in the ECAL Pixel sensitive volume.
virtual void addAlignableVolumes() const override
declare alignable volumes of detector
void CreateMaterials()
Creating detector materials for the FOCAL detector.
Hit * FindHit(int parentID, int col, int row, int layer)
Try to find hit with same cell and parent track ID.
Bool_t ProcessHits(FairVolume *v=nullptr) final
Processing hit creation in the FOCAL sensitive volume.
void EndOfEvent() final
Steps to be carried out at the end of the event.
void BeginPrimary() override
Begin primaray.
void CreateECALGeometry()
Generate ECAL geometry.
Detector()=default
Dummy constructor.
Parent * AddSuperparent(int trackID, int pdg, double energy)
Add new superparent to the container.
void Reset() final
Clean point collection.
Geometry * getGeometry(std::string name="")
Get the FOCAL geometry desciption.
friend class o2::base::DetImpl
Common FOCAL hit class for the detector simulation.
GLuint const GLchar * name
GLsizei const GLfloat * value
GLenum GLuint GLint GLint layer
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Information about superparent (particle entering any FOCAL volume)
double mEnergy
Total energy.
bool mHasTrackReference
Flag indicating whether parent has a track reference.