CbmRoot
Loading...
Searching...
No Matches
CbmMustModule.h
Go to the documentation of this file.
1/* Copyright (C) 2025 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Radoslaw Karabowicz [committer] */
4
14
15#ifndef CBMMUSTMODULE_H
16#define CBMMUSTMODULE_H 1
17
18#include "CbmMustTube.h"
19
20#include <Rtypes.h> // for THashConsistencyHolder, ClassDef
21#include <RtypesCore.h> // for Color_t
22#include <TObject.h> // for TObject
23#include <TVector3.h> // for TVector3
24
25#include <algorithm> // for sort
26#include <vector> // for vector
27
28class CbmMustModule : public TObject {
29 public:
39 CbmMustModule(int iStation, int iLayer, int iModule, TVector3 position, TVector3 direction);
41 virtual ~CbmMustModule() {}
42
44 uint32_t GetAddress() const { return fAddress; }
45 TVector3 GetPosition() const { return fPosition; }
46 TVector3 GetDirection() const { return fDirection; }
47
48 int GetNTubes() const { return fTubes.size(); }
49
50 CbmMustTube* GetTubeByAddress(uint32_t address) const;
51
52 CbmMustTube* GetTubeByIndex(int tubeIndex);
53 bool AddTube(CbmMustTube* tube);
54 void SortTubes()
55 {
56 std::sort(fTubes.begin(), fTubes.end(),
57 [](const CbmMustTube* a, const CbmMustTube* b) { return a->GetTubeIndex() > b->GetTubeIndex(); });
58 }
59
60 void Show();
61
62 bool InitModule();
63 void DrawModule(Color_t) {}
64
65 protected:
66 uint32_t fAddress{0}; // Unique detector ID
67 TVector3 fPosition{TVector3()}; // Location vector of the module center in global c.s. (all dimensions in [cm])
68 TVector3 fDirection{TVector3()}; // Direction vector of the module
69 std::vector<CbmMustTube*> fTubes; // Array of CbmMustTubes
70 bool fIsInitialized{false};
71
72 private:
75
77};
78#endif
virtual ~CbmMustModule()
CbmMustModule(const CbmMustModule &)
ClassDef(CbmMustModule, 2)
bool AddTube(CbmMustTube *tube)
CbmMustModule & operator=(const CbmMustModule &)
CbmMustTube * GetTubeByIndex(int tubeIndex)
TVector3 GetPosition() const
TVector3 fDirection
void DrawModule(Color_t)
TVector3 fPosition
int GetNTubes() const
uint32_t GetAddress() const
CbmMustTube * GetTubeByAddress(uint32_t address) const
TVector3 GetDirection() const
std::vector< CbmMustTube * > fTubes
uint32_t fAddress