// File for implementing photocurent input into the photoreceptor layer

load_file("create_Cells.hoc")
load_file("Parameters.hoc")

objref PR_Light_stim_upper, PR_Light_stim_lower
objref darkinput_PR_upper[PR_total_upper_cells], darkinput_PR_lower[PR_total_lower_cells]
objref brightinput_PR_upper[PR_total_upper_cells], brightinput_PR_lower[PR_total_lower_cells]


proc create_Input() {

    PR_Light_stim_upper = new Vector(PR_total_upper_cells)
    PR_Light_stim_lower = new Vector(PR_total_lower_cells)

    for i = 0, PR_total_upper_cells - 1 {
        if(PR_upper_cell_type.x[i][0] == 1) {
            PR_upper[i].soma darkinput_PR_upper[i] = new IinjLTDim(0.5)
            darkinput_PR_upper[i].amp = 0
            darkinput_PR_upper[i].ssI = 100
            darkinput_PR_upper[i].del = 0
            darkinput_PR_upper[i].ton = Simul_Time
        
            if(sqrt((PR_upper_positions.x[i][0] - Light_centre_x)^2 + (PR_upper_positions.x[i][1] - Light_centre_y)^2) < Light_radius) {
                PR_Light_stim_upper.x[i] = 1
                PR_upper[i].soma brightinput_PR_upper[i] = new IinjLT(0.5)
                brightinput_PR_upper[i].amp = RodStimAmp
                brightinput_PR_upper[i].ssI = 0
                brightinput_PR_upper[i].del = RodStimDel
                brightinput_PR_upper[i].ton = RodStimTime
                brightinput_PR_upper[i].num = 1
            }
        }
        if(PR_upper_cell_type.x[i][0] == 2) {
            PR_upper[i].soma darkinput_PR_upper[i] = new IinjLT_cone(0.5)
            darkinput_PR_upper[i].amp = 0
            darkinput_PR_upper[i].ssI = 100 - (PR_loss*500)
            darkinput_PR_upper[i].del = 0
            darkinput_PR_upper[i].ton = Simul_Time
        
            if(sqrt((PR_upper_positions.x[i][0] - Light_centre_x)^2 + (PR_upper_positions.x[i][1] - Light_centre_y)^2) < Light_radius) {
                PR_Light_stim_upper.x[i] = 1
                PR_upper[i].soma brightinput_PR_upper[i] = new IinjLT_cone(0.5)
                brightinput_PR_upper[i].amp = ConeStimAmp
                brightinput_PR_upper[i].ssI = 0
                brightinput_PR_upper[i].del = ConeStimDel
                brightinput_PR_upper[i].ton = ConeStimTime
                brightinput_PR_upper[i].num = 1
            }
        }
    }

    for i = 0, PR_total_lower_cells - 1 {
        if(PR_lower_cell_type.x[i][0] == 1) {
            PR_lower[i].soma darkinput_PR_lower[i] = new IinjLTDim(0.5)
            darkinput_PR_lower[i].amp = 0
            darkinput_PR_lower[i].ssI = 100
            darkinput_PR_lower[i].del = 0
            darkinput_PR_lower[i].ton = Simul_Time
            
            if(sqrt((PR_lower_positions.x[i][0] - Light_centre_x)^2 + (PR_lower_positions.x[i][1] - Light_centre_y)^2) < Light_radius) {
                PR_Light_stim_lower.x[i] = 1
                PR_lower[i].soma brightinput_PR_lower[i] = new IinjLT(0.5)
                brightinput_PR_lower[i].amp = RodStimAmp
                brightinput_PR_lower[i].ssI = 0
                brightinput_PR_lower[i].del = RodStimDel
                brightinput_PR_lower[i].ton = RodStimTime
                brightinput_PR_lower[i].num = 1
            }
        }
        if(PR_lower_cell_type.x[i][0] == 2) {
            PR_lower[i].soma darkinput_PR_lower[i] = new IinjLT_cone(0.5)
            darkinput_PR_lower[i].amp = 0
            darkinput_PR_lower[i].ssI = 100 - (PR_loss*500)
            darkinput_PR_lower[i].del = 0
            darkinput_PR_lower[i].ton = Simul_Time
            
            if(sqrt((PR_lower_positions.x[i][0] - Light_centre_x)^2 + (PR_lower_positions.x[i][1] - Light_centre_y)^2) < Light_radius) {
                PR_Light_stim_lower.x[i] = 1
                PR_lower[i].soma brightinput_PR_lower[i] = new IinjLT_cone(0.5)
                brightinput_PR_lower[i].amp = ConeStimAmp
                brightinput_PR_lower[i].ssI = 0
                brightinput_PR_lower[i].del = ConeStimDel
                brightinput_PR_lower[i].ton = ConeStimTime
                brightinput_PR_lower[i].num = 1
            }
        }
    }
}