//======================================
// File Name: 1_Pulse.hoc
// Assemble Pulse Box

//======================================
// Start of the box
hBoxPulse.intercept(1)
{
	//======================================
	// Add the run control panel
	load_file(1, "RunControl.hoc")
	
	//======================================
	// Control panel 
	xpanel("", 0)	// Start the panel("Title", 0: vertical lay out)
	{
		xbutton("Calculate Tau","CalculateTau()")	// Calculate Tau button
		xlabel("After simulation")	// Display "After simulation"
		xbutton("Save Response", "SaveResponse()")	// Save response button
	}
	xpanel() // Close the xpanel

}
hBoxPulse.intercept(0) // End of the box

//======================================
// Calculate Tau
proc CalculateTau() {
	// Display information
	print "\nCalculated Tau"
	print "C = ", soma.cm, " (uF/cm^2)"
	print "R = ", 1/soma.g_pas, " (ohm cm^2)"
	print "Tau = C * R = ", soma.cm / soma.g_pas * 1e-3, " (ms)"
}

//======================================
// Save data to a file(v.dat)
objref t2Vector, v2Vector
t2Vector = new Vector()
v2Vector = new Vector()

proc SaveResponse() {
	index1 = vecT.indwhere(">", 101)	// Get the index of the response (>101 ms)
	index2 = vecV.max_ind(index1, vecV.size()-1)	// Index of max

	t2Vector = vecT.c(index1, index2)		// Create time vector
	v2Vector = vecV.c(index1, index2)		// Create voltage vector
	
	outputFile.wopen("v.dat")					// Open file
	outputFile.printf("%d\n", t2Vector.size())	// Save number of points
	
	// Save each point
	for i=0, t2Vector.size()-1 {
		outputFile.printf("%g %g\n", t2Vector.x(i), v2Vector.x(i))
	}
	
	outputFile.close()	// Close file
	
	print "Save response to v.dat - Done."	// Display Done information
}

