16inline int barcode(
const T* p){
return p->barcode(); }
19template <class T, std::enable_if_t< !std::is_pointer<T>::value &&
20 !std::is_same<T, HepMC3::GenParticlePtr>::value &&
21 !std::is_same<T, HepMC3::ConstGenParticlePtr>::value &&
22 !std::is_same<T, HepMC3::GenVertexPtr>::value &&
23 !std::is_same<T, HepMC3::ConstGenVertexPtr>::value &&
24 !std::is_same<T, HepMC3::GenVertex>::value &&
25 !std::is_same<T, HepMC3::GenParticle>::value &&
26 !std::is_same<T, int>::value
28inline int barcode(
const T& p){
return p.barcode();}
30template <
class T, std::enable_if_t<
31 std::is_same<T, HepMC3::GenParticlePtr>::value ||
32 std::is_same<T, HepMC3::ConstGenParticlePtr>::value ||
33 std::is_same<T, HepMC3::GenVertexPtr>::value ||
34 std::is_same<T, HepMC3::ConstGenVertexPtr>::value
38 const HepMC3::GenEvent*
e =
p->parent_event();
40 std::shared_ptr<HepMC3::IntAttribute>
barcode =
e->attribute<HepMC3::IntAttribute>(
"barcode",
p->id());
44template <
class T, std::enable_if_t<
45 std::is_same<T, HepMC3::GenParticle>::value ||
46 std::is_same<T, HepMC3::GenVertex>::value
49 const HepMC3::GenEvent*
e =
p.parent_event();
51 std::shared_ptr<HepMC3::IntAttribute>
barcode =
e->attribute<HepMC3::IntAttribute>(
"barcode",
p.id());
55template <class T, std::enable_if_t<!std::is_pointer<T>::value &&
56 !std::is_same<T,int>::value
57 ,
bool> =
true>
inline int barcode(
const T& p){
return p.barcode();}