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");
101 Hit*
AddHit(
int trackID,
int primary,
double initialEnergy,
int detID,
o2::focal::
Hit::Subsystem_t subsystem,
102 const math_utils::
Point3D<
float>&
pos,
double time,
double energyloss);
167 double hole_diameter = 1.1,
168 double hole_spacing = 4.0,
170 double fiber_radius = 0.5,
171 std::
string suffix = "");
200 int mMedSensHCal = 0;
201 int mMedSensECalPad = 0;
202 int mMedSensECalPix = 0;
207 std::unordered_map<
Hit::HitID,
unsigned int,
Hit::HitIDHasher> mHitIndexMapping;
209 std::unordered_map<
int,
int> mSuperParentsIndices;
210 std::unordered_map<
int,
Parent> mSuperParents;
211 Parent* mCurrentSuperparent;
215 Int_t mCurrentPrimaryID;
216 Int_t mCurrentParentID;
218 std::vector<
std::
string> mSensitive;
219 int mVolumeIDScintillator = -1;
221 template <typename Det>
234 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()
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 ...
Defining DataPointCompositeObject explicitly as copiable.
Information about superparent (particle entering any FOCAL volume)
double mEnergy
Total energy.
bool mHasTrackReference
Flag indicating whether parent has a track reference.