// @(#)root/tmva $Id$ 
// Author: Matt Jachowski  
 
/********************************************************************************** 
 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis       * 
 * Package: TMVA                                                                  * 
 * Class  : TMVA::TNeuronInputChooser                                             * 
 * Web    : http://tmva.sourceforge.net                                           * 
 *                                                                                * 
 * Description:                                                                   * 
 *      Class for easily choosing neuron input functions.                         * 
 *                                                                                * 
 * Authors (alphabetical):                                                        * 
 *      Matt Jachowski  <jachowski@stanford.edu> - Stanford University, USA       * 
 *                                                                                * 
 * Copyright (c) 2005:                                                            * 
 *      CERN, Switzerland                                                         * 
 *                                                                                * 
 * Redistribution and use in source and binary forms, with or without             * 
 * modification, are permitted according to the terms listed in LICENSE           * 
 * (http://tmva.sourceforge.net/LICENSE)                                          * 
 **********************************************************************************/ 
  
 
#ifndef ROOT_TMVA_TNeuronInputChooser
#define ROOT_TMVA_TNeuronInputChooser
 
////////////////////////////////////////////////////////////////////////// 
//                                                                      // 
// TNeuronInputChooser                                                  // 
//                                                                      // 
// Class for easily choosing neuron input functions                     // 
//                                                                      // 
////////////////////////////////////////////////////////////////////////// 
 
#include <vector> 
#ifndef ROOT_TString
#include "TString.h" 
#endif
 
#ifndef ROOT_TMVA_TActivation 
#ifndef ROOT_TNeuronInput
#include "TNeuronInput.h" 
#endif
#endif 
#ifndef ROOT_TMVA_TNeuronInputSum 
#ifndef ROOT_TNeuronInputSum
#include "TNeuronInputSum.h" 
#endif
#endif 
#ifndef ROOT_TMVA_TNeuronInputSqSum 
#ifndef ROOT_TNeuronInputSqSum
#include "TNeuronInputSqSum.h" 
#endif
#endif 
#ifndef ROOT_TMVA_TNeuronInputAbs 
#ifndef ROOT_TNeuronInputAbs
#include "TNeuronInputAbs.h" 
#endif
#endif 
 
namespace TMVA { 
 
   class TNeuron; 
   
   class TNeuronInputChooser { 
     
   public: 
 
      TNeuronInputChooser() 
      { 
         fSUM    = "sum"; 
         fSQSUM  = "sqsum"; 
         fABSSUM = "abssum"; 
      } 
      virtual ~TNeuronInputChooser() {} 
 
      enum ENeuronInputType { kSum = 0, 
                              kSqSum, 
                              kAbsSum 
      }; 
 
      TNeuronInput* CreateNeuronInput(ENeuronInputType type) const 
      { 
         switch (type) { 
         case kSum:    return new TNeuronInputSum(); 
         case kSqSum:  return new TNeuronInputSqSum(); 
         case kAbsSum: return new TNeuronInputAbs(); 
         default: return NULL; 
         } 
         return NULL; 
      } 
      
      TNeuronInput* CreateNeuronInput(const TString type) const 
      { 
         if      (type == fSUM)    return CreateNeuronInput(kSum); 
         else if (type == fSQSUM)  return CreateNeuronInput(kSqSum); 
         else if (type == fABSSUM) return CreateNeuronInput(kAbsSum); 
         else                      return NULL; 
      } 
      
      std::vector<TString>* GetAllNeuronInputNames() const 
      { 
         std::vector<TString>* names = new std::vector<TString>(); 
         names->push_back(fSUM); 
         names->push_back(fSQSUM); 
         names->push_back(fABSSUM); 
         return names; 
      } 
       
   private: 
      
      TString fSUM;    // neuron input type name 
      TString fSQSUM;  // neuron input type name 
      TString fABSSUM; // neuron input type name 
 
      ClassDef(TNeuronInputChooser,0) // Class for choosing neuron input functions 
   }; 
 
} // namespace TMVA 
 
