Project
Loading...
Searching...
No Matches
RICHRing.h
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//
12// Design and equations: Nicola Nicassio nicola.nicassio@cern.ch
13
14#ifndef ALICEO2_RICH_RING_H
15#define ALICEO2_RICH_RING_H
16
17#include <TGeoManager.h>
18#include <Rtypes.h>
19#include <TMath.h>
20
21namespace o2
22{
23namespace rich
24{
25class Ring
26{
27 public:
28 Ring() = default;
29 // Angle M_i: the angle formed by the normal line to both tile planes (radiator and photosensitive surface) passing by the center of the ring
30 // Angle T_i: the angle formed by the line passing by the farest border of the tile and the center of the ring
31 // Z_r: length of the radiator in Z
32 // Z_p: length of the photosensitive surface in Z
33 // DeltaRSurf_i: radial dinstance between two surfaces of tiles
34 // R_ph: radius of the photosensitive surface (from the center)
35 // z_ph: z position of the photosensitive surface (from the center)
36 Ring(int rPosId,
37 int nTilesPhi,
38 float rMin,
39 float rMax,
40 float radThick,
41 float radYmin,
42 float radYmax,
43 float radZ,
44 float photThick,
45 float photYmin,
46 float photYmax,
47 float photZ,
48 float radRad0,
49 float photRad0,
50 float aerDetDistance,
51 float thetaB,
52 const std::string motherName = "RICHV");
53 ~Ring() = default;
54
55 auto getDeltaPhiPos() const { return TMath::TwoPi() / mNTiles; }
56 void createRing(TGeoVolume* motherVolume);
57 int getPosId() const { return mPosId; }
58 int getNTiles() const { return mNTiles; }
59
60 private:
61 int mPosId; // id of the ring
62 int mNTiles; // number of modules
63 float mRRad; // max distance for radiators
64 float mRPhot; // max distance for photosensitive surfaces
65 float mRadThickness; // thickness of the radiator
66 float mPhotThickness; // thickness of the photosensitive surface
67
68 ClassDef(Ring, 0);
69};
70
71// Definitions for fwd and bwd RICH are put here
73{
74 public:
75 FWDRich() = default;
76 FWDRich(std::string name,
77 float rMin,
78 float rMax,
79 float zAerogelMin,
80 float dZAerogel,
81 float zArgonMin,
82 float dZArgon,
83 float zSiliconMin,
84 float dZSilicon);
85 void createFWDRich(TGeoVolume* motherVolume);
86
87 protected:
88 std::string mName;
89 float mRmin;
90 float mRmax;
91
92 // Aerogel:
95
96 // Argon:
98 float mDZArgon;
99
100 // Silicon:
103
105};
106
108{
109 public:
110 BWDRich() = default;
111 BWDRich(std::string name,
112 float rMin,
113 float rMax,
114 float zAerogelMin,
115 float dZAerogel,
116 float zArgonMin,
117 float dZArgon,
118 float zSiliconMin,
119 float dZSilicon);
120 void createBWDRich(TGeoVolume* motherVolume);
121
122 protected:
123 std::string mName;
124 float mRmin;
125 float mRmax;
126
127 // Aerogel:
130
131 // Argon:
133 float mDZArgon;
134
135 // Silicon:
138
140};
141
142} // namespace rich
143} // namespace o2
144#endif // ALICEO2_RICH_RING_H
void createBWDRich(TGeoVolume *motherVolume)
Definition RICHRing.cxx:237
ClassDef(BWDRich, 0)
std::string mName
Definition RICHRing.h:123
ClassDef(FWDRich, 0)
std::string mName
Definition RICHRing.h:88
void createFWDRich(TGeoVolume *motherVolume)
Definition RICHRing.cxx:197
~Ring()=default
auto getDeltaPhiPos() const
Definition RICHRing.h:55
int getPosId() const
Definition RICHRing.h:57
void createRing(TGeoVolume *motherVolume)
int getNTiles() const
Definition RICHRing.h:58
Ring()=default
GLuint const GLchar * name
Definition glcorearb.h:781
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...