// Parameters for Experiment, to be loaded first

    strdef iClampFileName, loadProg
    objref vC, sh, st

    load_file("stdgui.hoc")
    {load_proc("nrnmainmenu") nrnmainmenu()}
    load_file("twoclamp.hoc")


    strdef ExperimentName, CellName, CellFileName, CurrentFileName

    objref stimSec,VProtocol,VProtocolTVector

ExperimentName = "cylinder"
sprint(CurrentFileName,"ClampCurrents/%s.iCl",ExperimentName)
CellName  = "cylinder" // to be included later

print "reading experimental Parameters from File",ExperimentName,".exp.par"


// ++++ CELL PARAMETERS ++++
// Cell-Morphology, Passive and active Parameters

// the following is inserted later
ra        = 250
global_ra = ra
rm        = 20000
c_m       = 0.75
v_init    = -110
celsius   = 22
Ek        = -80
Eca       = 60
Epas      = -65

gKslow    = 0
gKfast    = 50
gKv       = 0
gKm	  = 0
gKap	  = 0

ReduceCell = 0


    sprint(CellFileName,"cells/%s.cell",CellName)
    {xopen(CellFileName)}  // Load Cell


// defining VClamp-location:
somaA stimSec = new SectionRef()
stimPosI=0.5
stimPosV=0.5


// CELL - manipulations:

// reducing cell model:

    if (ReduceCell) {
      xopen("ReduceModel.cell")
      ReduceModel()
    }
// inserting PASSIVE & ACTIVE properties:

forall {
  // passive:
  insert pas
  Ra = ra
  cm = c_m
  g_pas = 1/rm
  e_pas = Epas
  // active:
  if (gKslow!=0) {
    insert kslow
    gbar_kslow = gKslow   // explicitely set above
  }
  if (gKfast!=0) {
    insert kfast
    gbar_kfast = gKfast
  }
  if (gKv!=0) {
    insert kv
    gbar_kv = gKv
  }
  if (gKm!=0) {
    insert km
    gbar_km = gKm
  }
  if (gKap!=0) {
    insert kap
    gkabar_kap = gKap
  }
  ek=Ek
}



//++++ VCLAMP- PARAMETERS:


// setting duration and amplitude of clamp-protocol:

VClampSeriesR = 1e-5 // setting it to something like ideal to accopunt for TEVC



VProtocolNumSteps = 4               // including final (fit-) step

    double DTSteps[VProtocolNumSteps]

    double VProtocolTstart[VProtocolNumSteps]

    VProtocol = new Vector(VProtocolNumSteps)

    VProtocolTVector = new Vector(VProtocolNumSteps)

VProtocol.x[0]      = -110
DTSteps[0]          = 100
VProtocolTstart[0]  = 0

VProtocol.x[1]      = -110
DTSteps[1]          = 10
VProtocolTstart[1]  = 8000  // start times!

VProtocol.x[2]      = -110
DTSteps[2]          = 0.1
VProtocolTstart[2]  = 8400

VProtocol.x[3]      = -80
DTSteps[3]          = 0.025
VProtocolTstart[3]  = 8410  // i.e. beginning of measurements



MeasTStart = VProtocolTstart[VProtocolNumSteps-1]  // beginning of measurements

for VProtCount=1,VProtocolNumSteps-1 {     // make sure that voltage will be //    =VProtocol[x] for TStart[x] <= t < TStart[x+1]
  VProtocolTVector.x[VProtCount]=VProtocolTstart[VProtCount]-DTSteps[VProtCount]
}

Experimental_dt = 0.025             // basic integration time step




// Voltage - Steps:

NumVSteps = 16
VStep = 10    // height of VStep
FirstVStep = 2      // VStep to start Fit Routine at
LastVStep = NumVSteps-1
VStepDirection = 1   // for toggling backward/forward calculation
Vmin = -80

    double vclmp[NumVSteps]  //Voltages starting at COUNT=0!!

for VStepCount=0,NumVSteps-1 {//array starts at 0
  vclmp[VStepCount] =Vmin+VStepCount*VStep}  // Initializing VClamp- Array



// ++++ TIMES ++++


Experimental_dt = 0.025 // basic integration time step


// Time - Steps:
// timescale in experimental data:

MaxMeasTime = 50  // unit is ms!!
ExpTRes = 10      // steps per ms
NumTSteps = ExpTRes*MaxMeasTime   // i.e. number of timepoints at which 
// experiment is supposed to be done

    double MeasTimes[NumTSteps+1]  // including time ZERO

// Initialize ExpMeasTimepoint-Array (must match timescale in *.iCl:
for TStepCount=0, NumTSteps  MeasTimes[TStepCount]=TStepCount* 1/ExpTRes //times in [ms]!!




// ++++ CURRENTS AND CONDUCTANCES ++++

// IClamp-Array for exp. data:
    double iclmp[NumVSteps][NumTSteps+1]

// corresponding Ileak-Array:
    double leak[NumVSteps][NumTSteps+1]

// Clamp Voltage array
    double  VClmp[NumVSteps][NumTSteps+1]
    
DebugOn = 0