#endif 
 TNeuronInputChooser.h:1
 TNeuronInputChooser.h:2
 TNeuronInputChooser.h:3
 TNeuronInputChooser.h:4
 TNeuronInputChooser.h:5
 TNeuronInputChooser.h:6
 TNeuronInputChooser.h:7
 TNeuronInputChooser.h:8
 TNeuronInputChooser.h:9
 TNeuronInputChooser.h:10
 TNeuronInputChooser.h:11
 TNeuronInputChooser.h:12
 TNeuronInputChooser.h:13
 TNeuronInputChooser.h:14
 TNeuronInputChooser.h:15
 TNeuronInputChooser.h:16
 TNeuronInputChooser.h:17
 TNeuronInputChooser.h:18
 TNeuronInputChooser.h:19
 TNeuronInputChooser.h:20
 TNeuronInputChooser.h:21
 TNeuronInputChooser.h:22
 TNeuronInputChooser.h:23
 TNeuronInputChooser.h:24
 TNeuronInputChooser.h:25
 TNeuronInputChooser.h:26
 TNeuronInputChooser.h:27
 TNeuronInputChooser.h:28
 TNeuronInputChooser.h:29
 TNeuronInputChooser.h:30
 TNeuronInputChooser.h:31
 TNeuronInputChooser.h:32
 TNeuronInputChooser.h:33
 TNeuronInputChooser.h:34
 TNeuronInputChooser.h:35
 TNeuronInputChooser.h:36
 TNeuronInputChooser.h:37
 TNeuronInputChooser.h:38
 TNeuronInputChooser.h:39
 TNeuronInputChooser.h:40
 TNeuronInputChooser.h:41
 TNeuronInputChooser.h:42
 TNeuronInputChooser.h:43
 TNeuronInputChooser.h:44
 TNeuronInputChooser.h:45
 TNeuronInputChooser.h:46
 TNeuronInputChooser.h:47
 TNeuronInputChooser.h:48
 TNeuronInputChooser.h:49
 TNeuronInputChooser.h:50
 TNeuronInputChooser.h:51
 TNeuronInputChooser.h:52
 TNeuronInputChooser.h:53
 TNeuronInputChooser.h:54
 TNeuronInputChooser.h:55
 TNeuronInputChooser.h:56
 TNeuronInputChooser.h:57
 TNeuronInputChooser.h:58
 TNeuronInputChooser.h:59
 TNeuronInputChooser.h:60
 TNeuronInputChooser.h:61
 TNeuronInputChooser.h:62
 TNeuronInputChooser.h:63
 TNeuronInputChooser.h:64
 TNeuronInputChooser.h:65
 TNeuronInputChooser.h:66
 TNeuronInputChooser.h:67
 TNeuronInputChooser.h:68
 TNeuronInputChooser.h:69
 TNeuronInputChooser.h:70
 TNeuronInputChooser.h:71
 TNeuronInputChooser.h:72
 TNeuronInputChooser.h:73
 TNeuronInputChooser.h:74
 TNeuronInputChooser.h:75
 TNeuronInputChooser.h:76
 TNeuronInputChooser.h:77
 TNeuronInputChooser.h:78
 TNeuronInputChooser.h:79
 TNeuronInputChooser.h:80
 TNeuronInputChooser.h:81
 TNeuronInputChooser.h:82
 TNeuronInputChooser.h:83
 TNeuronInputChooser.h:84
 TNeuronInputChooser.h:85
 TNeuronInputChooser.h:86
 TNeuronInputChooser.h:87
 TNeuronInputChooser.h:88
 TNeuronInputChooser.h:89
 TNeuronInputChooser.h:90
 TNeuronInputChooser.h:91
 TNeuronInputChooser.h:92
 TNeuronInputChooser.h:93
 TNeuronInputChooser.h:94
 TNeuronInputChooser.h:95
 TNeuronInputChooser.h:96
 TNeuronInputChooser.h:97
 TNeuronInputChooser.h:98
 TNeuronInputChooser.h:99
 TNeuronInputChooser.h:100
 TNeuronInputChooser.h:101
 TNeuronInputChooser.h:102
 TNeuronInputChooser.h:103
 TNeuronInputChooser.h:104
 TNeuronInputChooser.h:105
 TNeuronInputChooser.h:106
 TNeuronInputChooser.h:107
 TNeuronInputChooser.h:108
 TNeuronInputChooser.h:109
 TNeuronInputChooser.h:110
 TNeuronInputChooser.h:111
 TNeuronInputChooser.h:112
 TNeuronInputChooser.h:113
 TNeuronInputChooser.h:114
 TNeuronInputChooser.h:115
 TNeuronInputChooser.h:116
 TNeuronInputChooser.h:117
 TNeuronInputChooser.h:118
 TNeuronInputChooser.h:119
 TNeuronInputChooser.h:120
 TNeuronInputChooser.h:121
 TNeuronInputChooser.h:122