forked from AliceO2Group/AliceO2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFT3Layer.h
More file actions
97 lines (76 loc) · 3.32 KB
/
FT3Layer.h
File metadata and controls
97 lines (76 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
/// \file FT3Layer.h
/// \brief Definition of the FT3Layer class
#ifndef ALICEO2_FT3_UPGRADEV3LAYER_H_
#define ALICEO2_FT3_UPGRADEV3LAYER_H_
#include <TGeoManager.h> // for gGeoManager
#include "Rtypes.h" // for Double_t, Int_t, Bool_t, etc
#include "FT3Simulation/Detector.h" // for Detector, Detector::Model
#include "FT3Simulation/FT3Module.h"
class TGeoVolume;
namespace o2
{
namespace ft3
{
/// This class defines the Geometry for the FT3 Layer TGeo. This is a work class used
/// to study different configurations during the development of the ALICE3 EndCaps
class FT3Layer : public TObject
{
public:
// Default constructor
FT3Layer() = default;
// Sample layer constructor
FT3Layer(Int_t layerDirection, Int_t layerNumber, std::string layerName, Float_t z, Float_t rIn, Float_t rOut, Float_t Layerx2X0, bool partOfMiddleLayers);
/// Copy constructor
FT3Layer(const FT3Layer&) = default;
/// Assignment operator
FT3Layer& operator=(const FT3Layer&) = default;
/// Default destructor
~FT3Layer() override;
/// getters
auto getInnerRadius() const { return mInnerRadius; }
auto getOuterRadius() const { return mOuterRadius; }
auto getDirection() const { return mDirection; }
bool getIsInMiddleLayer() const { return mIsMiddleLayer; }
auto getZ() const { return mZ; }
auto getx2X0() const { return mx2X0; }
/// Creates the actual Layer and places inside its mother volume
/// \param motherVolume the TGeoVolume owing the volume structure
virtual void createLayer(TGeoVolume* motherVolume);
static void initialize_mat();
// create layer for disk support
void createSeparationLayer(TGeoVolume* motherVolume, const std::string& separationLayerName);
void createSeparationLayer_waterCooling(TGeoVolume* motherVolume, const std::string& separationLayerName);
static TGeoMaterial* carbonFiberMat;
static TGeoMedium* medCarbonFiber;
static TGeoMaterial* kaptonMat;
static TGeoMedium* kaptonMed;
static TGeoMaterial* waterMat;
static TGeoMedium* waterMed;
static TGeoMaterial* foamMat;
static TGeoMedium* medFoam;
private:
Int_t mLayerNumber = -1; ///< Current layer number
Int_t mDirection; ///< Layer direction 0=Forward 1 = Backward
bool mIsMiddleLayer = true; ///< Wether this layer is part of the middle layers
std::string mLayerName; ///< Current layer name
Double_t mInnerRadius; ///< Inner radius of this layer
Double_t mOuterRadius; ///< Outer radius of this layer
Double_t mZ; ///< Z position of the layer
Double_t mChipThickness; ///< Chip thickness
Double_t mSensorThickness; ///< Sensor thickness
Double_t mx2X0; ///< Layer material budget x/X0
ClassDefOverride(FT3Layer, 0); // ALICE 3 EndCaps geometry
};
} // namespace ft3
} // namespace o2
#endif