Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cbmroot
Manage
Activity
Members
Labels
Plan
Wiki
Redmine
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Computing
cbmroot
Commits
14ea888b
Commit
14ea888b
authored
2 years ago
by
Pierre-Alain Loizeau
Browse files
Options
Downloads
Patches
Plain Diff
Add trd2d support + much digi flag autoset + per det plot and canvases in AlgoBuildRawEvent
parent
aa166edf
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!816
Changes to AlgoBuildRawEvent from mCBM march 2022 runs
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx
+306
-12
306 additions, 12 deletions
reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx
reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h
+15
-2
15 additions, 2 deletions
reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h
with
321 additions
and
14 deletions
reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx
+
306
−
12
View file @
14ea888b
...
@@ -210,6 +210,7 @@ void CbmAlgoBuildRawEvents::BuildEvents()
...
@@ -210,6 +210,7 @@ void CbmAlgoBuildRawEvents::BuildEvents()
}
}
break
;
break
;
}
}
case
ECbmModuleId
::
kTrd2d
:
// Same data storage as trd 1d
case
ECbmModuleId
::
kTrd
:
{
case
ECbmModuleId
::
kTrd
:
{
LoopOnSeeds
<
CbmTrdDigi
>
();
LoopOnSeeds
<
CbmTrdDigi
>
();
break
;
break
;
...
@@ -387,6 +388,7 @@ void CbmAlgoBuildRawEvents::SearchMatches(Double_t dSeedTime, RawEventBuilderDet
...
@@ -387,6 +388,7 @@ void CbmAlgoBuildRawEvents::SearchMatches(Double_t dSeedTime, RawEventBuilderDet
}
}
break
;
break
;
}
}
case
ECbmModuleId
::
kTrd2d
:
// Same data storage as trd 1d
case
ECbmModuleId
::
kTrd
:
{
case
ECbmModuleId
::
kTrd
:
{
SearchMatches
<
CbmTrdDigi
>
(
dSeedTime
,
detMatch
);
SearchMatches
<
CbmTrdDigi
>
(
dSeedTime
,
detMatch
);
break
;
break
;
...
@@ -456,8 +458,22 @@ void CbmAlgoBuildRawEvents::SearchMatches(Double_t dSeedTime, RawEventBuilderDet
...
@@ -456,8 +458,22 @@ void CbmAlgoBuildRawEvents::SearchMatches(Double_t dSeedTime, RawEventBuilderDet
for
(
UInt_t
uDigi
=
detMatch
.
fuStartIndex
;
uDigi
<
uNbSelDigis
;
++
uDigi
)
{
for
(
UInt_t
uDigi
=
detMatch
.
fuStartIndex
;
uDigi
<
uNbSelDigis
;
++
uDigi
)
{
const
DigiCheck
*
pDigi
=
GetDigi
<
DigiCheck
>
(
uDigi
);
const
DigiCheck
*
pDigi
=
GetDigi
<
DigiCheck
>
(
uDigi
);
// Filter TRD2D digis if 1D and reverse
if
(
detMatch
.
detId
==
ECbmModuleId
::
kTrd
)
{
const
CbmTrdDigi
*
pTrdDigi
=
GetDigi
<
CbmTrdDigi
>
(
uDigi
);
if
(
pTrdDigi
->
GetType
()
==
CbmTrdDigi
::
eCbmTrdAsicType
::
kFASP
)
{
//
continue
;
}
}
else
if
(
detMatch
.
detId
==
ECbmModuleId
::
kTrd2d
)
{
const
CbmTrdDigi
*
pTrdDigi
=
GetDigi
<
CbmTrdDigi
>
(
uDigi
);
if
(
pTrdDigi
->
GetType
()
==
CbmTrdDigi
::
eCbmTrdAsicType
::
kSPADIC
)
{
//
continue
;
}
}
// filter T0 digis from Tof (remove this line if T0 properly implemented)
// filter T0 digis from Tof (remove this line if T0 properly implemented)
if
(
detMatch
.
detId
==
ECbmModuleId
::
kTof
&&
pDigi
->
GetAddress
()
==
fuT0Address
)
{
continue
;
}
//
if (detMatch.detId == ECbmModuleId::kTof && pDigi->GetAddress() == fuT0Address) { continue; }
const
Double_t
dTime
=
pDigi
->
GetTime
();
const
Double_t
dTime
=
pDigi
->
GetTime
();
const
Double_t
dTimeDiff
=
dTime
-
dSeedTime
;
const
Double_t
dTimeDiff
=
dTime
-
dSeedTime
;
...
@@ -583,6 +599,7 @@ bool CbmAlgoBuildRawEvents::CheckDataAvailable(ECbmModuleId detId)
...
@@ -583,6 +599,7 @@ bool CbmAlgoBuildRawEvents::CheckDataAvailable(ECbmModuleId detId)
return
fMuchDigis
!=
nullptr
;
return
fMuchDigis
!=
nullptr
;
}
}
}
}
case
ECbmModuleId
::
kTrd2d
:
// Same data storage as trd 1d
case
ECbmModuleId
::
kTrd
:
{
case
ECbmModuleId
::
kTrd
:
{
return
fTrdDigis
!=
nullptr
;
return
fTrdDigis
!=
nullptr
;
}
}
...
@@ -618,6 +635,7 @@ UInt_t CbmAlgoBuildRawEvents::GetNofDigis(ECbmModuleId detId)
...
@@ -618,6 +635,7 @@ UInt_t CbmAlgoBuildRawEvents::GetNofDigis(ECbmModuleId detId)
return
fMuchDigis
->
size
();
return
fMuchDigis
->
size
();
}
}
}
}
case
ECbmModuleId
::
kTrd2d
:
// Same data storage as trd 1d
case
ECbmModuleId
::
kTrd
:
{
case
ECbmModuleId
::
kTrd
:
{
return
fTrdDigis
->
size
();
return
fTrdDigis
->
size
();
}
}
...
@@ -696,33 +714,57 @@ void CbmAlgoBuildRawEvents::CreateHistograms()
...
@@ -696,33 +714,57 @@ void CbmAlgoBuildRawEvents::CreateHistograms()
fhNbDigiPerEvtTime
=
new
TH2I
(
"hNbDigiPerEvtTime"
,
fhNbDigiPerEvtTime
=
new
TH2I
(
"hNbDigiPerEvtTime"
,
"nb of all digis per event vs seed time of the events; Seed time "
"nb of all digis per event vs seed time of the events; Seed time "
"[s]; Nb Digis []; Events []"
,
"[s]; Nb Digis []; Events []"
,
1000
,
0
,
0.
1
,
5000
,
0
,
5000
);
1000
,
0
,
0.
2
,
5000
,
0
,
5000
);
// fhNbDigiPerEvtTime->SetCanExtend(TH2::kAllAxes); // Breaks he MQ histogram server as cannot be merged!
// fhNbDigiPerEvtTime->SetCanExtend(TH2::kAllAxes); // Breaks he MQ histogram server as cannot be merged!
AddHistoToVector
(
fhEventTime
,
"evtbuild"
);
AddHistoToVector
(
fhEventDt
,
"evtbuild"
);
AddHistoToVector
(
fhEventSize
,
"evtbuild"
);
AddHistoToVector
(
fhNbDigiPerEvtTime
,
"evtbuild"
);
outFolder
->
Add
(
fhEventTime
);
outFolder
->
Add
(
fhEventDt
);
outFolder
->
Add
(
fhEventSize
);
outFolder
->
Add
(
fhNbDigiPerEvtTime
);
/// Loop on selection detectors
/// Loop on selection detectors
for
(
std
::
vector
<
RawEventBuilderDetector
>::
iterator
det
=
fvDets
.
begin
();
det
!=
fvDets
.
end
();
++
det
)
{
for
(
std
::
vector
<
RawEventBuilderDetector
>::
iterator
det
=
fvDets
.
begin
();
det
!=
fvDets
.
end
();
++
det
)
{
/// In case name not provided, do not create the histo to avoid name conflicts!
/// In case name not provided, do not create the histo to avoid name conflicts!
if
(
"Invalid"
==
(
*
det
).
sName
)
{
if
(
"Invalid"
==
(
*
det
).
sName
)
{
fvhNbDigiPerEvtTimeDet
.
push_back
(
nullptr
);
fvhNbDigiPerEvtTimeDet
.
push_back
(
nullptr
);
fvhNbDigiPerEvtDet
.
push_back
(
nullptr
);
continue
;
continue
;
}
}
TH2I
*
hNbDigiPerEvtTimeDet
=
new
TH2I
(
Form
(
"hNbDigiPerEvtTime%s"
,
(
*
det
).
sName
.
data
()),
TH2I
*
hNbDigiPerEvtTimeDet
=
new
TH2I
(
Form
(
"hNbDigiPerEvtTime%s"
,
(
*
det
).
sName
.
data
()),
Form
(
"nb of %s digis per event vs seed time of the events; Seed time in TS "
Form
(
"nb of %s digis per event vs seed time of the events; Seed time in TS "
"[s]; Nb Digis []; Events []"
,
"[s]; Nb Digis []; Events []"
,
(
*
det
).
sName
.
data
()),
(
*
det
).
sName
.
data
()),
1000
,
0
,
0.
1
,
5000
,
0
,
5000
);
1000
,
0
,
0.
2
,
5000
,
0
,
5000
);
// hNbDigiPerEvtTimeDet->SetCanExtend(TH2::kAllAxes); // Breaks he MQ histogram server as cannot be merged!
// hNbDigiPerEvtTimeDet->SetCanExtend(TH2::kAllAxes); // Breaks he MQ histogram server as cannot be merged!
fvhNbDigiPerEvtTimeDet
.
push_back
(
hNbDigiPerEvtTimeDet
);
fvhNbDigiPerEvtTimeDet
.
push_back
(
hNbDigiPerEvtTimeDet
);
TH1I
*
hNbDigiPerEvtDet
=
new
TH1I
(
Form
(
"hNbDigiPerEvt%s"
,
(
*
det
).
sName
.
data
()),
Form
(
"nb of %s digis per event; Nb Digis []"
,
(
*
det
).
sName
.
data
()),
10000
,
0
,
10000
);
fvhNbDigiPerEvtDet
.
push_back
(
hNbDigiPerEvtDet
);
TH1I
*
hTDiff
=
new
TH1I
(
Form
(
"hTDiff%s"
,
(
*
det
).
sName
.
data
()),
Form
(
"#DeltaT of %s digis to seed time of event;#DeltaT (ns); Counts []"
,
(
*
det
).
sName
.
data
()),
200
,
(
*
det
).
fdTimeWinBeg
,
(
*
det
).
fdTimeWinEnd
);
fvhTDiff
.
push_back
(
hTDiff
);
}
}
AddHistoToVector
(
fhEventTime
,
"evtbuild"
);
/// Same plots for the reference detector
AddHistoToVector
(
fhEventDt
,
"evtbuild"
);
TH1I
*
hNbDigiPerEvtDet
=
AddHistoToVector
(
fhEventSize
,
"evtbuild"
);
new
TH1I
(
Form
(
"hNbDigiPerEvt%s"
,
fRefDet
.
sName
.
data
()),
AddHistoToVector
(
fhNbDigiPerEvtTime
,
"evtbuild"
);
Form
(
"nb of %s digis per event; Nb Digis []"
,
fRefDet
.
sName
.
data
()),
10000
,
0
,
10000
);
outFolder
->
Add
(
fhEventTime
);
fvhNbDigiPerEvtDet
.
push_back
(
hNbDigiPerEvtDet
);
outFolder
->
Add
(
fhEventDt
);
outFolder
->
Add
(
fhEventSize
);
TH1I
*
hTDiff
=
outFolder
->
Add
(
fhNbDigiPerEvtTime
);
new
TH1I
(
Form
(
"hTDiff%s"
,
fRefDet
.
sName
.
data
()),
Form
(
"#DeltaT of %s digis to seed time of event;#DeltaT (ns); Counts []"
,
fRefDet
.
sName
.
data
()),
200
,
fRefDet
.
fdTimeWinBeg
,
fRefDet
.
fdTimeWinEnd
);
// FIXME, adjust to configured window
fvhTDiff
.
push_back
(
hTDiff
);
for
(
std
::
vector
<
TH2
*>::
iterator
itHist
=
fvhNbDigiPerEvtTimeDet
.
begin
();
itHist
!=
fvhNbDigiPerEvtTimeDet
.
end
();
for
(
std
::
vector
<
TH2
*>::
iterator
itHist
=
fvhNbDigiPerEvtTimeDet
.
begin
();
itHist
!=
fvhNbDigiPerEvtTimeDet
.
end
();
++
itHist
)
{
++
itHist
)
{
...
@@ -731,6 +773,94 @@ void CbmAlgoBuildRawEvents::CreateHistograms()
...
@@ -731,6 +773,94 @@ void CbmAlgoBuildRawEvents::CreateHistograms()
outFolder
->
Add
((
*
itHist
));
outFolder
->
Add
((
*
itHist
));
}
}
}
}
for
(
std
::
vector
<
TH1
*>::
iterator
itHist
=
fvhNbDigiPerEvtDet
.
begin
();
itHist
!=
fvhNbDigiPerEvtDet
.
end
();
++
itHist
)
{
if
(
nullptr
!=
(
*
itHist
))
{
AddHistoToVector
((
*
itHist
),
"evtbuild"
);
outFolder
->
Add
((
*
itHist
));
}
}
for
(
std
::
vector
<
TH1
*>::
iterator
itHist
=
fvhTDiff
.
begin
();
itHist
!=
fvhTDiff
.
end
();
++
itHist
)
{
if
(
nullptr
!=
(
*
itHist
))
{
AddHistoToVector
((
*
itHist
),
"evtbuild"
);
outFolder
->
Add
((
*
itHist
));
}
}
/// Canvases creation
// std::vector<std::pair<TCanvas*, std::string>> vCanvases = {};
Double_t
w
=
10
;
Double_t
h
=
10
;
TCanvas
*
fcSummary
=
new
TCanvas
(
"cEvBSummary"
,
"EvB monitoring plots"
,
w
,
h
);
fcSummary
->
Divide
(
2
,
2
);
fcSummary
->
cd
(
1
);
gPad
->
SetGridx
();
gPad
->
SetGridy
();
fhEventTime
->
Draw
(
"hist"
);
fcSummary
->
cd
(
2
);
gPad
->
SetGridx
();
gPad
->
SetGridy
();
gPad
->
SetLogx
();
gPad
->
SetLogy
();
fhEventDt
->
Draw
(
"hist"
);
fcSummary
->
cd
(
3
);
gPad
->
SetGridx
();
gPad
->
SetGridy
();
gPad
->
SetLogy
();
fhEventSize
->
Draw
(
"hist"
);
fcSummary
->
cd
(
4
);
gPad
->
SetGridx
();
gPad
->
SetGridy
();
fhNbDigiPerEvtTime
->
Draw
(
"colz"
);
/// Add canvas pointers to the canvas vector
AddCanvasToVector
(
fcSummary
,
"canvases"
);
// ------------------------ //
TCanvas
*
fcNbDigi
=
new
TCanvas
(
"cEvBNbDigi"
,
"EvB NbDigi evolution "
,
w
,
h
);
if
(
fvhNbDigiPerEvtDet
.
size
()
<=
6
)
{
//
fcNbDigi
->
Divide
(
2
,
3
);
}
else
{
//
fcNbDigi
->
Divide
(
3
,
3
);
}
int
iPad
=
1
;
for
(
std
::
vector
<
TH1
*>::
iterator
itHist
=
fvhNbDigiPerEvtDet
.
begin
();
itHist
!=
fvhNbDigiPerEvtDet
.
end
();
++
itHist
)
{
if
(
nullptr
!=
(
*
itHist
))
{
fcNbDigi
->
cd
(
iPad
++
);
gPad
->
SetGridx
();
gPad
->
SetGridy
();
gPad
->
SetLogy
();
(
*
itHist
)
->
Draw
();
//"colz");
}
}
AddCanvasToVector
(
fcNbDigi
,
"canvases"
);
// ------------------------ //
TCanvas
*
fcTdif
=
new
TCanvas
(
"cEvBTdif"
,
"EvB Time Difference plots"
,
w
,
h
);
if
(
fvhNbDigiPerEvtDet
.
size
()
<=
6
)
{
//
fcTdif
->
Divide
(
2
,
3
);
}
else
{
//
fcTdif
->
Divide
(
3
,
3
);
}
iPad
=
1
;
for
(
std
::
vector
<
TH1
*>::
iterator
itHist
=
fvhTDiff
.
begin
();
itHist
!=
fvhTDiff
.
end
();
++
itHist
)
{
if
(
nullptr
!=
(
*
itHist
))
{
fcTdif
->
cd
(
iPad
++
);
gPad
->
SetGridx
();
gPad
->
SetGridy
();
gPad
->
SetLogy
();
(
*
itHist
)
->
Draw
();
}
}
AddCanvasToVector
(
fcTdif
,
"canvases"
);
}
}
void
CbmAlgoBuildRawEvents
::
FillHistos
()
void
CbmAlgoBuildRawEvents
::
FillHistos
()
...
@@ -744,9 +874,165 @@ void CbmAlgoBuildRawEvents::FillHistos()
...
@@ -744,9 +874,165 @@ void CbmAlgoBuildRawEvents::FillHistos()
fhNbDigiPerEvtTime
->
Fill
(
evt
->
GetStartTime
()
*
1e-9
,
evt
->
GetNofData
());
fhNbDigiPerEvtTime
->
Fill
(
evt
->
GetStartTime
()
*
1e-9
,
evt
->
GetNofData
());
/// Loop on selection detectors
/// Loop on selection detectors
uint32_t
uNbDataTrd1d
=
0
;
uint32_t
uNbDataTrd2d
=
0
;
for
(
UInt_t
uDetIdx
=
0
;
uDetIdx
<
fvDets
.
size
();
++
uDetIdx
)
{
if
(
nullptr
==
fvhNbDigiPerEvtDet
[
uDetIdx
])
continue
;
fvhNbDigiPerEvtDet
[
uDetIdx
]
->
Fill
(
TMath
::
Max
(
0
,
evt
->
GetNofData
(
fvDets
[
uDetIdx
].
dataType
)));
if
(
nullptr
==
fvhTDiff
[
uDetIdx
])
continue
;
for
(
int
idigi
=
0
;
idigi
<
evt
->
GetNofData
(
fvDets
[
uDetIdx
].
dataType
);
++
idigi
)
{
double
dTimeDiff
=
1.E30
;
uint
idx
=
evt
->
GetIndex
(
fvDets
[
uDetIdx
].
dataType
,
idigi
);
switch
(
fvDets
[
uDetIdx
].
dataType
)
{
case
ECbmDataType
::
kT0Digi
:
{
if
(
fT0DigiVec
->
size
()
<=
idx
)
continue
;
dTimeDiff
=
fT0DigiVec
->
at
(
idx
).
GetTime
()
-
evt
->
GetStartTime
();
break
;
}
case
ECbmDataType
::
kStsDigi
:
{
auto
pDigi
=
GetDigi
<
CbmStsDigi
>
(
idx
);
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
break
;
}
case
ECbmDataType
::
kMuchDigi
:
{
if
(
fbUseMuchBeamtimeDigi
)
{
auto
pDigi
=
GetDigi
<
CbmMuchBeamTimeDigi
>
(
idx
);
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
}
else
{
auto
pDigi
=
GetDigi
<
CbmMuchDigi
>
(
idx
);
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
}
break
;
}
case
ECbmDataType
::
kTofDigi
:
{
auto
pDigi
=
GetDigi
<
CbmTofDigi
>
(
idx
);
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
break
;
}
case
ECbmDataType
::
kTrdDigi
:
{
auto
pDigi
=
GetDigi
<
CbmTrdDigi
>
(
idx
);
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
if
(
pDigi
->
GetType
()
==
CbmTrdDigi
::
eCbmTrdAsicType
::
kSPADIC
)
{
if
(
fvDets
[
uDetIdx
].
sName
==
"kTrd2D"
)
continue
;
++
uNbDataTrd1d
;
}
else
if
(
pDigi
->
GetType
()
==
CbmTrdDigi
::
eCbmTrdAsicType
::
kFASP
)
{
if
(
fvDets
[
uDetIdx
].
sName
==
"kTrd"
)
continue
;
++
uNbDataTrd2d
;
}
break
;
}
case
ECbmDataType
::
kRichDigi
:
{
auto
pDigi
=
GetDigi
<
CbmRichDigi
>
(
idx
);
// FIXME, need to find the proper digi template
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
break
;
}
case
ECbmDataType
::
kPsdDigi
:
{
auto
pDigi
=
GetDigi
<
CbmPsdDigi
>
(
idx
);
// FIXME, need to find the proper digi template
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
break
;
}
default
:
LOG
(
error
)
<<
"Unkown dataType "
<<
fvDets
[
uDetIdx
].
dataType
;
}
if
(
dTimeDiff
<
1.E30
)
fvhTDiff
[
uDetIdx
]
->
Fill
(
dTimeDiff
);
}
}
/// Reference detector
uint32_t
uRefDetIdx
=
fvDets
.
size
();
if
(
nullptr
!=
fvhNbDigiPerEvtDet
[
uRefDetIdx
])
{
fvhNbDigiPerEvtDet
[
uRefDetIdx
]
->
Fill
(
TMath
::
Max
(
0
,
evt
->
GetNofData
(
fRefDet
.
dataType
)));
if
(
nullptr
==
fvhTDiff
[
uRefDetIdx
])
continue
;
for
(
int
idigi
=
0
;
idigi
<
evt
->
GetNofData
(
fRefDet
.
dataType
);
++
idigi
)
{
double
dTimeDiff
=
1.E30
;
uint
idx
=
evt
->
GetIndex
(
fRefDet
.
dataType
,
idigi
);
switch
(
fRefDet
.
dataType
)
{
case
ECbmDataType
::
kT0Digi
:
{
if
(
fT0DigiVec
->
size
()
<=
idx
)
continue
;
dTimeDiff
=
fT0DigiVec
->
at
(
idx
).
GetTime
()
-
evt
->
GetStartTime
();
break
;
}
case
ECbmDataType
::
kStsDigi
:
{
auto
pDigi
=
GetDigi
<
CbmStsDigi
>
(
idx
);
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
break
;
}
case
ECbmDataType
::
kMuchDigi
:
{
if
(
fbUseMuchBeamtimeDigi
)
{
auto
pDigi
=
GetDigi
<
CbmMuchBeamTimeDigi
>
(
idx
);
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
}
else
{
auto
pDigi
=
GetDigi
<
CbmMuchDigi
>
(
idx
);
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
}
break
;
}
case
ECbmDataType
::
kTofDigi
:
{
auto
pDigi
=
GetDigi
<
CbmTofDigi
>
(
idx
);
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
break
;
}
case
ECbmDataType
::
kTrdDigi
:
{
auto
pDigi
=
GetDigi
<
CbmTrdDigi
>
(
idx
);
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
if
(
pDigi
->
GetType
()
==
CbmTrdDigi
::
eCbmTrdAsicType
::
kSPADIC
)
{
if
(
fRefDet
.
sName
==
"kTrd2D"
)
continue
;
++
uNbDataTrd1d
;
}
else
if
(
pDigi
->
GetType
()
==
CbmTrdDigi
::
eCbmTrdAsicType
::
kFASP
)
{
if
(
fRefDet
.
sName
==
"kTrd"
)
continue
;
++
uNbDataTrd2d
;
}
break
;
}
case
ECbmDataType
::
kRichDigi
:
{
auto
pDigi
=
GetDigi
<
CbmRichDigi
>
(
idx
);
// FIXME, need to find the proper digi template
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
break
;
}
case
ECbmDataType
::
kPsdDigi
:
{
auto
pDigi
=
GetDigi
<
CbmPsdDigi
>
(
idx
);
// FIXME, need to find the proper digi template
if
(
nullptr
==
pDigi
)
continue
;
dTimeDiff
=
pDigi
->
GetTime
()
-
evt
->
GetStartTime
();
break
;
}
default
:
LOG
(
error
)
<<
"Unkown dataType "
<<
fRefDet
.
dataType
;
}
if
(
dTimeDiff
<
1.E30
)
fvhTDiff
[
uRefDetIdx
]
->
Fill
(
dTimeDiff
);
}
}
/// Re-Loop on selection detectors due to detectors with same data type
for
(
UInt_t
uDetIdx
=
0
;
uDetIdx
<
fvDets
.
size
();
++
uDetIdx
)
{
for
(
UInt_t
uDetIdx
=
0
;
uDetIdx
<
fvDets
.
size
();
++
uDetIdx
)
{
if
(
nullptr
==
fvhNbDigiPerEvtTimeDet
[
uDetIdx
])
continue
;
if
(
nullptr
==
fvhNbDigiPerEvtTimeDet
[
uDetIdx
])
continue
;
fvhNbDigiPerEvtTimeDet
[
uDetIdx
]
->
Fill
(
evt
->
GetStartTime
()
*
1e-9
,
evt
->
GetNofData
(
fvDets
[
uDetIdx
].
dataType
));
if
(
fvDets
[
uDetIdx
].
sName
==
"kTrd"
)
{
fvhNbDigiPerEvtTimeDet
[
uDetIdx
]
->
Fill
(
evt
->
GetStartTime
()
*
1e-9
,
uNbDataTrd1d
);
}
else
if
(
fvDets
[
uDetIdx
].
sName
==
"kTrd2D"
)
{
fvhNbDigiPerEvtTimeDet
[
uDetIdx
]
->
Fill
(
evt
->
GetStartTime
()
*
1e-9
,
uNbDataTrd2d
);
}
else
{
fvhNbDigiPerEvtTimeDet
[
uDetIdx
]
->
Fill
(
evt
->
GetStartTime
()
*
1e-9
,
evt
->
GetNofData
(
fvDets
[
uDetIdx
].
dataType
));
}
}
}
dPreEvtTime
=
evt
->
GetStartTime
();
dPreEvtTime
=
evt
->
GetStartTime
();
}
}
...
@@ -764,6 +1050,14 @@ void CbmAlgoBuildRawEvents::ResetHistograms(Bool_t /*bResetTime*/)
...
@@ -764,6 +1050,14 @@ void CbmAlgoBuildRawEvents::ResetHistograms(Bool_t /*bResetTime*/)
++
itHist
)
{
++
itHist
)
{
(
*
itHist
)
->
Reset
();
(
*
itHist
)
->
Reset
();
}
}
for
(
std
::
vector
<
TH1
*>::
iterator
itHist
=
fvhNbDigiPerEvtDet
.
begin
();
itHist
!=
fvhNbDigiPerEvtDet
.
end
();
++
itHist
)
{
(
*
itHist
)
->
Reset
();
}
for
(
std
::
vector
<
TH1
*>::
iterator
itHist
=
fvhTDiff
.
begin
();
itHist
!=
fvhTDiff
.
end
();
++
itHist
)
{
(
*
itHist
)
->
Reset
();
}
/*
/*
if( kTRUE == bResetTime )
if( kTRUE == bResetTime )
{
{
...
...
This diff is collapsed.
Click to expand it.
reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h
+
15
−
2
View file @
14ea888b
...
@@ -94,6 +94,8 @@ static const RawEventBuilderDetector kRawEventBuilderDetMuch =
...
@@ -94,6 +94,8 @@ static const RawEventBuilderDetector kRawEventBuilderDetMuch =
RawEventBuilderDetector
(
ECbmModuleId
::
kMuch
,
ECbmDataType
::
kMuchDigi
,
"Much"
);
RawEventBuilderDetector
(
ECbmModuleId
::
kMuch
,
ECbmDataType
::
kMuchDigi
,
"Much"
);
static
const
RawEventBuilderDetector
kRawEventBuilderDetTrd
=
static
const
RawEventBuilderDetector
kRawEventBuilderDetTrd
=
RawEventBuilderDetector
(
ECbmModuleId
::
kTrd
,
ECbmDataType
::
kTrdDigi
,
"Trd"
);
RawEventBuilderDetector
(
ECbmModuleId
::
kTrd
,
ECbmDataType
::
kTrdDigi
,
"Trd"
);
static
const
RawEventBuilderDetector
kRawEventBuilderDetTrd2D
=
RawEventBuilderDetector
(
ECbmModuleId
::
kTrd2d
,
ECbmDataType
::
kTrdDigi
,
"kTrd2D"
);
static
const
RawEventBuilderDetector
kRawEventBuilderDetTof
=
static
const
RawEventBuilderDetector
kRawEventBuilderDetTof
=
RawEventBuilderDetector
(
ECbmModuleId
::
kTof
,
ECbmDataType
::
kTofDigi
,
"Tof"
);
RawEventBuilderDetector
(
ECbmModuleId
::
kTof
,
ECbmDataType
::
kTofDigi
,
"Tof"
);
static
const
RawEventBuilderDetector
kRawEventBuilderDetRich
=
static
const
RawEventBuilderDetector
kRawEventBuilderDetRich
=
...
@@ -185,12 +187,20 @@ public:
...
@@ -185,12 +187,20 @@ public:
/// Set digi containers
/// Set digi containers
void
SetT0Digis
(
const
std
::
vector
<
CbmTofDigi
>*
T0DigiVec
)
{
fT0DigiVec
=
T0DigiVec
;
}
void
SetT0Digis
(
const
std
::
vector
<
CbmTofDigi
>*
T0DigiVec
)
{
fT0DigiVec
=
T0DigiVec
;
}
void
SetDigis
(
std
::
vector
<
CbmStsDigi
>*
StsDigis
)
{
fStsDigis
=
StsDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmStsDigi
>*
StsDigis
)
{
fStsDigis
=
StsDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmMuchDigi
>*
MuchDigis
)
{
fMuchDigis
=
MuchDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmMuchDigi
>*
MuchDigis
)
{
fMuchDigis
=
MuchDigis
;
fbUseMuchBeamtimeDigi
=
kFALSE
;
}
void
SetDigis
(
std
::
vector
<
CbmTrdDigi
>*
TrdDigis
)
{
fTrdDigis
=
TrdDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmTrdDigi
>*
TrdDigis
)
{
fTrdDigis
=
TrdDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmTofDigi
>*
TofDigis
)
{
fTofDigis
=
TofDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmTofDigi
>*
TofDigis
)
{
fTofDigis
=
TofDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmRichDigi
>*
RichDigis
)
{
fRichDigis
=
RichDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmRichDigi
>*
RichDigis
)
{
fRichDigis
=
RichDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmPsdDigi
>*
PsdDigis
)
{
fPsdDigis
=
PsdDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmPsdDigi
>*
PsdDigis
)
{
fPsdDigis
=
PsdDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmMuchBeamTimeDigi
>*
MuchBeamTimeDigis
)
{
fMuchBeamTimeDigis
=
MuchBeamTimeDigis
;
}
void
SetDigis
(
std
::
vector
<
CbmMuchBeamTimeDigi
>*
MuchBeamTimeDigis
)
{
fMuchBeamTimeDigis
=
MuchBeamTimeDigis
;
fbUseMuchBeamtimeDigi
=
kTRUE
;
}
void
SetSeedTimes
(
std
::
vector
<
Double_t
>*
SeedTimes
)
{
fSeedTimes
=
SeedTimes
;
}
void
SetSeedTimes
(
std
::
vector
<
Double_t
>*
SeedTimes
)
{
fSeedTimes
=
SeedTimes
;
}
...
@@ -256,6 +266,7 @@ private:
...
@@ -256,6 +266,7 @@ private:
RawEventBuilderDetector
(
ECbmModuleId
::
kSts
,
ECbmDataType
::
kStsDigi
,
"kSts"
),
RawEventBuilderDetector
(
ECbmModuleId
::
kSts
,
ECbmDataType
::
kStsDigi
,
"kSts"
),
RawEventBuilderDetector
(
ECbmModuleId
::
kMuch
,
ECbmDataType
::
kMuchDigi
,
"kMuch"
),
RawEventBuilderDetector
(
ECbmModuleId
::
kMuch
,
ECbmDataType
::
kMuchDigi
,
"kMuch"
),
RawEventBuilderDetector
(
ECbmModuleId
::
kTrd
,
ECbmDataType
::
kTrdDigi
,
"kTrd"
),
RawEventBuilderDetector
(
ECbmModuleId
::
kTrd
,
ECbmDataType
::
kTrdDigi
,
"kTrd"
),
RawEventBuilderDetector
(
ECbmModuleId
::
kTrd2d
,
ECbmDataType
::
kTrdDigi
,
"kTrd2D"
),
RawEventBuilderDetector
(
ECbmModuleId
::
kTof
,
ECbmDataType
::
kTofDigi
,
"kTof"
),
RawEventBuilderDetector
(
ECbmModuleId
::
kTof
,
ECbmDataType
::
kTofDigi
,
"kTof"
),
RawEventBuilderDetector
(
ECbmModuleId
::
kRich
,
ECbmDataType
::
kRichDigi
,
"kRich"
),
RawEventBuilderDetector
(
ECbmModuleId
::
kRich
,
ECbmDataType
::
kRichDigi
,
"kRich"
),
RawEventBuilderDetector
(
ECbmModuleId
::
kPsd
,
ECbmDataType
::
kPsdDigi
,
"kPsd"
)};
RawEventBuilderDetector
(
ECbmModuleId
::
kPsd
,
ECbmDataType
::
kPsdDigi
,
"kPsd"
)};
...
@@ -321,6 +332,8 @@ private:
...
@@ -321,6 +332,8 @@ private:
TH2
*
fhNbDigiPerEvtTime
=
nullptr
;
//! histogram with the nb of all digis per event vs seed time of the events
TH2
*
fhNbDigiPerEvtTime
=
nullptr
;
//! histogram with the nb of all digis per event vs seed time of the events
std
::
vector
<
TH2
*>
fvhNbDigiPerEvtTimeDet
=
std
::
vector
<
TH2
*>
fvhNbDigiPerEvtTimeDet
=
{};
//! histograms with the nb of digis in each detector per event vs seed time of the events
{};
//! histograms with the nb of digis in each detector per event vs seed time of the events
std
::
vector
<
TH1
*>
fvhNbDigiPerEvtDet
=
{};
//! histograms with the nb of digis in each detector per event
std
::
vector
<
TH1
*>
fvhTDiff
=
{};
// digi time difference to seed
/// Internal state variables
/// Internal state variables
UInt_t
fuCurEv
=
0
;
//! Event Counter
UInt_t
fuCurEv
=
0
;
//! Event Counter
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment