KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVFAZIABlock.h
1
3
4#ifndef __KVFAZIABLOCK_H
5#define __KVFAZIABLOCK_H
6
7#include "TGeoVolume.h"
8#include <TVector3.h>
9#include "KVConfig.h"
10
18
20 double frame_side;
22 double side_thick;
24 double si_centre;
31 double full_width;
33 double csi_depth;
35 double thick_si1;
36 double thick_si2;
43
44 TGeoVolume* MakeRightCrossPieceCSI(double front_side, double separation, double distPlane, double depth);
45 TGeoVolume* MakeLeftCrossPieceCSI(double front_side, double separation, double distPlane, double depth);
46 TGeoVolume* MakeCrossPieceCSI(double front_side, double separation, double distPlane, double depth);
47 std::vector<double> GetCoordsCSI(int tel_num, double front_side, double separation, double distPlane, double depth);
48 TGeoVolume* MakeErgalFrame(double frame_depth, double ergal_edge_depth);
51 struct Projector {
52 double rap, depth;
53 Projector(double D, double d) : rap((D + d) / D), depth(d) {}
54
56 {
57#ifdef WITH_CPP11
58 return {rap * v.X(), rap * v.Y(), v.Z() + depth};
59#else
60 return TVector3(rap * v.X(), rap * v.Y(), v.Z() + depth);
61#endif
62 }
63 };
64
65public:
67 virtual ~KVFAZIABlock() {}
68
70 {
72 return fTotSidWBld;
73 }
74 Double_t GetNominalDistanceTargetBlockCentre(double dist_SI1 = 100.) const
75 {
87
88 return dist_SI1 + 0.5 * full_length_quartet - (front_frame_depth + frame_edge_depth);
89 }
95
96 ClassDef(KVFAZIABlock, 1) //Block of 16 telescopes FAZIA
97};
98
99#endif
#define d(i)
double Double_t
#define ClassDef(name, id)
Standard geometry of 16-telescope FAZIA block.
double fTotSidWBld
double full_width
double si_centre
TGeoVolume * MakeSarco()
double dist_si2_csi
TGeoVolume * MakeLeftCrossPieceCSI(double front_side, double separation, double distPlane, double depth)
Part of aluminium frame which holds the CsI.
std::vector< double > GetCoordsCSI(int tel_num, double front_side, double separation, double distPlane, double depth)
Double_t GetBrassCollimatorDepth() const
double thick_si1
TGeoVolume * MakeCrossPieceCSI(double front_side, double separation, double distPlane, double depth)
Part of aluminium frame which holds the CsI.
double frame_depth_300
Double_t GetNominalDistanceTargetBlockCentre(double dist_SI1=100.) const
double centre_cross_thick
double frame_edge_depth
double dist_csi_sarco
TGeoVolume * MakeErgalFrame(double frame_depth, double ergal_edge_depth)
virtual ~KVFAZIABlock()
double full_length_quartet
double sarco_length
double sarco_epaisseur
double si_holder_side
double si300_position
double si500_position
TGeoVolume * MakeRightCrossPieceCSI(double front_side, double separation, double distPlane, double depth)
Part of aluminium frame which holds the CsI.
double sarco_uplift
double thick_si2
double sarco_height
double frame_depth_500
double front_frame_depth
double frame_side
double side_thick
double sarco_width
TGeoVolume * MakeQuartet()
double csi_depth
Double_t GetTotalSideWithBlindage() const
v
TVector3 operator()(const TVector3 &v)
Projector(double D, double d)