The Ntuple header, containing the essential definitions associated with an Ntuple, are now written to the output file when the first buffer is written. If the job producing the Ntuple does not terminate in a clean way (i.e. the job crashs or you forgot to call HROUT), it is now possible to rebuild the Ntuple header from the information available in the file. Note, however, that the events corresponding to the last Ntuple buffer in memory are lost.
Action: Recover the information associated with a CWN.
' '
should be specified
Example of saving contents of common variables in an Ntuple
COMMON/GCFLAG/IDEBUG,IDEMIN,IDEMAX,ITEST,IDRUN,IDEVT,IEORUN + ,IEOTRI,IEVENT,ISWIT(10),IFINIT(20),NEVENT,NRNDM(2) COMMON/GCTRAK/VECT(7),GETOT,GEKIN,VOUT(7),NMEC,LMEC(MAXMEC) + ,NAMEC(MAXMEC),NSTEP ,MAXNST,DESTEP,DESTEL,SAFETY,SLENG + ,STEP ,SNEXT ,SFIELD,TOFG ,GEKRAT,UPWGHT,IGNEXT,INWVOL + ,ISTOP ,IGAUTO,IEKBIN, ILOSL, IMULL,INGOTO,NLDOWN,NLEVIN + ,NLVSAV,ISTORY COMMON/GCTMED/NUMED,NATMED(5),ISVOL,IFIELD,FIELDM,TMAXFD,DMAXMS + ,DEEMAX,EPSIL,STMIN,CFIELD,PREC,IUPD,ISTPAR,NUMOLD CHARACTER*4 TYPE COMMON/CMCC/TYPE * The code to book and fill the Ntuple would look like this: * * Initialisation phase. * The calls to HROPEN, HBNT and HBNAME may be placed in different * initialisation routines. * In this example example the Ntuple will be stored in directory //MYFILE. * CALL HROPEN(1,'MYFILE','geant.ntup','N',1024,ISTAT) CALL HBNT(10,'Geant Ntuple',' ') * CALL HBNAME(10, 'RUN', IDRUN, 'IDRUN::16,IDEVT::16') CALL HBNAME(10, 'RUN', IEORUN, 'IEORUN::16') CALL HBNAME(10, 'VECT', VECT, 'VECT(6)') CALL HBNAME(10, 'GEKIN', GEKIN, 'GEKIN') CALL HBNAME(10, 'INWVOL', INWVOL, 'INWVOL[1,7],ISTOP[1,7]') CALL HBNAME(10, 'NUMED', NUMED, 'NUMED::10') CALL HBNAME(10, 'NSTEP', NSTEP, 'NSTEP::16') CALL HBNAMC(10, 'TYPE', TYPE, 'TYPE:C') * * To fill the Ntuple, when the common blocks are filled just invoke * routine HFNT which knows the addresses and the number of variables. * DO 10 I = 1, 1000000 ... CALL HFNT(10) 10 CONTINUE * * At the end of the job, proceed as usual * CALL HROUT(10, ICYCLE, ' ') CALL HREND('MYFILE')