program read_pulse use bmad use nr implicit none integer lun integer nargs, iargc, ios integer ix integer iy integer status/0/ integer datetime_values(8) integer system integer i integer number integer j integer x, sum_x integer channel, year, month, day, hour, minute, second, millisecond,last_word integer sum_save(10000), xsave(10000),k,kmax integer isign/1/ integer event_number integer offset integer ncross integer n,m integer nmuons character*120 line, pulse_file, lat_file_name character*120 string character*3 cmax_loops character*16 date, time, zone character*7000 snumber character*10 word complex data(10000) real two/2.0/ nargs = cesr_iargc() if (nargs >= 1) call cesr_getarg(1, pulse_file) if (nargs == 2) then call cesr_getarg(2, snumber) read(snumber,*)nmuons endif ! print '(a,$)', ' Filename to convert?' ! read(5,'(a)')pulse_file ! print '(a,a,a)', ' pulse_file = ',trim( pulse_file) open(unit=11, file = trim(pulse_file)) i=0 do while(.true.) i=i+1 ix=0 iy=0 sum_x=0 x=0 j=0 k=0 read(11, '(a)', end=99)snumber do while (.true.) ix = ix+1 if(ix > len(snumber))exit if(snumber(ix:ix) == ',' .or. ix == len(snumber))then word=snumber(iy+1:ix-1) read(word,'(i10)')x j=j+1 if(j == 1) event_number = x if(j==2)channel = x if(j==3) year = x if(j == 4)month = x if(j == 5)day = x if(j == 6)hour = x if(j == 7) minute = x if(j == 8) second = x if(j == 9) millisecond = x if(j > 13)sum_x=sum_x+x if(j == 13) last_word = x iy=ix ! print *,j,word if(j == 13) write(12,'(/,a1,a,i4,a,i4,i2,a1,i2,a1,i4,a,i2,a,i2,a,i2,a,i5,a,i1,/)')'#','event =',event_number, ' channel = ', channel, month,'/',day,'/',year, ' hour = ', & hour, ' minute = ', minute, 'second = ',second, ' millisecond = ', millisecond,' last_word = ',last_word if(j > 13)then k=k+1 xsave(k) = x data(k) = cmplx(float(x),0.) sum_save(k) = sum_x kmax = k endif endif end do n = log(float(kmax))/log(two) m = two**n call four1(data(1:m),isign) offset = sum(xsave(1:200),1)/200 ncross =0 do k=6,kmax,5 if((xsave(k)-offset)*(xsave(k-5)-offset) < 0) ncross = ncross +1 end do do k=1,kmax write(12,'(i10,1x,i10,1x,i10,1x,i10,1x,i10,1x,2es12.4,es12.4,1x,i10)')event_number, channel,k,xsave(k),sum_save(k)-k*offset, data(k), sqrt(real(data(k))**2+imag(data(k))**2), ncross ! count zero crossings end do ! print *,snumber ! print *,i,number ! if(i > 0)goto 99 if (ncross > 1000) then print *,' ncross = ', ncross write(*,'(/,a1,a,i4,a,i4,i2,a1,i2,a1,i4,a,i2,a,i2,a,i2,a,i5,a,i1,/)')'#','event =',event_number, ' channel = ', channel, month,'/',day,'/',year, ' hour = ', & hour, ' minute = ', minute, 'second = ',second, ' millisecond = ', millisecond,' last_word = ',last_word endif write(13,'(i10,1x,i10,1x,i10)')event_number, channel, ncross end do 99 continue end