begintemplate Kom2branch
public soma, dend, ais, axon, all, somatic, basal, excitozone, axonal, abd, cv, somden

proc celldef() {
  topol()
  subsets()
  geom()
  geom_nseg()
}

create soma, dend[8], ais
//, axon

proc topol() { local i


  connect dend[0](0), soma(0)
  connect dend[1](0), dend[0](1)
  connect dend[2](0), soma(1)
  //for i = 2, 3 connect dend[i](0), soma(0.5)
  for i = 3, 4 connect dend[i](0), dend[1](1)
  //for i = 5, 6 connect dend[i](0), dend[2](1)
  connect dend[5](0), dend[2](1)
  connect dend[6](0), dend[2](0.5)
  //for i = 8, 9 connect dend[i](0), dend[2](1)
  //for i = 10, 11 connect dend[i](0), dend[3](1)


  
  ndend=2
  nbranch=4
  prox_diam = 3.0
  dend_diam = 1.5
  taper=1.0
  dend_len = 500.0
  prox_len = 150.0
  soma_diam = 15.0
  soma_len = 25.0
  
  abd_len = 50.0
  abd_diam = 1.0
  ais_len = 50.0
  ais_diam=1.0
  
  axon_len = 0.1
  axon_diam = 0.5
  
  //dend[0].nseg = 5
  connect dend[7](0), dend[0](1)
  connect ais(0), dend[7](1)
  
  //connect axon(0), ais(1)
  basic_shape()
}
proc basic_shape() {
		soma {
	pt3dclear()
	pt3dadd(0,0,0,soma_diam)
	for i = 1, 9 pt3dadd(i*soma_len/10.0,0,0,soma_diam)
	pt3dadd(soma_len,0,0,soma_diam)
				}
		dend[0]{
	pt3dclear() 
	pt3dadd(0,0,0,prox_diam)
	for i = 1, 9 pt3dadd(-i*abd_len/10.0,0,0,prox_diam)
	pt3dadd(-abd_len,0,0,prox_diam)
               }
        dend[1]{
	pt3dclear() 
	pt3dadd(-abd_len,0,0,prox_diam)
	for i = 1, 9 pt3dadd(-abd_len-i*(prox_len-abd_len)/10.0,0,0,prox_diam)
	pt3dadd(-prox_len,0,0,prox_diam)
               }
        dend[3]{
	pt3dclear() 
	pt3dadd(-prox_len,0,0,dend_diam)
	for i = 1, 19 	pt3dadd(-prox_len-i*0.707106781*0.5*dend_len/20.0,-i*0.707106781*0.5*dend_len/20.0,0,dend_diam/taper)
	pt3dadd(-prox_len-0.707106781*0.5*dend_len,-0.707106781*0.5*dend_len,0,dend_diam/taper)
               }
		dend[4]{
	pt3dclear() 
	pt3dadd(-prox_len,0,0,dend_diam)
	for i = 1, 19 pt3dadd(-prox_len-i*0.707106781*(1.2*dend_len)/20.0,i*0.707106781*(1.2*dend_len)/20.0,0,dend_diam/taper) //taper is incorrect if !=1
	pt3dadd(-prox_len-0.707106781*(1.2*dend_len),0.707106781*(1.2*dend_len),0,dend_diam/taper)
               }
        dend[2]{
	pt3dclear() 
	pt3dadd(soma_len,0,0,prox_diam)
	for i = 1, 9 pt3dadd(soma_len+i*(prox_len-abd_len)/10.0,0,0,prox_diam)
	pt3dadd(soma_len+prox_len,0,0,prox_diam)
               }
        dend[5]{
	pt3dclear() 
	pt3dadd(soma_len+prox_len,0,0,dend_diam)
	for i = 1, 19 pt3dadd(soma_len+prox_len+i*0.707106781*1.25*dend_len/20.0,-i*0.707106781*1.25*dend_len/20.0,0,dend_diam)
	pt3dadd(soma_len+prox_len+0.707106781*1.25*dend_len,-0.707106781*1.25*dend_len,0,dend_diam/taper)
               }
		dend[6]{
	pt3dclear() 
	pt3dadd(soma_len+prox_len/2,0,0,dend_diam)
	for i = 1, 19 pt3dadd(soma_len+prox_len/2+i*0.707106781*0.75*dend_len/20.0,i*0.707106781*0.75*dend_len/20.0,0,dend_diam)
	pt3dadd(soma_len+prox_len/2+0.707106781*0.75*dend_len,0.707106781*0.75*dend_len,0,dend_diam/taper)
              }

		dend[7] {
	pt3dclear() 
	pt3dadd(-abd_len,0,0,prox_diam)
	pt3dadd(-abd_len,abd_len,0,ais_diam)	 
    }
        
    ais {
	pt3dclear() 
	pt3dadd(-abd_len,abd_len,0,ais_diam)
	pt3dadd(-abd_len,abd_len+ais_len,0,ais_diam)	 
    }
    
    /*axon {
    	pt3dclear() 
		pt3dadd(-prox_len/2,prox_diam/2+ais_len,0,axon_diam)
		pt3dadd(-prox_len/2,prox_diam/2+ais_len+axon_len,0,axon_diam)	
    }*/
               
}



objref all, somatic, basal, excitozone, abd, axonal, somden

proc subsets() { local i
  objref all, somatic, basal, excitozone, abd, axonal, somden
  all = new SectionList()
  somden = new SectionList()
	soma all.append()
	soma somden.append()
    for i=0, 7 dend[i] all.append()
    for i=0, 7 dend[i] somden.append()
    

  somatic = new SectionList()
    soma somatic.append()
  excitozone = new SectionList()
  
  
  //axonal = new SectionList()
  //axon axonal.append()
  
  
  abd = new SectionList()
  dend[0] abd.append()
  
  ais all.append()  
  ais excitozone.append()
  //axon all.append()
  
  basal = new SectionList()
    for i=0, 7 dend[i] basal.append()
  
}
proc geom() {
}
proc geom_nseg() {
}
access soma

proc init(){

create soma, dend[8]
//, ais
access soma
celldef()

}

endtemplate Kom2branch