279 | | {{{#!sql |
280 | | WITH Table0 AS |
281 | | ( |
282 | | SELECT |
283 | | %0:columns -- this could be removed if we can join events via the same columns (without CorsikaNumResuse) |
284 | | Weight, |
285 | | Size, |
286 | | NumUsedPixels, |
287 | | NumIslands, |
288 | | Leakage1, |
289 | | MeanX, |
290 | | MeanY, |
291 | | CosDelta, |
292 | | SinDelta, |
293 | | M3Long, |
294 | | SlopeLong, |
295 | | Width/Length AS WdivL, |
296 | | PI()*Width*Length AS Area, |
297 | | cosa*X - sina*Y AS PX, |
298 | | cosa*Y + sina*X AS PY |
299 | | FROM |
300 | | %1:files |
301 | | LEFT JOIN |
302 | | %2:runinfo USING (FileId) |
303 | | LEFT JOIN |
304 | | %3:events USING (FileId) -- This could be replaced by a user uploaded temporary table |
305 | | LEFT JOIN |
306 | | %4:positions USING (FileId, EvtNumber) |
307 | | CROSS JOIN |
308 | | Wobble |
309 | | WHERE |
310 | | NumUsedPixels>5.5 |
311 | | AND |
312 | | NumIslands<3.5 |
313 | | AND |
314 | | Leakage1<0.1 |
315 | | ), |
316 | | |
317 | | Table1 AS |
318 | | ( |
319 | | SELECT |
320 | | %0:columns |
321 | | Weight, |
322 | | Size, CosDelta, SinDelta, M3Long, SlopeLong, Leakage1, WdivL, |
323 | | MeanX - PX/1.02e0 AS DX, |
324 | | MeanY - PY/1.02e0 AS DY |
325 | | FROM |
326 | | Table0 |
327 | | WHERE |
328 | | Area < LOG10(Size)*898e0 - 1535e0 |
329 | | ), |
330 | | |
331 | | Table2 AS |
332 | | ( |
333 | | SELECT |
334 | | %0:columns |
335 | | Weight, |
336 | | Size, CosDelta, SinDelta, DX, DY, M3Long, SlopeLong, Leakage1, WdivL, |
337 | | SQRT(DX*DX + DY*DY) AS Norm |
338 | | FROM |
339 | | Table1 |
340 | | ), |
341 | | |
342 | | Table3 AS |
343 | | ( |
344 | | SELECT |
345 | | %0:columns |
346 | | Weight, |
347 | | Size, M3Long, SlopeLong, Leakage1, WdivL, Norm, |
348 | | LEAST(GREATEST((CosDelta*DY - SinDelta*DX)/Norm, -1), 1) AS LX, |
349 | | SIGN(CosDelta*DX + SinDelta*DY) AS Sign |
350 | | FROM |
351 | | Table2 |
352 | | ), |
353 | | |
354 | | Table5 AS |
355 | | ( |
356 | | SELECT |
357 | | %0:columns |
358 | | Weight, |
359 | | Size, Leakage1, WdivL, LX, |
360 | | Norm *0.0117193246260285378e0 AS Dist, |
361 | | M3Long *Sign*0.0117193246260285378e0 AS M3L, |
362 | | SlopeLong*Sign/0.0117193246260285378e0 AS Slope |
363 | | FROM |
364 | | Table3 |
365 | | ), |
366 | | |
367 | | Table6 AS |
368 | | ( |
369 | | SELECT |
370 | | %0:columns |
371 | | Weight, |
372 | | Size, WdivL, Dist, LX, M3L, Slope, |
373 | | 1.39252e0 + 0.154247e0*Slope + 1.67972e0*(1-1/(1+4.86232e0*Leakage1)) AS Xi |
374 | | FROM |
375 | | Table5 |
376 | | ), |
377 | | |
378 | | Table7 AS |
379 | | ( |
380 | | SELECT |
381 | | %0:columns |
382 | | Weight, |
383 | | Size, Dist, LX, |
384 | | IF (M3L<-0.07 OR (Dist-0.5e0)*7.2e0-Slope<0, -Xi, Xi) * (1-WdivL) AS Disp |
385 | | FROM |
386 | | Table6 |
387 | | ) |
388 | | |
389 | | SELECT |
390 | | %0:columns |
391 | | Weight, |
392 | | (Disp*Disp + Dist*Dist - 2*Disp*Dist*SQRT(1-LX*LX)) AS ThetaSq, |
393 | | %5:estimator AS LogEnergyEst |
394 | | FROM |
395 | | Table7 |
396 | | HAVING |
397 | | ThetaSq<0.024 |
398 | | }}} |
| 279 | [[Include(source:trunk/FACT++/spectrum/analysis.sql)]] |
439 | | {{{#!sql |
440 | | WITH Table0 AS |
441 | | ( |
442 | | SELECT |
443 | | Weight, |
444 | | INTERVAL(Zd, %6:theta) AS `.theta`, |
445 | | INTERVAL(LogEnergyEst, %7:energyest) AS `.energyest`, |
446 | | INTERVAL(log10(Energy), %8:energysim) AS `.energysim`, |
447 | | (%9:spectrum)/pow(Energy, SpectralIndex) AS SpectralWeight, |
448 | | LogEnergyEst - log10(Energy) AS Residual |
449 | | FROM |
450 | | Excess |
451 | | ), |
452 | | Table1 AS |
453 | | ( |
454 | | SELECT |
455 | | `.energyest`, |
456 | | `.energysim`, |
457 | | |
458 | | -- Signal, Background, Excess |
459 | | SUM( IF(Weight>0, ZdWeight*SpectralWeight, 0)) OVER EnergyEst AS `SignalW`, |
460 | | SUM( IF(Weight<0, ZdWeight*SpectralWeight, 0)) OVER EnergyEst AS `BackgroundW`, |
461 | | SUM( IF(Weight>0, POW(ErrZdWeight*SpectralWeight,2), 0)) OVER EnergyEst AS `SignalW2`, |
462 | | SUM( IF(Weight<0, POW(ErrZdWeight*SpectralWeight,2), 0)) OVER EnergyEst AS `BackgroundW2`, |
463 | | COUNT(IF(Weight>0, 1, NULL)) OVER EnergyEst AS `SignalN`, |
464 | | COUNT(IF(Weight<0, 1, NULL)) OVER EnergyEst AS `BackgroundN`, |
465 | | |
466 | | -- Threshold |
467 | | SUM( Weight * ZdWeight*SpectralWeight ) OVER EnergySim AS `ThresholdW`, |
468 | | SUM(POW(Weight * ErrZdWeight*SpectralWeight,2)) OVER EnergySim AS `ThresholdW2`, |
469 | | SUM( Weight ) OVER EnergySim AS `ThresholdN`, |
470 | | |
471 | | -- Estimators |
472 | | SUM(IF(Weight>0, ZdWeight*SpectralWeight, 0)) OVER EnergySim AS SimW, |
473 | | SUM(IF(Weight>0, Residual* ZdWeight*SpectralWeight, 0)) OVER EnergyEst AS EstSum, |
474 | | SUM(IF(Weight>0, Residual* ZdWeight*SpectralWeight, 0)) OVER EnergySim AS SimSum, |
475 | | SUM(IF(Weight>0, POW(Residual,2)*ZdWeight*SpectralWeight, 0)) OVER EnergyEst AS EstSum2, |
476 | | SUM(IF(Weight>0, POW(Residual,2)*ZdWeight*SpectralWeight, 0)) OVER EnergySim AS SimSum2, |
477 | | |
478 | | -- Migration |
479 | | SUM(Weight * ZdWeight*SpectralWeight) OVER Migration AS `MigrationW`, |
480 | | SUM(Weight ) OVER Migration AS `MigrationN` |
481 | | FROM |
482 | | Table0 |
483 | | INNER JOIN |
484 | | ThetaHist USING(`.theta`) |
485 | | WINDOW |
486 | | EnergyEst AS (PARTITION BY `.energyest`), |
487 | | EnergySim AS (PARTITION BY `.energysim`), |
488 | | Migration AS (PARTITION BY `.energysim`,`.energyest`) |
489 | | ) |
490 | | SELECT DISTINCT |
491 | | *, |
492 | | `SignalW` - `BackgroundW`/5 AS `ExcessW`, |
493 | | `SignalN` - `BackgroundN`/5 AS `ExcessN`, |
494 | | ExcErr(`SignalW2`, `BackgroundW2`/5) AS `ErrExcessW`, |
495 | | ExcErr(`SignalN`, `BackgroundN` /5) AS `ErrExcessN`, |
496 | | IF(SignalW=0, 0, EstSum / SignalW) AS BiasEst, |
497 | | IF(SimW =0, 0, SimSum / SimW) AS BiasSim, |
498 | | IF(SignalW=0, 0, SQRT(EstSum2/SignalW - POW(EstSum/SignalW, 2))) AS ResolutionEst, |
499 | | IF(SimW =0, 0, SQRT(SimSum2/SimW - POW(SimSum/SimW, 2))) AS ResolutionSim |
500 | | FROM |
501 | | Table1 |
502 | | }}} |
| 299 | [[Include(source:trunk/FACT++/spectrum/simulation.sql)]] |