@@ -2255,14 +2255,14 @@ static Function PSX_UpdateAverageTraces(string win, WAVE/T eventIndexFromTraces,
2255
2255
2256
2256
variable i , idx, numEvents, eventState, start, stop
2257
2257
variable acceptIndex, rejectIndex, undetIndex, extractStartAbs, extractStopAbs, fitStartAbs
2258
- string extAllGraph, name
2258
+ string extAllGraph, name, path
2259
2259
2260
2260
extAllGraph = PSX_GetAllEventGraph ( win)
2261
2261
2262
2262
numEvents = DimSize ( eventIndexFromTraces, ROWS)
2263
2263
2264
2264
Make / WAVE /FREE/ N= ( numEvents) contAverageAll, contAverageAccept, contAverageReject, contAverageUndet
2265
- Make / FREE/ D/ N= ( numEvents) eventStopTime , eventPeakTime
2265
+ Make / FREE/ D/ N= ( numEvents) eventOnsetTime , eventPeakTime, eventStopTime , eventKernelAmp
2266
2266
2267
2267
for ( i = 0; i < numEvents; i += 1 )
2268
2268
idx = str2num ( eventIndexFromTraces[ i ])
@@ -2285,8 +2285,12 @@ static Function PSX_UpdateAverageTraces(string win, WAVE/T eventIndexFromTraces,
2285
2285
// single event waves are zeroed in x-direction to extractStartAbs
2286
2286
[ extractStartAbs, extractStopAbs] = PSX_GetSingleEventRange ( psxEvent, sweepDataOffFilt, idx)
2287
2287
eventStopTime[ acceptIndex] = extractStopAbs - extractStartAbs
2288
+ eventOnsetTime[ acceptIndex] = psxEvent[ idx][ %$ "Onset Time" ] - extractStartAbs
2288
2289
eventPeakTime[ acceptIndex] = psxEvent[ idx][ % peak_t] - extractStartAbs
2289
2290
2291
+ path = SF_META_USER_GROUP + PSX_JWN_PARAMETERS + "/" + SF_OP_PSX_KERNEL
2292
+ eventKernelAmp[ acceptIndex] = JWN_GetNumberFromWaveNote ( psxEvent, path + "/amp" )
2293
+
2290
2294
acceptIndex += 1
2291
2295
break
2292
2296
case PSX_REJECT:
@@ -2311,8 +2315,8 @@ static Function PSX_UpdateAverageTraces(string win, WAVE/T eventIndexFromTraces,
2311
2315
PSX_UpdateAverageWave ( contAverageUndet, undetIndex, averageDFR, PSX_UNDET)
2312
2316
PSX_UpdateAverageWave ( contAverageAll, numEvents, averageDFR, PSX_ALL)
2313
2317
2314
- Redimension / N= ( acceptIndex) eventStopTime
2315
- PSX_FitAcceptAverage ( win, averageDFR, eventPeakTime, eventStopTime)
2318
+ Redimension / N= ( acceptIndex) eventOnsetTime , eventPeakTime , eventStopTime, eventKernelAmp
2319
+ PSX_FitAcceptAverage ( win, averageDFR, eventOnsetTime , eventPeakTime, eventStopTime, eventKernelAmp )
2316
2320
End
2317
2321
2318
2322
/// @brief Helper function to update the average waves for the all event graph
@@ -2336,10 +2340,11 @@ static Function/DF PSX_GetAverageFolder(string win)
2336
2340
endif
2337
2341
End
2338
2342
2339
- static Function PSX_FitAcceptAverage ( string win, DFREF averageDFR, WAVE eventPeakTime, WAVE eventStopTime)
2343
+ static Function PSX_FitAcceptAverage ( string win, DFREF averageDFR, WAVE eventOnsetTime, WAVE eventPeakTime, WAVE eventStopTime, WAVE eventKernelAmp )
2340
2344
2341
2345
string specialEventPanel, str, htmlStr, rawCode, browser, msg, fitFunc
2342
- variable err, numAveragePoints, start, stop, meanStopTime, meanPeakTime
2346
+ variable err, numAveragePoints, start, stop, meanStopTime, meanOnsetTime, meanPeakTime, meanKernelAmp
2347
+ variable xStart, xEnd, yStart, yEnd, lowerThreshold, upperThreshold
2343
2348
2344
2349
WAVE acceptedAverageFit = GetPSXAcceptedAverageFitWaveFromDFR ( averageDFR)
2345
2350
@@ -2364,22 +2369,39 @@ static Function PSX_FitAcceptAverage(string win, DFREF averageDFR, WAVE eventPea
2364
2369
FastOp acceptedAverageFit = ( NaN )
2365
2370
CopyScales average, acceptedAverageFit
2366
2371
2372
+ WAVE /Z eventOnsetTimeClean = ZapNaNs ( eventOnsetTime)
2373
+ if ( WaveExists ( eventOnsetTimeClean))
2374
+ meanOnsetTime = mean ( eventOnsetTimeClean)
2375
+ else
2376
+ meanOnsetTime = Inf
2377
+ endif
2378
+
2367
2379
WAVE /Z eventStopTimeClean = ZapNaNs ( eventStopTime)
2368
2380
if ( WaveExists ( eventStopTimeClean))
2369
2381
meanStopTime = mean ( eventStopTimeClean)
2370
2382
else
2371
2383
meanStopTime = Inf
2372
2384
endif
2373
2385
2386
+ WAVE /Z eventKernelAmpClean = ZapNaNs ( eventKernelAmp)
2387
+ ASSERT ( WaveExists ( eventKernelAmpClean) , "Could not find any events with finite kernelAmp" )
2388
+ meanKernelAmp = mean ( eventKernelAmpClean)
2389
+
2374
2390
WAVE /Z eventPeakTimeClean = ZapNaNs ( eventPeakTime)
2375
- if ( WaveExists ( eventPeakTimeClean))
2376
- meanPeakTime = mean ( eventPeakTime)
2377
- else
2378
- ASSERT ( 0, "Could not find any events with finite peak_t" )
2379
- endif
2391
+ ASSERT ( WaveExists ( eventPeakTimeClean) , "Could not find any events with finite peak_t" )
2392
+ meanPeakTime = mean ( eventPeakTime)
2393
+
2394
+ xStart = max ( IndexToScale ( average, 0, ROWS) , meanOnsetTime)
2395
+ xEnd = min ( IndexToScale ( average, DimSize ( average, ROWS) - 1, ROWS) , meanPeakTime)
2396
+ ASSERT ( xStart < xEnd, "xStart must be smaller than xEnd" )
2397
+ yStart = average ( xStart)
2398
+ yEnd = average ( xEnd)
2399
+
2400
+ lowerThreshold = GetSetVariable ( specialEventPanel, "setvar_fit_start_amplitude" ) * PERCENT_TO_ONE
2401
+ upperThreshold = 0.80
2380
2402
2381
- start = 0.1 * meanPeakTime
2382
- stop = min ( IndexToScale ( average, DimSize ( average, ROWS) - 1, ROWS) , meanStopTime)
2403
+ [ start, err ] = PSX_CalculateRiseTime ( average , xStart , xEnd , yStart , yEnd , lowerThreshold , upperThreshold , meanKernelAmp )
2404
+ stop = min ( IndexToScale ( average, DimSize ( average, ROWS) - 1, ROWS) , meanStopTime)
2383
2405
2384
2406
AssertOnAndClearRTError ()
2385
2407
fitFunc = GetPopupMenuString ( specialEventPanel, "popupmenu_accept_fit_function" )
0 commit comments