5#ifndef SND_MTC_MTCDETECTOR_H_
6#define SND_MTC_MTCDETECTOR_H_
14#include "TGeoMatrix.h"
17class TGeoVolumeAssembly;
23 MTCDetector(
const char* name, Bool_t Active,
const char* Title =
"",
28 Double_t fiber_tilt_angle, Double_t iron_thickness,
29 Double_t scifi_thickness, Int_t num_of_agg_channels,
30 Double_t scint_cell_size, Double_t scint_thickness,
31 Int_t number_of_layers, Double_t z_position,
32 Double_t field_strength);
34 TGeoVolumeAssembly* modMotherVol,
35 Double_t z_shift, Double_t width,
36 Double_t height, Double_t thickness,
37 Double_t cellSizeX, Double_t cellSizeY,
38 TGeoMedium* material, Int_t color,
39 Double_t transparency, Int_t LayerId);
41 TGeoVolumeAssembly* modMotherVol,
42 Double_t width, Double_t height,
43 Double_t thickness, Int_t LayerId);
46 void GetPosition(Int_t fDetectorID, TVector3& vLeft,
49 TVector3
GetLocalPos(Int_t fDetectorID, TVector3* glob);
53 std::map<Int_t, std::map<Int_t, std::array<float, 2>>>
GetSiPMmapU() {
56 std::map<Int_t, std::map<Int_t, std::array<float, 2>>>
GetFibresMapU() {
59 std::map<Int_t, std::map<Int_t, std::array<float, 2>>>
GetSiPMmapV() {
62 std::map<Int_t, std::map<Int_t, std::array<float, 2>>>
GetFibresMapV() {
69 virtual void SiPMOverlap();
70 Bool_t ProcessHits(FairVolume* vol = 0)
override;
107 std::map<Int_t, std::map<Int_t, std::array<float, 2>>>
109 std::map<Int_t, std::map<Int_t, std::array<float, 2>>>
111 std::map<Int_t, std::map<Int_t, std::array<float, 2>>>
113 std::map<Int_t, std::map<Int_t, std::array<float, 2>>>
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > siPMFibres_V
mapping of fibres to SiPM channels
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > fibresSiPM_V
inverse mapping
Double_t fSciFiBendingAngle
Int_t Get_NSiPMChan() const
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > fibresSiPM_U
static constexpr Int_t kMaxChannelsPerSiPM
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > GetSiPMmapV()
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > GetSiPMmapU()
std::map< Int_t, float > GetSiPMPos_V()
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > GetFibresMapV()
Float_t Get_SciFiActiveX() const
void ConstructGeometry() override
std::map< Int_t, float > GetSiPMPos_U()
MTCDetector & operator=(const MTCDetector &)=delete
TVector3 GetLocalPos(Int_t fDetectorID, TVector3 *glob)
void SetMTCParameters(Double_t width, Double_t height, Double_t fiber_tilt_angle, Double_t iron_thickness, Double_t scifi_thickness, Int_t num_of_agg_channels, Double_t scint_cell_size, Double_t scint_thickness, Int_t number_of_layers, Double_t z_position, Double_t field_strength)
virtual void CreateScintModule(const char *name, TGeoVolumeAssembly *modMotherVol, Double_t z_shift, Double_t width, Double_t height, Double_t thickness, Double_t cellSizeX, Double_t cellSizeY, TGeoMedium *material, Int_t color, Double_t transparency, Int_t LayerId)
MTCDetector(const MTCDetector &)=delete
local SiPM channel position
virtual void CreateSciFiModule(const char *name, TGeoVolumeAssembly *modMotherVol, Double_t width, Double_t height, Double_t thickness, Int_t LayerId)
void GetSiPMPosition(Int_t SiPMChan, TVector3 &A, TVector3 &B)
std::map< Int_t, float > SiPMPos_U
inverse mapping
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > GetFibresMapU()
std::map< Int_t, float > SiPMPos_V
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > siPMFibres_U
mapping of fibres to SiPM channels
void GetPosition(Int_t fDetectorID, TVector3 &vLeft, TVector3 &vRight)