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
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Computing
cbmroot
Commits
7ffbaaf7
Commit
7ffbaaf7
authored
2 years ago
by
Felix Weiglhofer
Browse files
Options
Downloads
Patches
Plain Diff
Refactor algo::DigiData.
parent
54790633
Branches
Branches containing commit
Tags
Tags containing commit
1 merge request
!1367
Refactor algo::DigiData.
Pipeline
#24669
passed
2 years ago
Stage: documentation
Stage: deploy
Changes
3
Pipelines
2
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
algo/CMakeLists.txt
+1
-0
1 addition, 0 deletions
algo/CMakeLists.txt
algo/base/DigiData.cxx
+119
-0
119 additions, 0 deletions
algo/base/DigiData.cxx
algo/base/DigiData.h
+10
-97
10 additions, 97 deletions
algo/base/DigiData.h
with
130 additions
and
97 deletions
algo/CMakeLists.txt
+
1
−
0
View file @
7ffbaaf7
...
...
@@ -13,6 +13,7 @@ set(DEVICE_SRCS
set
(
SRCS
${
DEVICE_SRCS
}
base/ChainContext.cxx
base/DigiData.cxx
base/Options.cxx
base/MainConfig.cxx
base/util/TimingsFormat.cxx
...
...
This diff is collapsed.
Click to expand it.
algo/base/DigiData.cxx
0 → 100644
+
119
−
0
View file @
7ffbaaf7
/* Copyright (C) 2023 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main
SPDX-License-Identifier: GPL-3.0-only
Authors: Felix Weiglhofer [committer] */
#include
"DigiData.h"
using
namespace
cbm
::
algo
;
// Ctor / Dtor defined in .cxx file so we can use forward declarations for digi types in the header
DigiData
::
DigiData
()
{}
DigiData
::~
DigiData
()
{}
DigiData
::
DigiData
(
const
CbmDigiData
&
storable
)
:
fSts
(
ToPODVector
(
storable
.
fSts
.
fDigis
))
,
fMuch
(
ToPODVector
(
storable
.
fMuch
.
fDigis
))
,
fTof
(
ToPODVector
(
storable
.
fTof
.
fDigis
))
,
fBmon
(
ToPODVector
(
storable
.
fT0
.
fDigis
))
,
fTrd
(
ToPODVector
(
storable
.
fTrd
.
fDigis
))
,
fTrd2d
(
ToPODVector
(
storable
.
fTrd2d
.
fDigis
))
,
fRich
(
ToPODVector
(
storable
.
fRich
.
fDigis
))
,
fPsd
(
ToPODVector
(
storable
.
fPsd
.
fDigis
))
,
fFsd
(
ToPODVector
(
storable
.
fFsd
.
fDigis
))
{
}
size_t
DigiData
::
Size
(
ECbmModuleId
system
)
const
{
switch
(
system
)
{
case
ECbmModuleId
::
kSts
:
return
fSts
.
size
();
case
ECbmModuleId
::
kMuch
:
return
fMuch
.
size
();
case
ECbmModuleId
::
kTof
:
return
fTof
.
size
();
case
ECbmModuleId
::
kT0
:
return
fBmon
.
size
();
case
ECbmModuleId
::
kTrd
:
return
fTrd
.
size
();
case
ECbmModuleId
::
kTrd2d
:
return
fTrd2d
.
size
();
case
ECbmModuleId
::
kRich
:
return
fRich
.
size
();
case
ECbmModuleId
::
kPsd
:
return
fPsd
.
size
();
case
ECbmModuleId
::
kFsd
:
return
fFsd
.
size
();
default:
throw
std
::
runtime_error
(
"DigiData: Invalid system Id "
+
::
ToString
(
system
));
}
}
CbmDigiData
DigiData
::
ToStorable
()
const
{
return
CbmDigiData
{
.
fT0
=
{
.
fDigis
=
ToStdVector
(
fBmon
),
},
.
fSts
=
{
.
fDigis
=
ToStdVector
(
fSts
),
},
.
fMuch
=
{
.
fDigis
=
ToStdVector
(
fMuch
),
},
.
fRich
=
{
.
fDigis
=
ToStdVector
(
fRich
),
},
.
fTrd
=
{
.
fDigis
=
ToStdVector
(
fTrd
),
},
.
fTrd2d
=
{
.
fDigis
=
ToStdVector
(
fTrd2d
),
},
.
fTof
=
{
.
fDigis
=
ToStdVector
(
fTof
),
},
.
fPsd
=
{
.
fDigis
=
ToStdVector
(
fPsd
),
},
.
fFsd
=
{
.
fDigis
=
ToStdVector
(
fFsd
),
},
};
}
std
::
vector
<
DigiEvent
>
DigiEvent
::
FromCbmDigiEvents
(
const
std
::
vector
<
CbmDigiEvent
>&
events
)
{
std
::
vector
<
DigiEvent
>
result
;
result
.
reserve
(
events
.
size
());
for
(
const
auto
&
event
:
events
)
{
result
.
emplace_back
(
event
);
}
return
result
;
}
std
::
vector
<
CbmDigiEvent
>
DigiEvent
::
ToCbmDigiEvents
(
const
std
::
vector
<
DigiEvent
>&
events
)
{
std
::
vector
<
CbmDigiEvent
>
result
;
result
.
reserve
(
events
.
size
());
for
(
const
auto
&
event
:
events
)
{
result
.
emplace_back
(
event
.
ToStorable
());
}
return
result
;
}
DigiEvent
::
DigiEvent
(
const
CbmDigiEvent
&
storable
)
:
DigiData
(
storable
.
fData
)
,
fNumber
(
storable
.
fNumber
)
,
fTime
(
storable
.
fTime
)
{
}
CbmDigiEvent
DigiEvent
::
ToStorable
()
const
{
return
CbmDigiEvent
{
.
fData
=
DigiData
::
ToStorable
(),
.
fNumber
=
fNumber
,
.
fTime
=
fTime
,
};
}
This diff is collapsed.
Click to expand it.
algo/base/DigiData.h
+
10
−
97
View file @
7ffbaaf7
...
...
@@ -4,11 +4,9 @@
#ifndef CBM_ALGO_BASE_DIGI_DATA_H
#define CBM_ALGO_BASE_DIGI_DATA_H
#include
"CbmBmonDigi.h"
#include
"CbmDigiData.h"
#include
"CbmDigiEvent.h"
// TODO: we could also use forward declarations here for Digi types and make this header more lightweight
#include
"CbmBmonDigi.h"
#include
"CbmFsdDigi.h"
#include
"CbmMuchDigi.h"
#include
"CbmPsdDigi.h"
...
...
@@ -43,19 +41,10 @@ namespace cbm::algo
PODVector
<
CbmPsdDigi
>
fPsd
;
///< Unpacked PSD digis
PODVector
<
CbmFsdDigi
>
fFsd
;
///< Unpacked FSD digis
DigiData
()
=
default
;
DigiData
();
~
DigiData
();
explicit
DigiData
(
const
CbmDigiData
&
storable
)
:
fSts
(
ToPODVector
(
storable
.
fSts
.
fDigis
))
,
fMuch
(
ToPODVector
(
storable
.
fMuch
.
fDigis
))
,
fTof
(
ToPODVector
(
storable
.
fTof
.
fDigis
))
,
fBmon
(
ToPODVector
(
storable
.
fT0
.
fDigis
))
,
fTrd
(
ToPODVector
(
storable
.
fTrd
.
fDigis
))
,
fTrd2d
(
ToPODVector
(
storable
.
fTrd2d
.
fDigis
))
,
fRich
(
ToPODVector
(
storable
.
fRich
.
fDigis
))
,
fPsd
(
ToPODVector
(
storable
.
fPsd
.
fDigis
))
{
}
explicit
DigiData
(
const
CbmDigiData
&
storable
);
/**
* @brief Get the number of digis for a given subsystem
...
...
@@ -63,61 +52,14 @@ namespace cbm::algo
* @param system Subsystem to get the number of digis for
* @todo Should use fles::Subsystem instead ECbmModuleId
*/
size_t
Size
(
ECbmModuleId
system
)
const
{
switch
(
system
)
{
case
ECbmModuleId
::
kSts
:
return
fSts
.
size
();
case
ECbmModuleId
::
kMuch
:
return
fMuch
.
size
();
case
ECbmModuleId
::
kTof
:
return
fTof
.
size
();
case
ECbmModuleId
::
kT0
:
return
fBmon
.
size
();
case
ECbmModuleId
::
kTrd
:
return
fTrd
.
size
();
case
ECbmModuleId
::
kTrd2d
:
return
fTrd2d
.
size
();
case
ECbmModuleId
::
kRich
:
return
fRich
.
size
();
case
ECbmModuleId
::
kPsd
:
return
fPsd
.
size
();
case
ECbmModuleId
::
kFsd
:
return
fFsd
.
size
();
default:
throw
std
::
runtime_error
(
"DigiData: Invalid system Id "
+
::
ToString
(
system
));
}
}
size_t
Size
(
ECbmModuleId
system
)
const
;
/**
* @brief Convert to CbmDigiData for file storage
*
* @note This is a very expensive operation, as it copies all data.
*/
CbmDigiData
ToStorable
()
const
{
return
CbmDigiData
{
.
fT0
=
{
.
fDigis
=
ToStdVector
(
fBmon
),
},
.
fSts
=
{
.
fDigis
=
ToStdVector
(
fSts
),
},
.
fMuch
=
{
.
fDigis
=
ToStdVector
(
fMuch
),
},
.
fTrd
=
{
.
fDigis
=
ToStdVector
(
fTrd
),
},
.
fTrd2d
=
{
.
fDigis
=
ToStdVector
(
fTrd2d
),
},
.
fTof
=
{
.
fDigis
=
ToStdVector
(
fTof
),
},
.
fPsd
=
{
.
fDigis
=
ToStdVector
(
fPsd
),
},
.
fFsd
=
{},
};
}
CbmDigiData
ToStorable
()
const
;
};
/**
...
...
@@ -130,48 +72,19 @@ namespace cbm::algo
uint64_t
fNumber
;
///< Event identifier
double
fTime
;
///< Event trigger time [ns]
static
std
::
vector
<
DigiEvent
>
FromCbmDigiEvents
(
const
std
::
vector
<
CbmDigiEvent
>&
events
)
{
std
::
vector
<
DigiEvent
>
result
;
result
.
reserve
(
events
.
size
());
for
(
const
auto
&
event
:
events
)
{
result
.
emplace_back
(
event
);
}
return
result
;
}
static
std
::
vector
<
CbmDigiEvent
>
ToCbmDigiEvents
(
const
std
::
vector
<
DigiEvent
>&
events
)
{
std
::
vector
<
CbmDigiEvent
>
result
;
result
.
reserve
(
events
.
size
());
for
(
const
auto
&
event
:
events
)
{
result
.
emplace_back
(
event
.
ToStorable
());
}
return
result
;
}
static
std
::
vector
<
DigiEvent
>
FromCbmDigiEvents
(
const
std
::
vector
<
CbmDigiEvent
>&
events
);
static
std
::
vector
<
CbmDigiEvent
>
ToCbmDigiEvents
(
const
std
::
vector
<
DigiEvent
>&
events
);
DigiEvent
()
=
default
;
explicit
DigiEvent
(
const
CbmDigiEvent
&
storable
)
:
DigiData
(
storable
.
fData
)
,
fNumber
(
storable
.
fNumber
)
,
fTime
(
storable
.
fTime
)
{
}
explicit
DigiEvent
(
const
CbmDigiEvent
&
storable
);
/**
* @brief Convert to CbmDigiEvent for file storage
*
* @note This is a very expensive operation, as it copies all data.
*/
CbmDigiEvent
ToStorable
()
const
{
return
CbmDigiEvent
{
.
fData
=
DigiData
::
ToStorable
(),
.
fNumber
=
fNumber
,
.
fTime
=
fTime
,
};
}
CbmDigiEvent
ToStorable
()
const
;
};
}
// namespace cbm::algo
...
...
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