Skip to content

Commit 297aa69

Browse files
committed
Fix of custom streamer code
Fixing the custom streamer code for `CalArray<o2::tpc::PadFlags>` and resolving https://its.cern.ch/jira/browse/O2-6509
1 parent 7b08624 commit 297aa69

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

Detectors/TPC/base/src/TPCFlagsMemberCustomStreamer.cxx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ void MemberVectorPadFlagsStreamer(TBuffer& R__b, void* objp, int n)
3939
}
4040
std::vector<o2::tpc::PadFlags>* obj = static_cast<std::vector<o2::tpc::PadFlags>*>(objp);
4141
if (R__b.IsReading()) {
42+
obj->clear();
4243
std::vector<int> R__stl;
4344
R__stl.clear();
4445
int R__n;
@@ -50,7 +51,8 @@ void MemberVectorPadFlagsStreamer(TBuffer& R__b, void* objp, int n)
5051
R__stl.push_back(readtemp);
5152
}
5253
auto data = reinterpret_cast<unsigned short*>(R__stl.data());
53-
for (int i = 0; i < R__n; ++i) {
54+
constexpr size_t bloatfactor = sizeof(int) / sizeof(o2::tpc::PadFlags);
55+
for (int i = 0; i < bloatfactor * R__n; ++i) {
5456
obj->push_back(static_cast<o2::tpc::PadFlags>(data[i]));
5557
}
5658
} else {
@@ -63,6 +65,8 @@ void MemberVectorPadFlagsStreamer(TBuffer& R__b, void* objp, int n)
6365
}
6466

6567
// register the streamer via static global initialization (on library load)
68+
// the streamer is only correct in combination with new ROOT
69+
#if ROOT_VERSION_CODE >= ROOT_VERSION(6, 33, 00)
6670
namespace ROOT
6771
{
6872
static __attribute__((used)) int _R__dummyStreamer_3 =
@@ -79,3 +83,4 @@ static __attribute__((used)) int _R__dummyStreamer_3 =
7983
return 0;
8084
})();
8185
} // namespace ROOT
86+
#endif

0 commit comments

Comments
 (0)