using FRS   libprespecFRS.so
using UTILS libprespecUTILS.so

import ../Daq/unpack_frs.config

########################################################################
# TPC S21
########################################################################
processor Frs/TpcS21 FRS.StandardTpc
        times[0:7]         <-  FrsTpcCrate.tdc0[16:23]
        
        #for $i in [0:3]
        #	times[$i] <- FrsTpcCrate.tdc0[16]
        #end
        # second delay line has problems, we get better x-position if we take only data from first delay line
        #times[4:5] <- FrsTpcCrate.tdc0[20:21]
        #times[6:7] <- FrsTpcCrate.tdc0[20:21]
        
        amplitudes[0:7]    <-  FrsTpcCrate.adc0[16:23]
        fiber              <-  FrsTpcCrate.tdc1[23]
        display     xc                             in TPCs/TpcS21/xs
        display     yc                             in TPCs/TpcS21/ys
        display     x:y      			   in TPCs/TpcS21
        display     x                              in TPCs/TpcS21
        display     y                              in TPCs/TpcS21
        display     x_fiber:y_fiber                in TPCs/TpcS21
        display     checksums | gate_checksums     in TPCs/TpcS21 
end
########################################################################
# TPC S22
########################################################################
processor Frs/TpcS22 FRS.StandardTpc
        times[0:7]         <-  FrsTpcCrate.tdc0[24:31]
        amplitudes[0:7]    <-  FrsTpcCrate.adc0[24:31]
        fiber              <-  FrsTpcCrate.tdc1[24]
        display     xc                             in TPCs/TpcS22/xs
        display     yc                             in TPCs/TpcS22/ys
        display     x:y     1000,-50,50:300,0,200  in TPCs/TpcS22
        display     y                              in TPCs/TpcS22
        display     x       1000,-100,100          in TPCs/TpcS22
        display     x_fiber:y_fiber                in TPCs/TpcS22 
        display     checksums | gate_checksums     in TPCs/TpcS22 
end
########################################################################
# TPC S41
########################################################################
processor Frs/TpcS41 FRS.StandardTpc
        times[0:7]         <-  FrsTpcCrate.tdc1[0:7]
        amplitudes[0:7]    <-  FrsTpcCrate.adc1[0:7]
        fiber              <-  FrsTpcCrate.tdc1[25]
        display     xc                             in TPCs/TpcS41/xs
        display     yc                             in TPCs/TpcS41/ys
        display     x:y     1000,-50,50:800,-50,50  in TPCs/TpcS41
        display     y                               in TPCs/TpcS41
        display     x       2000,-100,100                        in TPCs/TpcS41
        display     x_fiber:y_fiber                 in TPCs/TpcS41
        display     checksums | gate_checksums      in TPCs/TpcS41
end
########################################################################
# TPC S42
########################################################################
processor Frs/TpcS42 FRS.StandardTpc
        times[0:7]         <-  FrsTpcCrate.tdc1[8:15]
        amplitudes[0:7]    <-  FrsTpcCrate.adc1[8:15]
        fiber              <-  FrsTpcCrate.tdc1[26]
        display     xc                             in TPCs/TpcS42/xs
        display     yc                             in TPCs/TpcS42/ys
        display     x:y     1000,-50,50:800,-50,50  in TPCs/TpcS42
        display     y                               in TPCs/TpcS42
        display     x       2000,-100,100                        in TPCs/TpcS42
        display     x_fiber:y_fiber                 in TPCs/TpcS42
        display     checksums | gate_checksums      in TPCs/TpcS42
end
########################################################################
# Make x:y and fiber_x:fiber_y histograms for all subplanes of all TPCs
########################################################################
for $tpc in TpcS21 TpcS22  TpcS41  TpcS42
	for $i in [0:3]
		processor Frs/$tpc_$i UTILS.DoubleValue
			x <- Frs/$tpc.xc[$i]
			y <- Frs/$tpc.yc[$i]
			display x:y                             in TPCs/$tpc/xys
		end
		processor Frs/$tpc_$i_fiber UTILS.DoubleValue
			x <- Frs/$tpc.x_fiber[$i]
			y <- Frs/$tpc.y_fiber[$i]
			display x:y                             in TPCs/$tpc/fiber_xys
		end
	end
end 


##Zero constant if needed. 
processor Frs/Zero         Constant
end

########################################################################
## Take positions from TPCs and project along the beam line
## The projected positions are in xs[i] and ys[i], where:
## i=0 S2 focal plane         i=6 Lycca ToF target
## i=1 Sc21                   i=7 Lycca target DSSSD
## i=2 Finger detector        i=8 S4 focal point (target position)
## i=3 MUSIC2 exit            i=9 S4 forward shifted target position
## i=4 Sci S4                 i=10 Lycca ToF stop
## i=5 Lycca ToF start        i=11 Lycca wall DSSSD
## Positions can  be viewed and  modified in S2tracking.par
########################################################################
processor Frs/S2tracking	FRS.Tracking
	x1     <-    Frs/TpcS21.x
	y1     <-    Frs/TpcS21.y
	x2     <-    Frs/TpcS22.x
	y2     <-    Frs/TpcS22.y
	display x:y                  in TrackedPositions
	display xs    1000,-60,60    in TrackedPositions

	display z_closest     1000,-5000,5000
	display z_closest_x   1000,-5000,5000
	display z_closest_y   1000,-5000,5000
	display x_scan:z_scan 100,-300,300:100,-5000,5000
	display y_scan:z_scan 100,-300,300:100,-5000,5000
end
processor Frs/S4tracking	FRS.Tracking 
	x1     <-    Frs/TpcS41.x
	y1     <-    Frs/TpcS41.y
	x2     <-    Frs/TpcS42.x
	y2     <-    Frs/TpcS42.y
	display x:y                   in TrackedPositions
	display xs    1000,-60,60     in TrackedPositions

	display z_closest     1000,-5000,15000
	display z_closest_x   1000,-5000,15000
	display z_closest_y   1000,-5000,15000
	display x_scan:z_scan 100,-300,300:100,-5000,15000
	display y_scan:z_scan 100,-300,300:100,-5000,15000
end


########################################################################
# Multi wire detectors
########################################################################
#processor Frs/MultiWire11  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc0[16:19]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
#	display x
#	display y
#end
#processor Frs/MultiWire21  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc0[20:23]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
#	display x
#	display y
#end
#processor Frs/MultiWire22  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc0[24:27]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
#	display x
#	display y
#end
#processor Frs/MultiWire31  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc0[28:31]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
# 	display x
#	display y
#end
#
#processor Frs/MultiWire41  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc1[0:3]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
#	display x
#	display y
#end
#processor Frs/MultiWire42  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc1[4:7]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
#	display x
#	display y
#end
#processor Frs/MultiWire51  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc1[8:11]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
#	display x
#	display y
#end
#processor Frs/MultiWire71  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc1[12:15]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
#	display x
#	display y
#end
#
#processor Frs/MultiWire81  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc1[16:19]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
#	display x
#	display y
#end
#processor Frs/MultiWire82  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc1[20:23]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
#	display x
#	display y
#end
#processor Frs/MultiWireB1  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc1[24:27]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
#	display x
#	display y
#end
#processor Frs/MultiWireB2  FRS.MultiWire
#	times[0:3] <- FrsCrate.tdc1[28:31]
#	display checksum_x | checksum_x_gate
#	display checksum_x | checksum_x_gate
#	display x:y
#	display x
#	display y
#end
