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