1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
// -*- C++ -*-
//
// EventGenerator.tcc is a part of ThePEG - Toolkit for HEP Event Generation
// Copyright (C) 1999-2011 Leif Lonnblad
//
// ThePEG is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined templated member
// functions of the EventGenerator class.
//
namespace ThePEG {
template <typename T>
typename Ptr<T>::pointer EventGenerator::getPtr(const T & t) const {
typedef typename Ptr<T>::pointer ptr;
ObjectSet::const_iterator it = objects().find(ptr_cast_const<IBPtr>(&t));
return it == objects().end()? ptr(): dynamic_ptr_cast<ptr>(*it);
}
template <typename T>
typename Ptr<T>::pointer EventGenerator::getDefault() const {
typedef typename Ptr<T>::pointer ptr;
ptr ret;
for ( vector<IPtr>::const_iterator it = defaultObjects().begin();
it != defaultObjects().end(); ++it ) {
ret = dynamic_ptr_cast<ptr>(*it);
if ( ret ) return ret;
}
if ( strategy() ) {
for ( vector<IPtr>::const_iterator it =
strategy()->defaultObjects().begin();
it != strategy()->defaultObjects().end(); ++it ) {
ret = dynamic_ptr_cast<ptr>(*it);
if ( ret ) return ret;
}
}
return ret;
}
}
|