begintemplate ShowHinton
external fast_flush_list
objref g, syns, sl, cells
proc init() {
	cells = $o1
	ls = cells.object(0).secden[1].L
	nmitral = $2
	ngranule = $3
	syns = $o4
	build()
	draw()
	fast_flush_list.append(g)
}
proc build() {local mx1, mx2
	sl = new SectionList()
	g = new PlotShape(sl)
	g.scale(0, 50)
	cells.object(0).soma mx1 = x3d(0)
	cells.object(nmitral-1).soma mx2 = x3d(0)
	g.size(-ls + mx1, ls + mx2, -1, nmitral)
}
proc draw() {local i, j, k, x, mx, gx  localobj mgr, sr
	for i=0, nmitral-1 {
		cells.object(i).soma x = x3d(0)
		g.beginline(9, 1)
		g.line(x - cells.object(i).secden[1].L, i*200)
		g.line(x + cells.object(i).secden[0].L, i*200)	
		g.flush()
		g.mark(x, i*200, "t", 10, 1, 1)
	}
	for i=0, ngranule-1 {
		cells.object(nmitral+i).soma x = x3d(0)
		g.mark(x, -200, "o", 8, 1, 1)
	}
	for k=0, syns.count-1 {
		mgr = syns.object(k)
		mgr.mitral.soma mx = x3d(0)
		mgr.granule.soma gx = x3d(0)
		j = mgr.mitral_gid
		i = mgr.granule_gid - nmitral
		x = mgr.md.get_loc()
		x *= L
		sr = new SectionRef()
		pop_section()
		mgr.mitral.secden[0] if (sr.is_cas()) {
			x = mx + x 
		}else{
			x = mx - x
		}
		g.beginline(9, 1)
		g.line(gx, -200)
		g.line(x, j*200)
		g.flush()
		g.hinton(&mgr.md2ampanmda.weight[1], x, j*200, 40)
	}
}
endtemplate ShowHinton

objref shin_
proc showhinton() {
	shin_ = new ShowHinton(cells, nmitral, ngranule, mgrs_list)
}