GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TMnemonic.h
Go to the documentation of this file.
1#ifndef MNEMONIC_H
2#define MNEMONIC_H
3
4#include <string>
5#include <iostream>
6#include <sstream>
7#include <cstdint>
8
9#include "TObject.h"
10#include "TClass.h"
11
12#include "Globals.h"
13#include "TPriorityValue.h"
14#include "TChannel.h"
15
16enum class EDigitizer : char;
17
18class TChannel;
19
20class TMnemonic : public TObject {
21public:
22 TMnemonic() : fClassType(nullptr) { Clear(); }
23 explicit TMnemonic(const char* name) : TMnemonic() { Parse(name); }
24 TMnemonic(const TMnemonic&) = default;
25 TMnemonic(TMnemonic&&) = default;
26 ~TMnemonic() = default;
27
28 TMnemonic& operator=(const TMnemonic&) = default;
30
31 // standard C++ makes these enumerations global to the class. ie, the name of the enumeration
32 // EMnemonic or ESystem has no effect on the clashing of enumerated variable names.
33 // These separations exist only to easily see the difference when looking at the code here.
34 enum class EMnemonic : std::uint8_t { kA,
35 kB,
36 kC,
37 kD,
38 kE,
39 kF,
40 kG,
41 kH,
42 kI,
43 kJ,
44 kK,
45 kL,
46 kM,
47 kN,
48 kO,
49 kP,
50 kQ,
51 kR,
52 kS,
53 kT,
54 kU,
55 kV,
56 kW,
57 kX,
58 kY,
59 kZ,
60 kClear };
61
62 virtual EMnemonic SubSystem() const { return fSubSystem; }
63 virtual EMnemonic ArraySubPosition() const { return fArraySubPosition; }
64 virtual int NumericArraySubPosition() const;
65 virtual EMnemonic CollectedCharge() const { return fCollectedCharge; }
66 virtual EMnemonic OutputSensor() const { return fOutputSensor; }
67 virtual int16_t ArrayPosition() const { return fArrayPosition; }
68 virtual int16_t Segment() const { return fSegment; }
69
70 virtual std::string SystemString() const { return fSystemString; }
71 virtual std::string SubSystemString() const { return fSubSystemString; }
72 virtual std::string ArraySubPositionString() const { return fArraySubPositionString; }
73 virtual std::string CollectedChargeString() const { return fCollectedChargeString; }
74 virtual std::string OutputSensorString() const { return fOutputSensorString; }
75
76 virtual void Parse(std::string* name);
77 virtual void Parse(const char* name);
78
80 {
81 if(fPrint) {
82 std::cerr << RED << ClassName() << ": No data library set, some things like timing won't work!" << RESET_COLOR << std::endl;
83 fPrint = false;
84 }
85 }
86
87 virtual void Segment(int16_t val) { fSegment = val; }
88 virtual void SetRFMnemonic(std::string* name);
89
90 // this needs to be const because we call this from GetClassType as well, which is const
91 // that is also why fClassType is mutable (?)
92 // but does GetClassType need to be const?
93 virtual void SetClassType(TClass* classType) const { fClassType = classType; }
94 virtual TClass* GetClassType() const;
95
96 virtual double GetTime(Long64_t timestamp, Float_t cfd, double energy, const TChannel* channel) const;
97
98 void Print(Option_t* opt = "") const override;
99 void Print(std::ostringstream& str) const;
100 void Clear(Option_t* opt = "") override;
101
102 void SetName(const char* val) { fName = val; }
103 void SetName(const std::string& val) { fName = val; }
104 const char* GetName() const override { return fName.c_str(); }
105
106private:
107 std::string fName;
109 int16_t fSegment;
110 std::string fSystemString;
111 std::string fSubSystemString;
115
120
121 mutable TClass* fClassType; //!<! TGRSIDetector Type that this mnemonic represents
122
123 void EnumerateMnemonic(std::string mnemonic_word, EMnemonic& mnemonic_enum);
124
125 static bool fPrint;
126
127 /// \cond CLASSIMP
128 ClassDefOverride(TMnemonic, 1) // NOLINT(readability-else-after-return)
129 /// \endcond
130};
131
132#endif
#define RED
Definition Globals.h:9
#define RESET_COLOR
Definition Globals.h:5
EDigitizer
TMnemonic(TMnemonic &&)=default
virtual std::string SystemString() const
Definition TMnemonic.h:70
void SetName(const std::string &val)
Definition TMnemonic.h:103
std::string fArraySubPositionString
Definition TMnemonic.h:112
void SetName(const char *val)
Definition TMnemonic.h:102
int16_t fSegment
Definition TMnemonic.h:109
const char * GetName() const override
Definition TMnemonic.h:104
static bool fPrint
Definition TMnemonic.h:125
virtual int NumericArraySubPosition() const
virtual EMnemonic ArraySubPosition() const
Definition TMnemonic.h:63
TClass * fClassType
! TGRSIDetector Type that this mnemonic represents
Definition TMnemonic.h:121
EMnemonic fOutputSensor
Definition TMnemonic.h:119
virtual void Segment(int16_t val)
Definition TMnemonic.h:87
virtual EMnemonic OutputSensor() const
Definition TMnemonic.h:66
virtual std::string OutputSensorString() const
Definition TMnemonic.h:74
virtual EMnemonic SubSystem() const
Definition TMnemonic.h:62
virtual int16_t ArrayPosition() const
Definition TMnemonic.h:67
std::string fOutputSensorString
Definition TMnemonic.h:114
void Print(Option_t *opt="") const override
void EnumerateMnemonic(std::string mnemonic_word, EMnemonic &mnemonic_enum)
Definition TMnemonic.cxx:24
EMnemonic fCollectedCharge
Definition TMnemonic.h:118
virtual void EnumerateDigitizer(TPriorityValue< std::string > &, TPriorityValue< EDigitizer > &, TPriorityValue< int > &)
Definition TMnemonic.h:79
EMnemonic fSubSystem
Definition TMnemonic.h:116
~TMnemonic()=default
TMnemonic(const char *name)
Definition TMnemonic.h:23
std::string fSystemString
Definition TMnemonic.h:110
TMnemonic & operator=(const TMnemonic &)=default
EMnemonic fArraySubPosition
Definition TMnemonic.h:117
std::string fName
Definition TMnemonic.h:107
virtual std::string ArraySubPositionString() const
Definition TMnemonic.h:72
virtual void Parse(std::string *name)
Definition TMnemonic.cxx:58
std::string fCollectedChargeString
Definition TMnemonic.h:113
void Clear(Option_t *opt="") override
Definition TMnemonic.cxx:9
TMnemonic & operator=(TMnemonic &&)=default
virtual int16_t Segment() const
Definition TMnemonic.h:68
virtual TClass * GetClassType() const
virtual void SetClassType(TClass *classType) const
Definition TMnemonic.h:93
TMnemonic(const TMnemonic &)=default
virtual std::string CollectedChargeString() const
Definition TMnemonic.h:73
virtual EMnemonic CollectedCharge() const
Definition TMnemonic.h:65
std::string fSubSystemString
Definition TMnemonic.h:111
virtual void SetRFMnemonic(std::string *name)
Definition TMnemonic.cxx:98
int16_t fArrayPosition
Definition TMnemonic.h:108
virtual double GetTime(Long64_t timestamp, Float_t cfd, double energy, const TChannel *channel) const
virtual std::string SubSystemString() const
Definition TMnemonic.h:71