Skip to content

Commit 0ee4f27

Browse files
authored
[Common] TOF: add possibility to compute sigma and nsigma dynamically (#13633)
1 parent e161482 commit 0ee4f27

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

Common/DataModel/PIDResponseTOF.h

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#define COMMON_DATAMODEL_PIDRESPONSETOF_H_
2222

2323
#include "Common/Core/PID/PIDTOF.h"
24+
#include "Common/Core/PID/PIDTOFParamService.h"
2425

2526
#include <Framework/ASoA.h>
2627
#include <Framework/AnalysisDataModel.h>
@@ -331,8 +332,83 @@ DECLARE_SOA_COLUMN(TOFNSigmaTr, tofNSigmaTr, float); //! Nsigma separation with
331332
DECLARE_SOA_COLUMN(TOFNSigmaHe, tofNSigmaHe, float); //! Nsigma separation with the TOF detector for helium3
332333
DECLARE_SOA_COLUMN(TOFNSigmaAl, tofNSigmaAl, float); //! Nsigma separation with the TOF detector for alpha
333334

335+
//! Expected resolution with the TOF detector for electron (computed on the fly)
336+
#define PERSPECIES_TOF_SIGMA_COLUMN(name, id) \
337+
DECLARE_SOA_DYNAMIC_COLUMN(TOFExpSigma##name##Imp, tofExpSigmaDyn##name, \
338+
[](float tofSignal, \
339+
float tofExpMom, \
340+
float momentum, \
341+
float eta, \
342+
float tofEvTimeErr) -> float { \
343+
return o2::pid::tof::TOFResponseImpl::expectedSigma<id>(tofSignal, \
344+
tofExpMom, \
345+
momentum, \
346+
eta, \
347+
tofEvTimeErr); \
348+
});
349+
350+
PERSPECIES_TOF_SIGMA_COLUMN(El, o2::track::PID::Electron);
351+
PERSPECIES_TOF_SIGMA_COLUMN(Mu, o2::track::PID::Muon);
352+
PERSPECIES_TOF_SIGMA_COLUMN(Pi, o2::track::PID::Pion);
353+
PERSPECIES_TOF_SIGMA_COLUMN(Ka, o2::track::PID::Kaon);
354+
PERSPECIES_TOF_SIGMA_COLUMN(Pr, o2::track::PID::Proton);
355+
PERSPECIES_TOF_SIGMA_COLUMN(De, o2::track::PID::Deuteron);
356+
PERSPECIES_TOF_SIGMA_COLUMN(Tr, o2::track::PID::Triton);
357+
PERSPECIES_TOF_SIGMA_COLUMN(He, o2::track::PID::Helium3);
358+
PERSPECIES_TOF_SIGMA_COLUMN(Al, o2::track::PID::Alpha);
359+
#undef PERSPECIES_TOF_SIGMA_COLUMN
360+
361+
#define PERSPECIES_TOF_SEPARATION_COLUMN(name, id) \
362+
DECLARE_SOA_DYNAMIC_COLUMN(TOFNSigma##name##Imp, tofNSigmaDyn##name, \
363+
[](const float tofSignal, \
364+
const float tofExpMom, \
365+
const float length, \
366+
const float momentum, \
367+
const float eta, \
368+
const float tofEvTime, \
369+
const float tofEvTimeErr) -> float { \
370+
return o2::pid::tof::TOFResponseImpl::nSigma<id>(tofSignal, \
371+
tofExpMom, \
372+
length, \
373+
momentum, \
374+
eta, \
375+
tofEvTime, \
376+
tofEvTimeErr); \
377+
});
378+
379+
PERSPECIES_TOF_SEPARATION_COLUMN(El, o2::track::PID::Electron);
380+
PERSPECIES_TOF_SEPARATION_COLUMN(Mu, o2::track::PID::Muon);
381+
PERSPECIES_TOF_SEPARATION_COLUMN(Pi, o2::track::PID::Pion);
382+
PERSPECIES_TOF_SEPARATION_COLUMN(Ka, o2::track::PID::Kaon);
383+
PERSPECIES_TOF_SEPARATION_COLUMN(Pr, o2::track::PID::Proton);
384+
PERSPECIES_TOF_SEPARATION_COLUMN(De, o2::track::PID::Deuteron);
385+
PERSPECIES_TOF_SEPARATION_COLUMN(Tr, o2::track::PID::Triton);
386+
PERSPECIES_TOF_SEPARATION_COLUMN(He, o2::track::PID::Helium3);
387+
PERSPECIES_TOF_SEPARATION_COLUMN(Al, o2::track::PID::Alpha);
388+
#undef PERSPECIES_TOF_SEPARATION_COLUMN
389+
334390
} // namespace pidtof
335391

