KaliVeda
Toolkit for HIC analysis
KVFAZIABlock.h
1 
4 #ifndef __KVFAZIABLOCK_H
5 #define __KVFAZIABLOCK_H
6 
7 #include "TGeoVolume.h"
8 #include <TVector3.h>
9 #include "KVConfig.h"
10 
18 
19 protected:
20  double fTotSidWBld;
21  double frame_side;
23  double side_thick;
25  double si_centre;
32  double full_width;
33  double dist_si2_csi;
34  double csi_depth;
36  double thick_si1;
37  double thick_si2;
39  double sarco_length;
40  double sarco_width;
41  double sarco_height;
43  double sarco_uplift;
44 
45  TGeoVolume* MakeRightCrossPieceCSI(double front_side, double separation, double distPlane, double depth);
46  TGeoVolume* MakeLeftCrossPieceCSI(double front_side, double separation, double distPlane, double depth);
47  TGeoVolume* MakeCrossPieceCSI(double front_side, double separation, double distPlane, double depth);
48  std::vector<double> GetCoordsCSI(int tel_num, double front_side, double separation, double distPlane, double depth);
49  TGeoVolume* MakeErgalFrame(double frame_depth, double ergal_edge_depth);
52  struct Projector {
53  double rap, depth;
54  Projector(double D, double d) : rap((D + d) / D), depth(d) {}
55 
57  {
58 #ifdef WITH_CPP11
59  return {rap * v.X(), rap * v.Y(), v.Z() + depth};
60 #else
61  return TVector3(rap * v.X(), rap * v.Y(), v.Z() + depth);
62 #endif
63  }
64  };
65 
66 public:
67  KVFAZIABlock();
68  virtual ~KVFAZIABlock() {}
69 
70  virtual void Build();
72  {
74  return fTotSidWBld;
75  }
76  Double_t GetNominalDistanceTargetBlockCentre(double dist_SI1 = 100.) const
77  {
89 
90  return dist_SI1 + 0.5 * full_length_quartet - (front_frame_depth + frame_edge_depth);
91  }
93  {
95  return front_frame_depth;
96  }
97 
98  ClassDef(KVFAZIABlock, 1) //Block of 16 telescopes FAZIA
99 };
100 
101 #endif
#define d(i)
double Double_t
#define ClassDef(name, id)
Standard geometry of 16-telescope FAZIA block.
Definition: KVFAZIABlock.h:17
double fTotSidWBld
Definition: KVFAZIABlock.h:20
double full_width
Definition: KVFAZIABlock.h:32
double si_centre
Definition: KVFAZIABlock.h:25
TGeoVolume * MakeSarco()
double dist_si2_csi
Definition: KVFAZIABlock.h:33
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
Definition: KVFAZIABlock.h:92
double thick_si1
Definition: KVFAZIABlock.h:36
virtual void Build()
Set default dimensions for all parts of geometry.
TGeoVolume * MakeCrossPieceCSI(double front_side, double separation, double distPlane, double depth)
Part of aluminium frame which holds the CsI.
double frame_depth_300
Definition: KVFAZIABlock.h:27
Double_t GetNominalDistanceTargetBlockCentre(double dist_SI1=100.) const
Definition: KVFAZIABlock.h:76
double centre_cross_thick
Definition: KVFAZIABlock.h:22
double frame_edge_depth
Definition: KVFAZIABlock.h:29
double dist_csi_sarco
Definition: KVFAZIABlock.h:38
TGeoVolume * MakeErgalFrame(double frame_depth, double ergal_edge_depth)
virtual ~KVFAZIABlock()
Definition: KVFAZIABlock.h:68
double full_length_quartet
Definition: KVFAZIABlock.h:35
double sarco_length
Definition: KVFAZIABlock.h:39
double sarco_epaisseur
Definition: KVFAZIABlock.h:42
double si_holder_side
Definition: KVFAZIABlock.h:24
double si300_position
Definition: KVFAZIABlock.h:30
double si500_position
Definition: KVFAZIABlock.h:31
TGeoVolume * MakeRightCrossPieceCSI(double front_side, double separation, double distPlane, double depth)
Part of aluminium frame which holds the CsI.
double sarco_uplift
Definition: KVFAZIABlock.h:43
double thick_si2
Definition: KVFAZIABlock.h:37
double sarco_height
Definition: KVFAZIABlock.h:41
double frame_depth_500
Definition: KVFAZIABlock.h:28
double front_frame_depth
Definition: KVFAZIABlock.h:26
double frame_side
Definition: KVFAZIABlock.h:21
double side_thick
Definition: KVFAZIABlock.h:23
KVFAZIABlock()
Default constructor.
double sarco_width
Definition: KVFAZIABlock.h:40
TGeoVolume * MakeQuartet()
double csi_depth
Definition: KVFAZIABlock.h:34
Double_t GetTotalSideWithBlindage() const
Definition: KVFAZIABlock.h:71
v
TVector3 operator()(const TVector3 &v)
Definition: KVFAZIABlock.h:56
Projector(double D, double d)
Definition: KVFAZIABlock.h:54