Project
Loading...
Searching...
No Matches
Geometry.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#ifndef O2_TRD_GEOMETRY_H
13#define O2_TRD_GEOMETRY_H
14
18
19#include <string>
20#include <vector>
21#include <memory>
22
23namespace o2
24{
25namespace trd
26{
27
29{
30 public:
31 ~Geometry() override = default;
32
34 {
35 static Geometry mGeom;
36 return &mGeom;
37 }
38
39 void createGeometry(std::vector<int> const& idtmed);
40 void addAlignableVolumes() const;
43
44 bool rotateBack(int det, const float* const loc, float* glb) const;
45 bool chamberInGeometry(int det) const;
46 std::vector<std::string> const& getSensitiveTRDVolumes() const { return mSensitiveVolumeNames; }
47
48 protected:
49 void fillMatrixCache(int mask) override;
50
51 private:
52 void createVolumes(std::vector<int> const& idtmed);
53 void assembleChamber(int ilayer, int istack);
54 void createFrame(std::vector<int> const& idtmed);
55 void createServices(std::vector<int> const& idtmed);
56 void createPadPlane(int ilayer, int istack);
57
58 std::vector<std::string> mSensitiveVolumeNames;
59 static const o2::detectors::DetID sDetID;
60
61 // helper function to create volumes and registering them automatically
62 void createVolume(const char* name, const char* shape, int nmed, float* upar, int np);
63
64 Geometry();
65
66 ClassDefOverride(Geometry, 2); // TRD geometry class
67};
68} // end namespace trd
69} // end namespace o2
70#endif
Static class with identifiers, bitmasks and names for ALICE detectors.
Definition DetID.h:58
Variant of DetMatrixCache for non consecutive indexing.
bool rotateBack(int det, const float *const loc, float *glb) const
Definition Geometry.cxx:37
void createPadPlaneArray()
Definition Geometry.cxx:55
void addAlignableVolumes() const
bool createClusterMatrixArray()
~Geometry() override=default
void fillMatrixCache(int mask) override
static Geometry * instance()
Definition Geometry.h:33
void createGeometry(std::vector< int > const &idtmed)
Definition Geometry.cxx:258
bool chamberInGeometry(int det) const
std::vector< std::string > const & getSensitiveTRDVolumes() const
Definition Geometry.h:46
GLuint const GLchar * name
Definition glcorearb.h:781
GLint GLuint mask
Definition glcorearb.h:291
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...