PRO HSI_Packet2DetectorEvent, packets, events, $ VERBOSE=verbose, HELP=help ; IF Keyword_Set( VERBOSE ) THEN verbose = 1 ELSE verbose = 0 IF Keyword_Set( HELP ) THEN BEGIN Doc_Menu, 'hsi_packet2detectorevent' RETURN END ;IF N_Tags( {detectorEvent}) EQ 0 THEN BEGIN ; IF verbose THEN Print, 'Defining the HESSI/IDL structures...' ; HSI_Struct_Def ;ENDIF eventLengthByte = 4 nbEventsInPacket = 270 sourceBitOffset = 27 sourceBitLength = 5 energyBitOffset = 14 energyBitLength = 13 timeBitOffset = 4 timeBitLength = 10 liveTimeBitOffset = 0 liveTimeBitLength = 4 list = WHERE( packets.id EQ 100 ) IF Total( list ) NE -1 THEN packets = packets( list ) nPackets = N_Elements( packets ) nbEvents = nPackets*nbEventsInPacket data = $ LONG(REFORM(packets.data, eventLengthByte, nbEvents), $ 0, nbEvents ) IEEE_To_Host, data events = REPLICATE( {detectorEvent}, nbEvents ) events.source = Mask( data, sourceBitOffset, sourceBitLength ) events.energy = Mask( data, energyBitOffset, energyBitLength ) events.time = Mask( data, timeBitOffset, timeBitLength ) events.liveTime = Mask( data, liveTimeBitOffset, liveTimeBitLength ) END ;--------------------------------------------------------------------------- ; End of 'hsi_packet2detectorevent.pro'. ;---------------------------------------------------------------------------