BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
CbmStsElement.h
Go to the documentation of this file.
1/** @file CbmStsElement.h
2 ** @author Volker Friese <v.friese@gsi.de>
3 ** @date 27.05.2013
4 **/
5
6#ifndef CBMSTSELEMENT_H
7#define CBMSTSELEMENT_H 1
8
9#include "CbmStsAddress.h"
10#include "TNamed.h"
11
12#include <vector>
13
15
16using namespace std;
17
18/** @class CbmStsElement
19 ** @brief Class representing an element of the STS setup
20 ** @author V.Friese <v.friese@gsi.de>
21 ** @version 1.0
22 **
23 ** A CbmStsElement represents an element in the STS setup
24 ** hierarchy (e.g., station, ladder, module,...). It has
25 ** a unique address, a level (enum CbmStsElementLevel),
26 ** a pointer to a TGeoPhysicalNode and an array of daughter
27 ** elements. It is thus an alignable object.
28 **/
29class CbmStsElement : public TNamed
30{
31
32 public:
33 /** Default constructor **/
35
36 /** Standard constructor
37 ** @param name Element name
38 ** @param title Level name
39 ** @param level Element level
40 ** @param node Pointer to physical node in geometry
41 **/
42 CbmStsElement(const char* name, const char* title, Int_t level, TGeoPhysicalNode* node = NULL);
43
44 /** Destructor **/
45 virtual ~CbmStsElement() {};
46
47 /** Add a daughter element
48 ** The daughter must be one element level higher than the mother.
49 ** @param element Pointer to element to be added as daughter.
50 **/
51 virtual void AddDaughter(CbmStsElement* element);
52
53 /** Get unique address
54 ** @return Element address
55 **/
56 UInt_t GetAddress() const { return fAddress; }
57
58 /** Get a daughter element
59 ** @param index Index of daughter element
60 **/
61 CbmStsElement* GetDaughter(Int_t index) const;
62
63 /** Get the index within the mother element
64 ** @return Index of element in mother
65 **/
67
68 /** Get the element level
69 ** @return Element level (type enum StsElementLevel)
70 **/
71 StsElementLevel GetLevel() const { return fLevel; }
72
73 /** Get number of daughter elements
74 ** @return Number of daughters
75 **/
76 Int_t GetNofDaughters() const { return fDaughters.size(); }
77
78 /** Initialise daughters from geometry **/
79 void InitDaughters();
80
81 /** Print **/
82 virtual void Print(Option_t* opt = "") const;
83
84 protected:
85 UInt_t fAddress; ///< Unique address
86 StsElementLevel fLevel; ///< Level in hierarchy
87 TGeoPhysicalNode* fNode; ///< Pointer to geometry
88 vector<CbmStsElement*> fDaughters; ///< Array of daughters
89
90 /** Set the element level from integer
91 ** Protection against being out of range.
92 ** @param level Element level
93 **/
94 void SetLevel(Int_t level);
95
96 // --- Prevent usage of copy constructor and assignment operator
99
101};
102
103#endif /* CBMSTSELEMENT_H */
int Int_t
const char Option_t
#define ClassDef(name, id)
static Int_t GetElementId(UInt_t address, Int_t level)
Get the index of an element.
Class representing an element of the STS setup.
CbmStsElement(const CbmStsElement &)
void SetLevel(Int_t level)
Set the element level from integer Protection against being out of range.
UInt_t GetAddress() const
Get unique address.
virtual void AddDaughter(CbmStsElement *element)
Add a daughter element The daughter must be one element level higher than the mother.
StsElementLevel GetLevel() const
Get the element level.
UInt_t fAddress
Unique address.
StsElementLevel fLevel
Level in hierarchy.
vector< CbmStsElement * > fDaughters
Array of daughters.
TGeoPhysicalNode * fNode
Pointer to geometry.
CbmStsElement()
Default constructor.
virtual ~CbmStsElement()
Destructor.
virtual void Print(Option_t *opt="") const
Print.
Int_t GetNofDaughters() const
Get number of daughter elements.
CbmStsElement & operator=(const CbmStsElement &)
Int_t GetIndex() const
Get the index within the mother element.
void InitDaughters()
Initialise daughters from geometry.
CbmStsElement * GetDaughter(Int_t index) const
Get a daughter element.
Definition json.hpp:4446