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;
22  double centre_cross_thick;
23  double side_thick;
24  double si_holder_side;
25  double si_centre;
26  double front_frame_depth;
27  double frame_depth_300;
28  double frame_depth_500;
29  double frame_edge_depth;
30  double si300_position;
31  double si500_position;
32  double full_width;
33  double dist_si2_csi;
34  double csi_depth;
35  double full_length_quartet;
36  double thick_si1;
37  double thick_si2;
38  double dist_csi_sarco;
39  double sarco_length;
40  double sarco_width;
41  double sarco_height;
42  double sarco_epaisseur;
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);
50  TGeoVolume* MakeQuartet();
51  TGeoVolume* MakeSarco();
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)
TRObject operator()(const T1 &t1) const
Standard geometry of 16-telescope FAZIA block.
Definition: KVFAZIABlock.h:17
Double_t GetBrassCollimatorDepth() const
Definition: KVFAZIABlock.h:92
virtual void Build()
Set default dimensions for all parts of geometry.
Double_t GetNominalDistanceTargetBlockCentre(double dist_SI1=100.) const
Definition: KVFAZIABlock.h:76
virtual ~KVFAZIABlock()
Definition: KVFAZIABlock.h:68
KVFAZIABlock()
Default constructor.
Double_t GetTotalSideWithBlindage() const
Definition: KVFAZIABlock.h:71
v