Is it possible to pass a flag for propagation failure instead of such a failure?

fEnd =

0xb107c60

Position : (-57., -3.2, -22.)

Angles : Lambda = -0.37, Phi = -2.9

q/p = -1.0

fCovMatrix[0] = 0xb107c60 7.6e-05

fCovMatrix[1] = 0xb107c60 2.4e-05

fCovMatrix[2] = 0xb107c60 -3.3e-06

fCovMatrix[3] = 0xb107c60 -0.00013

fCovMatrix[4] = 0xb107c60 0.00042

fCovMatrix[5] = 0xb107c60 2.2e-05

fCovMatrix[6] = 0xb107c60 -1.8e-06

fCovMatrix[7] = 0xb107c60 -5.8e-05

fCovMatrix[8] = 0xb107c60 0.00038

fCovMatrix[9] = 0xb107c60 2.2e-06

fCovMatrix[10] = 0xb107c60 3.9e-05

fCovMatrix[11] = 0xb107c60 -3.1e-05

fCovMatrix[12] = 0xb107c60 0.00076

fCovMatrix[13] = 0xb107c60 -0.00099

fCovMatrix[14] = 0xb107c60 0.0067

exec CbmGeaneTrLheTpcEmc : 1/29

exec1/29

exec1/29

exec1/29

fStart =

0xb107af0

Position : (5.2, -17., -6.6)

Angles : Lambda = -0.36, Phi = -1.2

q/p = -2.2

fCovMatrix[0] = 0xb107af0 0.00027

fCovMatrix[1] = 0xb107af0 3.7e-05

fCovMatrix[2] = 0xb107af0 -4.7e-05

fCovMatrix[3] = 0xb107af0 0.0

fCovMatrix[4] = 0xb107af0 0.0

fCovMatrix[5] = 0xb107af0 1.8e-05

fCovMatrix[6] = 0xb107af0 -8.1e-06

fCovMatrix[7] = 0xb107af0 3.5e-13

fCovMatrix[8] = 0xb107af0 5.4e-14

fCovMatrix[9] = 0xb107af0 2.7e-05

fCovMatrix[10] = 0xb107af0 4.6e-09

fCovMatrix[11] = 0xb107af0 7.0e-10

fCovMatrix[12] = 0xb107af0 1.6e-07

fCovMatrix[13] = 0xb107af0 -1.3e-07

fCovMatrix[14] = 0xb107af0 9.8e-07

Propagate Helix to Volume

*** Error in subr. TRPROP 3 called bysubr. ERPROP

*** Break *** floating point exception

Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".

Attaching to program: /proc/22782/exe, process 22782

[Thread debugging using libthread_db enabled]

[New Thread -1223530816 (LWP 22782)]

0xffffe410 in __kernel_vsyscall ()

error detected on stdin

The program is running. Quit anyway (and detach it)? (y or n) [answered Y; input not from terminal]

Detaching from program: /proc/22782/exe, process 22782

Root >

root [1] .q

Cheers,

Vanni

]]>

this problem is generated in one of the internal routines of GEANE

called TRPROP. I include the comment of this routine:

SUBROUTINE TRPROP(X1,P1,H1,X2,P2,H2,CH,XL,R,MVAR,IFLAG,ITRAN,IERR)

C

C *** ERROR PROPAGATION ALONG A PARTICLE TRAJECTORY IN A MAGNETIC FIELD

C ROUTINE ASSUMES THAT IN THE INTERVAL (X1,X2) THE QUANTITIES 1/P

C AND (HX,HY,HZ) ARE RATHER CONSTANT. DELTA(PHI) MUST NOT BE TOO LARGE

C

C Authors: A. Haas and W. Wittek

C

C *** IFLAG = -1 INITIALIZATION, TRANSFORMATION OF ERROR MATRIX FROM

C EXTERNAL TO SC VARIABLES

C = 0 ERROR PROPAGATION FROM X1 TO X2

C = 1 TRANSFORMATION OF ERROR MATRIX FROM SC TO

C EXTERNAL VARIABLES

C

C ITRAN USED FOR IFLAG = 0 OR 1 ONLY

C = 0 TRANSFORMATION MATRIX IS UPDATED ,BUT ERROR MATRIX IS NOT

C TRANSFORMED

C = 1 TRANSF. MATRIX IS UPDATED AND ERROR MATRIX IS TRANSFORMED

C

C MVAR SPECIFIES TYPE OF EXTERNAL VARIABLES

C = 0 ( 1/P,LAMBDA,PHI,YT, ZT ; SC )

C = 1 ( 1/P, Y', Z', Y, Z ; SPLINE )

C

C *** X1, P1, H1 X,Y,Z COMPONENTS OF POSITION, MOMENTUM AND MAGNETIC INPUT

C FIELD VECTOR/GRADIENT AT STARTING POINT OF INTERVAL

C X2, P2, H2 ...... AT END POINT OF INTERVAL INPUT

C CH CHARGE OF PARTICLE INPUT

C XL PATHLENGTH FROM X1 TO X2 ( NEGATIVE IF OPPOSITE

C TO ACTUAL MOVEMENT OF PARTICLE ) INPUT

C R ERROR MATRIX (TRIANGLE) INPUT/OUTPUT

C B 5 * 5 TRANSFORMATION MATRIX FOR ERRORS IN

C SC VARIABLES OUTPUT

C

C *** IERR = 1 ILLEGAL VALUE OF MVAR OUTPUT

C 2 MOMENTUM IS ZERO

C 3 H*ALFA/P AT X1 AND X2 DIFFER TOO MUCH

C OR DELTA PHI IS TOO LARGE

C 4 PARTICLE MOVES IN Z - DIRECTION

C

This routine as an exit flag called IERR that can have 4 states: in this case

the error TRPROP 3 means that the IERR = 3. In my experience this condition

is due to a stepping problem when you have a too high curvature in the track.

My first suggestion is to try to reduce the steps size: I was usually able

to overcome this error by reducing the steps. This means that you have to

rerun the MC, since the stepping definition is in the medium parameters. As we

discussed with Mohammad this is the only option now. So you can try to define

an AUTONULL medium with small steps and put AUTO=0 in the g3Config.C file

and do the tracking in this way. Some tests and tuning is required, I think, to

find the optimal conditions.

Second idea which we are thinking about is to extract this IERR flag from the

inner fortran routines and to bring it to the C++ interface, so that we can deal

properly with these situations. We are thinking about this just now.

I hope this helps you for the moment. Let me know if you succeed with the manual

stepping.

Ciao,

Andrea]]>