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
58 private:
59 int mPosId; // id of the ring
60 int mNTiles; // number of modules
61 float mRRad; // max distance for radiators
62 float mRPhot; // max distance for photosensitive surfaces
63 float mRadThickness; // thickness of the radiator
64 float mPhotThickness; // thickness of the photosensitive surface
65
66 ClassDef(Ring, 0);
67};
68
69// Definitions for fwd and bwd RICH are put here
71{
72 public:
73 FWDRich() = default;
74 FWDRich(std::string name,
75 float rMin,
76 float rMax,
77 float zAerogelMin,
78 float dZAerogel,
79 float zArgonMin,
80 float dZArgon,
81 float zSiliconMin,
82 float dZSilicon);
83 void createFWDRich(TGeoVolume* motherVolume);
84
85 protected:
86 std::string mName;
87 float mRmin;
88 float mRmax;
89
90 // Aerogel:
93
94 // Argon:
96 float mDZArgon;
97
98 // Silicon:
101
103};
104
106{
107 public:
108 BWDRich() = default;
109 BWDRich(std::string name,
110 float rMin,
111 float rMax,
112 float zAerogelMin,
113 float dZAerogel,
114 float zArgonMin,
115 float dZArgon,
116 float zSiliconMin,
117 float dZSilicon);
118 void createBWDRich(TGeoVolume* motherVolume);
119
120 protected:
121 std::string mName;
122 float mRmin;
123 float mRmax;
124
125 // Aerogel:
128
129 // Argon:
131 float mDZArgon;
132
133 // Silicon:
136
138};
139
140} // namespace rich
141} // namespace o2
142#endif // ALICEO2_RICH_RING_H
void createBWDRich(TGeoVolume *motherVolume)
Definition RICHRing.cxx:237
ClassDef(BWDRich, 0)
std::string mName
Definition RICHRing.h:121
ClassDef(FWDRich, 0)
std::string mName
Definition RICHRing.h:86
void createFWDRich(TGeoVolume *motherVolume)
Definition RICHRing.cxx:197
~Ring()=default
auto getDeltaPhiPos() const
Definition RICHRing.h:55
void createRing(TGeoVolume *motherVolume)
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 ...