// Class: ReadKaon_Upstream_TMVA // Automatically generated by MethodBase::MakeClass // /* configuration options ===================================================== #GEN -*-*-*-*-*-*-*-*-*-*-*- general info -*-*-*-*-*-*-*-*-*-*-*- Method : MLP::Kaon_Upstream_TMVA TMVA Release : 4.1.4 [262404] ROOT Release : 5.34/05 [336389] Creator : jonrob Date : Wed Apr 10 09:41:55 2013 Host : Linux lxbuild175.cern.ch 2.6.18-308.4.1.el5 #1 SMP Wed Apr 18 16:26:27 CEST 2012 x86_64 x86_64 x86_64 GNU/Linux Dir : /afs/cern.ch/work/j/jonrob/www/ANNPID/MC12/TrainAllTks-EvalAllTks-ReweightRICH2/TMVA-NoPreSels-NoGECs/MLP/Norm/ScaleF1.4/BP/NCycles750/CE/tanh/Kaon/Upstream Training events: 1000000 Analysis type : [Classification] #OPT -*-*-*-*-*-*-*-*-*-*-*-*- options -*-*-*-*-*-*-*-*-*-*-*-*- # Set by User: NCycles: "750" [Number of training cycles] HiddenLayers: "30" [Specification of hidden layer architecture] NeuronType: "tanh" [Neuron activation function type] EstimatorType: "CE" [MSE (Mean Square Estimator) for Gaussian Likelihood or CE(Cross-Entropy) for Bernoulli Likelihood] V: "True" [Verbose output (short form of "VerbosityLevel" below - overrides the latter one)] VarTransform: "Norm" [List of variable transformations performed before training, e.g., "D_Background,P_Signal,G,N_AllClasses" for: "Decorrelation, PCA-transformation, Gaussianisation, Normalisation, each for the given class of events ('AllClasses' denotes all events of all classes, if no class indication is given, 'All' is assumed)"] H: "True" [Print method-specific help message] TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] EpochMonitoring: "True" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] # Default: RandomSeed: "1" [Random seed for initial synapse weights (0 means unique seed for each run; default value '1')] NeuronInputType: "sum" [Neuron input function type] VerbosityLevel: "Verbose" [Verbosity level] CreateMVAPdfs: "False" [Create PDFs for classifier outputs (signal and background)] IgnoreNegWeightsInTraining: "False" [Events with negative weights are ignored in the training (but are included for testing and performance evaluation)] LearningRate: "2.000000e-02" [ANN learning rate parameter] DecayRate: "1.000000e-02" [Decay rate for learning parameter] TestRate: "10" [Test for overtraining performed at each #th epochs] Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] SamplingImportance: "1.000000e+00" [ The sampling weights of events in epochs which successful (worse estimator than before) are multiplied with SamplingImportance, else they are divided.] SamplingTraining: "True" [The training sample is sampled] SamplingTesting: "False" [The testing sample is sampled] ResetStep: "50" [How often BFGS should reset history] Tau: "3.000000e+00" [LineSearch "size step"] BPMode: "sequential" [Back-propagation learning mode: sequential or batch] BatchSize: "-1" [Batch size: number of events/batch, only set if in Batch Mode, -1 for BatchSize=number_of_events] ConvergenceImprove: "1.000000e-30" [Minimum improvement which counts as improvement (<0 means automatic convergence check is turned off)] ConvergenceTests: "-1" [Number of steps (without improvement) required for convergence (<0 means automatic convergence check is turned off)] UseRegulator: "False" [Use regulator to avoid over-training] UpdateLimit: "10000" [Maximum times of regulator update] CalculateErrors: "False" [Calculates inverse Hessian matrix at the end of the training to be able to calculate the uncertainties of an MVA value] WeightRange: "1.000000e+00" [Take the events for the estimator calculations from small deviations from the desired value to large deviations only over the weight range] ## #VAR -*-*-*-*-*-*-*-*-*-*-*-* variables *-*-*-*-*-*-*-*-*-*-*-*- NVar 22 TrackP TrackP TrackP TrackP 'F' [172.490005493,4970293.5] TrackPt TrackPt TrackPt TrackPt 'F' [0.832938909531,995273.875] TrackChi2PerDof TrackChi2PerDof TrackChi2PerDof TrackChi2PerDof 'F' [0.00302399252541,2.999573946] TrackNumDof TrackNumDof TrackNumDof TrackNumDof 'I' [4,28] TrackLikelihood TrackLikelihood TrackLikelihood TrackLikelihood 'F' [-99.6241531372,-0.319228202105] TrackGhostProbability TrackGhostProbability TrackGhostProbability TrackGhostProbability 'F' [0.0317582078278,1] TrackCloneDist TrackCloneDist TrackCloneDist TrackCloneDist 'F' [-999,4999.73632812] TrackFitVeloChi2 TrackFitVeloChi2 TrackFitVeloChi2 TrackFitVeloChi2 'F' [2.50487555604e-05,51.0802001953] TrackFitVeloNDoF TrackFitVeloNDoF TrackFitVeloNDoF TrackFitVeloNDoF 'I' [1,24] RichUsedAero RichUsedAero RichUsedAero RichUsedAero 'I' [0,1] RichUsedR1Gas RichUsedR1Gas RichUsedR1Gas RichUsedR1Gas 'I' [0,1] RichAbovePiThres RichAbovePiThres RichAbovePiThres RichAbovePiThres 'I' [0,1] RichAboveKaThres RichAboveKaThres RichAboveKaThres RichAboveKaThres 'I' [0,1] RichAbovePrThres RichAbovePrThres RichAbovePrThres RichAbovePrThres 'I' [0,1] RichDLLe RichDLLe RichDLLe RichDLLe 'F' [-999,107.511299133] RichDLLmu RichDLLmu RichDLLmu RichDLLmu 'F' [-999,69.573600769] RichDLLk RichDLLk RichDLLk RichDLLk 'F' [-999,99.5278015137] RichDLLp RichDLLp RichDLLp RichDLLp 'F' [-999,62.6166000366] RichDLLbt RichDLLbt RichDLLbt RichDLLbt 'F' [-999,47.8530006409] InAccBrem InAccBrem InAccBrem InAccBrem 'I' [0,1] BremPIDe BremPIDe BremPIDe BremPIDe 'F' [-999,4.79148387909] VeloCharge VeloCharge VeloCharge VeloCharge 'F' [0.486891388893,5.4943819046] NSpec 0 ============================================================================ */ #include #include #include #include #ifndef IClassifierReader__def #define IClassifierReader__def class IClassifierReader { public: // constructor IClassifierReader() : fStatusIsClean( true ) {} virtual ~IClassifierReader() {} // return classifier response virtual double GetMvaValue( const std::vector& inputValues ) const = 0; // returns classifier status bool IsStatusClean() const { return fStatusIsClean; } protected: bool fStatusIsClean; }; #endif class ReadKaon_Upstream_TMVA : public IClassifierReader { public: // constructor ReadKaon_Upstream_TMVA( std::vector& theInputVars ) : IClassifierReader(), fClassName( "ReadKaon_Upstream_TMVA" ), fNvars( 22 ), fIsNormalised( false ) { // the training input variables const char* inputVars[] = { "TrackP", "TrackPt", "TrackChi2PerDof", "TrackNumDof", "TrackLikelihood", "TrackGhostProbability", "TrackCloneDist", "TrackFitVeloChi2", "TrackFitVeloNDoF", "RichUsedAero", "RichUsedR1Gas", "RichAbovePiThres", "RichAboveKaThres", "RichAbovePrThres", "RichDLLe", "RichDLLmu", "RichDLLk", "RichDLLp", "RichDLLbt", "InAccBrem", "BremPIDe", "VeloCharge" }; // sanity checks if (theInputVars.size() <= 0) { std::cout << "Problem in class \"" << fClassName << "\": empty input vector" << std::endl; fStatusIsClean = false; } if (theInputVars.size() != fNvars) { std::cout << "Problem in class \"" << fClassName << "\": mismatch in number of input values: " << theInputVars.size() << " != " << fNvars << std::endl; fStatusIsClean = false; } // validate input variables for (size_t ivar = 0; ivar < theInputVars.size(); ivar++) { if (theInputVars[ivar] != inputVars[ivar]) { std::cout << "Problem in class \"" << fClassName << "\": mismatch in input variable names" << std::endl << " for variable [" << ivar << "]: " << theInputVars[ivar].c_str() << " != " << inputVars[ivar] << std::endl; fStatusIsClean = false; } } // initialize min and max vectors (for normalisation) fVmin[0] = -1; fVmax[0] = 1; fVmin[1] = -1; fVmax[1] = 1; fVmin[2] = -1; fVmax[2] = 1; fVmin[3] = -1; fVmax[3] = 1; fVmin[4] = -1; fVmax[4] = 1; fVmin[5] = -1; fVmax[5] = 1; fVmin[6] = -1; fVmax[6] = 1; fVmin[7] = -1; fVmax[7] = 1; fVmin[8] = -1; fVmax[8] = 1; fVmin[9] = -1; fVmax[9] = 1; fVmin[10] = -1; fVmax[10] = 1; fVmin[11] = -1; fVmax[11] = 1; fVmin[12] = -1; fVmax[12] = 1; fVmin[13] = -1; fVmax[13] = 1; fVmin[14] = -1; fVmax[14] = 1; fVmin[15] = -1; fVmax[15] = 1; fVmin[16] = -1; fVmax[16] = 1; fVmin[17] = -1; fVmax[17] = 1; fVmin[18] = -1; fVmax[18] = 1; fVmin[19] = -1; fVmax[19] = 1; fVmin[20] = -1; fVmax[20] = 1; fVmin[21] = -1; fVmax[21] = 1; // initialize input variable types fType[0] = 'F'; fType[1] = 'F'; fType[2] = 'F'; fType[3] = 'I'; fType[4] = 'F'; fType[5] = 'F'; fType[6] = 'F'; fType[7] = 'F'; fType[8] = 'I'; fType[9] = 'I'; fType[10] = 'I'; fType[11] = 'I'; fType[12] = 'I'; fType[13] = 'I'; fType[14] = 'F'; fType[15] = 'F'; fType[16] = 'F'; fType[17] = 'F'; fType[18] = 'F'; fType[19] = 'I'; fType[20] = 'F'; fType[21] = 'F'; // initialize constants Initialize(); // initialize transformation InitTransform(); } // destructor virtual ~ReadKaon_Upstream_TMVA() { Clear(); // method-specific } // the classifier response // "inputValues" is a vector of input values in the same order as the // variables given to the constructor double GetMvaValue( const std::vector& inputValues ) const; private: // method-specific destructor void Clear(); // input variable transformation double fMin_1[3][22]; double fMax_1[3][22]; void InitTransform_1(); void Transform_1( std::vector & iv, int sigOrBgd ) const; void InitTransform(); void Transform( std::vector & iv, int sigOrBgd ) const; // common member variables const char* fClassName; const size_t fNvars; size_t GetNvar() const { return fNvars; } char GetType( int ivar ) const { return fType[ivar]; } // normalisation of input variables const bool fIsNormalised; bool IsNormalised() const { return fIsNormalised; } double fVmin[22]; double fVmax[22]; double NormVariable( double x, double xmin, double xmax ) const { // normalise to output range: [-1, 1] return 2*(x - xmin)/(xmax - xmin) - 1.0; } // type of input variable: 'F' or 'I' char fType[22]; // initialize internal variables void Initialize(); double GetMvaValue__( const std::vector& inputValues ) const; // private members (method specific) double ActivationFnc(double x) const; double OutputActivationFnc(double x) const; int fLayers; int fLayerSize[3]; double fWeightMatrix0to1[31][23]; // weight matrix from layer 0 to 1 double fWeightMatrix1to2[1][31]; // weight matrix from layer 1 to 2 double * fWeights[3]; }; inline void ReadKaon_Upstream_TMVA::Initialize() { // build network structure fLayers = 3; fLayerSize[0] = 23; fWeights[0] = new double[23]; fLayerSize[1] = 31; fWeights[1] = new double[31]; fLayerSize[2] = 1; fWeights[2] = new double[1]; // weight matrix from layer 0 to 1 fWeightMatrix0to1[0][0] = -0.063912275206045; fWeightMatrix0to1[1][0] = 2.00411801706196; fWeightMatrix0to1[2][0] = 0.633923499797392; fWeightMatrix0to1[3][0] = 3.17568545912941; fWeightMatrix0to1[4][0] = -1.51203011845389; fWeightMatrix0to1[5][0] = 0.0767420304309269; fWeightMatrix0to1[6][0] = -5.99944478835376; fWeightMatrix0to1[7][0] = 7.55318912814228; fWeightMatrix0to1[8][0] = -1.99380715134203; fWeightMatrix0to1[9][0] = -1.11437755506178; fWeightMatrix0to1[10][0] = -1.1553071223657; fWeightMatrix0to1[11][0] = 1.31415280724969; fWeightMatrix0to1[12][0] = -1.18683680606719; fWeightMatrix0to1[13][0] = -1.88310287981289; fWeightMatrix0to1[14][0] = -0.166264531922994; fWeightMatrix0to1[15][0] = 2.9697830646399; fWeightMatrix0to1[16][0] = -0.757659017555672; fWeightMatrix0to1[17][0] = 1.83686352077173; fWeightMatrix0to1[18][0] = 3.35881933128063; fWeightMatrix0to1[19][0] = 0.851169139336866; fWeightMatrix0to1[20][0] = 1.29836315112195; fWeightMatrix0to1[21][0] = -1.88486607888149; fWeightMatrix0to1[22][0] = 4.52040512692805; fWeightMatrix0to1[23][0] = 4.88578537597815; fWeightMatrix0to1[24][0] = -10.1075852517523; fWeightMatrix0to1[25][0] = -0.526636451752964; fWeightMatrix0to1[26][0] = 2.54703725894496; fWeightMatrix0to1[27][0] = -6.936164119805; fWeightMatrix0to1[28][0] = -1.76748753214846; fWeightMatrix0to1[29][0] = -1.64078386921203; fWeightMatrix0to1[0][1] = 1.58211536362655; fWeightMatrix0to1[1][1] = 1.18646316254432; fWeightMatrix0to1[2][1] = -0.138575639854454; fWeightMatrix0to1[3][1] = 1.17228292830209; fWeightMatrix0to1[4][1] = -2.28550727943205; fWeightMatrix0to1[5][1] = 0.939602787579174; fWeightMatrix0to1[6][1] = -7.20148585638979; fWeightMatrix0to1[7][1] = 2.53061693136991; fWeightMatrix0to1[8][1] = -1.79939454718606; fWeightMatrix0to1[9][1] = 2.34442441411012; fWeightMatrix0to1[10][1] = 1.50248706329213; fWeightMatrix0to1[11][1] = 1.61812436824601; fWeightMatrix0to1[12][1] = 1.49420824535575; fWeightMatrix0to1[13][1] = 0.51910428661008; fWeightMatrix0to1[14][1] = -0.183759480878513; fWeightMatrix0to1[15][1] = -1.85632893304857; fWeightMatrix0to1[16][1] = 0.347910038075194; fWeightMatrix0to1[17][1] = 0.0980599749930061; fWeightMatrix0to1[18][1] = 2.86664068683099; fWeightMatrix0to1[19][1] = 0.912351216299898; fWeightMatrix0to1[20][1] = 0.13747009717683; fWeightMatrix0to1[21][1] = 2.22275140103113; fWeightMatrix0to1[22][1] = 3.62972027004822; fWeightMatrix0to1[23][1] = 6.87051655789338; fWeightMatrix0to1[24][1] = -3.98130322990898; fWeightMatrix0to1[25][1] = -0.963778829104464; fWeightMatrix0to1[26][1] = -3.11118225762314; fWeightMatrix0to1[27][1] = -8.29646789362628; fWeightMatrix0to1[28][1] = 1.89085518193071; fWeightMatrix0to1[29][1] = -0.935371901724292; fWeightMatrix0to1[0][2] = 0.126985258212641; fWeightMatrix0to1[1][2] = -1.14332999074; fWeightMatrix0to1[2][2] = -1.28670804642984; fWeightMatrix0to1[3][2] = -1.29948270499955; fWeightMatrix0to1[4][2] = 0.167655420135274; fWeightMatrix0to1[5][2] = 0.784993752687496; fWeightMatrix0to1[6][2] = 1.02780572769875; fWeightMatrix0to1[7][2] = -0.31241057284757; fWeightMatrix0to1[8][2] = -1.01877391322933; fWeightMatrix0to1[9][2] = -0.54542134281483; fWeightMatrix0to1[10][2] = -0.0433993081971588; fWeightMatrix0to1[11][2] = -0.0400024613583864; fWeightMatrix0to1[12][2] = -0.916070556725765; fWeightMatrix0to1[13][2] = 1.5963512026074; fWeightMatrix0to1[14][2] = 0.172882719778962; fWeightMatrix0to1[15][2] = -0.0323796826314507; fWeightMatrix0to1[16][2] = -2.18967113750091; fWeightMatrix0to1[17][2] = 1.56135732830291; fWeightMatrix0to1[18][2] = 0.516602172423221; fWeightMatrix0to1[19][2] = -0.0390838110511244; fWeightMatrix0to1[20][2] = 0.684036384032277; fWeightMatrix0to1[21][2] = -0.0167539286716645; fWeightMatrix0to1[22][2] = -0.779782832494323; fWeightMatrix0to1[23][2] = -0.598069449206666; fWeightMatrix0to1[24][2] = -0.119560427497737; fWeightMatrix0to1[25][2] = 0.625212331984166; fWeightMatrix0to1[26][2] = -0.464903947114213; fWeightMatrix0to1[27][2] = -0.780009929210569; fWeightMatrix0to1[28][2] = -0.78052375405363; fWeightMatrix0to1[29][2] = 0.308046468433225; fWeightMatrix0to1[0][3] = 2.40884824223907; fWeightMatrix0to1[1][3] = 1.3541118375274; fWeightMatrix0to1[2][3] = 3.84939994833434; fWeightMatrix0to1[3][3] = 15.2558963021315; fWeightMatrix0to1[4][3] = 5.33262406504052; fWeightMatrix0to1[5][3] = 0.851678179988706; fWeightMatrix0to1[6][3] = -5.77337042115523; fWeightMatrix0to1[7][3] = -1.20877482976727; fWeightMatrix0to1[8][3] = -2.42192827469678; fWeightMatrix0to1[9][3] = 3.1101176939409; fWeightMatrix0to1[10][3] = -1.71654383999311; fWeightMatrix0to1[11][3] = -2.54948516520666; fWeightMatrix0to1[12][3] = 3.60929103982293; fWeightMatrix0to1[13][3] = 3.7069652493094; fWeightMatrix0to1[14][3] = -2.21536034764552; fWeightMatrix0to1[15][3] = 2.87936798494163; fWeightMatrix0to1[16][3] = 0.631765140466353; fWeightMatrix0to1[17][3] = -4.31712574651284; fWeightMatrix0to1[18][3] = -0.0246633157113209; fWeightMatrix0to1[19][3] = 1.52547276828884; fWeightMatrix0to1[20][3] = -4.03875093056132; fWeightMatrix0to1[21][3] = -0.915134448308823; fWeightMatrix0to1[22][3] = -1.55217898392622; fWeightMatrix0to1[23][3] = 1.85678173940922; fWeightMatrix0to1[24][3] = -9.70126002806242; fWeightMatrix0to1[25][3] = 0.892595422036467; fWeightMatrix0to1[26][3] = 13.8823369874093; fWeightMatrix0to1[27][3] = 3.85159645483908; fWeightMatrix0to1[28][3] = 0.260822944764663; fWeightMatrix0to1[29][3] = 0.935459763365914; fWeightMatrix0to1[0][4] = -0.299508606176106; fWeightMatrix0to1[1][4] = 0.152660559503918; fWeightMatrix0to1[2][4] = 0.718505642419628; fWeightMatrix0to1[3][4] = 1.96614067615118; fWeightMatrix0to1[4][4] = 0.990589714068612; fWeightMatrix0to1[5][4] = 3.26781098420525; fWeightMatrix0to1[6][4] = 0.396428704230099; fWeightMatrix0to1[7][4] = 2.4881401918547; fWeightMatrix0to1[8][4] = -2.97529428318251; fWeightMatrix0to1[9][4] = -3.74459863605453; fWeightMatrix0to1[10][4] = 1.21624051148491; fWeightMatrix0to1[11][4] = -1.79857025955223; fWeightMatrix0to1[12][4] = 2.4340297899097; fWeightMatrix0to1[13][4] = -1.28910663855731; fWeightMatrix0to1[14][4] = -0.673259268301553; fWeightMatrix0to1[15][4] = 1.94890184994272; fWeightMatrix0to1[16][4] = 0.754689179760794; fWeightMatrix0to1[17][4] = -4.65196256749275; fWeightMatrix0to1[18][4] = 5.8010363648218; fWeightMatrix0to1[19][4] = 1.41234351025429; fWeightMatrix0to1[20][4] = -1.01301710731613; fWeightMatrix0to1[21][4] = 2.11807935831058; fWeightMatrix0to1[22][4] = -4.74017915854794; fWeightMatrix0to1[23][4] = -0.0587710329405333; fWeightMatrix0to1[24][4] = -6.87898709826008; fWeightMatrix0to1[25][4] = 1.30939069953228; fWeightMatrix0to1[26][4] = 8.76023582575677; fWeightMatrix0to1[27][4] = 3.11934870009357; fWeightMatrix0to1[28][4] = -0.853478198717768; fWeightMatrix0to1[29][4] = -1.00191001826553; fWeightMatrix0to1[0][5] = -0.106311992594925; fWeightMatrix0to1[1][5] = 0.702388046636482; fWeightMatrix0to1[2][5] = -0.488868906337271; fWeightMatrix0to1[3][5] = 1.55231690858054; fWeightMatrix0to1[4][5] = 0.520462686267255; fWeightMatrix0to1[5][5] = 0.659101039781297; fWeightMatrix0to1[6][5] = -0.210383652117425; fWeightMatrix0to1[7][5] = 0.499546986807557; fWeightMatrix0to1[8][5] = 1.3610235834263; fWeightMatrix0to1[9][5] = -0.303518012025355; fWeightMatrix0to1[10][5] = -0.626285115789029; fWeightMatrix0to1[11][5] = -0.112200647520334; fWeightMatrix0to1[12][5] = 0.790538140292042; fWeightMatrix0to1[13][5] = 0.329786289656836; fWeightMatrix0to1[14][5] = -0.00895930156538859; fWeightMatrix0to1[15][5] = 0.692832066471312; fWeightMatrix0to1[16][5] = -1.89107232863635; fWeightMatrix0to1[17][5] = -0.433532956908955; fWeightMatrix0to1[18][5] = -0.638176991355763; fWeightMatrix0to1[19][5] = 0.170783759759132; fWeightMatrix0to1[20][5] = 0.532800068347103; fWeightMatrix0to1[21][5] = 0.788357882860612; fWeightMatrix0to1[22][5] = 1.38864672619208; fWeightMatrix0to1[23][5] = 0.01966898281718; fWeightMatrix0to1[24][5] = -0.152508909250145; fWeightMatrix0to1[25][5] = -0.105552710894676; fWeightMatrix0to1[26][5] = 0.297057071406604; fWeightMatrix0to1[27][5] = -0.21618126894434; fWeightMatrix0to1[28][5] = -0.336720368257623; fWeightMatrix0to1[29][5] = 0.455152775530921; fWeightMatrix0to1[0][6] = -1.9047134945868; fWeightMatrix0to1[1][6] = 1.98180415055598; fWeightMatrix0to1[2][6] = 0.457034470503859; fWeightMatrix0to1[3][6] = -0.21673640560894; fWeightMatrix0to1[4][6] = 0.0830382839902363; fWeightMatrix0to1[5][6] = -2.12459968653983; fWeightMatrix0to1[6][6] = -3.99750088574132; fWeightMatrix0to1[7][6] = -0.409429416104812; fWeightMatrix0to1[8][6] = -0.480786810018753; fWeightMatrix0to1[9][6] = 1.48210076521158; fWeightMatrix0to1[10][6] = -1.56609884354877; fWeightMatrix0to1[11][6] = 1.49389160313934; fWeightMatrix0to1[12][6] = -2.02942548751106; fWeightMatrix0to1[13][6] = 1.18080616207171; fWeightMatrix0to1[14][6] = 0.908374902885163; fWeightMatrix0to1[15][6] = -0.921065259842703; fWeightMatrix0to1[16][6] = -0.0914632643042886; fWeightMatrix0to1[17][6] = 0.994366363138131; fWeightMatrix0to1[18][6] = 1.21138940652163; fWeightMatrix0to1[19][6] = -1.91667991943755; fWeightMatrix0to1[20][6] = -0.103891530729432; fWeightMatrix0to1[21][6] = -0.490339939426253; fWeightMatrix0to1[22][6] = 1.5400880869894; fWeightMatrix0to1[23][6] = 0.474005184859036; fWeightMatrix0to1[24][6] = 8.67980777117721; fWeightMatrix0to1[25][6] = 0.180736715211615; fWeightMatrix0to1[26][6] = -0.152525639592506; fWeightMatrix0to1[27][6] = -5.98369905854054; fWeightMatrix0to1[28][6] = 0.481118240321722; fWeightMatrix0to1[29][6] = 1.06834257370128; fWeightMatrix0to1[0][7] = -0.0935734209995652; fWeightMatrix0to1[1][7] = 0.495643754873533; fWeightMatrix0to1[2][7] = 2.54379612796727; fWeightMatrix0to1[3][7] = 0.579758524676048; fWeightMatrix0to1[4][7] = 9.29607261544861; fWeightMatrix0to1[5][7] = 0.428242967389113; fWeightMatrix0to1[6][7] = -1.02887036982127; fWeightMatrix0to1[7][7] = 4.39626235026095; fWeightMatrix0to1[8][7] = 4.02667949188002; fWeightMatrix0to1[9][7] = -0.0764546715297623; fWeightMatrix0to1[10][7] = -0.23178659556138; fWeightMatrix0to1[11][7] = -0.168943788247887; fWeightMatrix0to1[12][7] = 1.02804932200422; fWeightMatrix0to1[13][7] = -1.6125486281704; fWeightMatrix0to1[14][7] = 0.133611631803307; fWeightMatrix0to1[15][7] = -0.142558909403063; fWeightMatrix0to1[16][7] = 1.19350137940019; fWeightMatrix0to1[17][7] = -2.84131805090386; fWeightMatrix0to1[18][7] = -1.7960356114439; fWeightMatrix0to1[19][7] = 0.100315107095761; fWeightMatrix0to1[20][7] = -1.27632798035951; fWeightMatrix0to1[21][7] = 1.45852014408294; fWeightMatrix0to1[22][7] = 1.04512135624179; fWeightMatrix0to1[23][7] = 0.109935248229515; fWeightMatrix0to1[24][7] = 1.20833904872885; fWeightMatrix0to1[25][7] = -0.625868580202801; fWeightMatrix0to1[26][7] = 2.80607030324882; fWeightMatrix0to1[27][7] = 1.7355585994393; fWeightMatrix0to1[28][7] = -0.260858728623141; fWeightMatrix0to1[29][7] = 0.419377620502916; fWeightMatrix0to1[0][8] = -1.86072468415312; fWeightMatrix0to1[1][8] = -0.266423836641299; fWeightMatrix0to1[2][8] = -5.08593142321098; fWeightMatrix0to1[3][8] = -14.3740131972176; fWeightMatrix0to1[4][8] = -7.30541102146784; fWeightMatrix0to1[5][8] = -1.39375258366456; fWeightMatrix0to1[6][8] = 7.20914012666694; fWeightMatrix0to1[7][8] = 0.459435489210884; fWeightMatrix0to1[8][8] = -0.341781026296121; fWeightMatrix0to1[9][8] = -1.2042042590502; fWeightMatrix0to1[10][8] = 1.72015794165559; fWeightMatrix0to1[11][8] = -1.74476763121575; fWeightMatrix0to1[12][8] = -2.36847070171022; fWeightMatrix0to1[13][8] = 2.95803530524782; fWeightMatrix0to1[14][8] = 1.79027610348635; fWeightMatrix0to1[15][8] = -2.34501902935011; fWeightMatrix0to1[16][8] = -2.14653947632383; fWeightMatrix0to1[17][8] = -1.98731854874117; fWeightMatrix0to1[18][8] = -2.43222053451381; fWeightMatrix0to1[19][8] = -1.4211552292017; fWeightMatrix0to1[20][8] = 4.33012477220529; fWeightMatrix0to1[21][8] = -0.507327238879325; fWeightMatrix0to1[22][8] = 3.27129781730978; fWeightMatrix0to1[23][8] = -1.52398726105762; fWeightMatrix0to1[24][8] = 4.73364937294074; fWeightMatrix0to1[25][8] = -1.19643784188493; fWeightMatrix0to1[26][8] = -14.0088523489396; fWeightMatrix0to1[27][8] = -4.2869695873101; fWeightMatrix0to1[28][8] = 0.754794032092052; fWeightMatrix0to1[29][8] = -0.287987107789336; fWeightMatrix0to1[0][9] = 0.512588771798338; fWeightMatrix0to1[1][9] = -0.210578161329175; fWeightMatrix0to1[2][9] = -2.53590199873927; fWeightMatrix0to1[3][9] = -0.764487992427885; fWeightMatrix0to1[4][9] = -0.28964838126461; fWeightMatrix0to1[5][9] = -0.0164820515353779; fWeightMatrix0to1[6][9] = 2.81894155804081; fWeightMatrix0to1[7][9] = 1.02692588966756; fWeightMatrix0to1[8][9] = -0.85496221025375; fWeightMatrix0to1[9][9] = 0.66167399478149; fWeightMatrix0to1[10][9] = -0.133571247293677; fWeightMatrix0to1[11][9] = -0.329152111432314; fWeightMatrix0to1[12][9] = -2.25504867448602; fWeightMatrix0to1[13][9] = -2.23026262507885; fWeightMatrix0to1[14][9] = -1.48704724046621; fWeightMatrix0to1[15][9] = -1.46014905647467; fWeightMatrix0to1[16][9] = -1.66666541475158; fWeightMatrix0to1[17][9] = 0.846361563636821; fWeightMatrix0to1[18][9] = -4.13831759014528; fWeightMatrix0to1[19][9] = 0.28430094954343; fWeightMatrix0to1[20][9] = -5.45266012430868; fWeightMatrix0to1[21][9] = 0.881519690091238; fWeightMatrix0to1[22][9] = 0.548580815372425; fWeightMatrix0to1[23][9] = -0.431273667227497; fWeightMatrix0to1[24][9] = -0.237543950738663; fWeightMatrix0to1[25][9] = -0.0954027876665291; fWeightMatrix0to1[26][9] = -2.34215531116135; fWeightMatrix0to1[27][9] = 0.314392271668004; fWeightMatrix0to1[28][9] = -1.78965295935763; fWeightMatrix0to1[29][9] = -0.151149016940695; fWeightMatrix0to1[0][10] = -5.03961695570687; fWeightMatrix0to1[1][10] = 1.23994657695686; fWeightMatrix0to1[2][10] = 1.22267371941223; fWeightMatrix0to1[3][10] = -1.20001198216049; fWeightMatrix0to1[4][10] = 0.0572717812623936; fWeightMatrix0to1[5][10] = -2.95079667404038; fWeightMatrix0to1[6][10] = 3.35888210698036; fWeightMatrix0to1[7][10] = -1.84981001635025; fWeightMatrix0to1[8][10] = -0.391812627722969; fWeightMatrix0to1[9][10] = -7.86822047350865; fWeightMatrix0to1[10][10] = -0.462657166040983; fWeightMatrix0to1[11][10] = -1.05478871827801; fWeightMatrix0to1[12][10] = -2.33344569067853; fWeightMatrix0to1[13][10] = 2.42302064190372; fWeightMatrix0to1[14][10] = 0.112844963940864; fWeightMatrix0to1[15][10] = 1.97418511296717; fWeightMatrix0to1[16][10] = 1.71787077243363; fWeightMatrix0to1[17][10] = -0.026455712699777; fWeightMatrix0to1[18][10] = -1.13101859212236; fWeightMatrix0to1[19][10] = 1.01615277144743; fWeightMatrix0to1[20][10] = -0.707246067502805; fWeightMatrix0to1[21][10] = -0.95986004452091; fWeightMatrix0to1[22][10] = -3.65675904600579; fWeightMatrix0to1[23][10] = -5.58481101413507; fWeightMatrix0to1[24][10] = 0.366392407236283; fWeightMatrix0to1[25][10] = 1.07265038870357; fWeightMatrix0to1[26][10] = 1.31094653229308; fWeightMatrix0to1[27][10] = 7.85836683009674; fWeightMatrix0to1[28][10] = -1.63117988590374; fWeightMatrix0to1[29][10] = 3.83489163258423; fWeightMatrix0to1[0][11] = -3.01814168298169; fWeightMatrix0to1[1][11] = 2.19432870345837; fWeightMatrix0to1[2][11] = -2.36633209520008; fWeightMatrix0to1[3][11] = -2.4562035460762; fWeightMatrix0to1[4][11] = 0.34351810880091; fWeightMatrix0to1[5][11] = -0.294946991172139; fWeightMatrix0to1[6][11] = 0.450213634393377; fWeightMatrix0to1[7][11] = 0.904616663503354; fWeightMatrix0to1[8][11] = 0.477044815323106; fWeightMatrix0to1[9][11] = -6.65550597178009; fWeightMatrix0to1[10][11] = -0.247616977105172; fWeightMatrix0to1[11][11] = -0.972256661713957; fWeightMatrix0to1[12][11] = 0.844362788580197; fWeightMatrix0to1[13][11] = -0.743692694220152; fWeightMatrix0to1[14][11] = 0.201925844924278; fWeightMatrix0to1[15][11] = 1.25156810844814; fWeightMatrix0to1[16][11] = -0.641882758816557; fWeightMatrix0to1[17][11] = 1.80859385969246; fWeightMatrix0to1[18][11] = -2.23199371819841; fWeightMatrix0to1[19][11] = -0.224581876471723; fWeightMatrix0to1[20][11] = -0.122132152484535; fWeightMatrix0to1[21][11] = 2.9488289137302; fWeightMatrix0to1[22][11] = -0.599669311780795; fWeightMatrix0to1[23][11] = -0.496045569221298; fWeightMatrix0to1[24][11] = -0.152840573102914; fWeightMatrix0to1[25][11] = -2.16182334777356; fWeightMatrix0to1[26][11] = -0.782009532233591; fWeightMatrix0to1[27][11] = 7.33653376613452; fWeightMatrix0to1[28][11] = -0.711372229174711; fWeightMatrix0to1[29][11] = 0.306010048730521; fWeightMatrix0to1[0][12] = -0.23362508400722; fWeightMatrix0to1[1][12] = -0.632866093103045; fWeightMatrix0to1[2][12] = -1.7747418783353; fWeightMatrix0to1[3][12] = 0.189398782612141; fWeightMatrix0to1[4][12] = 0.176691110068018; fWeightMatrix0to1[5][12] = 0.879987164404706; fWeightMatrix0to1[6][12] = -2.84751228600666; fWeightMatrix0to1[7][12] = -0.83279685730159; fWeightMatrix0to1[8][12] = -0.782033587585976; fWeightMatrix0to1[9][12] = -7.92841699153183; fWeightMatrix0to1[10][12] = 0.131532000651927; fWeightMatrix0to1[11][12] = -1.57750215748393; fWeightMatrix0to1[12][12] = -1.94142394083914; fWeightMatrix0to1[13][12] = 2.12778808137656; fWeightMatrix0to1[14][12] = 0.140720764915203; fWeightMatrix0to1[15][12] = 0.711552393339058; fWeightMatrix0to1[16][12] = -0.0982031880016438; fWeightMatrix0to1[17][12] = 3.06455315348348; fWeightMatrix0to1[18][12] = -0.278828550298839; fWeightMatrix0to1[19][12] = -0.068399470669187; fWeightMatrix0to1[20][12] = -0.0868308449336498; fWeightMatrix0to1[21][12] = 0.192118317445838; fWeightMatrix0to1[22][12] = 0.257530401314479; fWeightMatrix0to1[23][12] = 0.126903153194643; fWeightMatrix0to1[24][12] = -0.139317635973463; fWeightMatrix0to1[25][12] = -0.118043785529559; fWeightMatrix0to1[26][12] = 0.485856794410897; fWeightMatrix0to1[27][12] = 7.25417269470595; fWeightMatrix0to1[28][12] = 1.44553131463808; fWeightMatrix0to1[29][12] = -0.611714261868487; fWeightMatrix0to1[0][13] = 0.0141380158902576; fWeightMatrix0to1[1][13] = 0.552500793654157; fWeightMatrix0to1[2][13] = -5.20770305988191; fWeightMatrix0to1[3][13] = -0.181023059384777; fWeightMatrix0to1[4][13] = 0.00876887763943987; fWeightMatrix0to1[5][13] = -0.668677126384124; fWeightMatrix0to1[6][13] = 0.441510407361911; fWeightMatrix0to1[7][13] = 0.782963949916417; fWeightMatrix0to1[8][13] = 1.28680506786072; fWeightMatrix0to1[9][13] = -0.216905333205289; fWeightMatrix0to1[10][13] = -0.232560819432014; fWeightMatrix0to1[11][13] = 1.55115351330517; fWeightMatrix0to1[12][13] = -0.482159638127617; fWeightMatrix0to1[13][13] = -0.103099035564138; fWeightMatrix0to1[14][13] = 0.0594324711649006; fWeightMatrix0to1[15][13] = -2.01928369885477; fWeightMatrix0to1[16][13] = 0.237586428988298; fWeightMatrix0to1[17][13] = 1.87960760140404; fWeightMatrix0to1[18][13] = 0.885728887214903; fWeightMatrix0to1[19][13] = -0.0722530385994113; fWeightMatrix0to1[20][13] = 0.282386558163078; fWeightMatrix0to1[21][13] = -2.42778969492543; fWeightMatrix0to1[22][13] = 0.0553571374732747; fWeightMatrix0to1[23][13] = 2.47652443728761; fWeightMatrix0to1[24][13] = 0.0796720527114966; fWeightMatrix0to1[25][13] = -0.221379682872322; fWeightMatrix0to1[26][13] = 0.247807699791427; fWeightMatrix0to1[27][13] = 7.61184908915798; fWeightMatrix0to1[28][13] = 3.4078890261002; fWeightMatrix0to1[29][13] = -0.374805994631078; fWeightMatrix0to1[0][14] = -3.0581441539632; fWeightMatrix0to1[1][14] = 1.44158602772809; fWeightMatrix0to1[2][14] = 5.07209752458882; fWeightMatrix0to1[3][14] = -24.7460896982455; fWeightMatrix0to1[4][14] = -6.60961534479525; fWeightMatrix0to1[5][14] = -2.3357769102716; fWeightMatrix0to1[6][14] = -4.59586859206623; fWeightMatrix0to1[7][14] = -1.74544671631121; fWeightMatrix0to1[8][14] = -1.07486001657112; fWeightMatrix0to1[9][14] = 5.88858179182069; fWeightMatrix0to1[10][14] = -1.19022790113629; fWeightMatrix0to1[11][14] = -1.79228333159647; fWeightMatrix0to1[12][14] = -2.98449893599792; fWeightMatrix0to1[13][14] = 0.0946514742885884; fWeightMatrix0to1[14][14] = 2.44709035813112; fWeightMatrix0to1[15][14] = 3.95965440843513; fWeightMatrix0to1[16][14] = 1.65261304968277; fWeightMatrix0to1[17][14] = -2.08065440110168; fWeightMatrix0to1[18][14] = -4.19154727975098; fWeightMatrix0to1[19][14] = -0.322306495487394; fWeightMatrix0to1[20][14] = 3.86757668394775; fWeightMatrix0to1[21][14] = -4.61590365591017; fWeightMatrix0to1[22][14] = -0.687244264565948; fWeightMatrix0to1[23][14] = -0.827047421211646; fWeightMatrix0to1[24][14] = 15.4723056438346; fWeightMatrix0to1[25][14] = 1.15597900433148; fWeightMatrix0to1[26][14] = -10.0649541684172; fWeightMatrix0to1[27][14] = -17.0224772094992; fWeightMatrix0to1[28][14] = -0.349395823886227; fWeightMatrix0to1[29][14] = 1.31833525487893; fWeightMatrix0to1[0][15] = -1.0660094674062; fWeightMatrix0to1[1][15] = 1.52565890969875; fWeightMatrix0to1[2][15] = 1.91796359703574; fWeightMatrix0to1[3][15] = -1.54633583033655; fWeightMatrix0to1[4][15] = 0.607586915136843; fWeightMatrix0to1[5][15] = -3.45291039286874; fWeightMatrix0to1[6][15] = 4.3750350353597; fWeightMatrix0to1[7][15] = -2.00961050650816; fWeightMatrix0to1[8][15] = 2.29330510984558; fWeightMatrix0to1[9][15] = -5.63549686722541; fWeightMatrix0to1[10][15] = -1.87598471656773; fWeightMatrix0to1[11][15] = 0.0897196531185778; fWeightMatrix0to1[12][15] = -0.901817956068363; fWeightMatrix0to1[13][15] = -0.0494315639063577; fWeightMatrix0to1[14][15] = 0.984156286829597; fWeightMatrix0to1[15][15] = 3.17356985429923; fWeightMatrix0to1[16][15] = -0.862698056818047; fWeightMatrix0to1[17][15] = -1.55318304751547; fWeightMatrix0to1[18][15] = -2.80440614107764; fWeightMatrix0to1[19][15] = 1.95188265625903; fWeightMatrix0to1[20][15] = 1.64512329969589; fWeightMatrix0to1[21][15] = -1.35179315293231; fWeightMatrix0to1[22][15] = -6.58474365755412; fWeightMatrix0to1[23][15] = -6.22205050774291; fWeightMatrix0to1[24][15] = 2.67536686249646; fWeightMatrix0to1[25][15] = -1.98946721004968; fWeightMatrix0to1[26][15] = -1.41400351885421; fWeightMatrix0to1[27][15] = -9.35579399460316; fWeightMatrix0to1[28][15] = 0.881551486899892; fWeightMatrix0to1[29][15] = 4.61338080116764; fWeightMatrix0to1[0][16] = 3.51123242846967; fWeightMatrix0to1[1][16] = -2.5773463219633; fWeightMatrix0to1[2][16] = 4.90569989151284; fWeightMatrix0to1[3][16] = 12.0905581669626; fWeightMatrix0to1[4][16] = 1.68587437052026; fWeightMatrix0to1[5][16] = 3.09777159478095; fWeightMatrix0to1[6][16] = -11.4709135773657; fWeightMatrix0to1[7][16] = -1.291835948486; fWeightMatrix0to1[8][16] = 1.54250334186185; fWeightMatrix0to1[9][16] = 7.40901388027443; fWeightMatrix0to1[10][16] = 1.10567090144232; fWeightMatrix0to1[11][16] = -1.44494807026752; fWeightMatrix0to1[12][16] = -2.85960767480138; fWeightMatrix0to1[13][16] = -2.40861592654783; fWeightMatrix0to1[14][16] = -1.07095201060353; fWeightMatrix0to1[15][16] = -8.82532176593085; fWeightMatrix0to1[16][16] = 0.621773347212223; fWeightMatrix0to1[17][16] = -2.95109079483776; fWeightMatrix0to1[18][16] = 6.15753886664464; fWeightMatrix0to1[19][16] = 0.464889045547992; fWeightMatrix0to1[20][16] = -6.24603561162203; fWeightMatrix0to1[21][16] = 5.18712818013872; fWeightMatrix0to1[22][16] = 14.2201263351342; fWeightMatrix0to1[23][16] = 8.32879581333739; fWeightMatrix0to1[24][16] = -3.22842737166091; fWeightMatrix0to1[25][16] = 0.205538763866829; fWeightMatrix0to1[26][16] = 4.93831435126524; fWeightMatrix0to1[27][16] = -22.1939292948057; fWeightMatrix0to1[28][16] = 3.0363696943294; fWeightMatrix0to1[29][16] = -2.98514750784326; fWeightMatrix0to1[0][17] = 5.0993095597314; fWeightMatrix0to1[1][17] = -1.83555568187445; fWeightMatrix0to1[2][17] = -2.0081661021838; fWeightMatrix0to1[3][17] = 7.47824224302378; fWeightMatrix0to1[4][17] = 1.62255774971109; fWeightMatrix0to1[5][17] = 1.78089461356193; fWeightMatrix0to1[6][17] = -5.6522029839675; fWeightMatrix0to1[7][17] = 0.725774302759315; fWeightMatrix0to1[8][17] = 0.671577122232335; fWeightMatrix0to1[9][17] = 5.28021509254637; fWeightMatrix0to1[10][17] = 1.22310463533398; fWeightMatrix0to1[11][17] = -1.36710757415374; fWeightMatrix0to1[12][17] = 0.344384023043625; fWeightMatrix0to1[13][17] = -1.38547214593295; fWeightMatrix0to1[14][17] = 0.127895970062654; fWeightMatrix0to1[15][17] = -2.84661460278234; fWeightMatrix0to1[16][17] = 0.610430250168552; fWeightMatrix0to1[17][17] = 2.44519487130447; fWeightMatrix0to1[18][17] = 7.31321159749165; fWeightMatrix0to1[19][17] = -1.6155202296551; fWeightMatrix0to1[20][17] = -1.13306465123922; fWeightMatrix0to1[21][17] = -0.788801421796658; fWeightMatrix0to1[22][17] = 12.5503440918283; fWeightMatrix0to1[23][17] = 8.99566143466436; fWeightMatrix0to1[24][17] = -2.6701655486138; fWeightMatrix0to1[25][17] = 0.264659896377227; fWeightMatrix0to1[26][17] = 3.8838343171654; fWeightMatrix0to1[27][17] = -7.53576827795158; fWeightMatrix0to1[28][17] = -0.289517845674101; fWeightMatrix0to1[29][17] = -2.81104787025369; fWeightMatrix0to1[0][18] = 4.36882667911827; fWeightMatrix0to1[1][18] = -1.7923785225412; fWeightMatrix0to1[2][18] = 0.0515695314176773; fWeightMatrix0to1[3][18] = 9.98901389760801; fWeightMatrix0to1[4][18] = 2.46794931084212; fWeightMatrix0to1[5][18] = 4.02507285152865; fWeightMatrix0to1[6][18] = -11.0792829599176; fWeightMatrix0to1[7][18] = -1.41390859437782; fWeightMatrix0to1[8][18] = 2.24915522101663; fWeightMatrix0to1[9][18] = 8.60683830800976; fWeightMatrix0to1[10][18] = 1.70825042188161; fWeightMatrix0to1[11][18] = 1.05093780454037; fWeightMatrix0to1[12][18] = -2.30017999118817; fWeightMatrix0to1[13][18] = -0.500210539502977; fWeightMatrix0to1[14][18] = -0.977792192363342; fWeightMatrix0to1[15][18] = -7.41171332652881; fWeightMatrix0to1[16][18] = -0.778295033377649; fWeightMatrix0to1[17][18] = -2.61845521073965; fWeightMatrix0to1[18][18] = 9.08955524395929; fWeightMatrix0to1[19][18] = -1.69430117567727; fWeightMatrix0to1[20][18] = 0.616508141308924; fWeightMatrix0to1[21][18] = 2.90322573693357; fWeightMatrix0to1[22][18] = 17.3953575384447; fWeightMatrix0to1[23][18] = 12.716236376036; fWeightMatrix0to1[24][18] = -3.09087002741501; fWeightMatrix0to1[25][18] = 1.52826177909364; fWeightMatrix0to1[26][18] = 4.53092137860756; fWeightMatrix0to1[27][18] = -14.0291981164205; fWeightMatrix0to1[28][18] = -0.869007752251791; fWeightMatrix0to1[29][18] = -3.04133962855475; fWeightMatrix0to1[0][19] = 2.04900978696862; fWeightMatrix0to1[1][19] = 0.2317069892651; fWeightMatrix0to1[2][19] = 1.4251586769561; fWeightMatrix0to1[3][19] = 2.72380682090022; fWeightMatrix0to1[4][19] = 0.710072062775378; fWeightMatrix0to1[5][19] = -1.19149131453949; fWeightMatrix0to1[6][19] = 4.73353547640529; fWeightMatrix0to1[7][19] = -2.01262447536442; fWeightMatrix0to1[8][19] = 1.75910442383292; fWeightMatrix0to1[9][19] = -3.18420826376313; fWeightMatrix0to1[10][19] = 0.447752361667443; fWeightMatrix0to1[11][19] = -0.118682974577358; fWeightMatrix0to1[12][19] = 0.0727297912462197; fWeightMatrix0to1[13][19] = -0.736891938413609; fWeightMatrix0to1[14][19] = 0.810151457821372; fWeightMatrix0to1[15][19] = -2.3585555938206; fWeightMatrix0to1[16][19] = -1.07555470216018; fWeightMatrix0to1[17][19] = 0.427988627736771; fWeightMatrix0to1[18][19] = -3.12446337520416; fWeightMatrix0to1[19][19] = 1.03549208081867; fWeightMatrix0to1[20][19] = -2.09842916568795; fWeightMatrix0to1[21][19] = 1.17142107759131; fWeightMatrix0to1[22][19] = -5.1209074585513; fWeightMatrix0to1[23][19] = 1.15532186355421; fWeightMatrix0to1[24][19] = -5.28948370231897; fWeightMatrix0to1[25][19] = -1.11453324863447; fWeightMatrix0to1[26][19] = 2.07435852283045; fWeightMatrix0to1[27][19] = -0.948225388927277; fWeightMatrix0to1[28][19] = -0.770109316154111; fWeightMatrix0to1[29][19] = -1.07561610504465; fWeightMatrix0to1[0][20] = 1.44928905589437; fWeightMatrix0to1[1][20] = 2.04863786543236; fWeightMatrix0to1[2][20] = 2.44030866324661; fWeightMatrix0to1[3][20] = -2.67017166007631; fWeightMatrix0to1[4][20] = -0.866514491077537; fWeightMatrix0to1[5][20] = 0.0967322394741751; fWeightMatrix0to1[6][20] = 5.72946734256307; fWeightMatrix0to1[7][20] = -1.59602381995624; fWeightMatrix0to1[8][20] = -0.366501635333157; fWeightMatrix0to1[9][20] = -1.89831024039291; fWeightMatrix0to1[10][20] = -0.135410296568558; fWeightMatrix0to1[11][20] = 1.71466612678346; fWeightMatrix0to1[12][20] = -3.06097836093948; fWeightMatrix0to1[13][20] = 1.16782576212385; fWeightMatrix0to1[14][20] = -0.645449440493515; fWeightMatrix0to1[15][20] = 1.52837305215082; fWeightMatrix0to1[16][20] = -0.50164814999208; fWeightMatrix0to1[17][20] = 0.928647007632165; fWeightMatrix0to1[18][20] = -3.9759109202071; fWeightMatrix0to1[19][20] = -0.871154704702352; fWeightMatrix0to1[20][20] = 2.09541665491415; fWeightMatrix0to1[21][20] = -0.154338882385077; fWeightMatrix0to1[22][20] = -4.32971182337898; fWeightMatrix0to1[23][20] = -0.880228165694102; fWeightMatrix0to1[24][20] = -3.557240201496; fWeightMatrix0to1[25][20] = -1.46520235634195; fWeightMatrix0to1[26][20] = -3.1523422238352; fWeightMatrix0to1[27][20] = 0.954886637307346; fWeightMatrix0to1[28][20] = -0.752055632540123; fWeightMatrix0to1[29][20] = 0.296851016025796; fWeightMatrix0to1[0][21] = 1.56458223110736; fWeightMatrix0to1[1][21] = -2.24294239961359; fWeightMatrix0to1[2][21] = 1.61772984887162; fWeightMatrix0to1[3][21] = -5.75085672853227; fWeightMatrix0to1[4][21] = -2.27012173911829; fWeightMatrix0to1[5][21] = 1.61759130667294; fWeightMatrix0to1[6][21] = 14.0542490278744; fWeightMatrix0to1[7][21] = -0.579425244200206; fWeightMatrix0to1[8][21] = 0.231163237110923; fWeightMatrix0to1[9][21] = -17.8869136541531; fWeightMatrix0to1[10][21] = -0.067288464254082; fWeightMatrix0to1[11][21] = -2.28059548401041; fWeightMatrix0to1[12][21] = 17.8973173618442; fWeightMatrix0to1[13][21] = 1.39665278535899; fWeightMatrix0to1[14][21] = -0.423478272469952; fWeightMatrix0to1[15][21] = -7.43653587190324; fWeightMatrix0to1[16][21] = -2.7149588057405; fWeightMatrix0to1[17][21] = 0.589917497266736; fWeightMatrix0to1[18][21] = -0.0374704506998638; fWeightMatrix0to1[19][21] = -0.0049998513459763; fWeightMatrix0to1[20][21] = 5.76209039929605; fWeightMatrix0to1[21][21] = -0.117826478130041; fWeightMatrix0to1[22][21] = 0.568183104262944; fWeightMatrix0to1[23][21] = -5.92185149923884; fWeightMatrix0to1[24][21] = 3.12710514628626; fWeightMatrix0to1[25][21] = 1.09752377871676; fWeightMatrix0to1[26][21] = 12.8335403240927; fWeightMatrix0to1[27][21] = 1.41276156063789; fWeightMatrix0to1[28][21] = 1.35977537715358; fWeightMatrix0to1[29][21] = -0.409772266317793; fWeightMatrix0to1[0][22] = -2.29362378792465; fWeightMatrix0to1[1][22] = 2.06785298065971; fWeightMatrix0to1[2][22] = 1.09568657488936; fWeightMatrix0to1[3][22] = -1.20208808339669; fWeightMatrix0to1[4][22] = 1.85576175330089; fWeightMatrix0to1[5][22] = -2.73396750673895; fWeightMatrix0to1[6][22] = 4.62297093682221; fWeightMatrix0to1[7][22] = 1.24351170583831; fWeightMatrix0to1[8][22] = 2.06431743075089; fWeightMatrix0to1[9][22] = -0.870414309027102; fWeightMatrix0to1[10][22] = -1.9843615754289; fWeightMatrix0to1[11][22] = -1.82356685731123; fWeightMatrix0to1[12][22] = -0.0178720389816418; fWeightMatrix0to1[13][22] = 0.134449317838758; fWeightMatrix0to1[14][22] = 0.987248229952357; fWeightMatrix0to1[15][22] = 0.81283289119225; fWeightMatrix0to1[16][22] = 1.76176167796292; fWeightMatrix0to1[17][22] = -0.701534037335159; fWeightMatrix0to1[18][22] = -0.166166927981403; fWeightMatrix0to1[19][22] = -1.54670044703372; fWeightMatrix0to1[20][22] = 3.3953309982481; fWeightMatrix0to1[21][22] = -2.12921088355243; fWeightMatrix0to1[22][22] = -2.40280083318766; fWeightMatrix0to1[23][22] = -5.62049527893164; fWeightMatrix0to1[24][22] = 1.67011192773834; fWeightMatrix0to1[25][22] = 0.688743691045279; fWeightMatrix0to1[26][22] = 4.39005585670473; fWeightMatrix0to1[27][22] = 5.65051785588739; fWeightMatrix0to1[28][22] = -3.11052125961379; fWeightMatrix0to1[29][22] = -0.589233429555072; // weight matrix from layer 1 to 2 fWeightMatrix1to2[0][0] = -0.666358738354368; fWeightMatrix1to2[0][1] = -0.255481470321695; fWeightMatrix1to2[0][2] = 0.952187514799571; fWeightMatrix1to2[0][3] = 1.4491926450534; fWeightMatrix1to2[0][4] = 1.11933120193319; fWeightMatrix1to2[0][5] = 0.327101749732718; fWeightMatrix1to2[0][6] = -0.386914015722547; fWeightMatrix1to2[0][7] = 1.26586116697436; fWeightMatrix1to2[0][8] = -1.5540107237423; fWeightMatrix1to2[0][9] = 0.562463710345795; fWeightMatrix1to2[0][10] = 0.778027370548551; fWeightMatrix1to2[0][11] = 2.20868662846868; fWeightMatrix1to2[0][12] = 1.16410935698863; fWeightMatrix1to2[0][13] = -0.332011458509787; fWeightMatrix1to2[0][14] = 0.471686442450511; fWeightMatrix1to2[0][15] = -0.688938256258023; fWeightMatrix1to2[0][16] = -1.14925500112052; fWeightMatrix1to2[0][17] = -0.274201217588672; fWeightMatrix1to2[0][18] = 0.239563112189819; fWeightMatrix1to2[0][19] = -0.180884019205791; fWeightMatrix1to2[0][20] = -1.37498245427997; fWeightMatrix1to2[0][21] = 1.20988174943612; fWeightMatrix1to2[0][22] = 0.476374257914921; fWeightMatrix1to2[0][23] = 0.885129334803602; fWeightMatrix1to2[0][24] = -1.1269792238914; fWeightMatrix1to2[0][25] = 0.240990434734585; fWeightMatrix1to2[0][26] = 0.418728556167388; fWeightMatrix1to2[0][27] = -1.72936317630694; fWeightMatrix1to2[0][28] = 2.03817485439095; fWeightMatrix1to2[0][29] = -0.309919381093941; fWeightMatrix1to2[0][30] = -2.40775044958683; } inline double ReadKaon_Upstream_TMVA::GetMvaValue__( const std::vector& inputValues ) const { if (inputValues.size() != (unsigned int)fLayerSize[0]-1) { std::cout << "Input vector needs to be of size " << fLayerSize[0]-1 << std::endl; return 0; } for (int l=0; l& inputValues ) const { // classifier response value double retval = 0; // classifier response, sanity check first if (!IsStatusClean()) { std::cout << "Problem in class \"" << fClassName << "\": cannot return classifier response" << " because status is dirty" << std::endl; retval = 0; } else { if (IsNormalised()) { // normalise variables std::vector iV; int ivar = 0; for (std::vector::const_iterator varIt = inputValues.begin(); varIt != inputValues.end(); varIt++, ivar++) { iV.push_back(NormVariable( *varIt, fVmin[ivar], fVmax[ivar] )); } Transform( iV, -1 ); retval = GetMvaValue__( iV ); } else { std::vector iV; int ivar = 0; for (std::vector::const_iterator varIt = inputValues.begin(); varIt != inputValues.end(); varIt++, ivar++) { iV.push_back(*varIt); } Transform( iV, -1 ); retval = GetMvaValue__( iV ); } } return retval; } //_______________________________________________________________________ inline void ReadKaon_Upstream_TMVA::InitTransform_1() { // Normalization transformation, initialisation fMin_1[0][0] = 172.490005493; fMax_1[0][0] = 4970293.5; fMin_1[1][0] = 336.970001221; fMax_1[1][0] = 2547220.5; fMin_1[2][0] = 172.490005493; fMax_1[2][0] = 4970293.5; fMin_1[0][1] = 0.832938909531; fMax_1[0][1] = 995273.875; fMin_1[1][1] = 12.2795991898; fMax_1[1][1] = 372942.34375; fMin_1[2][1] = 0.832938909531; fMax_1[2][1] = 995273.875; fMin_1[0][2] = 0.00302399252541; fMax_1[0][2] = 2.999573946; fMin_1[1][2] = 0.00486037321389; fMax_1[1][2] = 2.99690961838; fMin_1[2][2] = 0.00302399252541; fMax_1[2][2] = 2.999573946; fMin_1[0][3] = 4; fMax_1[0][3] = 28; fMin_1[1][3] = 4; fMax_1[1][3] = 24; fMin_1[2][3] = 4; fMax_1[2][3] = 28; fMin_1[0][4] = -99.6241531372; fMax_1[0][4] = -0.319228202105; fMin_1[1][4] = -38.5328483582; fMax_1[1][4] = -0.375142008066; fMin_1[2][4] = -99.6241531372; fMax_1[2][4] = -0.319228202105; fMin_1[0][5] = 0.0317582078278; fMax_1[0][5] = 1; fMin_1[1][5] = 0.0595433376729; fMax_1[1][5] = 1; fMin_1[2][5] = 0.0317582078278; fMax_1[2][5] = 1; fMin_1[0][6] = -999; fMax_1[0][6] = 4999.73632812; fMin_1[1][6] = -999; fMax_1[1][6] = 4964.65527344; fMin_1[2][6] = -999; fMax_1[2][6] = 4999.73632812; fMin_1[0][7] = 2.50487555604e-05; fMax_1[0][7] = 51.0802001953; fMin_1[1][7] = 7.07881335984e-05; fMax_1[1][7] = 50.0462150574; fMin_1[2][7] = 2.50487555604e-05; fMax_1[2][7] = 51.0802001953; fMin_1[0][8] = 1; fMax_1[0][8] = 24; fMin_1[1][8] = 1; fMax_1[1][8] = 21; fMin_1[2][8] = 1; fMax_1[2][8] = 24; fMin_1[0][9] = 0; fMax_1[0][9] = 1; fMin_1[1][9] = 0; fMax_1[1][9] = 1; fMin_1[2][9] = 0; fMax_1[2][9] = 1; fMin_1[0][10] = 0; fMax_1[0][10] = 1; fMin_1[1][10] = 0; fMax_1[1][10] = 1; fMin_1[2][10] = 0; fMax_1[2][10] = 1; fMin_1[0][11] = 0; fMax_1[0][11] = 1; fMin_1[1][11] = 0; fMax_1[1][11] = 1; fMin_1[2][11] = 0; fMax_1[2][11] = 1; fMin_1[0][12] = 0; fMax_1[0][12] = 1; fMin_1[1][12] = 0; fMax_1[1][12] = 1; fMin_1[2][12] = 0; fMax_1[2][12] = 1; fMin_1[0][13] = 0; fMax_1[0][13] = 1; fMin_1[1][13] = 0; fMax_1[1][13] = 1; fMin_1[2][13] = 0; fMax_1[2][13] = 1; fMin_1[0][14] = -999; fMax_1[0][14] = 107.511299133; fMin_1[1][14] = -999; fMax_1[1][14] = 50.3508987427; fMin_1[2][14] = -999; fMax_1[2][14] = 107.511299133; fMin_1[0][15] = -999; fMax_1[0][15] = 69.573600769; fMin_1[1][15] = -999; fMax_1[1][15] = 25.4330997467; fMin_1[2][15] = -999; fMax_1[2][15] = 69.573600769; fMin_1[0][16] = -999; fMax_1[0][16] = 96.6315994263; fMin_1[1][16] = -999; fMax_1[1][16] = 99.5278015137; fMin_1[2][16] = -999; fMax_1[2][16] = 99.5278015137; fMin_1[0][17] = -999; fMax_1[0][17] = 62.6166000366; fMin_1[1][17] = -999; fMax_1[1][17] = 50.4168014526; fMin_1[2][17] = -999; fMax_1[2][17] = 62.6166000366; fMin_1[0][18] = -999; fMax_1[0][18] = 47.8530006409; fMin_1[1][18] = -999; fMax_1[1][18] = 46.5424995422; fMin_1[2][18] = -999; fMax_1[2][18] = 47.8530006409; fMin_1[0][19] = 0; fMax_1[0][19] = 1; fMin_1[1][19] = 0; fMax_1[1][19] = 1; fMin_1[2][19] = 0; fMax_1[2][19] = 1; fMin_1[0][20] = -999; fMax_1[0][20] = 4.79148387909; fMin_1[1][20] = -999; fMax_1[1][20] = 4.49353694916; fMin_1[2][20] = -999; fMax_1[2][20] = 4.79148387909; fMin_1[0][21] = 0.486891388893; fMax_1[0][21] = 5.4943819046; fMin_1[1][21] = 0.582865178585; fMax_1[1][21] = 2.23033714294; fMin_1[2][21] = 0.486891388893; fMax_1[2][21] = 5.4943819046; } //_______________________________________________________________________ inline void ReadKaon_Upstream_TMVA::Transform_1( std::vector& iv, int cls) const { // Normalization transformation if (cls < 0 || cls > 2) { if (2 > 1 ) cls = 2; else cls = 2; } const int nVar = 22; // get indices of used variables // define the indices of the variables which are transformed by this transformation std::vector indicesGet; std::vector indicesPut; indicesGet.push_back( 0); indicesGet.push_back( 1); indicesGet.push_back( 2); indicesGet.push_back( 3); indicesGet.push_back( 4); indicesGet.push_back( 5); indicesGet.push_back( 6); indicesGet.push_back( 7); indicesGet.push_back( 8); indicesGet.push_back( 9); indicesGet.push_back( 10); indicesGet.push_back( 11); indicesGet.push_back( 12); indicesGet.push_back( 13); indicesGet.push_back( 14); indicesGet.push_back( 15); indicesGet.push_back( 16); indicesGet.push_back( 17); indicesGet.push_back( 18); indicesGet.push_back( 19); indicesGet.push_back( 20); indicesGet.push_back( 21); indicesPut.push_back( 0); indicesPut.push_back( 1); indicesPut.push_back( 2); indicesPut.push_back( 3); indicesPut.push_back( 4); indicesPut.push_back( 5); indicesPut.push_back( 6); indicesPut.push_back( 7); indicesPut.push_back( 8); indicesPut.push_back( 9); indicesPut.push_back( 10); indicesPut.push_back( 11); indicesPut.push_back( 12); indicesPut.push_back( 13); indicesPut.push_back( 14); indicesPut.push_back( 15); indicesPut.push_back( 16); indicesPut.push_back( 17); indicesPut.push_back( 18); indicesPut.push_back( 19); indicesPut.push_back( 20); indicesPut.push_back( 21); std::vector dv(nVar); for (int ivar=0; ivar& iv, int sigOrBgd ) const { Transform_1( iv, sigOrBgd ); }