BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnVspRaw2Digit.cxx
Go to the documentation of this file.
1
#include "
BmnVspRaw2Digit.h
"
2
// ROOT
3
#include <
TTimeStamp.h
>
4
// FairRoot
5
#include "FairLogger.h"
6
// BmnRoot
7
#include "BmnVSPDigit.h"
8
#include "BmnVspRawDigit.h"
9
#include "
StsConst.h
"
10
11
BmnVspRaw2Digit::BmnVspRaw2Digit
(int32_t period, int32_t run,
TString
mapFileName,
BmnSetup
bmnSetup)
12
: fPeriod(period)
13
, fRun(run)
14
, fSetup(bmnSetup)
15
, station_set(
BmnVSPStationSet
::Create(fPeriod, fSetup))
16
{}
17
18
BmnStatus
BmnVspRaw2Digit::FillEvent
(
TClonesArray
* adc,
TClonesArray
* digits,
BmnEventHeader
* eh)
19
{
20
uint64_t ulHitTimeFLESbeg = 0;
21
bool
fIsFirstFound =
false
;
22
for
(int32_t iRaw = 0; iRaw < adc->
GetEntriesFast
(); ++iRaw) {
23
BmnVspRawDigit
* dig =
static_cast<
BmnVspRawDigit
*
>
(adc->
At
(iRaw));
24
if
(!fIsFirstFound) {
25
ulHitTimeFLESbeg = dig->
GetTrigTime
();
26
double
trigTimeNsd = ulHitTimeFLESbeg *
StsConst::kdClockCycleNs
;
27
uint64_t trigTimeNs = trigTimeNsd;
28
fIsFirstFound =
true
;
29
if
(eh) {
30
int64_t sns = 1e9;
31
int64_t sec = trigTimeNs / sns;
32
int32_t nsec = trigTimeNs % sns;
33
eh->
SetVspTS
(
TTimeStamp
(sec, nsec));
34
LOGF(debug,
"VSP ts %s"
, eh->
GetVspTS
().
AsString
());
35
}
36
}
37
for
(
size_t
iHit = 0; iHit < dig->
GetNHits
(); iHit++) {
38
uint16_t usAsicIdx =
StsConst::GetIdx_AsicFromELink
(dig->
GetVecElinkIdx
()[iHit]);
39
StsConst::SideType
sSType =
static_cast<
StsConst::SideType
>
(
StsConst::GetIdx_SideFromAsic
(usAsicIdx));
40
uint16_t usSensor =
41
StsConst::GetIdx_SensorFromAsic
(dig->
GetDpbIdx
(), usAsicIdx);
// call for the multi DPB analysis
42
uint16_t usStrip =
StsConst::GetIdx_Strip
(usSensor, usAsicIdx, dig->
GetVecChan
()[iHit]);
43
uint64_t ulTimeSinceBegin_ns =
44
(dig->
GetVecHitTimeFLES
()[iHit] - ulHitTimeFLESbeg) *
StsConst::kdClockCycleNs
;
// in ns
45
Double_t
dTimeSinceBegin_ns =
static_cast<
Double_t
>
(ulTimeSinceBegin_ns);
// in ns
46
uint16_t iMod = usSensor > 2 ? (8 - usSensor) : usSensor;
// @TODO replace
47
uint16_t iLayer = (sSType ==
StsConst::SideType::NEG
) ? 0 : 1;
// @TODO replace
48
uint16_t iStation = 0;
49
auto
* st =
station_set
->GetStation(iStation);
50
auto
* mod = st->GetModule(iMod);
51
auto
& lay2 = mod->GetStripLayer(2);
52
uint16_t iStrip =
53
// (lay.GetStripNumberingOrder() == StripNumberingDirection::RightToLeft)
54
// ?
55
// (lay.GetNStrips() - usStrip) :
56
usStrip;
57
BmnVSPDigit
* newdig =
new
((*digits)[digits->
GetEntriesFast
()])
58
BmnVSPDigit
(iStation, iMod, iLayer, iStrip, dig->
GetVecAdc
()[iHit]);
59
newdig->
SetTTimeSinceBegin_ns
(dTimeSinceBegin_ns);
60
// repeat to the 3rd layer connected wires
61
if
((iLayer == 1) && (iStrip <= lay2.GetLastStripNumber())) {
62
BmnVSPDigit
* newdig2 =
new
((*digits)[digits->
GetEntriesFast
()])
BmnVSPDigit
(newdig);
63
newdig2->
SetStripLayer
(2);
64
}
65
}
66
}
67
return
kBMNSUCCESS
;
68
}
Double_t
double Double_t
StsConst.h
TTimeStamp.h
BmnStatus
BmnStatus
Define status code.
Definition
BmnEnums.h:93
kBMNSUCCESS
@ kBMNSUCCESS
Success.
Definition
BmnEnums.h:94
BmnSetup
BmnSetup
Define experimental setup.
Definition
BmnEnums.h:165
BmnEventHeader
Definition
BmnEventHeader.h:24
BmnEventHeader::SetVspTS
void SetVspTS(TTimeStamp event_time)
Set the time for this event in.
Definition
BmnEventHeader.h:155
BmnEventHeader::GetVspTS
TTimeStamp GetVspTS()
Get the time for this event.
Definition
BmnEventHeader.h:99
BmnStripDigit::SetStripLayer
void SetStripLayer(Int_t layer)
Definition
BmnStripDigit.h:36
BmnVSPDigit
Definition
BmnVSPDigit.h:9
BmnVSPDigit::SetTTimeSinceBegin_ns
void SetTTimeSinceBegin_ns(Double_t val)
Definition
BmnVSPDigit.h:18
BmnVSPStationSet
Definition
BmnVSPStationSet.h:14
BmnVspRaw2Digit::station_set
unique_ptr< BmnVSPStationSet > station_set
Definition
BmnVspRaw2Digit.h:33
BmnVspRaw2Digit::FillEvent
BmnStatus FillEvent(TClonesArray *adc, TClonesArray *digits, BmnEventHeader *eh=nullptr)
Definition
BmnVspRaw2Digit.cxx:18
BmnVspRaw2Digit::BmnVspRaw2Digit
BmnVspRaw2Digit(Int_t period, Int_t run, TString mapFileName="", BmnSetup bmnSetup=kBMNSETUP)
BmnVspRawDigit
Definition
BmnVspRawDigit.h:11
BmnVspRawDigit::GetVecHitTimeFLES
vector< uint64_t > & GetVecHitTimeFLES()
Definition
BmnVspRawDigit.h:31
BmnVspRawDigit::GetDpbIdx
uint16_t GetDpbIdx() const
Definition
BmnVspRawDigit.h:19
BmnVspRawDigit::GetNHits
size_t GetNHits()
Definition
BmnVspRawDigit.h:17
BmnVspRawDigit::GetVecAdc
vector< uint16_t > & GetVecAdc()
Definition
BmnVspRawDigit.h:43
BmnVspRawDigit::GetVecElinkIdx
vector< uint16_t > & GetVecElinkIdx()
Definition
BmnVspRawDigit.h:35
BmnVspRawDigit::GetTrigTime
uint64_t GetTrigTime() const
Definition
BmnVspRawDigit.h:23
BmnVspRawDigit::GetVecChan
vector< uint16_t > & GetVecChan()
Definition
BmnVspRawDigit.h:39
TClonesArray
TObjArray::GetEntriesFast
Int_t GetEntriesFast() const
TObjArray::At
TObject * At(Int_t idx) const override
TString
TTimeStamp
TTimeStamp::AsString
const char * AsString(const Option_t *option="") const
BmnVspRaw2Digit.h
StsConst::kdClockCycleNs
static constexpr double kdClockCycleNs
Definition
StsConst.h:17
StsConst::GetIdx_SensorFromAsic
UInt_t GetIdx_SensorFromAsic(uint16_t iDpbIdx, uint16_t iAsicIdx)
Definition
StsConst.h:91
StsConst::GetIdx_Strip
uint16_t GetIdx_Strip(uint16_t iSensIdx, uint16_t iAsicIdx, uint16_t iChannel)
Definition
StsConst.h:128
StsConst::SideType
SideType
Definition
StsConst.h:34
StsConst::NEG
@ NEG
Definition
StsConst.h:36
StsConst::GetIdx_SideFromAsic
UInt_t GetIdx_SideFromAsic(UInt_t iAsicIdx)
Definition
StsConst.h:72
StsConst::GetIdx_AsicFromELink
uint16_t GetIdx_AsicFromELink(uint16_t uELinkIdx)
Definition
StsConst.h:79
decoder
BmnVspRaw2Digit.cxx
Generated on
for BmnRoot by
1.17.0