function [syn_tab_asc syn_tab_desc axon_tab_asc axon_tab_desc] = generate_axons_and_make_synapses_L(cell_types, rc, dorsal_dendrite, ventral_dendrite)
%
global cell_colours;
global side_shift;
global total_number_of_cells;
%
%%
syn_tab_asc=[];
syn_tab_desc=[];
axon_tab_asc=[];
axon_tab_desc=[];
    %
    asc=0;
    desc=1;
    als=2; % axon on left side
    ars=3; % axon on right side
    %
    tt(1:8000)=0;
%
 for i=1:total_number_of_cells
     cell_type = cell_types(i);
    %
        %do_ascending = true; % false; 
    % if not dIN or mn
     switch cell_type
% %         case 1
% %             [initial_depth,india] = get_initial_axon_pos_L(idhistogram_rb_asc, idcentre_rb_asc); % desc same as asc for these, doesn't matter
% % % ASC %%%%%           
% %             [coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc] = make_axon_L(initial_depth, india, rc(i), RB_params_asc, iahistogram_rb_asc, iacentre_rb_asc, idhistogram_rb_asc, idcentre_rb_asc, lhistog_rb_asc, lhistcentre_rb_asc, iaangles_rb_asc, dorsal_dendrite, ventral_dendrite, true, cell_types, i,rc); % true/is ascending                                    
% %             tt(1:8000)=0;
% %             tt1=[i, asc, cell_types(i), als, length(coord_asc), coord_asc];
% %             tt(1:length(tt1))=tt1;
% %             axon_tab_asc=[axon_tab_asc; tt];
% %             syn_tab_asc= [syn_tab_asc;[i*ones(1,length(synapse_indices_asc))' cell_types(i)*ones(1,length(synapse_indices_asc))' synapse_indices_asc' cell_types(synapse_indices_asc)' synapse_xs_asc' synapse_depths_asc']];  
% % % DESC %%%%%            
% %             [coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = make_axon_L(initial_depth, india, rc(i), RB_params_desc, iahistogram_rb_desc, iacentre_rb_desc, idhistogram_rb_desc, idcentre_rb_desc, lhistog_rb_desc, lhistcentre_rb_desc, iaangles_rb_desc, dorsal_dendrite, ventral_dendrite, false, cell_types, i,rc);
% %             tt(1:8000)=0;
% %             tt1=[i, desc, cell_types(i), als, length(coord_desc), coord_desc];
% %             tt(1:length(tt1))=tt1;
% %             axon_tab_desc=[axon_tab_desc; tt];
% %             syn_tab_desc= [syn_tab_desc;[i*ones(1,length(synapse_indices_desc))' cell_types(i)*ones(1,length(synapse_indices_desc))' synapse_indices_desc' cell_types(synapse_indices_desc)' synapse_xs_desc' synapse_depths_desc']];
            case 1
            [coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc, coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = Prototype_make_axon_rb_L(rc(i), dorsal_dendrite, ventral_dendrite, cell_types, i,rc); % true/is ascending   
            tt(1:8000)=0;
            tt1=[(i), asc, cell_types(i), als, length(coord_asc), coord_asc];
            tt(1:length(tt1))=tt1;
            axon_tab_asc=[axon_tab_asc; tt];
            if length(synapse_indices_asc)>0
              syn_tab_asc= [syn_tab_asc;[(i)*ones(1,length(synapse_indices_asc))' cell_types(i)*ones(1,length(synapse_indices_asc))' synapse_indices_asc' cell_types(synapse_indices_asc)' synapse_xs_asc' synapse_depths_asc']];     
            end;
            tt(1:8000)=0;
            tt1=[(i),desc, cell_types(i), als, length(coord_desc), coord_desc];
            tt(1:length(tt1))=tt1;
            axon_tab_desc=[axon_tab_desc; tt];
            if length(synapse_indices_desc)>0
              syn_tab_desc= [syn_tab_desc;[(i)*ones(1,length(synapse_indices_desc))' cell_types(i)*ones(1,length(synapse_indices_desc))' synapse_indices_desc' cell_types(synapse_indices_desc)' synapse_xs_desc' synapse_depths_desc']];
            end;
% % %%%%%%%%%%%%            
% %             %rectangle('Position',[rc(i)-0.1,initial_depth-0.1, 0.2, 0.2],'FaceColor',cell_colours(cell_types(i),1:3),'Curvature',[1,1])
% %         case 2
% %             [initial_depth,india] = get_initial_axon_pos_L(idhistogram_dlc_asc, idcentre_dlc_asc); % desc same as asc for these, doesn't matter
% % % ASC %%%%%%%            
% %             [coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc] = make_axon_L_op(initial_depth, india, rc(i), dlc_params_asc, iahistogram_dlc_asc, iacentre_dlc_asc, idhistogram_dlc_asc, idcentre_dlc_asc, lhistog_dlc_asc, lhistcentre_dlc_asc, iaangles_dlc_asc, dorsal_dendrite, ventral_dendrite, true, cell_types, i,rc); % true/is ascending            
% %             tt(1:8000)=0;
% %             tt1=[i, asc, cell_types(i), ars, length(coord_asc), coord_asc];
% %             tt(1:length(tt1))=tt1;
% %             axon_tab_asc=[axon_tab_asc; tt];
% %             syn_tab_asc= [syn_tab_asc;[(i)*ones(1,length(synapse_indices_asc))' cell_types(i)*ones(1,length(synapse_indices_asc))' (synapse_indices_asc+side_shift)' cell_types(synapse_indices_asc+side_shift)' synapse_xs_asc' synapse_depths_asc']];  
% % % Desc %%%%%%            
% %             [coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = make_axon_L_op(initial_depth, india, rc(i), dlc_params_desc, iahistogram_dlc_desc, iacentre_dlc_desc, idhistogram_dlc_desc, idcentre_dlc_desc, lhistog_dlc_desc, lhistcentre_dlc_desc, iaangles_dlc_desc, dorsal_dendrite, ventral_dendrite, false, cell_types, i,rc);
% %             tt(1:8000)=0;
% %             tt1=[i, desc, cell_types(i), ars, length(coord_desc), coord_desc];
% %             tt(1:length(tt1))=tt1;
% %             axon_tab_desc=[axon_tab_desc; tt];
% %             syn_tab_desc= [syn_tab_desc;[(i*ones(1,length(synapse_indices_desc)))' (cell_types(i)*ones(1,length(synapse_indices_desc)))'  (synapse_indices_desc+side_shift)' cell_types(synapse_indices_desc+side_shift)' synapse_xs_desc' synapse_depths_desc']];
% % %%%%%%%%%%%%            
            case 2
            [coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc, coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = Prototype_make_axon_dlc_L(rc(i), dorsal_dendrite, ventral_dendrite, cell_types, i,rc); % true/is ascending   
            tt(1:8000)=0;
            tt1=[(i), asc, cell_types(i), als, length(coord_asc), coord_asc];
            tt(1:length(tt1))=tt1;
            axon_tab_asc=[axon_tab_asc; tt];
            if length(synapse_indices_asc)>0
              syn_tab_asc= [syn_tab_asc;[(i)*ones(1,length(synapse_indices_asc))' cell_types(i)*ones(1,length(synapse_indices_asc))' (synapse_indices_asc+side_shift)' cell_types(synapse_indices_asc+side_shift)' synapse_xs_asc' synapse_depths_asc']];     
            end;
            tt(1:8000)=0;
            tt1=[(i),desc, cell_types(i), als, length(coord_desc), coord_desc];
            tt(1:length(tt1))=tt1;
            axon_tab_desc=[axon_tab_desc; tt];
            if length(synapse_indices_desc)>0
              syn_tab_desc= [syn_tab_desc;[(i)*ones(1,length(synapse_indices_desc))' cell_types(i)*ones(1,length(synapse_indices_desc))' (synapse_indices_desc+side_shift)' cell_types(synapse_indices_desc+side_shift)' synapse_xs_desc' synapse_depths_desc']];
            end;
% %
% %             %rectangle('Position',[rc(i)-0.1,initial_depth-0.1+100, 0.2, 0.2],'FaceColor',cell_colours(cell_types(i),1:3),'Curvature',[1,1])
% %         case 3
% %             [initial_depth,india] = get_initial_axon_pos_L(idhistogram_ain_asc, idcentre_ain_asc); % desc same as asc for these, doesn't matter
% % % ASC %%%%%%%            
% %             [coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc] = make_axon_L(initial_depth, india, rc(i), aIN_params_asc, iahistogram_ain_asc, iacentre_ain_asc, idhistogram_ain_asc, idcentre_ain_asc, lhistog_ain_asc, lhistcentre_ain_asc, iaangles_ain_asc, dorsal_dendrite, ventral_dendrite, true, cell_types, i,rc); % true/is ascending            
% %             tt(1:8000)=0;
% %             tt1=[i, asc, cell_types(i), als, length(coord_asc), coord_asc];
% %             tt(1:length(tt1))=tt1;
% %             axon_tab_asc=[axon_tab_asc; tt];
% %             syn_tab_asc= [syn_tab_asc;[i*ones(1,length(synapse_indices_asc))' cell_types(i)*ones(1,length(synapse_indices_asc))' synapse_indices_asc' cell_types(synapse_indices_asc)' synapse_xs_asc' synapse_depths_asc']];
% % % DSC %%%%%%            
% %             [coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = make_axon_L(initial_depth, india, rc(i), aIN_params_desc, iahistogram_ain_desc, iacentre_ain_desc, idhistogram_ain_desc, idcentre_ain_desc, lhistog_ain_desc, lhistcentre_ain_desc, iaangles_ain_desc, dorsal_dendrite, ventral_dendrite, false, cell_types, i,rc);
% %             tt(1:8000)=0;
% %             tt1=[i, desc, cell_types(i), als, length(coord_desc), coord_desc];
% %             tt(1:length(tt1))=tt1;
% %             axon_tab_desc=[axon_tab_desc; tt];
% %             syn_tab_desc= [syn_tab_desc;[i*ones(1,length(synapse_indices_desc))' cell_types(i)*ones(1,length(synapse_indices_desc))' synapse_indices_desc' cell_types(synapse_indices_desc)' synapse_xs_desc' synapse_depths_desc']];
            case 3
            [coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc, coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = Prototype_make_axon_aIN_L(rc(i), dorsal_dendrite, ventral_dendrite, cell_types, i,rc); % true/is ascending   
            tt(1:8000)=0;
            tt1=[(i), asc, cell_types(i), als, length(coord_asc), coord_asc];
            tt(1:length(tt1))=tt1;
            axon_tab_asc=[axon_tab_asc; tt];
            if length(synapse_indices_asc)>0
              syn_tab_asc= [syn_tab_asc;[(i)*ones(1,length(synapse_indices_asc))' cell_types(i)*ones(1,length(synapse_indices_asc))' synapse_indices_asc' cell_types(synapse_indices_asc)' synapse_xs_asc' synapse_depths_asc']];     
            end;
            tt(1:8000)=0;
            tt1=[(i),desc, cell_types(i), als, length(coord_desc), coord_desc];
            tt(1:length(tt1))=tt1;
            axon_tab_desc=[axon_tab_desc; tt];
            if length(synapse_indices_desc)>0
              syn_tab_desc= [syn_tab_desc;[(i)*ones(1,length(synapse_indices_desc))' cell_types(i)*ones(1,length(synapse_indices_desc))' synapse_indices_desc' cell_types(synapse_indices_desc)' synapse_xs_desc' synapse_depths_desc']];
            end;
% % %%%%%%%%%%%%            
% %             %rectangle('Position',[rc(i)-0.1,initial_depth-0.1, 0.2, 0.2],'FaceColor',cell_colours(cell_types(i),1:3),'Curvature',[1,1])
% %        case 4
% %             [initial_depth,india] = get_initial_axon_pos_L(idhistogram_cin_asc, idcentre_cin_asc); % desc same as asc for these, doesn't matter
% % % ASC %%%%%%%            
% %             [coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc] = make_axon_L_op(initial_depth, india, rc(i), cIN_params_asc, iahistogram_cin_asc, iacentre_cin_asc, idhistogram_cin_asc, idcentre_cin_asc, lhistog_cin_asc, lhistcentre_cin_asc, iaangles_cin_asc, dorsal_dendrite, ventral_dendrite, true, cell_types, i,rc); % true/is ascending            
% %             tt(1:8000)=0;
% %             tt1=[i, asc, cell_types(i), ars, length(coord_asc), coord_asc];
% %             tt(1:length(tt1))=tt1;
% %             axon_tab_asc=[axon_tab_asc; tt];
% %             syn_tab_asc= [syn_tab_asc;[(i)*ones(1,length(synapse_indices_asc))' cell_types(i)*ones(1,length(synapse_indices_asc))' (synapse_indices_asc+side_shift)' cell_types(synapse_indices_asc+side_shift)' synapse_xs_asc' synapse_depths_asc']];
% % % Desc %%%%%%            
% %             [coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = make_axon_L_op(initial_depth, india, rc(i), cIN_params_desc, iahistogram_cin_desc, iacentre_cin_desc, idhistogram_cin_desc, idcentre_cin_desc, lhistog_cin_desc, lhistcentre_cin_desc, iaangles_cin_desc, dorsal_dendrite, ventral_dendrite, false, cell_types, i,rc);
% %             tt(1:8000)=0;
% %             tt1=[i, desc, cell_types(i), ars, length(coord_desc), coord_desc];
% %             tt(1:length(tt1))=tt1;
% %             axon_tab_desc=[axon_tab_desc; tt];
% %             syn_tab_desc= [syn_tab_desc;[(i)*ones(1,length(synapse_indices_desc))' cell_types(i)*ones(1,length(synapse_indices_desc))' (synapse_indices_desc+side_shift)' cell_types(synapse_indices_desc+side_shift)' synapse_xs_desc' synapse_depths_desc']];
% % %%%%%%%%%%%%            
% %             %rectangle('Position',[rc(i)-0.1,initial_depth-0.1+100, 0.2, 0.2],'FaceColor',cell_colours(cell_types(i),1:3),'Curvature',[1,1])
            case 4
            [coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc, coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = Prototype_make_axon_cIN_L(rc(i), dorsal_dendrite, ventral_dendrite, cell_types, i,rc); % true/is ascending   
            tt(1:8000)=0;
            tt1=[(i), asc, cell_types(i), als, length(coord_asc), coord_asc];
            tt(1:length(tt1))=tt1;
            axon_tab_asc=[axon_tab_asc; tt];
            if length(synapse_indices_asc)>0
              syn_tab_asc= [syn_tab_asc;[(i)*ones(1,length(synapse_indices_asc))' cell_types(i)*ones(1,length(synapse_indices_asc))' (synapse_indices_asc+side_shift)' cell_types(synapse_indices_asc+side_shift)' synapse_xs_asc' synapse_depths_asc']];     
            end;
            tt(1:8000)=0;
            tt1=[(i),desc, cell_types(i), als, length(coord_desc), coord_desc];
            tt(1:length(tt1))=tt1;
            axon_tab_desc=[axon_tab_desc; tt];
            if length(synapse_indices_desc)>0
              syn_tab_desc= [syn_tab_desc;[(i)*ones(1,length(synapse_indices_desc))' cell_types(i)*ones(1,length(synapse_indices_desc))' (synapse_indices_desc+side_shift)' cell_types(synapse_indices_desc+side_shift)' synapse_xs_desc' synapse_depths_desc']];
            end;
%
           case 5
           flag_asc=0;
                if rc(i) <=850
                  work_space=rand;
                  if work_space <0.85
                     flag_asc=1;
                  end;
                else
                   if (rc(i) >850 && rc(i)<=1400)
                      work_space=rand;
                      if work_space <0.6 
                         flag_asc=1;
                      end;
                   end;
                end;
            [coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc, coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = Prototype_make_axon_dIN_L(rc(i), dorsal_dendrite, ventral_dendrite, cell_types, i,rc,flag_asc); % true/is ascending   
            %[coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = make_axon_L(initial_depth, india, rc(i), dIN_params, iahistogram_din, iacentre_din, idhistogram_din, idcentre_din, lhistog_din, lhistcentre_din, iaangles_din, dorsal_dendrite, ventral_dendrite, false, cell_types, i,rc);   
            tt(1:8000)=0;
            tt1=[i,desc, cell_types(i), als, length(coord_desc), coord_desc];
            tt(1:length(tt1))=tt1;
            axon_tab_desc=[axon_tab_desc; tt];
            if length(synapse_indices_desc)>0
              syn_tab_desc= [syn_tab_desc;[i*ones(1,length(synapse_indices_desc))' cell_types(i)*ones(1,length(synapse_indices_desc))' synapse_indices_desc' cell_types(synapse_indices_desc)' synapse_xs_desc' synapse_depths_desc']];
            end;  
                if flag_asc==1
                  tt(1:8000)=0;
                  tt1=[i, asc, cell_types(i), als, length(coord_asc), coord_asc];
                  tt(1:length(tt1))=tt1;
                  axon_tab_asc=[axon_tab_asc; tt];
                  if length(synapse_indices_asc)>0
                     syn_tab_asc= [syn_tab_asc;[i*ones(1,length(synapse_indices_asc))' cell_types(i)*ones(1,length(synapse_indices_asc))' synapse_indices_asc' cell_types(synapse_indices_asc)' synapse_xs_asc' synapse_depths_asc']];     
                  end;
                end; 
 %   end;
            %
% %             case 6
% %             [initial_depth,india] = get_initial_axon_pos_L(idhistogram_mn, idcentre_mn); % desc same as asc for these, doesn't matter            
% %             %synapse_indices_asc = [];
% %             %synapse_xs_asc=[];
% %             %synapse_depths_asc=[];
% % % THERE ARE No ASC SO Desc only
% %             [coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = make_axon_L(initial_depth, india, rc(i), mn_params, iahistogram_mn, iacentre_mn, idhistogram_mn, idcentre_mn, lhistog_mn, lhistcentre_mn, iaangles_mn, dorsal_dendrite, ventral_dendrite, false, cell_types, i,rc);
% %             tt(1:8000)=0;
% %             tt1=[i,desc, cell_types(i), als, length(coord_desc), coord_desc];
% %             tt(1:length(tt1))=tt1;
% %             axon_tab_desc=[axon_tab_desc; tt];
% %             %syn_tab_asc= [syn_tab_asc;[i*ones(1,length(synapse_indices_asc))' cell_types(i)*ones(1,length(synapse_indices_asc))' synapse_indices_asc' cell_types(synapse_indices_asc)' synapse_xs_asc' synapse_depths_asc']];
% %             syn_tab_desc= [syn_tab_desc;[i*ones(1,length(synapse_indices_desc))' cell_types(i)*ones(1,length(synapse_indices_desc))' synapse_indices_desc' cell_types(synapse_indices_desc)' synapse_xs_desc' synapse_depths_desc']];    
% % %%%%%%%%%%%%            
% %             %rectangle('Position',[rc(i)-0.1,initial_depth-0.1, 0.2, 0.2],'FaceColor',cell_colours(cell_types(i),1:3),'Curvature',[1,1])
            case 6
            [coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc, coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = Prototype_make_axon_mn_L(rc(i), dorsal_dendrite, ventral_dendrite, cell_types, i,rc); % true/is ascending   
            tt(1:8000)=0;
            tt1=[(i), asc, cell_types(i), als, length(coord_asc), coord_asc];
            tt(1:length(tt1))=tt1;
            axon_tab_asc=[axon_tab_asc; tt];
            if length(synapse_indices_asc)>0
            end;
            tt(1:8000)=0;
            tt1=[(i),desc, cell_types(i), als, length(coord_desc), coord_desc];
            tt(1:length(tt1))=tt1;
            axon_tab_desc=[axon_tab_desc; tt];
            if length(synapse_indices_desc)>0
              syn_tab_desc= [syn_tab_desc;[(i)*ones(1,length(synapse_indices_desc))' cell_types(i)*ones(1,length(synapse_indices_desc))' synapse_indices_desc' cell_types(synapse_indices_desc)' synapse_xs_desc' synapse_depths_desc']];
            end;
%    end
        case 7
            [coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc, coord_desc, synapse_indices_desc, synapse_depths_desc, synapse_xs_desc] = Prototype_make_axon_dla_L(rc(i), dorsal_dendrite, ventral_dendrite, cell_types, i,rc);
            %[initial_depth,india] = get_initial_axon_pos_L(idhistogram_dla, idcentre_dla); % desc same as asc for these, doesn't matter            
%             synapse_indices_desc = [];
%             synapse_xs_desc=[];
%             synapse_depths_desc=[];
% THERE ARE No Desc SO ASC only
            %[coord_asc, synapse_indices_asc, synapse_depths_asc, synapse_xs_asc] = make_axon_L(initial_depth, india, rc(i), dla_params, iahistogram_dla, iacentre_dla, idhistogram_dla, idcentre_dla, lhistog_dla, lhistcentre_dla, iaangles_dla, dorsal_dendrite, ventral_dendrite, true, cell_types, i,rc); % true/is ascending            
            tt(1:8000)=0;
            tt1=[i, asc, cell_types(i), als, length(coord_asc), coord_asc];
            tt(1:length(tt1))=tt1;
            axon_tab_asc=[axon_tab_asc; tt];
            if length(synapse_indices_asc)>0
              syn_tab_asc= [syn_tab_asc;[i*ones(1,length(synapse_indices_asc))' cell_types(i)*ones(1,length(synapse_indices_asc))' synapse_indices_asc' cell_types(synapse_indices_asc)' synapse_xs_asc' synapse_depths_asc']];
            end;
            tt(1:8000)=0;
            tt1=[(i),desc, cell_types(i), als, length(coord_desc), coord_desc];
            tt(1:length(tt1))=tt1;
            axon_tab_desc=[axon_tab_desc; tt];
            if length(synapse_indices_desc)>0
              syn_tab_desc= [syn_tab_desc;[(i)*ones(1,length(synapse_indices_desc))' cell_types(i)*ones(1,length(synapse_indices_desc))' synapse_indices_desc' cell_types(synapse_indices_desc)' synapse_xs_desc' synapse_depths_desc']];
            end;
            %%%%%%%%%%%%            
            %rectangle('Position',[rc(i)-0.1,initial_depth-0.1, 0.2, 0.2],'FaceColor',cell_colours(cell_types(i),1:3),'Curvature',[1,1])
         %otherwise
     end
     %
end     

%end
%% Truncate axon tables (delete zeros)
 % if cell_types ~= 6 
% 
   axon_asc_L_nmax=max(axon_tab_asc(:,5))+5;
   axon_tab_asc=axon_tab_asc(:,1:axon_asc_L_nmax);
%  end
%
   axon_desc_L_nmax=max(axon_tab_desc(:,5))+5;
   axon_tab_desc=axon_tab_desc(:,1:axon_desc_L_nmax);
%
%
end