BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnProfRaw2Digit.h
Go to the documentation of this file.
1
#ifndef BMNPROFRAW2DIGIT_H
2
#define BMNPROFRAW2DIGIT_H
3
4
// Auxillary
5
#include <boost/circular_buffer.hpp>
6
#include <boost/exception/all.hpp>
7
#include <boost/property_tree/json_parser.hpp>
8
#include <boost/property_tree/ptree.hpp>
9
// Root
10
#include "
TClonesArray.h
"
11
#include "
TH1F.h
"
12
#include "
TMath.h
"
13
#include "
TString.h
"
14
#include "
TTree.h
"
15
// BmnRoot
16
#include "BmnADCDigit.h"
17
#include "
BmnAdcProcessor.h
"
18
#include "BmnEnums.h"
19
#include "BmnMath.h"
20
#include "BmnProfRawTools.h"
21
#include "BmnSiProfDigit.h"
22
23
#include <BmnSiBTStationSet.h>
24
25
using
std::map;
26
using
std::vector;
27
using namespace
TMath
;
28
namespace
pt = boost::property_tree;
29
30
struct
ProfiLocal
31
{
32
char
ChannelName
= 0;
33
char
LayerType
= 0;
34
uint16_t
LayerId
= 0;
35
int16_t
StripMap
[
BmnProfRawTools::ChannelCnt
()] = {};
36
};
37
38
typedef
map<uint16_t, ProfiLocal>
LayerIdProfiMap
;
// layerId -> layer local map
39
typedef
map<uint16_t, LayerIdProfiMap>
Mod2LocalProfiMap
;
// module -> local maps
40
41
struct
ProfiInfo
42
{
43
uint16_t
StationId
= 0;
44
uint16_t
ModuleId
= 0;
45
ProfiLocal
*
Layer
=
nullptr
;
46
};
47
typedef
map<PlMapKey, ProfiInfo>
GlobalProfiMap
;
// {serial, channel} -> info
48
49
class
BmnProfRaw2Digit
:
public
BmnAdcProcessor
50
{
51
public
:
52
BmnProfRaw2Digit
(
Int_t
period,
Int_t
run);
53
~BmnProfRaw2Digit
();
54
55
GlobalProfiMap
&
GetGlobalMap
() {
return
fGlobalMap
; }
56
57
BmnStatus
FillEvent
(
TClonesArray
* adc,
TClonesArray
* csc);
58
BmnStatus
FillProfiles
(
TClonesArray
* adc);
59
BmnStatus
FillNoisyChannels
();
60
61
static
unique_ptr<BmnSiProfStationSet>
GetProfStationSet
(
Int_t
period);
62
63
int
FillExtractedBits
(
TClonesArray
* fInAdcArray,
TClonesArray
* fWorkAdcArray)
64
{
65
for
(
Int_t
idigit = 0; idigit < fInAdcArray->
GetEntriesFast
(); idigit++) {
66
BmnADCDigit
* digit = (
BmnADCDigit
*)fInAdcArray->
At
(idigit);
67
uint16_t* arr = digit->GetUShortValue();
68
for
(
auto
&
m
:
fChannelMaps
)
69
for
(
auto
& vecEl :
m
.second) {
70
int16_t arr_out[
BmnProfRawTools::ChannelCnt
()] = {};
71
for
(
size_t
j = 0; j <
BmnProfRawTools::ChannelCnt
(); j++) {
72
arr_out[j] =
BmnProfRawTools::adc_ch
(arr, j * 6, vecEl.second.ChannelName)
73
* 16;
// x16 because ADC processor works also with ADC64 shifted values
74
// printf("arr[%c][%2ld] = %hd\n", vecEl.second.ChannelName, j,
75
// arr_out[j]);
76
}
77
/*BmnADCDigit* wd = */
new
((*fWorkAdcArray)[fWorkAdcArray->
GetEntriesFast
()])
78
BmnADCDigit
(digit->
GetSerial
(),
79
vecEl.second.LayerId,
// for simplicity: layerId == ChannelId
80
BmnProfRawTools::ChannelCnt
(), arr_out);
81
// int16_t * arr_out = wd->GetShortValue();
82
}
83
}
84
return
0;
85
}
86
87
private
:
88
string
fLocalMapFileName
;
89
string
fGlobalMapFileName
;
90
91
GlobalProfiMap
fGlobalMap
;
92
Mod2LocalProfiMap
fChannelMaps
;
93
94
unique_ptr<BmnSiBTStationSet>
fSiBTStationSet
;
95
96
void
MapStrip
(
ProfiInfo
& info,
97
uint16_t ch,
98
Int_t
iSmpl,
99
uint16_t& station,
100
uint16_t& mod,
101
uint16_t& lay,
102
int16_t& strip);
103
void
ProcessAdc
(
TClonesArray
* adc,
TClonesArray
* csc,
Bool_t
doFill);
104
BmnStatus
ReadGlobalMapFile
(
string
name);
105
BmnStatus
ReadLocalMapFile
(
string
name);
106
107
ClassDef
(
BmnProfRaw2Digit
, 1);
108
};
109
110
#endif
/* BMNPROFRAW2DIGIT_H */
GlobalProfiMap
map< PlMapKey, ProfiInfo > GlobalProfiMap
Definition
BmnProfRaw2Digit.h:47
LayerIdProfiMap
map< uint16_t, ProfiLocal > LayerIdProfiMap
Definition
BmnProfRaw2Digit.h:38
Mod2LocalProfiMap
map< uint16_t, LayerIdProfiMap > Mod2LocalProfiMap
Definition
BmnProfRaw2Digit.h:39
m
__m128 m
Definition
P4_F32vec4.h:27
Bool_t
bool Bool_t
Int_t
int Int_t
ClassDef
#define ClassDef(name, id)
TClonesArray.h
TH1F.h
TMath.h
TString.h
TTree.h
BmnStatus
BmnStatus
Define status code.
Definition
BmnEnums.h:93
BmnADCDigit
Definition
BmnADCDigit.h:12
BmnADCDigit::GetSerial
uint32_t GetSerial() const
Definition
BmnADCDigit.h:49
BmnAdcProcessor::BmnAdcProcessor
BmnAdcProcessor(uint32_t period, uint32_t run, TString det, uint16_t nCh, const uint16_t nSmpl, BmnSetup setup=kBMNSETUP)
Definition
BmnAdcProcessor.cxx:11
BmnProfRaw2Digit::ReadGlobalMapFile
BmnStatus ReadGlobalMapFile(string name)
Definition
BmnProfRaw2Digit.cxx:47
BmnProfRaw2Digit::FillNoisyChannels
BmnStatus FillNoisyChannels()
Definition
BmnProfRaw2Digit.cxx:171
BmnProfRaw2Digit::fGlobalMap
GlobalProfiMap fGlobalMap
Definition
BmnProfRaw2Digit.h:91
BmnProfRaw2Digit::GetGlobalMap
GlobalProfiMap & GetGlobalMap()
Definition
BmnProfRaw2Digit.h:55
BmnProfRaw2Digit::GetProfStationSet
static unique_ptr< BmnSiProfStationSet > GetProfStationSet(Int_t period)
Definition
BmnProfRaw2Digit.cxx:30
BmnProfRaw2Digit::fChannelMaps
Mod2LocalProfiMap fChannelMaps
Definition
BmnProfRaw2Digit.h:92
BmnProfRaw2Digit::FillProfiles
BmnStatus FillProfiles(TClonesArray *adc)
Definition
BmnProfRaw2Digit.cxx:143
BmnProfRaw2Digit::fGlobalMapFileName
string fGlobalMapFileName
Definition
BmnProfRaw2Digit.h:89
BmnProfRaw2Digit::fSiBTStationSet
unique_ptr< BmnSiBTStationSet > fSiBTStationSet
Definition
BmnProfRaw2Digit.h:94
BmnProfRaw2Digit::~BmnProfRaw2Digit
~BmnProfRaw2Digit()
Definition
BmnProfRaw2Digit.cxx:25
BmnProfRaw2Digit::BmnProfRaw2Digit
BmnProfRaw2Digit(Int_t period, Int_t run)
Definition
BmnProfRaw2Digit.cxx:3
BmnProfRaw2Digit::FillExtractedBits
int FillExtractedBits(TClonesArray *fInAdcArray, TClonesArray *fWorkAdcArray)
Definition
BmnProfRaw2Digit.h:63
BmnProfRaw2Digit::fLocalMapFileName
string fLocalMapFileName
Definition
BmnProfRaw2Digit.h:88
BmnProfRaw2Digit::FillEvent
BmnStatus FillEvent(TClonesArray *adc, TClonesArray *csc)
Definition
BmnProfRaw2Digit.cxx:131
BmnProfRaw2Digit::ProcessAdc
void ProcessAdc(TClonesArray *adc, TClonesArray *csc, Bool_t doFill)
Definition
BmnProfRaw2Digit.cxx:247
BmnProfRaw2Digit::MapStrip
void MapStrip(ProfiInfo &info, uint16_t ch, Int_t iSmpl, uint16_t &station, uint16_t &mod, uint16_t &lay, int16_t &strip)
Definition
BmnProfRaw2Digit.cxx:156
BmnProfRaw2Digit::ReadLocalMapFile
BmnStatus ReadLocalMapFile(string name)
Definition
BmnProfRaw2Digit.cxx:84
BmnProfRawTools::adc_ch
static int adc_ch(vector< bitset< 32 > > &adc_word, char channel_name)
Definition
BmnProfRawTools.cxx:61
BmnProfRawTools::ChannelCnt
static constexpr const size_t ChannelCnt()
Definition
BmnProfRawTools.h:18
TClonesArray
TObjArray::GetEntriesFast
Int_t GetEntriesFast() const
TObjArray::At
TObject * At(Int_t idx) const override
BmnAdcProcessor.h
TMath
ProfiInfo
Definition
BmnProfRaw2Digit.h:42
ProfiInfo::Layer
ProfiLocal * Layer
Definition
BmnProfRaw2Digit.h:45
ProfiInfo::StationId
uint16_t StationId
Definition
BmnProfRaw2Digit.h:43
ProfiInfo::ModuleId
uint16_t ModuleId
Definition
BmnProfRaw2Digit.h:44
ProfiLocal
Definition
BmnProfRaw2Digit.h:31
ProfiLocal::StripMap
int16_t StripMap[BmnProfRawTools::ChannelCnt()]
Definition
BmnProfRaw2Digit.h:35
ProfiLocal::LayerId
uint16_t LayerId
Definition
BmnProfRaw2Digit.h:34
ProfiLocal::LayerType
char LayerType
Definition
BmnProfRaw2Digit.h:33
ProfiLocal::ChannelName
char ChannelName
Definition
BmnProfRaw2Digit.h:32
decoder
BmnProfRaw2Digit.h
Generated on
for BmnRoot by
1.17.0