@@ -36,18 +36,19 @@ void CalibdEdxContainer::cloneFromObject(const CalibdEdxContainer& obj, char* ne
3636 mApplyFullGainMap = obj.mApplyFullGainMap ;
3737 mCalibsLoad = obj.mCalibsLoad ;
3838 if (obj.mCalibTrackTopologyPol ) {
39- cloneFromObject (mCalibTrackTopologyPol , obj.mCalibTrackTopologyPol , newFlatBufferPtr, oldFlatBufferPtr );
39+ subobjectCloneFromObject (mCalibTrackTopologyPol , obj.mCalibTrackTopologyPol );
4040 }
4141 if (obj.mCalibTrackTopologySpline ) {
42- cloneFromObject (mCalibTrackTopologySpline , obj.mCalibTrackTopologySpline , newFlatBufferPtr, oldFlatBufferPtr );
42+ subobjectCloneFromObject (mCalibTrackTopologySpline , obj.mCalibTrackTopologySpline );
4343 }
4444}
4545
4646template <class Type >
47- void CalibdEdxContainer::cloneFromObject (Type*& obj, const Type* objOld, char * newFlatBufferPtr, const char * oldFlatBufferPtr )
47+ void CalibdEdxContainer::subobjectCloneFromObject (Type*& obj, const Type* objOld)
4848{
49- obj = FlatObject::relocatePointer (oldFlatBufferPtr, mFlatBufferPtr , objOld);
50- obj->cloneFromObject (*objOld, newFlatBufferPtr);
49+ obj = reinterpret_cast <Type*>(mFlatBufferPtr );
50+ memset ((void *)obj, 0 , sizeof (*obj));
51+ obj->cloneFromObject (*objOld, mFlatBufferPtr + sizeOfCalibdEdxTrackTopologyObj<Type>());
5152}
5253#endif
5354
@@ -157,18 +158,21 @@ void CalibdEdxContainer::loadSplineTopologyCorrectionFromFile(std::string_view f
157158void CalibdEdxContainer::setPolTopologyCorrection (const CalibdEdxTrackTopologyPol& calibTrackTopology)
158159{
159160 setTopologyCorrection (calibTrackTopology, mCalibTrackTopologyPol );
161+ mCalibTrackTopologySpline = nullptr ;
160162}
161163
162164void CalibdEdxContainer::setDefaultPolTopologyCorrection ()
163165{
164166 CalibdEdxTrackTopologyPol calibTrackTopology;
165167 calibTrackTopology.setDefaultPolynomials ();
166168 setTopologyCorrection (calibTrackTopology, mCalibTrackTopologyPol );
169+ mCalibTrackTopologySpline = nullptr ;
167170}
168171
169172void CalibdEdxContainer::setSplineTopologyCorrection (const CalibdEdxTrackTopologySpline& calibTrackTopology)
170173{
171174 setTopologyCorrection (calibTrackTopology, mCalibTrackTopologySpline );
175+ mCalibTrackTopologyPol = nullptr ;
172176}
173177
174178void CalibdEdxContainer::loadZeroSupresssionThresholdFromFile (std::string_view fileName, std::string_view objName, const float minCorrectionFactor, const float maxCorrectionFactor)
0 commit comments