コード例 #1
0
ファイル: gQuery.py プロジェクト: tonyantonova/gPhoton
def stimcount(band,t0,t1,margin=[90.01,90.01],aspum=68.754932/1000.,
              eclipse=None):
    """Return stim counts."""
    if not eclipse:
        eclipse = 55000 if isPostCSP(t0) else 30000
    if isPostCSP(t0):
        margin[1]=180.02
    avgstim = CalUtils.avg_stimpos(band,eclipse)
    return ('{baseURL}select count(*) from {baseDB}.{band}PhotonsNULLV '+
            'where time >= {t0} and time < {t1} and ('+
            '((x >= {x10} and x < {x11}) and (y >= {y10} and y < {y11})) or '+
            '((x >= {x20} and x < {x21}) and (y >= {y20} and y < {y21})) or '+
            '((x >= {x30} and x < {x31}) and (y >= {y30} and y < {y31})) or '+
            '((x >= {x40} and x < {x41}) and (y >= {y40} and y < {y41}))'+
            '){formatURL}').format(baseURL=baseURL, baseDB=baseDB, band=band,
                t0=str(long(t0*tscale)), t1=str(long(t1*tscale)),
                x10=(avgstim['x1']-margin[0])/aspum,
                x11=(avgstim['x1']+margin[0])/aspum,
                y10=(avgstim['y1']-margin[1])/aspum,
                y11=(avgstim['y1']+margin[1])/aspum,
                x20=(avgstim['x2']-margin[0])/aspum,
                x21=(avgstim['x2']+margin[0])/aspum,
                y20=(avgstim['y2']-margin[1])/aspum,
                y21=(avgstim['y2']+margin[1])/aspum,
                x30=(avgstim['x3']-margin[0])/aspum,
                x31=(avgstim['x3']+margin[0])/aspum,
                y30=(avgstim['y3']-margin[1])/aspum,
                y31=(avgstim['y3']+margin[1])/aspum,
                x40=(avgstim['x4']-margin[0])/aspum,
                x41=(avgstim['x4']+margin[0])/aspum,
                y40=(avgstim['y4']-margin[1])/aspum,
                y41=(avgstim['y4']+margin[1])/aspum,formatURL=formatURL)
コード例 #2
0
ファイル: CalUtils.py プロジェクト: jvc2688/gPhoton
def stimcount(data,band,t0,t1,margin=90.001):
	"""Given a dict() that contains a list of 'x' and 'y' detector positions
	as well as 't' event times, returns the total number of stim events.
	"""
	pltscl = 68.754932 # arcsec/mm
	aspum = pltscl/1000.0 # arcsec/um
	eclipse = 100. if isPostCSP(t0) else 40000. # HACK: for backwards comp.
	avgstim = avg_stimpos(band,eclipse)
	time = ((np.array(data['t'])>=t0) & (np.array(data['t'])<=t1))
	stim1 = ((np.array(data['x'])>(avgstim['x1']-margin)) &
			 (np.array(data['x'])<(avgstim['x1']+margin)) &
             (np.array(data['y'])>(avgstim['y1']-margin)) &
			 (np.array(data['y'])<(avgstim['y1']+margin)))
	stim2 = ((np.array(data['x'])>(avgstim['x2']-margin)) &
			 (np.array(data['x'])<(avgstim['x2']+margin)) &
             (np.array(data['y'])>(avgstim['y2']-margin)) &
			 (np.array(data['y'])<(avgstim['y2']+margin)))
	stim3 = ((np.array(data['x'])>(avgstim['x3']-margin)) &
			 (np.array(data['x'])<(avgstim['x3']+margin)) &
             (np.array(data['y'])>(avgstim['y3']-margin)) &
			 (np.array(data['y'])<(avgstim['y3']+margin)))
	stim4 = ((np.array(data['x'])>(avgstim['x4']-margin)) &
			 (np.array(data['x'])<(avgstim['x4']+margin)) &
             (np.array(data['y'])>(avgstim['y4']-margin)) &
			 (np.array(data['y'])<(avgstim['y4']+margin)))
	ix = np.where(time & (stim1 | stim2 | stim3 | stim4))
	return len(ix[0])
コード例 #3
0
ファイル: CalUtils.py プロジェクト: jvc2688/gPhoton
def deadtime_method2(data,t0,t1,band,refrate=79.,tstep=1.,
		feeclkratio=0.966,refrange=[.4,2.]):
	"""Given a list of global event times, computes the deadtime through
	direct comparison of the stim rate to the reference rate in bins of
	depth `tstep` seconds, and trimmed of outliers.
	This is close to the deadtime method used by the mission pipeline.
	"""
	eclipse = 100. if isPostCSP(t0) else 40000. # HACK: for backwards comp.
	exptime = t1-t0
	bins = np.linspace(0.,exptime-exptime%tstep,exptime//tstep+1)+t0
	h = np.zeros(len(bins))
	for i,t in enumerate(bins):
		h[i] = stimcount(data,band,t,t+tstep-0.0001,eclipse)/exptime
	(minrate, maxrate) = (refrate*refrange[0],refrate+refrange[1])
	ix = ((h<=maxrate) & (h>=minrate)).nonzero()[0]
	return (1.-((h[ix]/tstep)/feeclkratio)/refrate).mean()