GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
THILMnemonic.cxx
Go to the documentation of this file.
1#include "THILMnemonic.h"
2
3#include <algorithm>
4
5// Detector dependent includes
6#include "TEagle.h"
7#include "TEaglePulser.h"
8
9void THILMnemonic::Clear(Option_t*)
10{
13}
14
16{
17 // Enumerating the fSystemString must come after the total mnemonic has been parsed as the details of other parts of
18 // the mnemonic must be known
19 if(SystemString() == "EA") {
21 } else if(SystemString() == "PD") {
23 } else if(SystemString() == "PU") {
25 } else {
27 }
28}
29
31{
32 std::string name = digitizerName.Value();
33 std::transform(name.begin(), name.end(), name.begin(), ::toupper);
35 int tmpUnit = 10;
36 digitizerType.Set(tmpType, digitizerName.Priority());
37 timeStampUnit.Set(tmpUnit, digitizerName.Priority());
38}
39
40void THILMnemonic::Parse(std::string* name)
41{
42 if((name == nullptr) || name->length() < 9) {
43 return;
44 }
45 TMnemonic::Parse(name);
46 // Enumerating the fSystemString must come last as the details of other parts of
47 // the mnemonic must be known
49}
50
51void THILMnemonic::Print(Option_t*) const
52{
53 std::ostringstream str;
54 std::cout << "====== HILMNEMONIC ============" << std::endl;
56 std::cout << "===============================" << std::endl;
57 std::cout << str.str();
58}
59
61{
62 if(TMnemonic::GetClassType() != nullptr) {
64 }
65
66 switch(System()) {
67 case ESystem::kEagle: SetClassType(TEagle::Class()); break;
68 case ESystem::kPinDiode: SetClassType(TEagle::Class()); break;
69 case ESystem::kEaglePulser: SetClassType(TEaglePulser::Class()); break;
70 default: SetClassType(nullptr);
71 };
73}
74
75double THILMnemonic::GetTime(Long64_t timestamp, Float_t, double energy, const TChannel* channel) const
76{
77 if(channel == nullptr) {
78 Error("GetTime", "No TChannel provided");
79 return static_cast<Double_t>((timestamp) + gRandom->Uniform());
80 }
81 Double_t dTime = static_cast<Double_t>((timestamp) + gRandom->Uniform()) * channel->GetTimeStampUnit() + channel->CalibrateCFD(0.);
82 return dTime - channel->GetTZero(energy) - channel->GetTimeOffset();
83}
EDigitizer
Definition THILMnemonic.h:9
Long64_t GetTimeOffset() const
Definition TChannel.h:176
double CalibrateCFD(double) const
Definition TChannel.cxx:705
int GetTimeStampUnit() const
Definition TChannel.h:175
double GetTZero(double tempd) const
Definition TChannel.h:294
TClass * GetClassType() const override
void Clear(Option_t *opt="") override
void Parse(std::string *name) override
ESystem fSystem
void EnumerateDigitizer(TPriorityValue< std::string > &digitizerName, TPriorityValue< EDigitizer > &digitizerType, TPriorityValue< int > &timeStampUnit) override
void Print(Option_t *opt="") const override
double GetTime(Long64_t timestamp, Float_t cfd, double energy, const TChannel *channel) const override
ESystem System() const
void EnumerateSystem()
virtual std::string SystemString() const
Definition TMnemonic.h:69
void Print(Option_t *opt="") const override
virtual void Parse(std::string *name)
Definition TMnemonic.cxx:57
void Clear(Option_t *opt="") override
Definition TMnemonic.cxx:8
virtual TClass * GetClassType() const
virtual void SetClassType(TClass *classType) const
Definition TMnemonic.h:92
void Set(const T &val, EPriority priority)
EPriority Priority() const
const T & Value() const