392+
using TOFExpSigmaDynEl = pidtof::TOFExpSigmaElImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::P, track::Eta, pidtofevtime::TOFEvTimeErr>;
393+
using TOFExpSigmaDynMu = pidtof::TOFExpSigmaMuImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::P, track::Eta, pidtofevtime::TOFEvTimeErr>;
394+
using TOFExpSigmaDynPi = pidtof::TOFExpSigmaPiImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::P, track::Eta, pidtofevtime::TOFEvTimeErr>;
395+
using TOFExpSigmaDynKa = pidtof::TOFExpSigmaKaImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::P, track::Eta, pidtofevtime::TOFEvTimeErr>;
396+
using TOFExpSigmaDynPr = pidtof::TOFExpSigmaPrImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::P, track::Eta, pidtofevtime::TOFEvTimeErr>;
397+
using TOFExpSigmaDynDe = pidtof::TOFExpSigmaDeImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::P, track::Eta, pidtofevtime::TOFEvTimeErr>;
398+
using TOFExpSigmaDynTr = pidtof::TOFExpSigmaTrImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::P, track::Eta, pidtofevtime::TOFEvTimeErr>;
399+
using TOFExpSigmaDynHe = pidtof::TOFExpSigmaHeImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::P, track::Eta, pidtofevtime::TOFEvTimeErr>;
400+
using TOFExpSigmaDynAl = pidtof::TOFExpSigmaAlImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::P, track::Eta, pidtofevtime::TOFEvTimeErr>;
401+
402+
using TOFNSigmaDynEl = pidtof::TOFNSigmaElImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::Length, track::P, track::Eta, pidtofevtime::TOFEvTime, pidtofevtime::TOFEvTimeErr>;
403+
using TOFNSigmaDynMu = pidtof::TOFNSigmaMuImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::Length, track::P, track::Eta, pidtofevtime::TOFEvTime, pidtofevtime::TOFEvTimeErr>;
404+
using TOFNSigmaDynPi = pidtof::TOFNSigmaPiImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::Length, track::P, track::Eta, pidtofevtime::TOFEvTime, pidtofevtime::TOFEvTimeErr>;
405+
using TOFNSigmaDynKa = pidtof::TOFNSigmaKaImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::Length, track::P, track::Eta, pidtofevtime::TOFEvTime, pidtofevtime::TOFEvTimeErr>;
406+
using TOFNSigmaDynPr = pidtof::TOFNSigmaPrImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::Length, track::P, track::Eta, pidtofevtime::TOFEvTime, pidtofevtime::TOFEvTimeErr>;
407+
using TOFNSigmaDynDe = pidtof::TOFNSigmaDeImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::Length, track::P, track::Eta, pidtofevtime::TOFEvTime, pidtofevtime::TOFEvTimeErr>;
408+
using TOFNSigmaDynTr = pidtof::TOFNSigmaTrImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::Length, track::P, track::Eta, pidtofevtime::TOFEvTime, pidtofevtime::TOFEvTimeErr>;
409+
using TOFNSigmaDynHe = pidtof::TOFNSigmaHeImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::Length, track::P, track::Eta, pidtofevtime::TOFEvTime, pidtofevtime::TOFEvTimeErr>;
410+
using TOFNSigmaDynAl = pidtof::TOFNSigmaAlImp<pidtofsignal::TOFSignal, track::TOFExpMom, track::Length, track::P, track::Eta, pidtofevtime::TOFEvTime, pidtofevtime::TOFEvTimeErr>;
411+
336412
namespace pidtof_tiny
337413
{
338414
struct binning {

0 commit comments

Comments
 (0)