CMS 3D CMS Logo

Classes | Public Types | Static Public Member Functions

funct::Product< PROD_S(F, G), H > Struct Template Reference

#include <SimplifyProduct.h>

List of all members.

Classes

struct  prod0
struct  prod1
struct  prod2

Public Types

typedef ::boost::mpl::if_
< prod1, prod1,
typename::boost::mpl::if_
< prod2, prod2, prod0 >::type >
::type 
prod
typedef AuxProduct< prod >::type type

Static Public Member Functions

static type combine (const ProductStruct< F, G > &fg, const H &h)

Detailed Description

template<typename F, typename G, typename H>
struct funct::Product< PROD_S(F, G), H >

Definition at line 179 of file SimplifyProduct.h.


Member Typedef Documentation

template<typename F , typename G , typename H >
typedef ::boost::mpl::if_<prod1, prod1, typename ::boost::mpl::if_ <prod2, prod2, prod0>::type >::type funct::Product< PROD_S(F, G), H >::prod

Definition at line 212 of file SimplifyProduct.h.

template<typename F , typename G , typename H >
typedef AuxProduct<prod>::type funct::Product< PROD_S(F, G), H >::type

Definition at line 213 of file SimplifyProduct.h.


Member Function Documentation

template<typename F , typename G , typename H >
static type funct::Product< PROD_S(F, G), H >::combine ( const ProductStruct< F, G > &  fg,
const H &  h 
) [inline, static]

Definition at line 214 of file SimplifyProduct.h.

References funct::ProductStruct< A, B >::_1, funct::ProductStruct< A, B >::_2, a, funct::A, b, trackerHits::c, funct::C, funct::Product< A, B >::combine(), f, and g.

                                                                          {
      const F& f = fg._1;
      const G& g = fg._2;
      const typename prod::A & a = prod::a(f, g, h);
      const typename prod::B & b = prod::b(f, g, h);
      const typename prod::C & c = prod::c(f, g, h);
      return AuxProduct<prod>::combine(a * b, c); 
    }