/[PAMELA software]/yoda/techmodel/forroutines/tracker/readraw/trkunpack.f
ViewVC logotype

Annotation of /yoda/techmodel/forroutines/tracker/readraw/trkunpack.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6.1 - (hide annotations) (download)
Mon Feb 27 09:25:41 2006 UTC (18 years, 9 months ago) by kusanagi
Branch: MAIN
CVS Tags: yodaPreTermistors2_1/00, YODA6_2/01, YODA6_2/00, YODA6_1/00, YODA6_3/00, yodaPreTermistores2_0/00
Changes since 6.0: +13 -7 lines
Bug fix from Florence group: wrong decoding of a flag of the tracker.
Received by mail 23 February 2006.

1 kusanagi 5.1 *************************************************************************
2     * 20/1/2006 modified by elena vannuccini to code error flag
3     * 10/9/2005 modified by david fedele to read buffer-data
4     * instead raw-data-file
5     * 29/11/2005 modified by david fedele to include crc control
6     *************************************************************************
7 kusanagi 1.1
8 kusanagi 5.1 subroutine trkeventpkt(YODAflag,buffer,length_buffer,curpos
9     $ )
10    
11     include '../common/commontracker.f'
12     include '../common/common_readraw.f'
13     include '../common/level0.f'
14 kusanagi 1.1
15 kusanagi 4.1 * ---------------------------------------------------
16     * the general flag YODAflag contains information
17 kusanagi 5.1 * about the integrity of the DSP packets.
18 kusanagi 4.1 *
19 kusanagi 5.1 * If some packets are missing or the crc check fails,
20     * YODAflag is asserted
21 kusanagi 4.1 * ---------------------------------------------------
22 kusanagi 5.1
23 kusanagi 4.1 integer YODAflag
24    
25 kusanagi 5.1
26     logical ALARMS
27 kusanagi 1.1
28 kusanagi 2.2
29 kusanagi 1.1 integer runerror !readevent error flag
30    
31 kusanagi 5.1 parameter (MAXBUFFLEN=z'172c8')
32     integer*4 length_buffer
33     integer*1 buffer(MAXBUFFLEN)
34     integer curpos !current position in buffer
35     integer startcrc
36     integer stopcrc
37     integer*1 crctemp
38    
39     * -------------------
40     * initializations
41     YODAflag=1 !bad by default
42 kusanagi 1.1 call initlevel0
43 kusanagi 5.1 ALARMS=.false.
44     npkt=0 !#good DSP packets
45     startcrc=0
46     stopcrc=0
47     crctemp=0
48     * -------------------
49    
50     do iview=1,nviews !loop on DSPs
51     call searchtrkheader(runerror,buffer,length_buffer,curpos,
52     $ startcrc)
53 kusanagi 4.1 if(runerror.eq.1.or.runerror.eq.-1) then
54     * --------------------------------------------------
55 kusanagi 5.1 * no DSP packet has been found ==> go to end
56 kusanagi 4.1 * --------------------------------------------------
57     goto 2222 !go to end
58 kusanagi 1.1 endif
59 kusanagi 5.1
60 kusanagi 1.1 if(checkheader.ne.2) then
61 kusanagi 4.1 print*,'>>>> ERROR <<<< (trkeventpkt)'
62     print*,'>>>> CPU packet type ',!pkt_type,
63     $ ' does not match DSP packet type ',checkheader
64 kusanagi 1.1 DAQmode_temp = ishft(iand(header(1),z'03f0'),-4)
65     DSPnumber_temp = iand(header(1),z'000f')
66 kusanagi 4.1 print*,' -----------------------------------'
67     $ ,iview
68     print*,' DSP number-----',int(DSPnumber_temp)
69     print*,' DAQ mode-------',int(DAQmode_temp)
70     print*,' -----------------------------------'
71 kusanagi 1.1 goto 2525 !next view (==> search another DSP header)
72     endif
73    
74 kusanagi 5.1 call unpackdata(runerror,buffer,length_buffer,curpos,
75     $ startcrc,stopcrc,crctemp)
76 kusanagi 4.1 if(runerror.eq.-1.or.runerror.eq.1)then
77 kusanagi 5.1 goto 2222 !go to end
78 kusanagi 4.1 endif
79    
80 kusanagi 5.1 npkt = npkt + 1
81 kusanagi 1.1 call fillview(iview)
82 kusanagi 5.1 *-------- CRC check
83     if(crc(iview).eq.0) then !OK
84     *----------- ALARMS
85     if(
86     $ fl1(iview).ne.0.or.
87     $ fl2(iview).ne.0.or.
88     $ fl3(iview).ne.0.or.
89     $ fl4(iview).ne.0.or.
90     $ fl5(iview).ne.0.or.
91     $ fl6(iview).ne.0.or.
92     $ fc(iview).ne.0.or.
93     $ DATAlength(iview).eq.0.or.
94     $ .false.)ALARMS=.true.
95     endif
96    
97 kusanagi 1.1 2525 continue
98     enddo !end loop on views
99 kusanagi 5.1
100 kusanagi 1.1 2222 continue
101    
102 kusanagi 5.1 if(npkt.eq.nviews)YODAflag=0
103     if(YODAflag.eq.0.and.(ALARMS.eqv..false.))good0=1
104    
105 kusanagi 1.1 return
106     end
107    
108 kusanagi 5.1 * **********************************************************
109     * * *
110     * * *
111     * * *
112     * * *
113     * * *
114     * **********************************************************
115 kusanagi 1.1
116 kusanagi 5.1 subroutine trkcalibpkt(YODAflag,buffer,length_buffer,curpos
117     $ )
118    
119     include '../common/commontracker.f'
120     include '../common/common_readraw.f'
121     include '../common/trk_calib_parameters.f'
122 kusanagi 1.1
123 kusanagi 5.1 * ---------------------------------------------------
124     * the general flag YODAflag contains information
125     * about the integrity of the DSP packets.
126     *
127     * If some packets are missing or the crc check fails,
128     * YODAflag is asserted
129     * ---------------------------------------------------
130 kusanagi 1.1
131 kusanagi 5.1 integer YODAflag
132 kusanagi 2.2
133 kusanagi 5.1 logical ALARMs
134 kusanagi 2.2
135 kusanagi 5.1 integer runerror !readevent error flag
136     parameter (MAXBUFFLEN=z'172c8')
137     integer*4 length_buffer
138     integer*1 buffer(MAXBUFFLEN)
139     integer curpos !current position in buffer
140     integer startcrc
141     integer stopcrc
142     integer*1 crctemp
143    
144     * -------------------
145     * initializations
146     YODAflag = 1 !bad by default
147     call initcalib
148     ALARMS=.false.
149     npkt=0 !#good DSP packets
150     startcrc=0
151     stopcrc=0
152     crctemp=0
153     * -------------------
154 kusanagi 2.2
155 kusanagi 5.1 do iview=1,nplanes !loop on views (DSP pkt)
156 kusanagi 2.2
157 kusanagi 5.1 call searchtrkheader(runerror,buffer,length_buffer,curpos,
158     $ startcrc)
159 kusanagi 2.2
160 kusanagi 5.1 if(runerror.eq.1.or.runerror.eq.-1) then
161 kusanagi 1.1 goto 2222 !end loop on views (DSP pkt)
162     endif
163 kusanagi 5.1
164 kusanagi 1.1 if(checkheader.ne.3) then
165 kusanagi 4.1 print*,'>>>> ERROR <<<< (trkcalibpkt)'
166     print*,'>>>> CPU packet type ',!pkt_type,
167     $ ' does not match DSP type ',checkheader
168 kusanagi 1.1 DAQmode_temp = ishft(iand(header(1),z'03f0'),-4)
169     DSPnumber_temp = iand(header(1),z'000f')
170 kusanagi 4.1 print*,' -----------------------------------'
171     $ ,iview
172     print*,' DSP number-----',int(DSPnumber_temp)
173     print*,' DAQ mode-------',int(DAQmode_temp)
174     print*,' -----------------------------------'
175 kusanagi 1.1 goto 2424 !next view (==> search another DSP header)
176     endif
177    
178 kusanagi 5.1 call unpackcalibration(runerror,buffer,length_buffer,curpos,
179     $ startcrc,stopcrc,crctemp)
180     if(runerror.eq.-1.or.runerror.eq.1)then
181     goto 2222 !end
182 kusanagi 4.1 endif
183 kusanagi 5.1
184 kusanagi 2.2
185 kusanagi 5.1 npkt = npkt + 1
186     call fillview_cal(iview) !
187     *--------CRC check
188     if( crc_hcal(iview).eq.0.and.
189     $ crc_cal(iview,1).eq.0.and.
190     $ crc_cal(iview,2).eq.0.and.
191     $ crc_cal(iview,3).eq.0.and.
192     $ .true.)then
193     *----------- ALARMS
194     if( ncalib_event(iview).ne.0.or.
195     $ cal_flag(iview).ne.0.or.
196     $ .false.)ALARMS=.true.
197     endif
198 kusanagi 1.1
199     2424 continue
200     enddo ! end loop on views (calibration pkt)
201 kusanagi 5.1
202     if(npkt.eq.nplanes)YODAflag=0
203     if(YODAflag.eq.0.and.(ALARMS.eqv..false.))good0=1
204    
205 kusanagi 1.1 2222 continue
206    
207     return
208     end
209    
210 kusanagi 5.1 * **********************************************************
211     * * *
212     * * *
213     * * *
214     * * *
215     * * *
216     * **********************************************************
217 kusanagi 1.1
218 kusanagi 5.1 subroutine searchtrkheader(runerror,buffer,length_buffer,
219     $ curpos,startcrc)
220 kusanagi 1.1 C.............................................................
221     C Search for a valid tracker DSP header (=>one view)
222     C and return the type of header
223     C.............................................................
224    
225 kusanagi 5.1 include '../common/commontracker.f'
226     include '../common/common_readraw.f'
227    
228     parameter (MAXBUFFLEN=z'172c8')
229     integer*4 length_buffer
230     integer*1 buffer(MAXBUFFLEN)
231     integer curpos !current position in buffer
232     integer startcrc
233 kusanagi 1.1
234     integer runerror !readevent error flag
235    
236     c--------------------------------------------------
237     c N.B.13 bit packing is done for each DSP header+datablock,
238     C so each DSP 13 bit
239     c first word starts at the beginnig of a 16 bit word
240     c--------------------------------------------------
241 kusanagi 5.1
242 kusanagi 1.1 9100 continue
243     runerror=0 !error flag initialization
244     checkheader=0
245    
246     c--------------------------------------------------
247     c looks for a DSP header beginning
248     C (a word beginning with 1110)
249     c--------------------------------------------------
250    
251 kusanagi 5.1 call findstart(runerror,buffer,length_buffer,curpos)
252    
253 kusanagi 4.1 if(runerror.eq.1) goto 200 !end
254     if(runerror.eq.-1)goto 200 !end
255 kusanagi 1.1 c--------------------------------------------------
256     c the first word could be a DSP header first word:
257     C reads 13 8-bit words and
258     c writes them in 16 13-bit words to check for all
259     C DSP header features
260     c--------------------------------------------------
261 kusanagi 5.1
262     call hunpacker(header,runerror,buffer,length_buffer,curpos,
263     $ startcrc)
264    
265 kusanagi 4.1 if(runerror.eq.1) goto 200 !end
266     if(runerror.eq.-1)goto 200 !end
267 kusanagi 1.1 c--------------------------------------------------
268     c extracts and controls header:
269     c--------------------------------------------------
270     C last header word must be:
271     c |0001|1100|0000|0000| for acquisition
272     c |0001|1111|1111|1111| for calibration
273     c--------------------------------------------------
274 kusanagi 4.1 if(iand(header(16),z'ffff').eq.z'1c00') then
275     checkheader=2 ! event packet
276     elseif(iand(header(16),z'ffff').eq.z'1fff') then
277 kusanagi 1.1 checkheader=3 ! calibration packet
278     else
279     checkheader=1 ! not a valid DSP header
280     endif
281     c--------------------------------------------------
282     c first header word must be:
283     c |0001|110x|xxxx|xxxx|
284     c--------------------------------------------------
285     if(iand(header(1),z'fe00').ne.z'1c00')
286     $ checkheader=1 !not a valid DSP header
287     c--------------------------------------------------
288     c intermediate header words must be:
289     c |0001|010x|xxxx|xxxx|
290     c--------------------------------------------------
291     do i=2,15
292     if(iand(header(i),z'fc00').ne.z'1400')
293     $ checkheader=1 !not a valid DSP header
294     enddo
295     c--------------------------------------------------
296     c if checkheader = 1
297     c then this is not a DSP header (or some
298     c noise lurks around) so go a word ahead and
299     c try again
300     c--------------------------------------------------
301 kusanagi 5.1 if(checkheader.eq.1) then
302     curpos=curpos-(13*2)+1 !goes back 13 words, then half 16 bit word ahead
303 kusanagi 1.1 goto 9100
304     endif
305 kusanagi 5.1
306 kusanagi 1.1 200 continue
307     end
308    
309 kusanagi 5.1 * **********************************************************
310     * * *
311     * * *
312     * * *
313     * * *
314     * * *
315     * **********************************************************
316 kusanagi 1.1
317 kusanagi 5.1 subroutine unpackcalibration(runerror,buffer,length_buffer,curpos,
318     $ startcrc,stopcrc,crctemp)
319 kusanagi 1.1
320     *.............................................................
321     * decode calibration data
322     * header + data(PED SIG BAD) + trailer
323     *............................................................
324 kusanagi 5.1 include '../common/commontracker.f'
325     include '../common/common_readraw.f'
326 kusanagi 1.1
327 kusanagi 5.1 parameter (MAXBUFFLEN=z'172c8')
328     integer*4 length_buffer
329     integer*1 buffer(MAXBUFFLEN)
330     integer curpos !current position in buffer
331     integer startcrc
332     integer stopcrc
333     integer*1 crctemp
334     integer*1 crc_trail
335    
336 kusanagi 1.1 integer runerror !readevent error flag
337     integer*2 templ(nstrips_ladder)
338     real*4 tempf(nstrips_ladder)
339    
340    
341 kusanagi 5.1
342 kusanagi 1.1 12 format(z4)
343    
344     *-----------------------------------------------------------
345     * HEADER
346     * (N.B. during test 2003 the header of calibration packets
347     * was only partially filled)
348     *
349     * the following is the final calibration header
350     *-----------------------------------------------------------
351     DAQmode_cal = ishft(iand(header(1),z'03f0'),-4)
352     DSPnumber_cal = iand(header(1),z'000f')
353     dataword = ior(ishft(iand(header(2),z'03ff')
354     $ ,10),iand(header(3),z'03ff'))
355     calibrationnumber = iand(header(4),z'03ff')
356     nused_event = iand(header(5),z'03ff')
357     ped_1 = iand(header(6),z'03ff')
358     ped_2 = iand(header(7),z'03ff')
359     ped_3 = iand(header(8),z'03ff')
360     ped_1 = ped_1 * 4
361     ped_2 = ped_2 * 4
362     ped_3 = ped_3 * 4
363     sig_1 = iand(header(9),z'03ff')
364     sig_2 = iand(header(10),z'03ff')
365     sig_3 = iand(header(11),z'03ff')
366     nbad_1 = iand(header(12),z'03ff')
367     nbad_2 = iand(header(13),z'03ff')
368     nbad_3 = iand(header(14),z'03ff')
369     ff = ishft(iand(header(15),z'0300'),-8)
370     checksum_cal = iand(header(15),z'00ff')
371     c-----------------------------------------------------------
372     c the checksum is a 8-bit word calculated as the
373     c XOR of the 16-bit data words,
374     c hence the XOR between the two halfs
375     C----------------------------------------------------------
376 kusanagi 5.1
377     runerror=0
378     c$$$
379     c$$$ print*,'-----------------------------------'
380     c$$$ print*,'unpackcalibration: readtrailer --- ',
381     c$$$* $ trailer,runerror,buffer,length_buffer,curpos,
382     c$$$ $ startcrc,stopcrc,crctemp
383     c$$$ print*,'-----------------------------------'
384     call readtrailer(trailer,runerror,buffer,length_buffer,curpos,
385     $ startcrc,stopcrc,crctemp)
386    
387     crc_trail=iand(trailer(3),z'00ff')
388    
389     c$$$ print *,'@@@@@@@@@@@@@ ',crctemp,crc_trail
390    
391     if (crctemp.eq.crc_trail)then
392     crc_hcalib=0
393     else
394     crc_hcalib=1
395     endif
396    
397 kusanagi 1.1 do il=1,3 !loop on ladders
398 kusanagi 5.1 startcrc=curpos
399     call readped(tempf,runerror,buffer,length_buffer,curpos)
400 kusanagi 1.1 do is=1,nstrips_ladder
401     iss=is+nstrips_ladder*(il-1)
402     DSPped_o(DSPnumber_cal,iss)=tempf(is)
403     enddo
404 kusanagi 5.1
405     call readsig(tempf,runerror,buffer,length_buffer,curpos)
406 kusanagi 1.1 do is=1,nstrips_ladder
407     iss=is+nstrips_ladder*(il-1)
408     DSPsig_o(DSPnumber_cal,iss)=tempf(is)
409     enddo
410 kusanagi 5.1
411     call readbad(templ,runerror,buffer,length_buffer,curpos)
412 kusanagi 1.1 do is=1,nstrips_ladder
413     iss=is+nstrips_ladder*(il-1)
414     DSPbad_o(DSPnumber_cal,iss)=templ(is)
415     enddo
416 kusanagi 5.1
417 kusanagi 1.1 11 format(i1,' ',z4)
418 kusanagi 5.1
419     call readtrailer(trailer,runerror,buffer,length_buffer,curpos,
420     $ startcrc,stopcrc,crctemp)
421 kusanagi 1.1
422 kusanagi 5.1 crc_trail=iand(trailer(3),z'00ff')
423 kusanagi 1.1
424 kusanagi 5.1 if (crctemp.eq.crc_trail)then
425     crc_calib(il)=0
426     else
427     crc_calib(il)=1
428     endif
429    
430 kusanagi 1.1 enddo !end loop on ladders
431    
432     return
433     end
434    
435 kusanagi 5.1 * **********************************************************
436     * * *
437     * * *
438     * * *
439     * * *
440     * * *
441     * **********************************************************
442    
443     subroutine unpackdata(runerror,buffer,length_buffer,curpos,
444     $ startcrc,stopcrc,crctemp)
445 kusanagi 1.1
446     *.............................................................
447     * decode event data
448     * header + data + trailer
449     *............................................................
450    
451 kusanagi 5.1 include '../common/commontracker.f'
452     include '../common/common_readraw.f'
453     include '../common/level0.f'
454    
455     parameter (MAXBUFFLEN=z'172c8')
456     integer*4 length_buffer
457     integer*1 buffer(MAXBUFFLEN)
458     integer curpos !current position in buffer
459     integer startcrc
460     integer stopcrc
461     integer*1 crctemp
462     integer*1 crcdat
463    
464 kusanagi 1.1 integer runerror !readevent error flag
465     integer l_tra
466    
467 kusanagi 5.1 integer bid1_dat,bid2_dat,bid3_dat,bid4_dat,bid5_dat,bid6_dat
468     $ ,bid7_dat,bid_dat_sum
469    
470 kusanagi 4.1
471 kusanagi 1.1 12 format(z4)
472    
473     *-----------------------------------------------------------
474     * HEADER
475     *-----------------------------------------------------------
476    
477     DAQmode_dat = ishft(iand(header(1),z'03f0'),-4)
478     DSPnumber_dat = iand(header(1),z'000f')
479     C ------------------------------------------------------
480 kusanagi 5.1 c words 2 and 3 give the number of transmitted 16-bit
481 kusanagi 1.1 c words ( 13 header words + data )
482     c NB: data are packed from 13-bit to 16-bit words,
483     c so the stream is complited with zeros in order to have
484     c a number of bits multiple of 16
485 kusanagi 4.1 C ------------------------------------------------------
486 kusanagi 1.1 l_tra = ior(ishft(iand(header(2),z'03ff')
487     $ ,10),iand(header(3),z'03ff'))
488     l_tra=l_tra-13
489     C ------------------------------------------------------
490     eventn_dat = ior(ishft(iand(header(4),z'03ff')
491     $ ,10),iand(header(5),z'03ff'))
492     nclust_dat = ishft(iand(header(6),z'0380'),-7)
493     cutc_dat = ishft(iand(header(6),z'0070'),-4)
494     cutcl_dat = iand(header(6),z'000f')
495     addrcluster_dat(1) = iand(header(7),z'03ff')
496     signcluster_dat(1) = iand(header(8),z'03ff')
497     addrcluster_dat(2) = iand(header(9),z'03ff')
498     signcluster_dat(2) = iand(header(10),z'03ff')
499     addrcluster_dat(3) = iand(header(11),z'03ff')
500     signcluster_dat(3) = iand(header(12),z'03ff')
501     fc_dat = ishft(iand(header(13),z'0300'),-8)
502     compressiontime_dat = iand(header(13),z'00ff')
503 kusanagi 6.1 c fl5_dat = ishft(iand(header(14),z'0300'),-8)
504     c fl4_dat = ishft(iand(header(14),z'0300'),-6)
505     c fl3_dat = ishft(iand(header(14),z'0300'),-4)
506     c fl2_dat = ishft(iand(header(14),z'0300'),-2)
507     c fl1_dat = iand(header(14),z'0300')
508     c fl6_dat = ishft(iand(header(15),z'0300'),-8)
509     fl5_dat = iand(ishft(header(14),-8),z'0003')
510     fl4_dat = iand(ishft(header(14),-6),z'0003')
511     fl3_dat = iand(ishft(header(14),-4),z'0003')
512     fl2_dat = iand(ishft(header(14),-2),z'0003')
513     fl1_dat = iand(header(14),z'0003')
514     fl6_dat = iand(ishft(header(15),-8),z'0003')
515 kusanagi 1.1 checksum_dat = iand(header(15),z'00ff')
516 kusanagi 4.1
517 kusanagi 1.1 c-----------------------------------------------------------
518     c the cheacksum is a 8-bit word calculated as the
519     c XOR of the 16-bit data words,
520     c hence the XOR between the two halfs
521     C----------------------------------------------------------
522     runerror=0
523 kusanagi 2.2 nqualcosa=0
524     if(l_tra.eq.0)then
525     goto 18 !empty buffer
526     endif
527 kusanagi 5.1
528     call dunpacker(l_tra,b_tra,runerror,buffer,length_buffer,curpos)
529 kusanagi 4.1 if(runerror.eq.1.or.runerror.eq.-1) then
530     goto 50 !go to end
531     endif
532    
533 kusanagi 1.1 nqualcosa = (real(l_tra))/13*16
534     xx = b_tra(nqualcosa)
535     if (xx.eq.0) nqualcosa=nqualcosa -1
536 kusanagi 2.2
537     18 datalength_dat= nqualcosa
538 kusanagi 1.1 11 format(i1,' ',z4)
539 kusanagi 5.1
540     call readtrailer(trailer,runerror,buffer,length_buffer,curpos,
541     $ startcrc,stopcrc,crctemp)
542 kusanagi 1.1
543     ***************************************************************
544     * TRAILER *
545     ***************************************************************
546    
547     pnum_dat=ishft(iand(trailer(1),z'f000'),-12)
548     cmdnum_dat=ishft(iand(trailer(1),z'0f00'),-8)
549     bid1_dat=ishft(iand(trailer(1),z'00c0'),-6)
550     bid2_dat=ishft(iand(trailer(1),z'0030'),-4)
551     bid3_dat=ishft(iand(trailer(1),z'000c'),-2)
552     bid4_dat=iand(trailer(1),z'0003')
553     bid5_dat=ishft(iand(trailer(2),z'c000'),-14)
554     bid6_dat=ishft(iand(trailer(2),z'3000'),-12)
555     bid7_dat=ishft(iand(trailer(2),z'0c00'),-10)
556     alarm_dat=ishft(iand(trailer(2),z'0300'),-8)
557     aswr_dat=ior(ishft(iand(trailer(2),z'00ff'),8)
558     $ ,ishft(iand(trailer(3),z'ff00'),-8))
559 kusanagi 5.1 crcdat=iand(trailer(3),z'00ff')
560 kusanagi 1.1
561 kusanagi 5.1 c$$$ print*,'######################',crcdat,crctemp
562 kusanagi 1.1
563    
564 kusanagi 5.1 if(crcdat.eq.crctemp)then
565     crc_dat=0
566     else
567     crc_dat=1
568 kusanagi 1.1 endif
569 kusanagi 4.1
570 kusanagi 5.1 bid_dat_sum = (bid1_dat + bid2_dat + bid3_dat + bid4_dat +
571     & bid5_dat + bid6_dat + bid7_dat)
572 kusanagi 1.1
573 kusanagi 5.1 bid_dat = bid_dat_sum/7
574 kusanagi 1.1
575 kusanagi 4.1 50 return
576 kusanagi 1.1 end
577    
578 kusanagi 5.1 * **********************************************************
579     * * *
580     * * *
581     * * *
582     * * *
583     * * *
584     * **********************************************************
585 kusanagi 1.1
586     subroutine initlevel0
587    
588 kusanagi 5.1 include '../common/commontracker.f'
589     include '../common/level0.f'
590    
591     good0=0
592     TOTDATAlength = 0
593 kusanagi 1.1
594     do i=1, nviews
595    
596     DAQmode(i) = 0
597     DSPnumber(i) = 0
598     eventn(i) = 0
599     nclust(i) = 0
600     cutc(i) = 0
601     cutcl(i) = 0
602     addrcluster(i,1) = 0
603     signcluster(i,1) = 0
604     addrcluster(i,2) = 0
605     signcluster(i,2) = 0
606     addrcluster(i,3) = 0
607     signcluster(i,3) = 0
608     fc(i) = 0
609     compressiontime(i) = 0
610     fl5(i) = 0
611     fl4(i) = 0
612     fl3(i) = 0
613     fl2(i) = 0
614     fl1(i) = 0
615     fl6(i) = 0
616     checksum(i) = 0
617     DATAlength(i) = 0
618     pnum(i)= 0
619     cmdnum(i)= 0
620     bid(i) = 1
621     alarm(i)= 0
622     aswr(i) = 0
623 kusanagi 5.1 crc(i)=0
624    
625 kusanagi 1.1 enddo
626    
627    
628     return
629     end
630    
631 kusanagi 5.1 * **********************************************************
632     * * *
633     * * *
634     * * *
635     * * *
636     * * *
637     * **********************************************************
638 kusanagi 1.1
639     subroutine fillview(i)
640     c -----------------------------------------------------
641     c fill variables related to view i
642     c which will be stored in the level0 nt-ple
643     c at the end of loop on views
644     c ----------------------------------------------------
645    
646 kusanagi 5.1 include '../common/commontracker.f'
647     include '../common/level0.f'
648     include '../common/common_readraw.f'
649    
650 kusanagi 1.1
651     DAQmode(i) = DAQmode_dat
652     DSPnumber(i) = DSPnumber_dat
653     eventn(i) = eventn_dat
654     nclust(i) = nclust_dat
655     cutc(i) = cutc_dat
656     cutcl(i) = cutcl_dat
657     addrcluster(i,1) = addrcluster_dat(1)
658     signcluster(i,1) = signcluster_dat(1)
659     addrcluster(i,2) = addrcluster_dat(2)
660     signcluster(i,2) = signcluster_dat(2)
661     addrcluster(i,3) = addrcluster_dat(3)
662     signcluster(i,3) = signcluster_dat(3)
663     fc(i) = fc_dat
664     compressiontime(i) = compressiontime_dat
665     fl5(i) = fl5_dat
666     fl4(i) = fl4_dat
667     fl3(i) = fl3_dat
668     fl2(i) = fl2_dat
669     fl1(i) = fl1_dat
670     fl6(i) = fl6_dat
671     checksum(i) = checksum_dat
672     DATAlength(i) = datalength_dat
673 kusanagi 5.1 crc(i) = crc_dat
674 kusanagi 1.1
675     c -----------------------------------------------------------------------
676     c filling TRAILER variables
677     c ----------------------------------------------------------------------
678    
679     pnum(i)= pnum_dat
680     cmdnum(i)= cmdnum_dat
681     bid(i) = bid_dat
682     alarm(i)= alarm_dat
683     aswr(i) = aswr_dat
684    
685     do idat=1,datalength_dat
686     id = TOTDATAlength + idat
687     datatracker(id) = b_tra(idat)
688     enddo
689     TOTDATAlength = TOTDATAlength + datalength_dat
690 kusanagi 2.2
691 kusanagi 1.1 return
692     end
693    
694 kusanagi 5.1 * **********************************************************
695     * * *
696     * * *
697     * * *
698     * * *
699     * * *
700     * **********************************************************
701    
702     subroutine fillview_cal(i)
703     c -----------------------------------------------------
704     c fill variables related to view i
705     c which will be stored in the calibration nt-ple
706     c at the end of loop on views
707     c ----------------------------------------------------
708    
709     include '../common/commontracker.f'
710     include '../common/trk_calib_parameters.f'
711     include '../common/common_readraw.f'
712    
713     DAQmode(i) = DAQmode_cal
714     DSPnumber(i) = DSPnumber_cal
715     calibnumber(i) = calibrationnumber
716     ncalib_event(i)= nused_event
717     ped_l1(i) = ped_1
718     ped_l2(i) = ped_2
719     ped_l3(i) = ped_3
720     sig_l1(i) = sig_1
721     sig_l2(i) = sig_2
722     sig_l3(i) = sig_3
723     nbad_l1(i) = nbad_1
724     nbad_l2(i) = nbad_2
725     nbad_l3(i) = nbad_3
726     cal_flag(i) = ff
727    
728     do is=1,nstrips_view
729     DSPbad_par(i,is) = DSPbad_o(DSPnumber_cal,is)
730     DSPped_par(i,is) = DSPped_o(DSPnumber_cal,is)
731     DSPsig_par(i,is) = DSPsig_o(DSPnumber_cal,is)
732     enddo
733    
734     crc_hcal(i) = crc_hcalib
735     crc_cal(i,1) = crc_calib(1)
736     crc_cal(i,2) = crc_calib(2)
737     crc_cal(i,3) = crc_calib(3)
738    
739     return
740     end
741    
742     * **********************************************************
743     * * *
744     * * *
745     * * *
746     * * *
747     * * *
748     * **********************************************************
749    
750     subroutine initcalib
751     include '../common/commontracker.f'
752     include '../common/trk_calib_parameters.f'
753    
754     good0=0
755    
756     do i=1,nplanes
757    
758     DAQmode(i) = 0
759     DSPnumber(i) = 0
760     calibnumber(i) = 0
761     ncalib_event(i)= 0
762     ped_l1(i) = 0
763     ped_l2(i) = 0
764     ped_l3(i) = 0
765     sig_l1(i) = 0
766     sig_l2(i) = 0
767     sig_l3(i) = 0
768     nbad_l1(i) = 0
769     nbad_l2(i) = 0
770     nbad_l3(i) = 0
771     cal_flag(i) = 0
772    
773     do is=1,nstrips_view
774     DSPbad_par(i,is) = 0
775     DSPped_par(i,is) = 0
776     DSPsig_par(i,is) = 0
777     enddo
778     crc_hcal(i) = 0
779     crc_cal(i,1) = 0
780     crc_cal(i,2) = 0
781     crc_cal(i,3) = 0
782     enddo
783    
784     return
785 kusanagi 6.1 end

  ViewVC Help
Powered by ViewVC 1.1.23