44 #ifndef CEXMC_AST_EVAL_HH 
   45 #define CEXMC_AST_EVAL_HH 
   47 #ifdef CEXMC_USE_CUSTOM_FILTER 
   51 #include <boost/variant/variant.hpp> 
   59 class  CexmcASTEval : 
public CexmcAST::BasicEval
 
   63                                 const bool * >    VarAddr;
 
   65         typedef std::map< std::string, VarAddr >  VarAddrMap;
 
   67         typedef VarAddrMap::value_type            VarAddrMapData;
 
   70         explicit CexmcASTEval(
 
   71                         const CexmcEventFastSObject *  evFastSObject = NULL,
 
   72                         const CexmcEventSObject *  evSObject = NULL );
 
   75         void  SetAddressedData(
 
   76                         const CexmcEventFastSObject *  evFastSObject_ = NULL,
 
   77                         const CexmcEventSObject *  evSObject_ = NULL );
 
   79         void  BindAddresses( CexmcAST::Subtree &  ast );
 
   81         void  ResetAddressBinding( CexmcAST::Subtree &  ast );
 
   84         ScalarValueType  GetFunScalarValue( 
const CexmcAST::Subtree &  ast )
 
   87         ScalarValueType  GetVarScalarValue( 
const CexmcAST::Variable &  var )
 
   90         void             GetEDCollectionValue( 
const CexmcAST::Node &  node,
 
   94         const G4double *  GetThreeVectorElementAddrByIndex(
 
   95                                     const CexmcSimpleThreeVectorStore &  vect,
 
   98         const G4double *  GetLorentzVectorElementAddrByIndex(
 
   99                                     const CexmcSimpleLorentzVectorStore &  vect,
 
  103         const CexmcEventFastSObject *  evFastSObject;
 
  105         const CexmcEventSObject *      evSObject;
 
  108         VarAddrMap                     varAddrMap;
 
  115 inline void  CexmcASTEval::SetAddressedData(
 
  116                                 const CexmcEventFastSObject *  evFastSObject_,
 
  117                                 const CexmcEventSObject *  evSObject_ )
 
  120     evFastSObject = evFastSObject_;
 
  121     evSObject = evSObject_;
 
  125 inline const G4double *  CexmcASTEval::GetThreeVectorElementAddrByIndex(
 
  126                                 const CexmcSimpleThreeVectorStore &  vect,
 
  144 inline const G4double *  CexmcASTEval::GetLorentzVectorElementAddrByIndex(
 
  145                                 const CexmcSimpleLorentzVectorStore &  vect,
 
std::vector< CexmcEnergyDepositCrystalRowCollection > CexmcEnergyDepositCalorimeterCollection