15#ifndef TRIGIDR4MONITORING_TRACKVIEW_H
16#define TRIGIDR4MONITORING_TRACKVIEW_H
55 using BareT = std::remove_cv_t<T>;
56 static_assert( std::is_same_v<BareT, xAOD::TrackParticle> || std::is_same_v<BareT, xAOD::TruthParticle>,
57 "unsupported TrackView type" );
62 typename=std::enable_if_t< !std::is_pointer_v<T> && !std::is_same_v<std::decay_t<T>,
TrackView> > >
66 using BareT = std::remove_cv_t<T>;
67 static_assert( std::is_same_v<BareT, xAOD::TrackParticle> || std::is_same_v<BareT, xAOD::TruthParticle>,
68 "unsupported TrackView type" );
140 template<
typename T>
bool is()
const {
return type()==
typeid(T); }
142 template<
typename T>
const T*
as()
const {
return is<T>() ?
static_cast<const T*
>(
m_ptr) : 0; }
186 float (*
pt)(
const void*);
187 float (*
eta)(
const void*);
189 float (*
phi)(
const void*);
190 float (*
z0)(
const void*);
191 float (*
d0)(
const void*);
192 float (*
m)(
const void*);
194 float (*
p)(
const void*);
195 float (*
E)(
const void*);
196 float (*
ET)(
const void*);
201 float (*
dz0)(
const void*);
202 float (*
dd0)(
const void*);
203 float (*
dpt)(
const void*);
246 static const T&
deref(
const void*
p) {
return *
static_cast<const T*
>(
p); }
343 <<
"\tphi=" << t.phi()
346 <<
"\td0=" << t.d0();
347 s <<
"\t : ptr=" << t.ptr() <<
" (" << &t <<
")" <<
" ]";
349 if ( t.hasParent() ) s <<
"\t( parent: " << t.parent()->ptr() <<
" )";
351 if ( t.hasChildren() ) {
352 for (
size_t i=0 ; i<t.childCount() ; i++ ) s <<
"\n\t\t[" << *t.child(i) <<
"]";
std::ostream & operator<<(std::ostream &s, const TrackView &t)
a TrackView that can have a parent to store the Electron, or Tau etc Z bosons etc
forward declaration required for function prototype
virtual bool hasParent() const
and doesn't have a parent ...
int nPixelsInnerShared() const
static float theta_impl(const void *p)
static float dtheta_impl(const void *p)
virtual const TrackView * child(size_t) const
static int nSi_impl(const void *p)
static int nPixelsInnerShared_impl(const void *p)
TrackView(const TrackView *)=delete
static int nPixelsInnerEndcap_impl(const void *p)
int nPixelsInnerSharedEndcap() const
ChildView CHILDTYPE
so we can more easily change the type if required ...
const VTable * vtable() const
static int nPixelHoles_impl(const void *p)
static const T & deref(const void *p)
static float dphi_impl(const void *p)
static float deta_impl(const void *p)
static uint8_t hasValidTime_impl(const void *p)
virtual bool hasDecorations() const
int nPixelsInnerEndcap() const
static float ET_impl(const void *p)
TrackView(TrackView *)=delete
virtual bool isComposite() const
standard TrackView can't have any children
static int nTRTHi_impl(const void *p)
static float chi2_impl(const void *p)
int nPixelsBlayerEndcap() const
static int nPixelsInnerSharedEndcap_impl(const void *p)
virtual bool hasChildren() const
static int nSiHoles_impl(const void *p)
static float z0_impl(const void *p)
static int nPixelsBlayer_impl(const void *p)
static float m_impl(const void *p)
const std::type_info & type() const
static int nPixels_impl(const void *p)
static int nSCTShared_impl(const void *p)
static int nSCT_impl(const void *p)
static float dd0_impl(const void *p)
static float eta_impl(const void *p)
virtual const TrackView * parent() const
static float d0_impl(const void *p)
static float E_impl(const void *p)
static int nSCTHoles_impl(const void *p)
virtual ~TrackView()=default
static unsigned author_impl(const void *p)
static int nPixelsShared_impl(const void *p)
static float ndof_impl(const void *p)
int nPixelsShared() const
static float dpt_impl(const void *p)
static void addChildren_impl(const void *p, std::vector< CHILDTYPE > &v)
static float dqOverP_impl(const void *p)
virtual float phi() const
static float pt_impl(const void *p)
TrackView(const TrackView &t)=default
static float phi_impl(const void *p)
float covthetaOvP() const
static float qOverP_impl(const void *p)
uint8_t hasValidTime() const
static float covthetaOvP_impl(const void *p)
static float p_impl(const void *p)
static float dz0_impl(const void *p)
static float time_impl(const void *p)
static int nPixelsInner_impl(const void *p)
static const VTable table
virtual size_t childCount() const
static int nTRT_impl(const void *p)
static int nPixelsBlayerEndcap_impl(const void *p)
int nPixelsBlayer() const
static int nPixelsShared(const T &)
static float ET(const T &)
static int nSi(const T &)
static uint8_t hasValidTime(const T &)
static int nSCTShared(const T &)
static float z0(const T &)
static int nPixels(const T &)
static float eta(const T &t)
static float deta(const T &)
static int nPixelHoles(const T &)
static int nPixelsInnerEndcap(const T &)
static float phi(const T &t)
static float d0(const T &)
static float m(const T &)
static float theta(const T &)
static int nSCT(const T &)
static float pt(const T &t)
static float time(const T &)
static int nPixelsBlayer(const T &)
static float chi2(const T &)
static float E(const T &)
static int nTRTHi(const T &)
static float dqOverP(const T &)
static int nSCTHoles(const T &)
static int nTRT(const T &)
static unsigned author(const T &)
static int nSiHoles(const T &)
static float p(const T &)
static float dphi(const T &)
static int nPixelsInner(const T &)
static int nPixelsInnerShared(const T &)
static int nPixelsBlayerEndcap(const T &)
static float dz0(const T &)
static float dpt(const T &)
static int nPixelsInnerSharedEndcap(const T &)
static float ndof(const T &)
static float dd0(const T &)
static float qOverP(const T &)
static float dtheta(const T &)
static float covthetaOvP(const T &)
int(* nPixelsInnerEndcap)(const void *)
float(* time)(const void *)
float(* d0)(const void *)
float(* chi2)(const void *)
int(* nTRTHi)(const void *)
float(* phi)(const void *)
float(* eta)(const void *)
int(* nPixelsBlayerEndcap)(const void *)
float(* dtheta)(const void *)
float(* dz0)(const void *)
float(* dphi)(const void *)
float(* dd0)(const void *)
float(* dqOverP)(const void *)
float(* z0)(const void *)
int(* nSCT)(const void *)
int(* nTRT)(const void *)
float(* qOverP)(const void *)
int(* nSCTShared)(const void *)
int(* nPixelsInnerSharedEndcap)(const void *)
float(* dpt)(const void *)
float(* theta)(const void *)
int(* nPixelHoles)(const void *)
int(* nSCTHoles)(const void *)
int(* nSiHoles)(const void *)
int(* nPixelsBlayer)(const void *)
unsigned(* author)(const void *)
float(* pt)(const void *)
uint8_t(* hasValidTime)(const void *)
const std::type_info * m_type
void(* addChildren)(const void *, std::vector< CHILDTYPE > &)
need this in the vtable, but we don't want it exposed in the TrackView
int(* nPixelsInnerShared)(const void *)
float(* deta)(const void *)
float(* covthetaOvP)(const void *)
int(* nPixelsShared)(const void *)
int(* nPixels)(const void *)
float(* ET)(const void *)
int(* nPixelsInner)(const void *)
float(* ndof)(const void *)