KaliVeda  1.12/06
Heavy-Ion Analysis Toolkit
KVFAZIACOR.cpp
Go to the documentation of this file.
1 //Created by KVClassFactory on Tue Jan 27 11:38:09 2015
2 //Author: ,,,
3 
4 #include "KVFAZIACOR.h"
5 #include "KVUnits.h"
6 #include "KVFAZIABlock.h"
7 #include "TSystem.h"
8 #include "KVEnv.h"
9 
10 #include <TGeoMatrix.h>
11 
13 
14 // BEGIN_HTML <!--
16 /* -->
17 <h2>KVFAZIACOR</h2>
18 <h4>Description of the FAZIA set up</h4>
19 <!-- */
20 // --> END_HTML
22 
23 
24 
28 {
29  // Default constructor
30 }
31 
32 
33 
36 
38 {
39  // Destructor
40 }
41 
42 
43 
46 
48 {
49  //Defined number of blocks, the distance from the target and the minimum polar angle
50  fNblocks = 4;
51  fFDist = 80.3;
52  fFThetaMin = 2.1;
53 }
54 
55 
56 
62 
64 {
65  // Telescope for elastic scattering monitoring
66  // Two 5mm diameter silicon detectors of 525um thickness
67  // placed 2m20 from the target at theta=1.84deg phi=-90deg.
68  // distance between centres of detectors = 1mm
69 
70  KVMaterial silicon("Si");
71 
72  const double radius = 9 * KVUnits::mm / 2.;
73 
74  const double thick = 525 * KVUnits::um;
75  const double centre_dist = 1 * KVUnits::mm;
76  double total_thickness = thick + centre_dist;
77 
78  TGeoVolume* si_det = gGeoManager->MakeTube("DET_SI", silicon.GetGeoMedium(), 0., radius, thick / 2);
79 
80  TGeoVolumeAssembly* ruth_tel = gGeoManager->MakeVolumeAssembly("STRUCT_RUTH");
81 
82  ruth_tel->AddNode(si_det, 1, new TGeoTranslation(0, 0, -centre_dist / 2));
83  ruth_tel->AddNode(si_det, 2, new TGeoTranslation(0, 0, centre_dist / 2));
84 
85  // front entrance of first detector at 2 metres from target
86  const double distance = 2.27 * KVUnits::m + 0.5 * total_thickness;
87  const double theta = 0.99;
88  const double phi = -54.07;
89  gGeoManager->GetTopVolume()->AddNode(ruth_tel, 1,
91  theta,
92  phi));
93 }
94 
95 
96 
97 
103 
105 {
106  //Build geometry of FAZIASYM
107  //All telescopes are : Si(300µm)-Si(500µm)-CsI(10cm)
108  //No attempt has been made to implement real thicknesses
109  //
110  Info("BuildFAZIA", "Compact geometry, %f cm from target",
111  fFDist);
112 
114 
115  KVFAZIABlock* block = new KVFAZIABlock;
116  // "Real" geometry of the FAZIA setup - from the various measurements done with the goniometer
117  Double_t dist_target_block0 = (80.0 + block->GetBrassCollimatorDepth()) * KVUnits::cm ;
118  Double_t dist_target_block1 = (80.3 + block->GetBrassCollimatorDepth()) * KVUnits::cm ;
119  Double_t dist_target_block2 = (80.0 + block->GetBrassCollimatorDepth()) * KVUnits::cm ;
120  Double_t dist_target_block3 = (80.3 + block->GetBrassCollimatorDepth()) * KVUnits::cm ;
121  //
122  // Theta and Phi angles of the blocks are deduced from the measurements of the angles of each telescopes
123  Double_t theta_block0 = 5.41 ; // in degrees
124  Double_t theta_block1 = 5.43 ; // in degrees
125  Double_t theta_block2 = 5.53 ; // in degrees
126  Double_t theta_block3 = 5.52 ; // in degrees
127 
128  Double_t phi_block0 = -13.96 ; // in degrees
129  Double_t phi_block1 = -106.57 ; // in degrees
130  Double_t phi_block2 = 164.96 ; // in degrees
131  Double_t phi_block3 = 74.93 ; // in degrees
132  //
133  // Block 0
134  top->AddNode(block, 0,
136  theta_block0, phi_block0));
137 
138  printf("BLK #%d => theta=%1.2lf - phi=%1.2lf - DistToTarget=%1.2lf\n", 0, theta_block0, phi_block0, dist_target_block0) ;
139  //
140  // Block 1
141  top->AddNode(block, 1,
143  theta_block1, phi_block1));
144 
145  printf("BLK #%d => theta=%1.2lf - phi=%1.2lf - DistToTarget=%1.2lf\n", 1, theta_block1, phi_block1, dist_target_block1) ;
146  //
147  // Block 2
148  top->AddNode(block, 2,
150  theta_block2, phi_block2));
151 
152  printf("BLK #%d => theta=%1.2lf - phi=%1.2lf - DistToTarget=%1.2lf\n", 2, theta_block2, phi_block2, dist_target_block2) ;
153  //
154  // Block 3
155  top->AddNode(block, 3,
157  theta_block3, phi_block3));
158 
159  printf("BLK #%d => theta=%1.2lf - phi=%1.2lf - DistToTarget=%1.2lf\n", 3, theta_block3, phi_block3, dist_target_block3) ;
160  //
161  //
162  // add telescope for elastic scattering monitoring
164  // Change default geometry import angular range for rutherford telescope
165  SetGeometryImportParameters(.25, 1., .1);
166 }
167 
168 
169 
171 
173 {
174 
176 // env.SetValue("RUTH_SI_1", "SI1-RUTH");
177 // env.SetValue("RUTH_SI_2", "SI2-RUTH");
178 
179 }
180 
181 
ClassImp(KVPartitionList) void KVPartitionList
Initialisation.
double Double_t
R__EXTERN TGeoManager * gGeoManager
Extension of TEnv to allow the writing of comments in the file.
Definition: KVEnv.h:16
Standard geometry of 16-telescope FAZIA block.
Definition: KVFAZIABlock.h:16
Double_t GetBrassCollimatorDepth() const
Definition: KVFAZIABlock.h:89
Double_t GetNominalDistanceTargetBlockCentre(double dist_SI1=100.) const
Definition: KVFAZIABlock.h:73
Description of FAZIA geometry for FAZIACOR experiment.
Definition: KVFAZIACOR.h:13
virtual void SetNameOfDetectors(KVEnv &env)
Definition: KVFAZIACOR.cpp:172
virtual ~KVFAZIACOR()
Destructor.
Definition: KVFAZIACOR.cpp:37
void RutherfordTelescope()
Definition: KVFAZIACOR.cpp:63
virtual void GetGeometryParameters()
Defined number of blocks, the distance from the target and the minimum polar angle.
Definition: KVFAZIACOR.cpp:47
virtual void BuildFAZIA()
Definition: KVFAZIACOR.cpp:104
Double_t fFDist
distance of FAZIA detectors from target (in cm)
Definition: KVFAZIA.h:35
void SetGeometryImportParameters(Double_t dt=0.25, Double_t dp=1.0, Double_t tmin=2., Double_t pmin=0, Double_t tmax=20., Double_t pmax=360., Double_t xorg=0, Double_t yorg=0, Double_t zorg=0)
Definition: KVFAZIA.h:208
Double_t fFThetaMin
minimum polar angle for compact geometry (in degrees)
Definition: KVFAZIA.h:36
virtual void SetNameOfDetectors(KVEnv &env)
Definition: KVFAZIA.cpp:223
Int_t fNblocks
number of blocks
Definition: KVFAZIA.h:37
Description of physical materials used to construct detectors; interface to range tables.
Definition: KVMaterial.h:41
virtual TGeoMedium * GetGeoMedium(const Char_t *="")
Definition: KVMaterial.cpp:971
static TGeoHMatrix * GetVolumePositioningMatrix(Double_t distance, Double_t theta, Double_t phi, TGeoTranslation *postTrans=nullptr)
TGeoVolume * MakeTube(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz)
TGeoVolumeAssembly * MakeVolumeAssembly(const char *name)
TGeoVolume * GetTopVolume() const
virtual void AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=0, Option_t *option="")
virtual void AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=0, Option_t *option="")
virtual void Info(const char *method, const char *msgfmt,...) const
const long double mm
Definition: KVUnits.h:69
const long double um
Definition: KVUnits.h:68
const long double cm
Definition: KVUnits.h:66
const long double m
Definition: KVUnits.h:70