*-- Author : S.Burke
INTEGER FUNCTION FFCHG(IPDG)
*-----------------------------------------Updates 03/03/93-------
**: FFCHG .......SB. Protect against odd codes.
*-----------------------------------------Updates----------------
**********************************************************************
* *
* Work out the particle charge from the PDG code *
* *
**********************************************************************
DIMENSION IQUARK(6),ILEPT(27)
SAVE IQUARK,ILEPT
DATA IQUARK/-1,2,-1,2,-1,2/
DATA ILEPT/-1,0,-1,0,-1,8*0,1,12*0,1/
**********************************************************************
* Zero will get this particle ignored
FFCHG = 0
IAPDG = IABS(IPDG)
IF (IAPDG.LE.10) RETURN
IF (IAPDG.LT.38) THEN
FFCHG = ILEPT(IAPDG-10)
IF (IPDG.LT.0) FFCHG = -FFCHG
RETURN
ENDIF
* Special codes
IF (IAPDG.GT.490 .AND. IAPDG.LT.497) THEN
IF (IAPDG.EQ.491 .OR. IAPDG.EQ.492) THEN
* Deuteron/triton
FFCHG = 1
ELSEIF (IAPDG.EQ.493) THEN
* Alpha
FFCHG = 2
ENDIF
* else geantino/showino
IF (IPDG.LT.0) FFCHG = -FFCHG
RETURN
ENDIF
IQ1 = IAPDG/10 - (IAPDG/100)*10
IQ2 = IAPDG/100 - (IAPDG/1000)*10
IQ3 = IAPDG/1000 - (IAPDG/10000)*10
IF (IQ1.GT.6 .OR. IQ2.GT.6 .OR. IQ3.GT.6) RETURN
IF (IQ3.GT.0) THEN
FFCHG = (IQUARK(IQ1) + IQUARK(IQ2) + IQUARK(IQ3))/3
ELSEIF (IQ2.EQ.(IQ2/2)*2) THEN
FFCHG = (IQUARK(IQ2) - IQUARK(IQ1))/3
ELSE
FFCHG = (IQUARK(IQ1) - IQUARK(IQ2))/3
ENDIF
IF (IPDG.LT.0) FFCHG = -FFCHG
RETURN
END
*