Project
Loading...
Searching...
No Matches
GeometryParams.cxx
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
13#include "TMath.h"
14
15using namespace o2::cpv;
16
18
19GeometryParams* GeometryParams::sGeomParam = nullptr;
20
21//____________________________________________________________________________
22GeometryParams::GeometryParams(const std::string_view name)
23 : // Set zeros to the variables: most of them should be calculated
24 // and it is more clear to set them in the text
25 mNModules(5),
26 mNumberOfCPVPadsPhi(128),
27 mNumberOfCPVPadsZ(60),
28 mCPVPadSizePhi(1.13),
29 mCPVPadSizeZ(2.1093),
30 mNumberOfCPVChipsPhi(8),
31 mNumberOfCPVChipsZ(8),
32 mCPVGasThickness(1.3),
33 mCPVTextoliteThickness(0.1),
34 mCPVCuNiFoilThickness(56.e-04)
35
36{
37 // Initializes the EMC parameters
38 // Coordinate system chosen: x across beam, z along beam, y out of beam.
39 // Reference point for all volumes incide module is
40 // center of module in x,z on the upper surface of support beam
41
42 // Distance from IP to front surface of CPV
43 mIPtoCPVSurface = 449.310 - 5.2 - 2.61; //Distance to PHOS fron sutface - CPV size
44
45 // Calculate distance from IP to upper cover
46 // mIPtoOuterCoverDistance = mIPtoCrystalSurface - mAirGapLed - mInnerThermoWidthY - mAirGapWidthY - mCoolerWidthY -
47 // mOuterThermoWidthY - mAlCoverThickness - mzAirTightBoxToTopModuleDist - mATBoxWall;
48
49 // double tanA = mOuterThermoWidthXUp / (2. * mIPtoOuterCoverDistance);
50 // tan(a) where A = angle between IP to center and IP to side across beam
51
52 // Initializes the CPV parameters
53 mCPVFrameSize[0] = 2.5;
54 mCPVFrameSize[1] = 5.1;
55 mCPVFrameSize[2] = 2.5;
56 mGassiplexChipSize[0] = 4.2;
57 mGassiplexChipSize[1] = 0.1;
58 mGassiplexChipSize[2] = 6.0;
59 mFTPosition[0] = 0.7;
60 mFTPosition[1] = 2.2;
61 mFTPosition[2] = 3.6;
62 mFTPosition[3] = 5.1;
63
64 mCPVActiveSize[0] = mNumberOfCPVPadsPhi * mCPVPadSizePhi;
65 mCPVActiveSize[1] = mNumberOfCPVPadsZ * mCPVPadSizeZ;
66 mCPVBoxSize[0] = mCPVActiveSize[0] + 2 * mCPVFrameSize[0];
67 mCPVBoxSize[1] = mCPVFrameSize[1] + 0.1;
68 mCPVBoxSize[2] = mCPVActiveSize[1] + 2 * mCPVFrameSize[2];
69
70 double const moduleAngle = 20.;
71 double const kRADDEG = 180.0 / TMath::Pi();
72
73 double r = mIPtoCPVSurface + mCPVBoxSize[1];
74 for (Int_t iModule = 2; iModule < mNModules; iModule++) {
75 double angle = moduleAngle * (iModule - 2); //Module 2 just below IP
76 mCPVAngle[iModule] = angle;
77 mModuleCenter[iModule][0] = r * TMath::Sin(angle / kRADDEG);
78 mModuleCenter[iModule][1] = -r * TMath::Cos(angle / kRADDEG);
79 mModuleCenter[iModule][2] = 0.;
80
81 mModuleAngle[iModule][0][0] = 90; //thetaX polar angle for axis X
82 mModuleAngle[iModule][0][1] = angle; //phiX azimuthal angle for axis X
83 mModuleAngle[iModule][1][0] = 90; //thetaY polar angle for axis Y
84 mModuleAngle[iModule][1][1] = 90 + angle; //phiY azimuthal angle for axis Y
85 mModuleAngle[iModule][2][0] = 0; //thetaZ polar angle for axis Z
86 mModuleAngle[iModule][2][1] = 0; //phiZ azimuthal angle for axis Z
87 }
88}
ClassImp(GeometryParams)
GeometryParams()=default
Default constructor.
GLuint const GLchar * name
Definition glcorearb.h:781
GLfloat angle
Definition glcorearb.h:4071
GLboolean r
Definition glcorearb.h:1233