CbmRoot
Loading...
Searching...
No Matches
CbmUnpack.h
Go to the documentation of this file.
1/* Copyright (C) 2020 Facility for Antiproton and Ion Research in Europe, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Pierre-Alain Loizeau [committer] */
4
5// -----------------------------------------------------------------------------
6// ----- -----
7// ----- CbmUnpack -----
8// ----- Created 07.02.2020 by P.-A. Loizeau -----
9// ----- -----
10// -----------------------------------------------------------------------------
11
12#ifndef CBMUNPACK_H
13#define CBMUNPACK_H
14
16#include "CbmErrorMessage.h"
17#include "Timeslice.hpp"
18
20
22#include "Rtypes.h"
23
24#include <boost/any.hpp>
25
27#include <map>
28#include <string>
29#include <utility>
30#include <vector>
31
32class TList;
33class TNamed;
34class TCanvas;
35
36template<class T>
37bool is_this_type(const boost::any& varValue)
38{
39 if (auto q = boost::any_cast<T>(&varValue))
40 return true;
41 else
42 return false;
43}
44
45
46template<class T>
47class CbmUnpack {
48 public:
50 : fParCList(nullptr)
54 , fuNbMsLoop(0)
55 , fbIgnoreOverlapMs(kFALSE)
56 , fdMsSizeInNs(-1.0)
57 , fdTsCoreSizeInNs(-1.0)
58 , fdTsFullSizeInNs(-1.0)
60 , fDigiVect()
61 , fErrVect()
62 , fParameterMap(){};
63 virtual ~CbmUnpack() = default;
64 CbmUnpack(const CbmUnpack&) = delete;
65 CbmUnpack& operator=(const CbmUnpack&) = delete;
66
67 virtual Bool_t Init() = 0;
68 virtual void Reset() = 0;
69 virtual void Finish() = 0;
70
71 virtual Bool_t ProcessTs(const fles::Timeslice& ts) = 0;
72 // virtual Bool_t ProcessTs( const fles::Timeslice& ts, size_t component ) = 0;
73 // virtual Bool_t ProcessMs( const fles::Timeslice& ts, size_t uMsCompIdx, size_t uMsIdx ) = 0;
74
75 virtual Bool_t InitContainers() = 0;
76 virtual Bool_t ReInitContainers() = 0;
77 virtual TList* GetParList() = 0;
78 virtual void SetParameter(std::string /*param*/) { ; }
79 virtual std::string GetParameter(std::string /*param*/) { return std::string{""}; }
80
82 void AddHistoToVector(TNamed* pointer, std::string sFolder = "")
83 {
84 fvpAllHistoPointers.push_back(std::pair<TNamed*, std::string>(pointer, sFolder));
85 }
86 std::vector<std::pair<TNamed*, std::string>> GetHistoVector() { return fvpAllHistoPointers; }
87 void AddCanvasToVector(TCanvas* pointer, std::string sFolder = "")
88 {
89 fvpAllCanvasPointers.push_back(std::pair<TCanvas*, std::string>(pointer, sFolder));
90 }
91 std::vector<std::pair<TCanvas*, std::string>> GetCanvasVector() { return fvpAllCanvasPointers; }
92
94 void AssignOutputVector(std::vector<T>& rVect) { fDigiVect = rVect; }
95 void AssignErrorVector(std::vector<CbmErrorMessage>& rVect) { fErrVect = rVect; }
96 // void ClearVector() {fDigiVect->clear();}
97 // std::vector<T> * GetVector() {return fDigiVect;}
98
100 void SetIgnoreOverlapMs(Bool_t bFlagIn = kTRUE) { fbIgnoreOverlapMs = bFlagIn; }
101
102 protected:
104 TList* fParCList = nullptr;
105
107 std::vector<size_t> fvMsComponentsList;
110 size_t fuNbMsLoop;
112 Double_t fdMsSizeInNs;
115
127 std::vector<std::pair<TNamed*, std::string>>
129 std::vector<std::pair<TCanvas*, std::string>>
131
133 std::vector<T>& fDigiVect;
134 std::vector<CbmErrorMessage>& fErrVect = {};
135
137 std::map<std::string, std::string> fParameterMap;
138
139 Bool_t CheckParameterValidity(std::string /*parameterName*/, std::string /*parameterType*/) { return kTRUE; }
140
141 private:
142};
143
144#endif // CBMUNPACK_H
bool is_this_type(const boost::any &varValue)
Definition CbmUnpack.h:37
std::vector< std::pair< TNamed *, std::string > > GetHistoVector()
Definition CbmUnpack.h:86
virtual Bool_t ReInitContainers()=0
std::vector< std::pair< TNamed *, std::string > > fvpAllHistoPointers
Total size of the core MS in a TS, [nanoseconds].
Definition CbmUnpack.h:128
virtual void Finish()=0
CbmUnpack(const CbmUnpack &)=delete
std::vector< T > & fDigiVect
Vector of pointers to canvases + optional folder name.
Definition CbmUnpack.h:133
size_t fuNbOverMsPerTs
Number of Core MS in the TS.
Definition CbmUnpack.h:109
void SetIgnoreOverlapMs(Bool_t bFlagIn=kTRUE)
Control flags.
Definition CbmUnpack.h:100
void AddHistoToVector(TNamed *pointer, std::string sFolder="")
For monitoring of internal processes.
Definition CbmUnpack.h:82
virtual Bool_t ProcessTs(const fles::Timeslice &ts)=0
Bool_t fbIgnoreOverlapMs
Number of MS for the loop in each MS, updated internaly by the Algos to read OverMS or not.
Definition CbmUnpack.h:111
std::vector< size_t > fvMsComponentsList
Parameters related to FLES containers.
Definition CbmUnpack.h:107
Double_t fdMsSizeInNs
Ignore Overlap Ms: all fuOverlapMsNb MS at the end of timeslice.
Definition CbmUnpack.h:112
virtual std::string GetParameter(std::string)
Definition CbmUnpack.h:79
virtual Bool_t Init()=0
TList * fParCList
Parameter management.
Definition CbmUnpack.h:104
Bool_t CheckParameterValidity(std::string, std::string)
Map of parameter name and type.
Definition CbmUnpack.h:139
virtual void SetParameter(std::string)
Definition CbmUnpack.h:78
CbmUnpack & operator=(const CbmUnpack &)=delete
void AssignOutputVector(std::vector< T > &rVect)
Output vector.
Definition CbmUnpack.h:94
virtual void Reset()=0
size_t fuNbMsLoop
Number of Overlap MS at the end of the TS.
Definition CbmUnpack.h:110
virtual Bool_t InitContainers()=0
std::map< std::string, std::string > fParameterMap
Vector of error messages.
Definition CbmUnpack.h:137
Double_t fdTsFullSizeInNs
Total size of the core MS in a TS, [nanoseconds].
Definition CbmUnpack.h:114
Double_t fdTsCoreSizeInNs
Size of a single MS, [nanoseconds].
Definition CbmUnpack.h:113
std::vector< std::pair< TCanvas *, std::string > > fvpAllCanvasPointers
Vector of pointers to histograms + optional folder name.
Definition CbmUnpack.h:130
void AssignErrorVector(std::vector< CbmErrorMessage > &rVect)
Definition CbmUnpack.h:95
std::vector< std::pair< TCanvas *, std::string > > GetCanvasVector()
Definition CbmUnpack.h:91
virtual TList * GetParList()=0
std::vector< CbmErrorMessage > & fErrVect
Vector of digis FIXME: check that the reference works as expected.
Definition CbmUnpack.h:134
void AddCanvasToVector(TCanvas *pointer, std::string sFolder="")
Definition CbmUnpack.h:87
virtual ~CbmUnpack()=default
size_t fuNbCoreMsPerTs
List of components used in the TS, updated internaly by the Algos.
Definition CbmUnpack.h:108