CbmRoot
Loading...
Searching...
No Matches
CbmStsTimeCal.h
Go to the documentation of this file.
1/* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Dario Ramirez [committer] */
4
5#ifndef CBMSTSTIMECAL_H
6#define CBMSTSTIMECAL_H
7
8#include "CbmDefs.h"
9#include "CbmDigiManager.h"
10#include "CbmStsAnaBase.h"
11#include "CbmStsUtils.h"
12#include "CbmYaml.h"
14
15#include <FairTask.h>
16
17#include <TClonesArray.h>
18
19#include <cstring>
20#include <map>
21#include <unordered_set>
22
29
75class CbmStsTimeCal : public FairTask, public CbmStsAnaBase {
76 public:
77 CbmStsTimeCal() = default;
78 ~CbmStsTimeCal() = default;
79
85 CbmStsTimeCal(ECbmModuleId system, double lower_lim = -60, double upper_lim = +60);
86
92 CbmStsTimeCal(int run_id, ECbmModuleId system, double lower_lim, double upper_lim);
93
98 void SetWalkFile(std::string par_file);
99
100 InitStatus Init();
101 void Exec(Option_t*);
102 void Finish();
103
104
105 private:
107 double fTimeWindowMin{-60};
108 double fTimeWindowMax{+60};
109 const double kStsClock{3.125};
110 std::string fParFile{""};
111 std::string fOutputPath{""};
112
113 std::map<int /* Module */, std::map<int /* ASIC */, std::vector<double> /* ADC offset */>> fWalkMapRaw;
115
116 std::unique_ptr<TFile> fReportOffset;
117 std::unique_ptr<TFile> fReportFit;
118
120
122
123 TClonesArray* fCbmEvtArray{nullptr};
124
129 void BookHistograms(int32_t address);
130
132 void CheckTimeWalk();
133
135 double FindModuleOffset(int32_t);
136
141 double FindGlobalOffset();
142
146 template<class Digi>
147 void CheckTiming();
148
153 void InitTimeWalkMap(int32_t address);
154
158 void LoadWalkFromFile();
159
164 void WriteYAML();
165
166 void DrawResults();
167
169};
170#endif
ECbmModuleId
Enumerator for module Identifiers.
Definition CbmDefs.h:45
@ kBmon
Bmon Counter.
Definition CbmDefs.h:57
CbmDigiManager.
CbmStsAnaBase()=default
double FindModuleOffset(int32_t)
Extract Time general offset for a given module.
void SetWalkFile(std::string par_file)
Set parameter file used during unpacking.
void DrawResults()
Virtual function to draw analysis results.
std::string fParFile
double fGlobalTimeOffset
void CheckTimeWalk()
Extract Time Walk parameters.
double fTimeWindowMin
std::unique_ptr< TFile > fReportFit
void WriteYAML()
Write parameters file in YAML format.
ECbmModuleId fRefSystem
void BookHistograms(int32_t address)
Book histograms.
void LoadWalkFromFile()
Load the time calibration parameters from user define file.
ClassDef(CbmStsTimeCal, 1)
void CheckTiming()
Check timing for a specific digi type It fills StsDigi time difference respect to fRefSystem Digis hi...
std::unique_ptr< TFile > fReportOffset
TClonesArray * fCbmEvtArray
double fTimeWindowMax
void InitTimeWalkMap(int32_t address)
Initialized the Time Walk map.
cbm::algo::sts::WalkMap fWalkMap
CbmDigiManager * fDigiManager
CbmStsTimeCal()=default
const double kStsClock
void Exec(Option_t *)
std::string fOutputPath
~CbmStsTimeCal()=default
std::map< int, std::map< int, std::vector< double > > > fWalkMapRaw
InitStatus Init()
double FindGlobalOffset()
Find a common offset for STS setup. It is taken as the average of the time offset for ADC > 25 for th...