Home » PANDA » PandaRoot » Tracking » still trouble with Geane
Re: still trouble with Geane [message #8263 is a reply to message #8257] |
Mon, 20 April 2009 16:09 |
Anonymous Poster
|
|
From: 141.39.167*
|
|
Hi Lia,
thanks for your effort. I dont think the SNGL solution will help. I tried it and then the SNGL causes the FPE, if the argument is out of range.
Another way of limiting the size was also tried out by me:
If I make a check before assigning S(J) and limit it in size, e.g.:
IF(S(J).GT.1.E30)S(J)=1.E30
IF(S(J).LT.-1.E30)S(J)=-1.E30
I dont get any errors anymore at this place. But what happens is that the error just moves to another place.
I want to say this: If the value becomes GT.1.E30 the track fit will be useless anyway. So we should abort the propagation in this case.
I want to suggest that you bring the an IERR flag in ertrack to the interface, so that we can abort the fit in the fortran code and than just detect the error in FairGeanePro. This is the only clean solution in my mind.
I produced an example for you to reproduce the error. Here is what needs to be done to run it:
Copy from genfit/benchmark the files benchmark.geo and media_pnd.geo to your geometry directory. The media file contains the vacuum2 material suggested by you some months ago. Then from your work directory, run
genfit/benchmark/runTpcMC.C
which will just do one event. This will only be used for material and B-field description in the actual test.
Then run:
genfit/benchmark/runGeaneTest.C
This should crash with an FPE at event#7. I made my own signal handler in GeaneTestTask.cxx to allow core dumping. So, if you do
ulimit -c unlimited
before, you will get a core file in your workdir. You can debug this with
gdb root.exe core
and then do 'where' to see the place where it happens.
In this example you will get the crash first in erpremc/trsdsc.F in
#6 0xb6e7f230 in asin () from /lib/tls/i686/cmov/libm.so.6
#7 0xb281ca8f in trsdsc_ (pd=0xb2bac2b0, rd=0xb2babbb0, pc=0xbf82e1c4,
rc=0xb2babbb0, h=0xb2bac770, ch=@0xb2a2beb8, ierr=@0xbf82e214,
spu=@0xbf82e200, dj=0xb2bac800, dk=0xb2bac80c) at erpremc/trsdsc.F:76
#8 0xb2812a59 in ertrak_ (x1=0xb7b3228, p1=0xb7b3234, x2=0xb7b319c,
p2=0xb7b31a8, ipa=@0xbf82e384, chopt=@0xb7a75b8, _chopt=2)
at erdecks/ertrak.F:167
#9 0xb28ff5f5 in TGeant3::Ertrak (this=0xb522058, x1=0xb7b3228, p1=0xb7b3234,
x2=0xb7b319c, p2=0xb7b31a8, ipa=5, chopt=0xb7a75b8 "PE")
at TGeant3/TGeant3.cxx:5392
Here the argument of the ASIN call in line 76 is greater than 1. If you limit it by
IF(TN(3).GT.1)TN(3)=1
then you will get to the error which I discussed many times now, around line 139 in the =S(J) business.
Please, if you have any trouble at all in getting the crash in the same event as me (#7), tell me what happens. I am not 100% sure, whether I forgot anything. These things in providing an exact error source to somebody are very difficult.
I will send you my diff of my erpremc/trsdsc.F and trscdc.F files and a comment on the ertrak.F file in aanother message in a minute, on my suggestions on fixing this problem.
Cheers, Christian
|
|
|
Goto Forum:
Current Time: Sat Dec 07 00:06:32 CET 2024
Total time taken to generate the page: 0.00847 seconds
|