Adapter from Genfit to Pnd objects checked in [message #8796] |
Thu, 04 June 2009 19:58 |
Anonymous Poster
|
|
From: *pool.einsundeins.de
|
|
Hi,
I checked in the promised code (r5722). There are still two issues to be solved. The first is that I put the files PndAdapters.{cxx,h} which contain the two functions in trackrep. They should not stay there. But it was the only place where the dependencies allowed me to put them. Could a framework expert, please make a suggestion on where to put this.
The other issue is more complicated: In PndTrack I save for the first and last point a FairTrackPar*. I have to use the pointer to be able to also put FairTrackParP (polymorphism). But this means that I can not write a proper copy ctor, because calling FairTrackPar(const FairTrackPar&) is not sufficient, because this will not copy the data in FairTrackParP. There is no solution to this problem unless FairTrackPar becomes purely virtual, and we have a method
virtual FairTrackPar FairTrackPar::clone()=0;
which calls the copy ctor in the derived classes, like
FairTrackPar* FairTrackParP::clone(){return FairTrackParP(*this);}
I have the same problem with the Print method: If we use FairTrackPar* in the PndTrack, a call to FairTrackPar::Print() inside PndTrack::Print() will never reach the implementation in FairTrackParP::Print() like it has to. For this we absolutely need a purely FairTrackPar.
Here is what I propose:
- We make FairTrackPar purely virtual
- We make another derived class like the P/H classes to replace the simple behaviour, which is now in FairTrackPar.
I'm looking forward to your comments.
Oh, and BTW, this 5722 commit contained a lot of changes, I coded since the meeting. So I hopw I didnt skrew up. Please test if all your fitting code still works. I will be out for a long weekend (starting tomorrow noon).
CU, Christian
|
|
|