diff --git a/.gitignore b/.gitignore index 6216cdc..e37d558 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,14 @@ __pycache__ # downloads and envs tuner_env miniconda.sh + +# workproducts +arc1_data +arc2_data +electron_training +neural_net_training +nn_electron_training +nn_trackinglosses_training +outputs_nn +test + diff --git a/electron_training/result_1_B/matching.hpp b/electron_training/result_1_B/matching.hpp deleted file mode 100644 index 06935ee..0000000 --- a/electron_training/result_1_B/matching.hpp +++ /dev/null @@ -1,29 +0,0 @@ -const auto fMin = std::array{ - {5.23340640939e-05, 1.25644373838e-06, 4.38690185547e-05, 1.90734863281e-06, - 4.71249222755e-07, 1.02445483208e-08}}; -const auto fMax = std::array{{29.9998512268, 0.423314958811, - 499.603149414, 499.198486328, - 1.36927723885, 0.149392709136}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{0.929669659785881, -9.48043077362455, 10.1715051193127, 2.47667373712576, - -3.58083018257721, 6.45095796912324, 8.45870339869703}, - {-0.296042356038334, -9.1896008367615, 5.56711502257143, 17.4486821475108, - -6.40008536792669, -6.6713822283154, 1.07455239812445}, - {0.420413986806413, -1.15751488304315, 3.30243747788701, -1.36392382054269, - -0.847138226467055, 4.98479154537921, 4.24441164005755}, - {1.5738915069293, -4.98081352303952, 5.8421155864956, -1.57711106103044, - -0.189458896895154, -3.65417561650535, -4.22419444699164}, - {-6.66276674820396, 5.45480166931729, -8.03806088012418, - -0.789852234746539, -1.43435711944003, -4.01961155923308, - -14.0834092140066}, - {0.817584255737394, 9.67890702465868, -1.76653199291165, -2.6610635109901, - 2.51931906192722, -6.76406907184251, 0.968242938156462}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.88483370881801, 0.775741479584514, 0.214825824623319, 1.61128446188167, - 1.00658692249476, 0.0826679173714486, -1.12220164589225}}}; -const auto fWeightMatrix1to2 = std::array{ - {-1.73457594569937, -1.67600294506992, 1.88966364345853, 1.18946138791835, - 2.47648351789816, -1.24466771533151, -0.315569517202675, 0.530105674163753, - 3.05297057699491}}; diff --git a/electron_training/result_6_B/matching.hpp b/electron_training/result_6_B/matching.hpp deleted file mode 100644 index c9f1ac5..0000000 --- a/electron_training/result_6_B/matching.hpp +++ /dev/null @@ -1,64 +0,0 @@ -const auto fMin = std::array{ - {5.23340640939e-05, 1.25644373838e-06, 4.38690185547e-05, 1.90734863281e-06, - 4.71249222755e-07, 1.02445483208e-08}}; -const auto fMax = std::array{{29.9998512268, 0.423314958811, - 499.603149414, 499.198486328, - 1.36927723885, 0.149392709136}}; -const auto fWeightMatrix0to1 = std::array, 12>{ - {{1.10989365682333, -0.400262341428031, 0.703648655520529, - -10.0488008412327, 2.24766437644792, -1.51561555364132, - -8.19659986380238}, - {0.168629698489816, -0.235222573459749, -2.76479490713939, - 4.70755796881564, 0.422213317504099, -2.15975111024372, - -0.0413862540873273}, - {-1.20008716401126, 5.98181458205593, 1.97530107863487, 0.951399694875291, - 3.21037292600378, -1.88398815839093, 6.00348890738369}, - {1.59529309197505, 1.03059763992094, -1.28481350389235, 1.77750648317864, - 1.66698562433363, 0.560549629043751, -0.646784291824832}, - {-10.5582477166915, 1.83421764351223, -4.28308784555713, 2.73941897264262, - -1.09755306824252, -2.76940523423182, -13.1324718956297}, - {-1.37726196850241, 1.6684137449588, 0.234563275112263, 0.889405325109031, - 1.24137671714337, -0.240977390196439, -2.00650503697469}, - {-0.0917280130282914, -6.60741151288151, 4.280141752342, 15.8869539382336, - -4.40078451860264, -11.63552941888, -2.23848664347195}, - {1.72810153197739, 1.81133984072885, 1.53310134343984, 1.53430340675608, - -0.880657747996044, -1.01002428097867, 0.327772484279249}, - {0.450749853210101, -10.427522498238, 10.1106981167422, 2.50275117049706, - -3.96268925724634, 7.80062171624392, 8.13617432588314}, - {-0.899044020226273, 4.04967555584356, -0.184515937391125, - 0.605936074234893, 2.11314319461295, 1.08529920345605, 5.198893026323}, - {-4.62555398916988, 2.56629651777862, -5.19280819069721, 0.979353155613104, - 0.362510005701342, -0.387373325452426, -4.51347844411621}, - {0.43181068852013, -1.12870359395317, -5.59123177894442, -2.78683035529746, - -0.119944490657953, -4.22887938179223, -12.1803091805475}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-1.67244648790854, 2.58776560386115, 1.05350530586878, 1.12701723441192, - 0.309436118156294, -1.41275414644542, -2.14966008423622, - -0.311448006165657, 0.485736777594352, -2.55661662619223, - 0.96538530983999, -3.26795296807062, 0.988977174263089}, - {-0.381498099253961, -0.549200770730038, -0.893363207717135, - 0.119028293459292, 5.13224785809454, 1.77747846865563, -1.7072596641081, - 0.0171890434060519, -0.612613204335275, 1.49948177816202, - 0.230169849172349, -0.177176079772119, 3.44507835207359}, - {-1.20063578327457, 1.63342807940049, -2.53476436290309, -1.5305832886762, - -3.05946450928802, 0.360300407115462, 0.625027143539907, - -1.77680947527138, -0.585041547463601, -2.08759735767147, - 0.925138221824412, -1.24854533226616, 2.0502994330023}, - {-1.36610982082625, -1.68603095079278, 1.93369535731656, 2.38299921699452, - 0.133785811268423, -0.941203171967918, 2.97186174778511, 1.15122509873234, - 0.135596009829977, -0.62708569660126, -0.024554433907907, - -0.555962579400608, 0.581541394004209}, - {0.349027399089585, 0.0804040832557828, -0.454499280002817, - -1.17318303808809, 0.292596492448844, 0.801032353759436, - 0.760037949875418, 0.22815167017283, 0.315794043406641, - -0.969493545848479, -1.03825660899029, 1.94713626859943, - -2.1389717446658}, - {-1.88715819596171, 0.277545438410592, -1.68976255449697, - -1.02675310905861, 0.226775035076775, -1.07682401936394, - -0.52218117899507, -1.8253408434363, -1.94344181953331, - -0.444301427484403, -0.343612121595328, -0.177028285618245, - -0.648349320508864}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.844891680754208, 0.967426474103726, 0.960945561425279, - -0.80019723500702, -0.545585546409515, 0.3310030293198, - -2.29115821922715}}; diff --git a/electron_training/result_B/matching.hpp b/electron_training/result_B/matching.hpp deleted file mode 100644 index 91de9ec..0000000 --- a/electron_training/result_B/matching.hpp +++ /dev/null @@ -1,46 +0,0 @@ -const auto fMin = std::array{ - {5.23340640939e-05, 1.25644373838e-06, 4.38690185547e-05, 1.90734863281e-06, - 4.71249222755e-07, 1.02445483208e-08}}; -const auto fMax = std::array{{29.9998512268, 0.423314958811, - 499.603149414, 499.198486328, - 1.36927723885, 0.149392709136}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{2.57491955820114, -0.0666351688682796, -3.61648923844569, - -8.75747553035328, 0.639385257730277, 10.5129455348455, 1.22080436670381}, - {-0.839608322851951, -11.7978768103865, 7.24641653369801, 6.63011679030303, - -5.38496571510758, 8.30851076817151, 6.69929919816849}, - {-0.17630967374162, -3.75940580347415, 2.79889282638498, 16.7594894489781, - -3.10824840396248, -8.80345141844331, 3.9130937162361}, - {0.19092161829683, -3.60963385297311, 11.9569759734039, 2.10283509156704, - -2.39101707207304, -1.89478969715624, 7.1165950679585}, - {-3.02014034882022, 2.24487587036827, -8.90770349935038, -4.05040202238185, - -1.36813505779681, 9.14630004607903, -3.34618937758505}, - {0.459674275912345, 8.12262886393506, 0.45018729587823, -1.11787227534737, - 2.8096254085019, -0.481877520480143, 7.78611195142966}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.8337752666274, 0.841018614520629, 0.272259015077869, 1.63031107650108, - 0.987469718084883, 0.0999586200250234, -1.13752770875358}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-0.0482883134570299, 0.46403980819019, 2.73665245864103, - 0.245936163361116, -0.472281505442891, 0.307317690224363, - 1.63438201788813, -1.44341215808597, -0.706584289774802}, - {-3.91297125261727, 0.681495111998297, -3.37155822025346, - -0.966831590652637, 2.65933759421044, -0.661174079209186, - -1.61531096417457, 0.0991696473049824, -4.51523108840722}, - {0.273186686950073, 1.14087516410812, 0.653137998266985, - -0.158819017566112, 0.692268877136322, -8.04912219449925, - -0.825543426908553, -1.92132463640843, -2.47870678055356}, - {0.180394111293318, -0.414717927339332, -1.44129610325848, - -1.86532392228702, -0.806791495297171, -1.73521704274739, - 1.61348068527877, -1.66550797875971, -0.927403017991324}, - {-0.790929106392951, -0.0886126272927867, 0.035682993929273, - -0.602424006939674, 0.334723143379322, 2.22416454606917, - -0.848898627795279, 0.743857937018801, -0.291005217785123}, - {-0.681492967014666, -0.368602644948209, 1.52403393057559, - -1.06212309361209, 0.881062654352226, 0.690165878288055, - -1.52203810494393, 1.63217238068739, 2.76628946224152}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.692725959420674, 1.18375950895893, -1.13672009847538, 0.407788542121486, - -0.606866044733726, 0.927912329413981, -0.887231003739174}}; diff --git a/electron_training/result_B_new/matching.hpp b/electron_training/result_B_new/matching.hpp deleted file mode 100644 index 88785cd..0000000 --- a/electron_training/result_B_new/matching.hpp +++ /dev/null @@ -1,46 +0,0 @@ -const auto fMin = std::array{ - {5.23340640939e-05, 1.25644373838e-06, 4.38690185547e-05, 1.90734863281e-06, - 4.71249222755e-07, 1.02445483208e-08}}; -const auto fMax = std::array{{29.9998512268, 0.423314958811, - 499.603149414, 499.198486328, - 1.36927723885, 0.149392709136}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{1.10509804069795, -1.06659111536073, -1.23304417235305, -9.91292225685574, - 1.00704133279785, 9.53100159268659, -0.793174916006915}, - {-0.776689382841375, -10.4158785961964, 8.69653776953056, 6.84445159227452, - -6.97657257253127, 6.63766574651487, 7.11596889066532}, - {-0.381785768656306, -5.11642852466812, 3.59950933567307, 16.792587073888, - -3.83635033235741, -7.72761443893271, 3.58572441569503}, - {1.04413334688141, -3.78312149763691, 9.83287128246016, 1.4778662654192, - -2.0766161850877, 1.08288357164774, 8.02887163423859}, - {-3.94899781448378, 1.94391204753919, -8.65991195739853, -2.00834934461626, - -3.50457026010403, 4.99589301163709, -6.89137092011374}, - {-1.29549202700169, 7.66739081183929, 0.281901363288286, -1.19821907042793, - 2.92107740687058, 1.14948481762706, 7.31015879384667}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.76053743491788, 0.909858152169371, 0.323489900540112, 1.61941068281945, - 0.92342774005317, 0.0522421825019989, -1.23071245493981}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-0.12420793824361, 0.0833900748795987, 3.10092151009265, - 0.320087923870887, -0.582151496774453, 0.029470772407136, - 1.63438201788813, -1.43480874379498, 1.55528937765131}, - {-2.8947400885087, 0.336449303963403, -2.30774902952597, -2.03456375507124, - 2.29485822558142, 0.145499754959071, -1.61531096417457, - 0.0991522125616504, -6.41616204842718}, - {1.75720706890165, 1.241283421626, 0.607968086927335, -0.816112122281315, - 0.0294391273974063, -7.94349478092389, -0.825543426908553, - -1.917979348207, -2.03720925778068}, - {0.276286323447054, -0.393087539092168, -1.44329478350452, - -1.86277301712902, -0.807222527397035, -1.7239133524486, 1.61348068527877, - -1.66550797875971, -0.966703432130041}, - {-1.20952640410995, -1.34067444254507, 0.079870798547199, - -0.0280804827435552, 0.15103668191983, 2.28974121850533, - -0.848898627795279, 0.747603604163112, 0.000485431747120298}, - {-0.806478361586365, -0.902043622848205, 2.75668355569402, - -0.636341321727925, 0.189229471295501, 1.41597159860703, - -1.52203810494393, 1.62460924160209, 1.94946724799691}}}; -const auto fWeightMatrix2to3 = std::array{ - {-1.05665248808677, 1.16854173340171, -0.924262662063758, 0.441514927697916, - -0.908730180794495, 1.02616776486021, 1.26618724664255}}; diff --git a/electron_training/result_B_old/matching.hpp b/electron_training/result_B_old/matching.hpp deleted file mode 100644 index 372ba36..0000000 --- a/electron_training/result_B_old/matching.hpp +++ /dev/null @@ -1,46 +0,0 @@ -const auto fMin = std::array{ - {2.32376150961e-05, 1.07555320028e-06, 1.33514404297e-05, 3.0517578125e-05, - 3.99723649025e-06, 4.65661287308e-09}}; -const auto fMax = std::array{{29.9999885559, 0.509573578835, - 498.591552734, 499.918823242, - 1.35891008377, 0.149692088366}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{1.09689919364338, -2.36337032185014, -3.02921316084911, -8.60965194111848, - 1.07308849187722, 11.2080534568785, -0.962205787111116}, - {0.742505004354826, -11.5991419169641, 4.4706991652213, 12.0524034815861, - -7.39781510361567, -0.213355059289303, 2.43301548168847}, - {-0.725034235213988, -4.7645569874331, 3.41021029475148, 18.2505819659489, - -2.28931892322383, -6.70009514891697, 7.19788851418639}, - {-0.43322070581816, -6.76514244197456, 13.847487618501, 5.02461005105822, - -3.37683447138325, 0.858009838318498, 10.273453699814}, - {-5.70448188875026, 5.26491831063117, -11.5555643412233, 3.1883356042284, - -2.133677285889, -2.24006224305986, -8.63987163868301}, - {-1.06391634270892, 9.01667090199045, -1.28516566899228, -3.82841187857546, - 3.18471029451158, 3.67902076971672, 7.29632098310751}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.68628281779244, 0.945006908224918, 0.536427352104393, 1.40667951887796, - 0.832049300778026, -0.1089543073399, -1.43675125780786}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{1.21826975700184, 0.363147471400374, 2.05773388885566, 0.540313557549193, - 0.420913357653504, -2.44884689863901, 1.63438201788813, -1.40944934303207, - -2.32871515871553}, - {-2.90439321892223, 0.719436509209912, -3.93523150198893, - -1.07342541319164, 2.07689989754924, -2.39788444100381, -1.61531096417457, - 0.0991887634515266, -8.04764734753152}, - {-2.98923948872248, 2.26253234310036, -0.220642963100105, - -0.279316661053141, 0.0331794243552215, -5.88142829451649, - -0.825543426908553, -1.92002983781799, -8.21361341703474}, - {0.662904361912077, -0.885584946591213, -1.45517778095535, - -1.89901295762029, -0.806428733926438, -1.81021900435817, - 1.61348068527877, -1.66550797875971, -1.51013848461449}, - {-1.37437469030598, -2.21755157129085, 1.33360411388341, - -0.0320979297776227, 0.290980167206705, 2.38901360605064, - -0.848898627795279, 0.766669058008792, 0.257937241570605}, - {-1.09504185612819, -0.458703315043996, 1.03883522785983, - -1.05014637612802, 0.806301762243297, 2.21317466894066, -1.52203810494393, - 1.5559212254549, 3.4514658408796}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.533136674890316, 1.09880505630834, -0.802064163473207, 1.60699693080913, - -0.951610170601364, 0.802378806704215, -1.20342886768673}}; diff --git a/electron_training/result_B_original_weights_residuals/matching.hpp b/electron_training/result_B_original_weights_residuals/matching.hpp deleted file mode 100644 index 9c576c8..0000000 --- a/electron_training/result_B_original_weights_residuals/matching.hpp +++ /dev/null @@ -1,48 +0,0 @@ -const auto fMin = std::array{ - {0.000315562472679, 1.14277577268e-06, 0.000274658203125, 0.000102996826172, - 1.25970691442e-05, 4.93600964546e-08}}; -const auto fMax = - std::array{{29.9998435974, 0.431377887726, 490.802429199, - 497.135681152, 1.3582059145, 0.147097736597}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{0.925466511495192, -3.04696651693941, 1.48703910101059, -2.74358886415853, - -1.54108875912546, 5.95181992279351, 1.09520524639045}, - {0.225076264550494, -5.30106552386163, 6.29832156309508, 7.0574368868963, - -3.96436697758889, -0.110687606346842, 4.65556823990769}, - {0.859449093477803, -1.42364618189426, 1.52973494084549, 1.63204418679045, - 0.402800627021359, 2.02973355392681, 1.61963813362595}, - {0.797017653476011, 1.80207629996926, 1.98407671947614, -4.84738045778757, - -0.237330392456841, 0.555272132234374, -0.334695720441674}, - {-0.0089249002524941, -0.0721593078491391, -4.03962401066098, - -0.741196499782838, -0.520561836165389, -2.43469377130746, - -5.05370729239864}, - {-0.324849815552061, 0.571642144152413, -2.26163157259376, - -3.96363877139044, 3.80954499156217, 0.812071601189534, - -0.388923872459538}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.90248604788051, 0.75183501464588, 0.163545686727045, 1.62950884794052, - 1.04315466999792, 0.0204618414445436, -1.06300958722802}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-3.75265433194304, -4.03077590921609, 0.560952725012946, 1.59903822739795, - 2.24144673906438, 0.377410282165578, 1.63438201788813, -1.47007146768882, - -2.58605490949786}, - {-2.60068359938433, -0.0309587124576335, -0.841839408810281, - -0.377592041175285, 0.266402105492061, -1.93675266037507, - -1.61531096417457, 0.0988426038328682, 1.51287715061537}, - {-0.257103489627825, 2.38563057831866, -2.06682010253696, - -1.50490219717468, 0.990281758525445, -2.89728072212192, - -0.825543426908553, -1.91692155046286, -0.469424293810405}, - {0.680066470317009, -0.353277604226862, -1.4315209802379, - -1.86345277642716, -0.806051898385157, -1.70690619012381, - 1.61348068527877, -1.66550797875971, -0.804637203024864}, - {0.292121929684041, 1.67922513643505, -0.2207750830665, -1.85432148737195, - -0.761761120528791, 0.148603794427115, -0.848898627795279, - 0.776926680814688, 0.515413675465116}, - {0.436091761386387, -1.32454758986161, 1.0014013582506, -0.251981066947133, - -0.176482975086784, -0.862489698728272, -1.52203810494393, - 1.59929932442845, 0.257302379473767}}}; -const auto fWeightMatrix2to3 = std::array{ - {-3.33863999066044, 1.86100137130551, -0.825426355935299, 0.455646208323886, - -0.730374866334297, 1.65923402820956, 1.60305190554767}}; diff --git a/electron_training/result_B_original_weights_residuals/og_weights.txt b/electron_training/result_B_original_weights_residuals/og_weights.txt deleted file mode 100644 index 7835c5a..0000000 --- a/electron_training/result_B_original_weights_residuals/og_weights.txt +++ /dev/null @@ -1,2 +0,0 @@ -signal: only electrons that are true match but mlp response "no match" -background: all ghost tracks diff --git a/electron_training/result_D/matching.hpp b/electron_training/result_D/matching.hpp deleted file mode 100644 index b551e91..0000000 --- a/electron_training/result_D/matching.hpp +++ /dev/null @@ -1,47 +0,0 @@ -const auto fMin = std::array{ - {1.4334048501e-05, 1.21005723486e-06, 0.0001220703125, 4.57763671875e-05, - 6.51180744171e-06, 5.58793544769e-09}}; -const auto fMax = std::array{{29.9999580383, 0.388462841511, - 497.0078125, 499.509338379, - 1.34583222866, 0.148980647326}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{1.80376907529412, -3.94522006510378, 0.731592325680377, -11.2008566094574, - 0.679894249961926, 3.84839657473663, -8.07142111719402}, - {-2.07030049796095, 3.26515474867444, 0.320697671285593, - -0.564334829758113, 3.06552235842096, 2.6605948885273, 4.6955026167446}, - {0.896838903613344, -1.89786210758941, 6.19791014227951, 13.9534201571522, - -9.67617750026742, -5.13735275462149, 5.25604022070252}, - {0.350723542258884, -5.46236108010248, 11.3961275449655, 6.86860356458193, - -4.10979098519269, 7.40355727094559, 17.4195097954786}, - {-4.98089321802183, -3.06924425120168, -4.16533013325382, - -1.76525268144874, -0.574266009689755, 1.38792795938214, - -11.9738574538811}, - {-1.3792553381734, 6.6360108241851, 1.58470490969407, 1.2116201192747, - 3.35950082512036, -2.69400720014141, 5.78773380456927}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.89618444435453, 0.756762886971226, 0.224607628956107, 1.58224418687104, - 1.01198188838621, 0.0609287072816972, -1.10149714422957}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-1.95030391768864, -2.57241200745428, 2.22513961422549, 1.09636924630915, - -1.41670442059213, 0.268826912887813, 1.63438201788813, -1.41788409846508, - -0.529591299831198}, - {-1.7671292981577, -0.123369349217712, -0.866977288876212, - -0.90631173560288, 2.47901931013162, -2.21695976800688, -1.61531096417457, - 0.0991885303988918, 1.28955047096799}, - {-0.534089470091784, 1.26461913447419, -0.403013723511741, - -0.758910423086654, -0.92644473334079, -1.52818746990179, - -0.825543426908553, -1.92721239362346, 3.26105888866326}, - {0.198023173442802, -0.564145037694825, -1.43289188975828, - -1.86352960767302, -0.808447979295006, -1.71330811211152, - 1.61348068527877, -1.66550797875971, -0.910801619527772}, - {-1.8227621068219, -0.698025453596766, 0.233245541019916, - -0.387306932182454, -1.05004029412037, -0.333220104163044, - -0.848898627795279, 0.782822716993409, -0.262552968051654}, - {-0.314822731076892, -1.50428335429844, 0.179689344301775, - -0.325249075131384, -0.635962383213103, -0.491817587388958, - -1.52203810494393, 1.59283237353393, -0.153430533462156}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.572477318545036, 1.12222369845671, 0.962011482756679, 0.427739156517669, - -1.31864386562843, 1.61500835143017, -1.96827876292426}}; diff --git a/electron_training/result_D_old/matching.hpp b/electron_training/result_D_old/matching.hpp deleted file mode 100644 index 44c540d..0000000 --- a/electron_training/result_D_old/matching.hpp +++ /dev/null @@ -1,47 +0,0 @@ -const auto fMin = std::array{ - {1.4334048501e-05, 1.20995343877e-06, 0.000255584716797, 7.62939453125e-05, - 1.95447355509e-05, 9.31322574615e-09}}; -const auto fMax = std::array{{29.9999771118, 0.480875372887, - 497.208251953, 499.789672852, - 1.33854484558, 0.149920448661}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{-2.53490305244316, -3.87226566727903, -4.46377668521249, 3.76593347190621, - -0.736147925273483, 9.02585614570327, 3.6237871734026}, - {0.549076542016505, -6.76487588278314, 12.7146884747338, 6.35190577761167, - -4.4556955709276, 8.26540577622736, 18.015709088484}, - {-0.456124601513526, -3.87828385698417, 6.13829079533624, 20.024096872054, - -10.2437102287476, -13.5453994008865, 1.47951238998312}, - {0.81464719007702, -5.60573514166659, 7.32263078411251, -5.0446935011349, - -0.701597395356833, 6.4873077480756, 1.05029191775837}, - {-5.20529068292815, -1.29341688678248, -12.9211101623102, 4.06192896781978, - -2.24819687530499, -4.47649653096685, -18.7962996196447}, - {-1.92319074705205, 9.13989051160526, 1.4372857889395, 3.71255897752862, - 2.12080932540223, 0.775519813919651, 13.1780255071529}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {2.48032981707208, 1.99122468030675, 0.147128688791476, 3.20653226030149, - -1.59262641780577, 1.63473498915926, -0.983318163281607}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-1.23665952123739, 1.12167249551526, 0.882383882593374, - -0.923566479348657, 0.0338835472680554, 1.00667491483647, - 1.63438201788813, -4.23394622989637, -0.990743251230407}, - {-1.17099975681859, -0.0097715608108182, -0.404796049870115, - 0.85424890495973, 3.98024762276004, -0.145761966096377, -1.61531096417457, - 0.0969352107124514, -5.51833020463238}, - {2.4380083430657, 2.00418225228056, -0.792776990439125, -2.80847623446533, - -0.137631196353825, -7.80633161173606, -0.825543426908553, - -2.37988842437401, -6.27310694945946}, - {0.225004410426863, -0.39049833080813, -1.43244348842572, - -1.86390252348813, -0.816126277640337, -1.7092593780967, 1.61348068527877, - -1.66550797875971, -0.984918093686436}, - {-0.238610540704029, -0.352025987714205, 1.91071878135911, - 1.06903719015662, -0.0879085084653824, -5.01732651510019, - -0.848898627795279, 0.301171033553613, -3.31246000228067}, - {1.06098527822605, -1.02241211107063, -0.727572693909408, - -0.164960522101848, 0.834295993060446, -0.816864575663688, - -1.52203810494393, 1.63565593112606, 0.829470327557413}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.547016315428893, 0.794153417512957, -0.534810951888594, - 0.411807752872488, -1.06003774378693, 0.679060736847631, - 0.119300486730084}}; diff --git a/electron_training/result_reg_B/matching.hpp b/electron_training/result_reg_B/matching.hpp deleted file mode 100644 index 91de9ec..0000000 --- a/electron_training/result_reg_B/matching.hpp +++ /dev/null @@ -1,46 +0,0 @@ -const auto fMin = std::array{ - {5.23340640939e-05, 1.25644373838e-06, 4.38690185547e-05, 1.90734863281e-06, - 4.71249222755e-07, 1.02445483208e-08}}; -const auto fMax = std::array{{29.9998512268, 0.423314958811, - 499.603149414, 499.198486328, - 1.36927723885, 0.149392709136}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{2.57491955820114, -0.0666351688682796, -3.61648923844569, - -8.75747553035328, 0.639385257730277, 10.5129455348455, 1.22080436670381}, - {-0.839608322851951, -11.7978768103865, 7.24641653369801, 6.63011679030303, - -5.38496571510758, 8.30851076817151, 6.69929919816849}, - {-0.17630967374162, -3.75940580347415, 2.79889282638498, 16.7594894489781, - -3.10824840396248, -8.80345141844331, 3.9130937162361}, - {0.19092161829683, -3.60963385297311, 11.9569759734039, 2.10283509156704, - -2.39101707207304, -1.89478969715624, 7.1165950679585}, - {-3.02014034882022, 2.24487587036827, -8.90770349935038, -4.05040202238185, - -1.36813505779681, 9.14630004607903, -3.34618937758505}, - {0.459674275912345, 8.12262886393506, 0.45018729587823, -1.11787227534737, - 2.8096254085019, -0.481877520480143, 7.78611195142966}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.8337752666274, 0.841018614520629, 0.272259015077869, 1.63031107650108, - 0.987469718084883, 0.0999586200250234, -1.13752770875358}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-0.0482883134570299, 0.46403980819019, 2.73665245864103, - 0.245936163361116, -0.472281505442891, 0.307317690224363, - 1.63438201788813, -1.44341215808597, -0.706584289774802}, - {-3.91297125261727, 0.681495111998297, -3.37155822025346, - -0.966831590652637, 2.65933759421044, -0.661174079209186, - -1.61531096417457, 0.0991696473049824, -4.51523108840722}, - {0.273186686950073, 1.14087516410812, 0.653137998266985, - -0.158819017566112, 0.692268877136322, -8.04912219449925, - -0.825543426908553, -1.92132463640843, -2.47870678055356}, - {0.180394111293318, -0.414717927339332, -1.44129610325848, - -1.86532392228702, -0.806791495297171, -1.73521704274739, - 1.61348068527877, -1.66550797875971, -0.927403017991324}, - {-0.790929106392951, -0.0886126272927867, 0.035682993929273, - -0.602424006939674, 0.334723143379322, 2.22416454606917, - -0.848898627795279, 0.743857937018801, -0.291005217785123}, - {-0.681492967014666, -0.368602644948209, 1.52403393057559, - -1.06212309361209, 0.881062654352226, 0.690165878288055, - -1.52203810494393, 1.63217238068739, 2.76628946224152}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.692725959420674, 1.18375950895893, -1.13672009847538, 0.407788542121486, - -0.606866044733726, 0.927912329413981, -0.887231003739174}}; diff --git a/neural_net_training/result/matching.hpp b/neural_net_training/result/matching.hpp deleted file mode 100644 index 511b921..0000000 --- a/neural_net_training/result/matching.hpp +++ /dev/null @@ -1,48 +0,0 @@ -const auto fMin = std::array{ - {1.32643926918e-05, 1.20999777664e-06, 3.81469726562e-06, 1.52587890625e-05, - 2.20164656639e-06, 1.86264514923e-09}}; -const auto fMax = std::array{{14.9999952316, 0.436187297106, - 249.999572754, 399.485595703, - 1.30260443687, 0.148344695568}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{2.32568146034949, -3.97864517484141, -0.976136452226726, 1.84234344676559, - -3.10046463102268, 4.13961872392198, 1.32395215581256}, - {-0.246260592363558, -16.6289365646957, 15.8745926520597, 5.54227150397204, - -3.52013322130382, 3.54800430147538, 4.65963029843042}, - {-0.0480865527472585, -0.629210074395733, 6.00348546361291, - 2.9051880336304, -0.14352194426084, 1.69533803008533, 8.43612131346998}, - {0.586453583994425, -2.56124202576808, 2.59227690708752, - 0.0874243316906918, -2.97381765628525, 5.49796401976845, - 3.23192359468339}, - {0.429663439996412, -22.1383805768484, -0.392774946210208, - -3.3393241414433, -0.0183236766918373, 1.7443084621404, - -23.1241106528584}, - {1.51561003857451, -0.252437187813493, 3.4382652179148, 1.64873635165153, - 1.3257641118939, -1.3769915299618, 6.284788658685}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.26283446391613, 1.060406101318, 0.30016156694275, 0.868137090713936, - 0.620452727287864, 0.654572151525178, -1.93868171775984}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-0.756398914721592, 1.43176897679079, -1.9761225512629, - -0.252826703054453, 5.76338466721064, 0.853447490406625, 1.63438201788813, - -1.30124222851611, -1.16516476663684}, - {1.33354118308893, 2.2779204457711, -2.4183940976708, -1.41409141050929, - -3.03014280476042, -0.105294409656274, -1.61531096417457, - 0.0713464687805576, -4.46730787742624}, - {1.69117951310622, 0.478803367417533, -0.0952992998738417, - -1.42291620159966, -5.3475695755735, -0.851706256912453, - -0.825543426908553, -1.84634786630319, 1.10300947885605}, - {1.62294844942986, -1.4305887420849, 1.34690035656602, -1.75196364787073, - -1.34911857298729, -1.19784919878849, 1.61348068527877, -1.6413641883722, - -1.80987544922642}, - {-0.885340378859963, -1.27010625003553, 1.64729145944323, - -1.93179670311711, -2.00487598846412, 0.858689001379895, - -0.848898627795279, 0.783837335125351, -1.50563595386066}, - {-0.643070342091735, -1.362074820856, 3.23003893144526, -1.8069989021131, - -1.52168986931666, -2.92720177768097, -1.52203810494393, 1.54153084775635, - 4.02998353429178}}}; -const auto fWeightMatrix2to3 = std::array{ - {-1.03488783417574, 0.540010884713827, -1.17870273673375, 1.01943381348885, - -0.679190259548567, 1.25798110915057, 2.3197360649145}}; diff --git a/neural_net_training/result_B/matching.hpp b/neural_net_training/result_B/matching.hpp deleted file mode 100644 index b034e1e..0000000 --- a/neural_net_training/result_B/matching.hpp +++ /dev/null @@ -1,46 +0,0 @@ -const auto fMin = std::array{ - {1.37092808927e-06, 1.07555365503e-06, 0, 1.90734863281e-06, - 1.73929147422e-05, 1.86264514923e-09}}; -const auto fMax = std::array{{14.9999952316, 0.456682443619, - 249.999572754, 399.509643555, - 1.33115208149, 0.149789437652}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{-1.3734781925797, 13.4202721220084, -5.84482699847354, 0.208720202271194, - 3.52940201568696, -5.35007508017961, 6.10232623582908}, - {0.269463828190076, 12.2029002280153, 6.20803317501961, -9.43442815316897, - 2.5338939027162, 5.99544654330182, 16.266514230858}, - {-0.165852817298963, -12.5570036498389, 19.5108101030614, 10.1445756810778, - -4.70591905221782, -9.82613113151628, 2.66946232799658}, - {0.280264112609391, -40.4573608414915, 4.50829859766595, -9.38270110978156, - 2.13898954875748, 4.73797410702965, -38.2552994749474}, - {-15.3913555770922, 1.18454625888548, 1.03308239102009, 2.80096921737441, - -1.86435943580432, -5.12259817922783, -14.7182721956392}, - {-0.473433045504226, 14.9901069695702, -0.236384720797966, - -2.83841297397374, 4.98474416815065, -6.59501221410077, 6.97717117093051}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {0.142197307909266, 4.84602282950846, -9.65725300640334, 5.68314089024306, - 0.631054662487241, 0.766483060165155, 2.3260315163825}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{0.647996552227704, -3.612673407752, 0.218049700051821, 4.89119034256858, - -0.00710530398728626, -0.739119819896367, 1.63438201788813, - 0.7192739388343, -4.39806909742125}, - {-0.719597437431301, -3.27873531826254, -2.03233412174408, - -3.60079441122056, 0.0930923625129556, -2.47473692076248, - -1.61531096417457, -1.73667807655155, 3.65065717704823}, - {2.15115292231327, 0.537266754158749, -0.529575619029901, - -0.840914255611436, 1.02786405393109, -2.2383981589872, - -0.825543426908553, -0.685116658617715, -1.95672133400954}, - {0.164139216021613, -0.378666175423714, -1.43567813416239, - -1.86509513117207, -0.825083002191541, -1.70460785835385, - 1.61348068527877, -1.66550797875971, -0.956253568725315}, - {-1.87493924816154, -0.453672605669931, 0.283493943583684, - 0.878365550455799, 0.284631862858431, 0.933935190438462, - -0.848898627795279, 0.121615867119966, 2.40557433526087}, - {0.853517633026983, -0.322377109742158, 0.30359642229039, - -2.70050427549895, 0.434398564771274, -1.07531792256432, - -1.52203810494393, 0.471135339353818, -7.51274733403613}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.773202850704438, 0.952227138510482, 0.74769506152075, 0.306824902699197, - -0.557424643818581, 1.36609661342348, -1.24818793392955}}; diff --git a/neural_net_training/result_B_old/matching.hpp b/neural_net_training/result_B_old/matching.hpp deleted file mode 100644 index 7312581..0000000 --- a/neural_net_training/result_B_old/matching.hpp +++ /dev/null @@ -1,48 +0,0 @@ -const auto fMin = std::array{ - {1.37092808927e-06, 1.07555365503e-06, 0, 1.90734863281e-06, - 1.73929147422e-05, 1.86264514923e-09}}; -const auto fMax = std::array{{14.9999952316, 0.456682443619, - 249.999572754, 399.509643555, - 1.33115208149, 0.149789437652}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{0.55218535628556, -9.3289553119363, -3.16480805777192, 9.21929582222451, - -5.84675321729571, 4.37995011218691, -2.12651852927708}, - {2.19402229437066, -36.4572143799157, 4.72612050852174, 0.871774263011679, - 0.308249736812244, 5.59902946146285, -21.3121523564936}, - {0.326882064023056, 2.35866196875568, 9.48783066071353, 2.75913715527822, - -3.60778259684168, 2.80447887380193, 12.22677213297}, - {0.555959841347612, -11.3379921223552, 24.99514413087, 4.38044026679039, - -4.79766508655656, -5.51874542469878, 8.39926399588362}, - {-0.474573814356478, -45.048645069346, -1.91571008337192, - -2.97043145049536, -0.791922976045819, 2.80933052961339, - -45.2686657256446}, - {1.02111090620048, 0.942295739720341, 4.23884295504771, 3.69611210680021, - 3.06108184531354, -5.59083664638509, 5.48212218750871}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.25219270646431, 0.549228434890616, 0.470255515433846, 0.916142200504342, - 1.60846971174291, 0.516066034145183, -1.99907858325808}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-2.16740050633671, 1.64201098704318, -1.81457731661729, 0.276267162453127, - 4.41723045721244, 0.116946763347361, 1.63438201788813, -1.34454525041306, - -11.6363132267585}, - {-0.975733315897721, -0.74456197080548, 1.37299729852781, - -0.935058973429512, 0.0844226992748141, -0.132452262552727, - -1.61531096417457, -0.186263378023113, 5.02662780750337}, - {1.04696354000933, 0.278924511733321, -1.35925413801625, 0.938772342837744, - -0.549530917541879, -0.520171806146222, -0.825543426908553, - -2.06608637235381, -0.791984902945839}, - {-1.2045961477844, -0.991003979261367, 1.09783625990238, - -0.421872249827208, -0.889785288418292, 2.04952712400642, - 1.61348068527877, -1.7061481912452, -4.6379237728574}, - {-1.36108475234833, -0.998277929718627, 1.44485269371602, - -0.712692589749601, 2.24954768341439, 2.14013866962467, - -0.848898627795279, 0.868380765164237, -2.78040856790563}, - {-0.388348743847599, -3.23828818784509, -3.09515929145523, - -1.60979064312646, 2.55518501696684, -2.40442392560053, -1.52203810494393, - 1.61704406536505, 1.28981466057697}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.662286199846436, 0.602757344813461, -0.498657128878293, - 0.682053959836921, -0.846606195204036, 0.885206167679193, - -0.091536072257332}}; diff --git a/neural_net_training/result_D/matching.hpp b/neural_net_training/result_D/matching.hpp deleted file mode 100644 index 102222f..0000000 --- a/neural_net_training/result_D/matching.hpp +++ /dev/null @@ -1,49 +0,0 @@ -const auto fMin = std::array{ - {8.165359759e-06, 1.20664617498e-06, 3.0517578125e-05, 0, 4.7143548727e-06, - 5.58793544769e-09}}; -const auto fMax = - std::array{{14.9999341965, 0.441820472479, 249.991241455, - 399.657226562, 1.31253051758, 0.1461160779}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{-2.69517659211572, 11.8302794023495, -4.18951579686807, -3.98494892798567, - 2.81897548445767, 0.59383239448013, 8.23409922740496}, - {0.211366021230384, -17.963369064596, 15.9757126175754, 7.06797978526591, - -4.70452883659984, -6.9670945574808, -6.09966951812501}, - {-0.671572194549583, 11.3044506689324, 0.41567016443692, -1.37717944379749, - 4.32454960210643, -2.81417446537734, 9.27800394526066}, - {-0.0170007006326477, -29.3978844207289, 1.21375106319138, - -4.08361109078602, 1.26964946956945, 2.36059581879151, -28.6616649803861}, - {-11.5040478504233, 0.787126057627091, -1.9688816880041, 3.80563620582515, - -1.24505398457039, -4.63206817893295, -13.6204407803068}, - {-0.338909805576579, 5.40829054574145, -5.80255047095045, - -4.01690019633219, 1.01720190260241, -8.00726918670078, - -9.13220942993612}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {-0.0200186919403349, 1.41949954504535, 1.49019129872922, - 0.288411192617344, -1.04637027529446, 0.461207091311545, - 2.34712624673865}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-0.742932789484951, 1.098742538125, -0.406409364576387, 3.47055509094897, - 0.0962780863393642, 1.41748292133237, 1.63438201788813, -1.44301381179313, - -0.572613401802679}, - {-0.38589120983735, 1.59861062444015, -0.0248567208616739, - 0.671741015980856, -0.708380620370054, -1.03895600322296, - -1.61531096417457, -0.148523097987218, -4.64632456422582}, - {0.79166633002489, -1.08475628425482, -4.28859285488566, 1.52323344063281, - 0.841577416846386, -2.87987947235168, -0.825543426908553, - -1.68433960913801, 3.44474663480542}, - {0.0775004589408732, -0.262461293729405, -1.52083397977799, - -1.8717755745741, -0.836405509817299, -1.7218693116007, 1.61348068527877, - -1.66550797875971, -0.970612266783855}, - {-0.173976577204694, 0.622518962366594, 1.06846030554012, - -1.98774771637332, 0.519455930696643, 0.29715629978414, - -0.848898627795279, -0.571811756436865, -0.634485828880002}, - {1.01806297385566, -2.23322855713652, -0.6087066354355, -2.48675705217909, - 3.17812971554116, 0.101672334443862, -1.52203810494393, 2.31992216900119, - -1.25181073559493}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.916964821952665, 0.719312774569769, -0.639131582384414, - 0.543723763328418, -0.519810071051254, 0.818949275577508, - -0.217502220186121}}; diff --git a/neural_net_training/result_D_old/matching.hpp b/neural_net_training/result_D_old/matching.hpp deleted file mode 100644 index 83cb801..0000000 --- a/neural_net_training/result_D_old/matching.hpp +++ /dev/null @@ -1,47 +0,0 @@ -const auto fMin = std::array{ - {3.08839298668e-06, 1.0285064036e-06, 1.52587890625e-05, 0, - 5.87664544582e-07, 1.16415321827e-10}}; -const auto fMax = - std::array{{14.9999723434, 0.448565632105, 249.991241455, - 399.657226562, 1.32571601868, 0.1461160779}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{-13.6018653076529, 11.5780217700141, -7.92762809494091, -2.3767990231665, - 2.10509041357149, 8.93423542038951, 0.697736541430846}, - {1.39148569147387, -18.5749654585149, 16.332262515645, 8.93683318362009, - -5.31296543840869, -5.3403427435078, -2.19396356951465}, - {-1.01323411158617, 13.2753123794943, 0.728991860392637, -2.42297786296918, - 5.31377513515812, -3.50060317341991, 10.417424252956}, - {-0.248243535822069, 4.62216903283789, 7.02215266119243, 1.16722623835237, - -4.02343144066426, 0.795833957766165, 8.68951250524976}, - {-0.238717750484162, 6.4095254209171, -7.18004762765776, -5.26488261250603, - 0.399079753011244, -13.2043917021304, -15.6484370000787}, - {0.28927080766293, -43.0775712799999, 1.66954473021466, -9.33896425089968, - 2.33665742943925, 3.79800824384931, -44.3378970188981}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.40243557561751, 0.527362898119982, 0.45726589950568, 1.14682278333905, - 1.07970493015474, -0.120090795589863, -1.93859670804163}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-0.799170659507791, 0.78794128149515, -0.763826599227941, - -2.3771947370175, 1.02090569194105, 2.93661596670106, 1.63438201788813, - -1.4315640726598, -1.65256239855233}, - {-0.0840828763430264, 1.63030483445294, 0.480480602063334, - -2.6196066367932, -1.07206902633681, 1.70077768270329, -1.61531096417457, - 0.0827459973313509, -6.82577663153282}, - {0.549379141222342, -1.30994855822444, -3.47047538273556, - 0.416631880451092, -2.01641324755852, 0.534999953845232, - -0.825543426908553, -1.89592023892521, 5.51877157805828}, - {0.0804714249535426, -0.5308079142129, -1.48689873935011, - -1.86763554052357, -0.869089360209786, -1.67763600182079, - 1.61348068527877, -1.66550797875971, -0.925481963732789}, - {-0.686375033428724, 1.09398610198181, 0.699349709460149, - -1.04209787556848, 0.0477294646540392, -0.311194459626976, - -0.848898627795279, 1.21798575421877, -1.20136465619996}, - {0.65672978185887, -2.41522086895727, -0.906588505776888, 1.17488116346046, - 0.348225140957002, -1.76790548692959, -1.52203810494393, 1.20010038210504, - 2.16681827421459}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.711664725241253, 0.506164178116774, -0.741743336419543, - 0.501270635463003, -0.672368683770616, 0.747306441658917, - 0.789949973283111}}; diff --git a/nn_electron_training/result/matching.hpp b/nn_electron_training/result/matching.hpp deleted file mode 100644 index 7cae3a9..0000000 --- a/nn_electron_training/result/matching.hpp +++ /dev/null @@ -1,58 +0,0 @@ -const auto fMin = std::array{ - {2.32376150961e-05, 1.20999845876e-06, 3.0517578125e-05, 0.000152587890625, - 5.18634915352e-05, 3.16649675369e-08, 4964.515625}}; -const auto fMax = std::array{ - {29.999835968, 0.448848098516, 490.75402832, 499.918823242, 1.29696559906, - 0.148829773068, 5764.58056641}}; -const auto fWeightMatrix0to1 = std::array, 9>{ - {{-13.8767665400575, 4.05734115522388, -3.01709661856028, 1.12334316344471, - -1.95431900429486, -4.28496976296461, 2.12003203912787, - -16.3247309911133}, - {0.212048009453922, -15.1738107548058, 16.7279720978323, 7.86809247963017, - -2.44754013164889, 7.7765844954342, -7.1858320802125, 14.8502047053221}, - {1.03697617644536, -7.74330829725443, 6.56587047894099, 17.8488797860709, - -6.58256061835055, -14.3326703613101, -4.21591741028686, - -3.48521822531376}, - {1.07161857075862, -6.02457375820184, -2.95388380942296, -1.32423877366328, - 4.40729929976243, 4.47413261680277, -9.1510537721088, -3.00961301024585}, - {-0.483652311202822, 1.61937809966064, 3.0445519571216, 0.815891204469984, - 0.474869080905695, 3.43775266744451, -1.25098304071557, 7.12769003125851}, - {-8.4010714790805, 8.31810836442086, -3.26991947652379, 1.31844760189238, - -0.316007929405036, -0.703746325371237, 4.74898967505285, - -1.11739245753407}, - {-0.592761413330552, 4.04188612003611, -0.218806073885883, - 3.90563951642846, 7.09174466959683, -6.3569150742699, -5.14953269394216, - 2.75424697228316}, - {0.547164481580195, 1.70249203967427, 1.94714702524239, -13.7351709164445, - 1.80504850488469, -2.90102696607898, 0.572900917600169, -10.365898528612}, - {-1.41297642979771, 1.7421562904492, 1.51246974803507, -0.277205719612539, - -0.746303261257708, 1.31841345876455, -0.315569517202675, - -1.43151946831495}}}; -const auto fWeightMatrix1to2 = std::array, 7>{ - {{-2.70914120357355, 0.519189852188428, 1.64293953499867, -1.42908155115225, - -0.911252443482285, -3.62723599571144, -3.12039388485614, - -2.24012508264097, -1.80018616467714, -0.387269363887802}, - {0.825289573993859, 0.977559873140871, -1.19932065232476, - 0.448270358180695, -1.01118687034592, -0.12068624133809, 1.92125679147867, - -1.22870635454816, 1.06194042880088, -1.67985680933482}, - {0.117628014226149, -0.666150093594241, -1.96462719830508, - -1.34621345717382, 2.69897179096947, 1.45683981784585, -0.280779666268364, - -1.09056907866035, 0.143585634417832, -0.853077107436903}, - {0.343557768966074, -1.36884597467765, -0.978489408664556, - 1.04108942352196, 2.38422271469634, -1.42280162989848, -1.24692906453324, - 1.16005819097626, -1.81861709989607, 0.792826064358476}, - {-2.43543923840386, -0.790741678609659, -0.86057585327147, - -0.560696061368329, -0.546486276970939, -1.10828693920102, - -0.390844170382116, -0.191292459405275, 0.655178595334291, - 3.62562636803186}, - {-1.85600205994161, -0.851713021005162, -2.36960755021907, - -2.65847940214873, 4.19992558926354, 0.482968294979867, - -0.674617611858262, 0.537074281854966, -1.44013551902026, - 0.12897906197469}, - {3.05467659680961, -0.835919265923888, -1.97139370203255, - -0.833191777667285, 3.1259995582494, 1.3049178372323, -0.601501165563516, - -0.476449568704171, 0.0595564302057028, 1.86826919022162}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.742315179835233, -0.384238828861699, -0.639019653069106, - -0.469522590533314, 0.812934812918375, -0.548705434492968, - 1.10784727825793, -1.47828921845706}}; diff --git a/nn_electron_training/result_B_old/matching.hpp b/nn_electron_training/result_B_old/matching.hpp deleted file mode 100644 index 0359b9e..0000000 --- a/nn_electron_training/result_B_old/matching.hpp +++ /dev/null @@ -1,46 +0,0 @@ -const auto fMin = std::array{ - {2.32376150961e-05, 1.51249741975e-06, 3.0517578125e-05, 4.57763671875e-05, - 1.30217522383e-05, 9.31322574615e-10}}; -const auto fMax = - std::array{{29.9999866486, 0.402866601944, 497.675262451, - 499.88583374, 1.35172855854, 0.1488314569}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{-0.716890254960393, 5.8069257184991, -1.74563699770656, -1.69375462311209, - 0.292600378995007, 4.27627333971203, 5.05829948252536}, - {1.39109753193721, -6.17525389654849, 7.57671398067678, -5.43048780303785, - -1.09791116843721, 1.86130825538439, -3.82867359027486}, - {-0.463070234910456, -4.56547441068759, 5.40748303002796, 24.3147882327414, - -6.31462696612228, -15.7641466083901, 3.16004633819498}, - {0.153443312046544, -13.7240931193717, 12.4658109156892, 3.93975979118258, - -6.11948248810469, 12.0087465863604, 11.8434487900601}, - {-5.38333972443605, 7.08960513470396, -14.0225023836695, 1.62191385618879, - -3.70995234249952, -6.21018449120275, -16.3820927289576}, - {1.28910616897801, 11.7392825108682, -0.745172957676181, -2.71535399916244, - 2.69193347520725, -7.76807154851574, 3.33706974699574}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.69376603852368, 0.713685235953229, 0.537330926797311, 1.24885881426728, - 0.849445456302149, 0.0549823762550653, -1.60838065333664}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-3.49743269512971, -1.59190099226759, 2.68952831238107, 1.47409713154181, - -0.358823304868459, 1.51035818148923, 1.63438201788813, -1.37184378061365, - -4.8236951156242}, - {-1.62443558899203, 0.637337506470021, -1.81394608796523, - -0.39782822266736, 2.98247880411195, -3.00550692859844, -1.61531096417457, - 0.0991975320503116, -7.79260298177481}, - {2.63673645224951, 0.769840121669036, -1.81866900675112, -1.22134862739373, - 0.671174013434412, -1.47933584039013, -0.825543426908553, - -1.92253219419135, 3.8017813083906}, - {0.205195965291138, -0.35698019904733, -1.43178372298118, - -1.86979559465315, -0.819043768918633, -1.72129504552091, - 1.61348068527877, -1.66550797875971, -0.957274797031432}, - {3.39235161127949, 0.557496083138389, 0.358810791879255, -1.30084105984251, - -0.542916984939091, -0.0267147558240502, -0.848898627795279, - 0.771556793635358, 0.0697782536980876}, - {0.481340186388348, 0.112198736662793, 2.17905577117167, - -0.602783430688711, -0.0915323075405589, 0.497824854127751, - -1.52203810494393, 1.50364257368639, -0.374485200843083}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.768478620967589, 0.945551538481868, 0.96174226855089, 0.370062157422418, - -0.78327662856066, 0.822576347537717, -0.718860728264376}}; diff --git a/nn_electron_training/result_B_res/matching.hpp b/nn_electron_training/result_B_res/matching.hpp deleted file mode 100644 index 3bd7d58..0000000 --- a/nn_electron_training/result_B_res/matching.hpp +++ /dev/null @@ -1,47 +0,0 @@ -const auto fMin = std::array{ - {0.354097932577, 5.52064511794e-06, 0.000244140625, 8.39233398438e-05, - 6.46021217108e-05, 3.98140400648e-08}}; -const auto fMax = std::array{{29.9984798431, 0.343307316303, - 487.684082031, 497.415130615, - 1.28809189796, 0.148829773068}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{0.528613355828958, -3.98084730501778, -0.592082531501982, - 0.138947239841158, -0.778623431382993, -0.581951852087617, - -3.3077751082926}, - {0.626191010935061, -6.59632782328807, 9.64286730275841, 9.55716888102903, - -4.21769290858214, -0.877735461418827, 7.66427785912706}, - {0.589042763591211, 0.342730710819044, 2.15591537442552, 3.00613486546159, - 0.031406906405544, 0.245821626313224, 4.14102878259858}, - {0.331983030850774, 0.936730026632873, 5.0246621889186, -8.55182143000926, - -1.36911477615904, -0.62033806094376, -4.12767358459756}, - {-1.83087334545531, 1.70659514344126, 1.64680904436349, -3.69383485282499, - -1.60992615163927, -1.33158200933679, -3.68738551321132}, - {0.497605072926462, 3.10686068573917, -3.38889852931357, -2.83744183592321, - 5.8582848269084, -5.8114650940735, -2.19632367553395}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {2.34124335963039, 0.212194857163335, 0.442598967492635, 1.99142561696414, - 0.932043520652152, 0.0950084159057334, -0.343964005014347}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-3.9980933021236, -0.654530522369937, 1.38643691032487, 0.846962243830957, - 0.106764765445591, 0.432714049442539, 1.63438201788813, -1.09500118769163, - -0.477330937420509}, - {-1.00177046130397, 0.910392283082755, -1.10524270003512, - -0.863367119958066, 0.356000819965252, -1.36464636332376, - -1.61531096417457, -1.07499530514837, 2.02772049025211}, - {1.06312654536343, 1.19247984844137, -2.56993344812772, -1.59660765668362, - -1.43473393145022, -2.45597801241373, -0.825543426908553, - -1.66068434492917, 1.54276462560785}, - {1.81681515757912, -1.04949680940877, -1.47464408054066, -2.35655553716087, - -0.81674566968838, -2.03350840389647, 1.61348068527877, -1.66550797875971, - -2.15831244577917}, - {-1.03932528137019, 1.40966162144001, -1.28446720148786, -1.3440214301115, - -0.764149070532308, -0.346882028973845, -0.848898627795279, - 2.00051119462677, 3.35327375607444}, - {-1.86664223320468, -2.77494106516727, 0.280364440162091, - -0.51153329496928, 0.099515543403597, -0.231471190430381, - -1.52203810494393, 1.14272217943492, 0.830204232719646}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.707654910623957, 0.947610371696967, -0.734533082005471, - 2.92853232573231, -0.764897377620809, 2.76504552610281, 2.01235259703278}}; diff --git a/nn_electron_training/result_D_res/matching.hpp b/nn_electron_training/result_D_res/matching.hpp deleted file mode 100644 index a49f05d..0000000 --- a/nn_electron_training/result_D_res/matching.hpp +++ /dev/null @@ -1,47 +0,0 @@ -const auto fMin = std::array{ - {0.257591664791, 1.18096104416e-05, 0.000593185424805, 0.00165557861328, - 0.00012809690088, 4.9639493227e-07}}; -const auto fMax = std::array{{29.9983310699, 0.346089184284, - 494.445037842, 497.105712891, - 1.28034591675, 0.146788269281}}; -const auto fWeightMatrix0to1 = std::array, 8>{ - {{0.238406879601667, -5.59592601269328, -1.48529518782053, - -1.21815009023291, 1.34269102160607, 1.34969291565497, -4.51875687730105}, - {0.396886922398879, -1.55290356333354, 9.68785078213303, 8.92661791228501, - -4.14921556686506, -4.79373464075343, 8.51558304693096}, - {-0.605978331887513, -2.01049013335995, 2.42576702923552, 1.52363979902223, - -0.98764665307072, 5.47124537232274, 6.44617285846946}, - {0.194697743583909, 1.28944295625644, 7.01265960466827, -8.8098678043251, - -1.29787641608371, -1.01125992648077, -2.62580313202802}, - {-0.149097384185005, 0.601644139549549, -3.20384472073729, - -1.11764357962076, 0.661266078420317, -2.99007258105897, - -4.75089443675904}, - {-0.0637125691675382, -0.031901246578545, -5.86825160360429, - -6.08669255423129, 6.57894839440667, 1.56562582414305, -2.45567329718821}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {2.16691834156097, 1.28877310398459, -0.0182036429219536, 1.64574682748412, - -1.776462177169, 1.02789865613476, -1.86072790490082}}}; -const auto fWeightMatrix1to2 = std::array, 6>{ - {{-4.86220133984369, 0.118835729154668, -0.219969977992415, - 0.391324848601455, -1.52700917088122, 1.34069581551041, 1.63438201788813, - -1.46686286855675, 0.828587551619351}, - {-2.34704356917816, 1.32098559104381, -0.35321222806336, -2.37018474851075, - -0.428177327276122, -0.598193543229222, -1.61531096417457, - 0.788200423431897, 1.42375444061969}, - {-0.520599794082693, 1.88897717167843, -0.983200551417999, - -2.10145861332195, 2.58359759649054, -1.9520611743449, -0.825543426908553, - -2.21273436389439, 1.68368588984848}, - {0.687372876118682, -0.350871511760717, -1.43005506081713, - -1.86332872620019, -0.805133918174304, -1.70605683547268, - 1.61348068527877, -1.66550797875971, -0.80539832878319}, - {0.641334100110318, 0.829686404507413, 1.12377545166463, -1.2786548533532, - -2.2652307380297, -0.577326144935801, -0.848898627795279, - -0.112416063323718, 3.09322414387249}, - {-2.10459256659739, -2.04968111694632, 0.989486352894292, - -1.53078668929007, -0.90726448865931, 0.837532331802425, - -1.52203810494393, 2.96223264118436, -2.25826102849139}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.632200441072234, 1.49561211302111, -1.13710464066982, 0.45277221100554, - -0.690200710879259, 0.878498633554998, 2.07286062799155}}; diff --git a/nn_electron_training/result_electron_weights/matching.hpp b/nn_electron_training/result_electron_weights/matching.hpp deleted file mode 100644 index 1dce83d..0000000 --- a/nn_electron_training/result_electron_weights/matching.hpp +++ /dev/null @@ -1,48 +0,0 @@ - const auto fMin = std::array{ - {2.32376150961e-05, 1.20999845876e-06, 3.0517578125e-05, 0.000152587890625, - 5.18634915352e-05, 3.16649675369e-08}}; - const auto fMax = std::array{{29.999835968, 0.448848098516, - 490.75402832, 499.918823242, - 1.29696559906, 0.148829773068}}; - const auto fWeightMatrix0to1 = std::array, 8>{ - {{0.972643778287334, 0.945437530240695, -1.40069143935294, - -15.6034120045671, 1.14493675557278, 6.76331107008671, -6.58864627844693}, - {1.99177578845469, -13.3678019612632, 8.38118795560118, 1.73988710441318, - -4.61454323644065, 5.29554800958296, 1.796743670204}, - {0.154471209290507, -6.25196675947653, 5.03239643950246, 17.3659761341648, - -6.54695139344376, -13.0321058473978, -2.79459536100855}, - {-1.91255962568079, -8.6500289238652, 11.3312847667967, 13.5402314908838, - -2.61341614761575, 6.63476937311634, 18.5047027165893}, - {-13.4902851128642, 5.03927112314943, -7.35289370328568, - 0.0572131890099181, -1.6142848069816, -3.07255458814266, - -18.9635216594601}, - {1.88222476973218, 6.53087839421258, 2.08080853139342, 0.816872513930955, - 1.76981234909237, -8.6501994076645, 3.81699174241397}, - {-0.79066972900182, -0.617757099680603, 0.740878002718091, - 0.681870030239224, -1.20759406685829, 0.769290467724204, - -1.8437808630988}, - {1.96787188749046, 0.680940366397391, 0.050263650384077, 1.68306844400001, - 1.12938262301514, 0.122157098634831, -0.887283402159991}}}; - const auto fWeightMatrix1to2 = std::array, 6>{ - {{-2.73702380879827, 1.22468365009789, 2.40149928694528, 0.276654711632341, - -0.947460759127638, -0.94795299724562, 1.63438201788813, - -1.41515589667229, -0.708508928627869}, - {-0.408168817589508, -0.542699435360695, -0.336829708223667, - -0.507220427829013, 0.533181686353704, -0.0512849135791123, - -1.61531096417457, 0.0991539876010671, 4.00684418941464}, - {0.401110123287066, -0.82501422982477, -0.82214087163611, - -2.13310745114762, 0.656608219190029, -1.54611499475089, - -0.825543426908553, -1.92246825444023, -2.49920928064247}, - {0.743417630960188, -2.54297207137451, 0.868639896626588, 1.21759484724959, - -0.432278512319556, -0.682439011110067, 1.61348068527877, - -1.70813842427554, 0.191141321065651}, - {0.601790057732671, -2.70865568575877, -0.949516903771233, - 1.41807664967738, 0.0135866328882364, 1.63463920593405, - -0.848898627795279, 0.794266404867267, -4.68030461730642}, - {-0.894524549453373, -0.413420422791491, -1.27841462173856, - -0.921761527738667, 1.7613032977725, -1.20901458126865, -1.52203810494393, - 1.63899587513312, 3.18360564985773}}}; - const auto fWeightMatrix2to3 = std::array{ - {-0.468166794846483, 0.905418443044577, 0.345720533590786, - 0.626519340549303, -0.564753919345451, 0.871170117133406, - -2.29725166588317}}; diff --git a/nn_electron_training/result_new_var_dtxy/matching.hpp b/nn_electron_training/result_new_var_dtxy/matching.hpp deleted file mode 100644 index a683d33..0000000 --- a/nn_electron_training/result_new_var_dtxy/matching.hpp +++ /dev/null @@ -1,62 +0,0 @@ -const auto fMin = std::array{ - {2.32376150961e-05, 1.20999845876e-06, 3.0517578125e-05, 0.000152587890625, - 5.18634915352e-05, 3.16649675369e-08, 1.63267832249e-05}}; -const auto fMax = std::array{ - {29.999835968, 0.448848098516, 490.75402832, 499.918823242, 1.29696559906, - 0.148829773068, 1.406919837}}; -const auto fWeightMatrix0to1 = std::array, 9>{ - {{-15.5425486721894, 4.46064219760936, -2.34623364306547, 0.673061906567754, - -0.869156572627564, -3.91456514808376, -0.568696256770434, - -16.6632172224501}, - {0.447767212299748, -12.0732988541946, 13.5397418382974, 6.88739679435815, - -6.24126921111681, 10.2657097797903, 2.43233624582838, 16.3044055554715}, - {0.711332752822416, -7.17479141259481, 6.60735241080743, 17.1002661287198, - -5.66447497808782, -13.5847364290022, -3.2812531600052, - -4.16110866444881}, - {0.632252449853337, -0.994201889160893, 0.163028638247136, - 0.771845371822938, 1.96713990468425, 3.63340983309008, -1.20631209983256, - -0.448420201049805}, - {-0.841164977118048, 9.93038462960693, 2.29748287289709, - -0.0626255430240932, 3.26040532046237, -3.3032557034584, - 0.549324748173291, 8.63089145494412}, - {-4.64294924610689, -1.03961735354666, -5.94838304383518, - -5.14494916413428, 0.865768755325211, 3.17305862226336, -0.17689672644592, - -11.1702998443119}, - {-0.75257412651179, 7.45653016330318, 1.53531423087191, -0.944661904110734, - 2.27175825244693, 0.625586633690943, 0.556680865915938, 8.70515377733531}, - {1.48517605340595, -1.10139488332919, -1.20437312666678, -15.7567359489487, - 0.564551471160599, 0.343355103916556, 0.956188296533458, - -14.4810699542064}, - {-1.41297642979771, 1.7421562904492, 1.51246974803507, -0.277205719612539, - -0.746303261257708, 1.31841345876455, -0.315569517202675, - -1.43151946831495}}}; -const auto fWeightMatrix1to2 = std::array, 7>{ - {{0.249095596049212, 0.43896816611743, 2.51443611518656, -1.99550475508056, - -3.01891555380374, -1.5384309247739, -1.10809432820241, -2.23884147411375, - -1.80018616467714, 0.0926501061367807}, - {-0.79810107527313, -0.128565504120936, -1.47898746860618, - -1.98749268865462, -4.1729473774923, -0.319376625137038, 2.68241976233123, - -1.2438721745196, 1.06194042880088, -1.11115934197209}, - {-0.541616972751047, -0.883639706603654, -1.21647636736428, - 2.00429851976991, -0.333604676335978, -1.30666235698471, - 0.300409853048531, 1.71280717271126, 0.143585634417832, - 0.862440249952535}, - {-0.0738827412712401, 0.710660017309775, -1.81469923323104, - -2.0032894120881, 0.0757757984176355, 0.946471866500602, - -0.862679340246423, -0.336329345694109, -1.81861709989607, - -1.65647777258377}, - {-2.46837296738587, -0.892461394707053, -0.164670653708065, - -1.40986988591441, -1.29634197190675, -0.103818171050218, - 1.62473520412615, -0.10368342877725, 0.655178595334291, 3.10987357888943}, - {-3.51942943078094, 0.05403637176598, -0.112974678381018, - -0.992599640919349, 2.32462754890465, 0.0152632384089371, - -1.55107042088954, -2.78524739346744, -1.44013551902026, - -0.069348300182213}, - {3.50273770909445, -0.563785026359985, -0.682273837786807, - 0.00116206143253937, 0.0443816144597161, 0.571844608360393, - -1.17322063876001, -1.09420727621842, 0.0595564302057028, - 0.887055205865514}}}; -const auto fWeightMatrix2to3 = std::array{ - {-0.527095695381938, 0.873978759522188, -0.505869602713493, - -0.458736757125275, 1.00063852384923, -0.651233083081496, 1.09109419846381, - -1.55585886153223}}; diff --git a/nn_electron_training/result_new_variable_dqop/matching.hpp b/nn_electron_training/result_new_variable_dqop/matching.hpp deleted file mode 100644 index 2217fe3..0000000 --- a/nn_electron_training/result_new_variable_dqop/matching.hpp +++ /dev/null @@ -1,63 +0,0 @@ - const auto fMin = std::array{ - {2.32376150961e-05, 1.20999845876e-06, 3.0517578125e-05, 0.000152587890625, - 5.18634915352e-05, 3.16649675369e-08, 2.91038304567e-11}}; - const auto fMax = std::array{ - {29.999835968, 0.448848098516, 490.75402832, 499.918823242, 1.29696559906, - 0.148829773068, 0.000133186404128}}; - const auto fWeightMatrix0to1 = std::array, 9>{ - {{-1.92788180969447, 4.16064785412784, -2.11335551271703, 7.9294095607534, - 2.18170560740568, -8.44761548627774, -21.5047552584798, - -16.0650884865238}, - {-1.61376550856811, -18.3767723062232, 6.29188806075221, 17.1629698975724, - -4.06178649035417, 8.91994724771869, 0.945309347327087, 10.2364214261801}, - {0.260725207756956, -7.39063316113963, 5.85798680146154, 20.895198655668, - -5.37769824548582, -14.2293948664243, 0.995342070597369, - 1.20800372506884}, - {0.953241806012774, 2.47323765132763, 2.08443843097691, -1.43196935568204, - 4.74700613459522, 0.189179081361804, -16.9045615453658, - -6.43026395704888}, - {-1.92981663032188, -0.37230565268653, 0.814369803792726, 1.73699189907859, - 1.11733301402944, 1.46887116928329, 1.49186452419427, -1.29918641902703}, - {-16.8338849958765, 6.56643273179019, -3.48428147705122, 0.326903745037315, - -2.06105265356339, -4.41540617406857, 5.02090403276349, - -13.5579467656888}, - {-2.06856046873756, 1.37857017711159, -10.4255727807086, 5.40802232507597, - 6.86445294409404, 5.35440411482745, -6.85993978444102, - -0.729076014469736}, - {-0.526653874830334, 8.98715315712336, -2.34742788084526, - -1.27417058696474, 5.55759129208842, -3.2700796957674, -0.831113531084397, - 2.18499951551135}, - {-1.41297642979771, 1.7421562904492, 1.51246974803507, -0.277205719612539, - -0.746303261257708, 1.31841345876455, -0.315569517202675, - -1.43151946831495}}}; - const auto fWeightMatrix1to2 = std::array, 7>{ - {{0.0324469931195793, -0.288230539372084, 1.64983047434275, - -1.24756371282518, -1.94639586807131, -0.310928305245747, - -4.99162520915551, 0.264942892832968, -1.80018616467714, - 2.77914512003005}, - {-0.0148602437129058, -1.2132748075938, -0.218359722842231, - -0.633592266259126, -1.66464499515867, -2.55247320011507, - 0.942074824320476, -1.41987137293765, 1.06194042880088, 3.89059634854256}, - {-0.0974156676281787, 1.4515472939941, 1.12169407748122, 0.1569833587188, - 0.715433387778868, -2.40068948213013, -1.20271162851859, 1.58722622760245, - 0.143585634417832, -0.958611632301647}, - {-0.535241107505903, -0.222101479961216, -1.72874348280829, - -1.09357655226657, 1.67832177468419, -1.85229898078416, - -0.879756942942339, 0.0297380421842839, -1.81861709989607, - -0.271711324852575}, - {-2.12445796868783, -0.913233265968283, -0.338898758417067, - -1.65257155394075, -1.15348755568266, -0.571688294860023, - -0.590397833605982, -0.152323738308279, 0.655178595334291, - -6.84207556062884e-06}, - {-1.95868900053493, -0.605205894790946, -1.36009261632635, - -2.34452772551367, 1.60461574133745, -0.00209217938454121, - 0.145219515490194, -3.24026630749251, -1.44013551902026, - 10.2107763198695}, - {0.384756246095988, -0.392456215033468, -2.59979095776574, - -1.14968086393069, -0.936541749845882, 4.08852696879947, - -0.0319867516820682, -1.98678786024887, 0.0595564302057028, - 3.2850148235822}}}; - const auto fWeightMatrix2to3 = std::array{ - {-0.975457561894625, 0.722739660815715, -0.35623550622024, 1.13391106903613, - 0.663374242757088, -0.893283186205502, 0.795604576331046, - -1.33372154704332}}; diff --git a/nn_trackinglosses_training/result/matching.hpp b/nn_trackinglosses_training/result/matching.hpp deleted file mode 100644 index cb30977..0000000 --- a/nn_trackinglosses_training/result/matching.hpp +++ /dev/null @@ -1,17 +0,0 @@ -const auto ResfMin = std::array{ - {1.20620707094e-05, 2.0063980628e-06, 8.45295653562e-05, 0.000119162104966, - 4.75468114018e-05, 4.38088898491e-09}}; -const auto ResfMax = - std::array{{29.999212265, 0.29415422678, 486.515930176, - 499.948669434, 1.293815732, 0.145083397627}}; -const auto ResfWeightMatrix0to1 = std::array, 8>{ - {{nan, nan, nan, nan, nan, nan, nan}, - {nan, nan, nan, nan, nan, nan, nan}, - {nan, nan, nan, nan, nan, nan, nan}, - {nan, nan, nan, nan, nan, nan, nan}, - {nan, nan, nan, nan, nan, nan, nan}, - {nan, nan, nan, nan, nan, nan, nan}, - {nan, nan, nan, nan, nan, nan, nan}, - {nan, nan, nan, nan, nan, nan, nan}}}; -const auto ResfWeightMatrix1to2 = std::array{ - {-nan, -nan, -nan, -nan, -nan, -nan, -nan, -nan, -nan}}; diff --git a/outputs_nn/output_B.txt b/outputs_nn/output_B.txt deleted file mode 100644 index 3d0f600..0000000 --- a/outputs_nn/output_B.txt +++ /dev/null @@ -1,268 +0,0 @@ - : Parsing option string: - : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" - : The following options are set: - : - By User: - : V: "True" [Verbose flag] - : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] - : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] - : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] - : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] - : - Default: - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] - : Correlations: "False" [boolean to show correlation in output] - : ROC: "True" [boolean to show ROC in output] - : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] -DataSetInfo : [MatchNNDataSet] : Added class "Signal" - : Add Tree Signal of type Signal with 187767 events -DataSetInfo : [MatchNNDataSet] : Added class "Background" - : Add Tree Bkg of type Background with 14040318 events - : Dataset[MatchNNDataSet] : Class index : 0 name : Signal - : Dataset[MatchNNDataSet] : Class index : 1 name : Background -Factory : Booking method: matching_mlp - : - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : - : - Default: - : Boost_num: "0" [Number of times the classifier will be boosted] - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : NCycles: "700" [Number of training cycles] - : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] - : NeuronType: "ReLU" [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: "False" [Print method-specific help message] - : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] - : LearningRate: "2.000000e-02" [ANN learning rate parameter] - : DecayRate: "1.000000e-02" [Decay rate for learning parameter] - : TestRate: "50" [Test for overtraining performed at each #th epochs] - : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] - : 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.] - : UseRegulator: "False" [Use regulator to avoid over-training] - : - 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: "Default" [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)] - : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] - : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] - : 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)] - : 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] -matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -matching_mlp : Building Network. - : Initializing weights -Factory : Train all methods - : Rebuilding Dataset MatchNNDataSet - : Parsing option string: - : ... "SplitMode=random:V:nTrain_Signal=100000.0:nTrain_Background=200000.0:nTest_Signal=10000.0:nTest_Background=20000.0" - : The following options are set: - : - By User: - : SplitMode: "Random" [Method of picking training and testing events (default: random)] - : nTrain_Signal: "100000" [Number of training events of class Signal (default: 0 = all)] - : nTest_Signal: "10000" [Number of test events of class Signal (default: 0 = all)] - : nTrain_Background: "200000" [Number of training events of class Background (default: 0 = all)] - : nTest_Background: "20000" [Number of test events of class Background (default: 0 = all)] - : V: "True" [Verbosity (default: true)] - : - Default: - : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] - : SplitSeed: "100" [Seed for random event shuffling] - : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] - : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] - : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] - : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Correlations: "True" [Boolean to show correlation output (Default: true)] - : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] - : Building event vectors for type 2 Signal - : Dataset[MatchNNDataSet] : create input formulas for tree Signal - : Building event vectors for type 2 Background - : Dataset[MatchNNDataSet] : create input formulas for tree Bkg -DataSetFactory : [MatchNNDataSet] : Number of events in input trees - : - : - : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... - : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same - : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) - : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... - : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events - : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) - : Number of training and testing events - : --------------------------------------------------------------------------- - : Signal -- training events : 100000 - : Signal -- testing events : 10000 - : Signal -- training and testing events: 110000 - : Background -- training events : 200000 - : Background -- testing events : 20000 - : Background -- training and testing events: 220000 - : -DataSetInfo : Correlation matrix (Signal): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 -0.094 +0.508 +0.558 +0.393 +0.145 - : teta2: -0.094 +1.000 -0.010 +0.345 -0.010 +0.388 - : distX: +0.508 -0.010 +1.000 +0.202 +0.501 +0.230 - : distY: +0.558 +0.345 +0.202 +1.000 +0.507 +0.472 - : dSlope: +0.393 -0.010 +0.501 +0.507 +1.000 +0.497 - : dSlopeY: +0.145 +0.388 +0.230 +0.472 +0.497 +1.000 - : -------------------------------------------------------- -DataSetInfo : Correlation matrix (Background): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 +0.008 +0.363 +0.312 -0.001 +0.102 - : teta2: +0.008 +1.000 +0.217 +0.626 +0.297 +0.493 - : distX: +0.363 +0.217 +1.000 +0.062 +0.631 +0.203 - : distY: +0.312 +0.626 +0.062 +1.000 +0.250 +0.543 - : dSlope: -0.001 +0.297 +0.631 +0.250 +1.000 +0.361 - : dSlopeY: +0.102 +0.493 +0.203 +0.543 +0.361 +1.000 - : -------------------------------------------------------- -DataSetFactory : [MatchNNDataSet] : - : -Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -TFHandler_Factory : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 8.4293 9.2426 [ 2.3238e-05 30.000 ] - : teta2: 0.0057581 0.014094 [ 1.5125e-06 0.40287 ] - : distX: 40.107 55.141 [ 3.0518e-05 497.68 ] - : distY: 26.294 37.024 [ 4.5776e-05 499.89 ] - : dSlope: 0.33133 0.23520 [ 1.3022e-05 1.3517 ] - : dSlopeY: 0.0054522 0.0092106 [ 9.3132e-10 0.14883 ] - : ----------------------------------------------------------- - : Ranking input variables (method unspecific)... -IdTransformation : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Separation - : -------------------------------- - : 1 : chi2 : 5.690e-01 - : 2 : distX : 3.736e-01 - : 3 : distY : 2.091e-01 - : 4 : dSlopeY : 8.232e-02 - : 5 : dSlope : 8.601e-03 - : 6 : teta2 : 3.474e-03 - : -------------------------------- -Factory : Train method: matching_mlp for Classification - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.43805 0.61618 [ -1.0000 1.0000 ] - : teta2: -0.97142 0.069969 [ -1.0000 1.0000 ] - : distX: -0.83882 0.22159 [ -1.0000 1.0000 ] - : distY: -0.89480 0.14813 [ -1.0000 1.0000 ] - : dSlope: -0.50978 0.34801 [ -1.0000 1.0000 ] - : dSlopeY: -0.92673 0.12377 [ -1.0000 1.0000 ] - : ----------------------------------------------------------- - : Training Network - : - : Elapsed time for training with 300000 events: 853 sec -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (300000 events) - : Elapsed time for evaluation of 300000 events: 0.495 sec - : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml - : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C - : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp -Factory : Training finished - : - : Ranking input variables (method specific)... -matching_mlp : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Importance - : -------------------------------- - : 1 : distY : 5.213e+02 - : 2 : teta2 : 4.435e+02 - : 3 : dSlopeY : 4.414e+02 - : 4 : distX : 3.118e+02 - : 5 : dSlope : 2.646e+01 - : 6 : chi2 : 7.066e+00 - : -------------------------------- -Factory : === Destroy and recreate all methods via weight files for testing === - : - : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml -matching_mlp : Building Network. - : Initializing weights -Factory : Test all methods -Factory : Test method: matching_mlp for Classification performance - : -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (30000 events) - : Elapsed time for evaluation of 30000 events: 0.0597 sec -Factory : Evaluate all methods -Factory : Evaluate classifier: matching_mlp - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.29449 0.63524 [ -0.99999 0.99994 ] - : teta2: -0.97212 0.070073 [ -1.0000 0.32779 ] - : distX: -0.80346 0.24082 [ -1.0000 0.97553 ] - : distY: -0.87751 0.16136 [ -1.0000 0.95680 ] - : dSlope: -0.50293 0.35312 [ -0.99999 0.86422 ] - : dSlopeY: -0.91903 0.13042 [ -1.0000 0.95486 ] - : ----------------------------------------------------------- -matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.29449 0.63524 [ -0.99999 0.99994 ] - : teta2: -0.97212 0.070073 [ -1.0000 0.32779 ] - : distX: -0.80346 0.24082 [ -1.0000 0.97553 ] - : distY: -0.87751 0.16136 [ -1.0000 0.95680 ] - : dSlope: -0.50293 0.35312 [ -0.99999 0.86422 ] - : dSlopeY: -0.91903 0.13042 [ -1.0000 0.95486 ] - : ----------------------------------------------------------- - : - : Evaluation results ranked by best signal efficiency and purity (area) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA - : Name: Method: ROC-integ - : MatchNNDataSet matching_mlp : 0.958 - : ------------------------------------------------------------------------------------------------------------------- - : - : Testing efficiency compared to training efficiency (overtraining check) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA Signal efficiency: from test sample (from training sample) - : Name: Method: @B=0.01 @B=0.10 @B=0.30 - : ------------------------------------------------------------------------------------------------------------------- - : MatchNNDataSet matching_mlp : 0.450 (0.414) 0.886 (0.882) 0.980 (0.979) - : ------------------------------------------------------------------------------------------------------------------- - : -Dataset:MatchNNDataSet : Created tree 'TestTree' with 30000 events - : -Dataset:MatchNNDataSet : Created tree 'TrainTree' with 300000 events - : -Factory : Thank you for using TMVA! - : For citation information, please visit: http://tmva.sf.net/citeTMVA.html -Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... -Found minimum and maximum values for 6 variables. -Found 3 matrices: - 1. fWeightMatrix0to1 with 7 columns and 8 rows - 2. fWeightMatrix1to2 with 9 columns and 6 rows - 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_B_res.txt b/outputs_nn/output_B_res.txt deleted file mode 100644 index e4937ba..0000000 --- a/outputs_nn/output_B_res.txt +++ /dev/null @@ -1,268 +0,0 @@ - : Parsing option string: - : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" - : The following options are set: - : - By User: - : V: "True" [Verbose flag] - : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] - : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] - : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] - : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] - : - Default: - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] - : Correlations: "False" [boolean to show correlation in output] - : ROC: "True" [boolean to show ROC in output] - : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] -DataSetInfo : [MatchNNDataSet] : Added class "Signal" - : Add Tree Signal of type Signal with 7718 events -DataSetInfo : [MatchNNDataSet] : Added class "Background" - : Add Tree Bkg of type Background with 11895204 events - : Dataset[MatchNNDataSet] : Class index : 0 name : Signal - : Dataset[MatchNNDataSet] : Class index : 1 name : Background -Factory : Booking method: matching_mlp - : - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : - : - Default: - : Boost_num: "0" [Number of times the classifier will be boosted] - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : NCycles: "700" [Number of training cycles] - : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] - : NeuronType: "ReLU" [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: "False" [Print method-specific help message] - : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] - : LearningRate: "2.000000e-02" [ANN learning rate parameter] - : DecayRate: "1.000000e-02" [Decay rate for learning parameter] - : TestRate: "50" [Test for overtraining performed at each #th epochs] - : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] - : 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.] - : UseRegulator: "False" [Use regulator to avoid over-training] - : - 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: "Default" [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)] - : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] - : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] - : 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)] - : 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] -matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -matching_mlp : Building Network. - : Initializing weights -Factory : Train all methods - : Rebuilding Dataset MatchNNDataSet - : Parsing option string: - : ... "SplitMode=random:V:nTrain_Signal=0:nTrain_Background=20000.0:nTest_Signal=1000.0:nTest_Background=5000.0" - : The following options are set: - : - By User: - : SplitMode: "Random" [Method of picking training and testing events (default: random)] - : nTrain_Signal: "0" [Number of training events of class Signal (default: 0 = all)] - : nTest_Signal: "1000" [Number of test events of class Signal (default: 0 = all)] - : nTrain_Background: "20000" [Number of training events of class Background (default: 0 = all)] - : nTest_Background: "5000" [Number of test events of class Background (default: 0 = all)] - : V: "True" [Verbosity (default: true)] - : - Default: - : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] - : SplitSeed: "100" [Seed for random event shuffling] - : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] - : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] - : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] - : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Correlations: "True" [Boolean to show correlation output (Default: true)] - : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] - : Building event vectors for type 2 Signal - : Dataset[MatchNNDataSet] : create input formulas for tree Signal - : Building event vectors for type 2 Background - : Dataset[MatchNNDataSet] : create input formulas for tree Bkg -DataSetFactory : [MatchNNDataSet] : Number of events in input trees - : - : - : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... - : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same - : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) - : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... - : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events - : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) - : Number of training and testing events - : --------------------------------------------------------------------------- - : Signal -- training events : 6718 - : Signal -- testing events : 1000 - : Signal -- training and testing events: 7718 - : Background -- training events : 20000 - : Background -- testing events : 5000 - : Background -- training and testing events: 25000 - : -DataSetInfo : Correlation matrix (Signal): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 -0.083 +0.248 +0.242 +0.206 +0.042 - : teta2: -0.083 +1.000 +0.038 +0.508 +0.191 +0.637 - : distX: +0.248 +0.038 +1.000 -0.175 +0.681 +0.107 - : distY: +0.242 +0.508 -0.175 +1.000 +0.349 +0.484 - : dSlope: +0.206 +0.191 +0.681 +0.349 +1.000 +0.349 - : dSlopeY: +0.042 +0.637 +0.107 +0.484 +0.349 +1.000 - : -------------------------------------------------------- -DataSetInfo : Correlation matrix (Background): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 -0.024 +0.242 +0.209 +0.046 +0.055 - : teta2: -0.024 +1.000 +0.245 +0.652 +0.371 +0.483 - : distX: +0.242 +0.245 +1.000 +0.017 +0.776 +0.198 - : distY: +0.209 +0.652 +0.017 +1.000 +0.312 +0.554 - : dSlope: +0.046 +0.371 +0.776 +0.312 +1.000 +0.392 - : dSlopeY: +0.055 +0.483 +0.198 +0.554 +0.392 +1.000 - : -------------------------------------------------------- -DataSetFactory : [MatchNNDataSet] : - : -Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -TFHandler_Factory : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 14.879 7.6783 [ 0.35410 29.998 ] - : teta2: 0.0053594 0.015677 [ 5.5206e-06 0.34331 ] - : distX: 74.975 63.347 [ 0.00024414 487.68 ] - : distY: 35.490 43.750 [ 8.3923e-05 497.42 ] - : dSlope: 0.35788 0.24459 [ 6.4602e-05 1.2881 ] - : dSlopeY: 0.0073112 0.012369 [ 3.9814e-08 0.14883 ] - : ----------------------------------------------------------- - : Ranking input variables (method unspecific)... -IdTransformation : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Separation - : -------------------------------- - : 1 : chi2 : 9.921e-02 - : 2 : distY : 8.773e-02 - : 3 : dSlopeY : 2.784e-02 - : 4 : teta2 : 2.748e-02 - : 5 : dSlope : 2.662e-02 - : 6 : distX : 1.420e-02 - : -------------------------------- -Factory : Train method: matching_mlp for Classification - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.020078 0.51803 [ -1.0000 1.0000 ] - : teta2: -0.96881 0.091329 [ -1.0000 1.0000 ] - : distX: -0.69253 0.25979 [ -1.0000 1.0000 ] - : distY: -0.85730 0.17591 [ -1.0000 1.0000 ] - : dSlope: -0.44439 0.37979 [ -1.0000 1.0000 ] - : dSlopeY: -0.90175 0.16622 [ -1.0000 1.0000 ] - : ----------------------------------------------------------- - : Training Network - : - : Elapsed time for training with 26718 events: 57.7 sec -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (26718 events) - : Elapsed time for evaluation of 26718 events: 0.0346 sec - : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml - : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C - : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp -Factory : Training finished - : - : Ranking input variables (method specific)... -matching_mlp : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Importance - : -------------------------------- - : 1 : distY : 1.467e+02 - : 2 : teta2 : 6.884e+01 - : 3 : distX : 6.627e+01 - : 4 : dSlopeY : 3.066e+01 - : 5 : dSlope : 1.175e+01 - : 6 : chi2 : 2.632e+00 - : -------------------------------- -Factory : === Destroy and recreate all methods via weight files for testing === - : - : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml -matching_mlp : Building Network. - : Initializing weights -Factory : Test all methods -Factory : Test method: matching_mlp for Classification performance - : -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (6000 events) - : Elapsed time for evaluation of 6000 events: 0.0118 sec -Factory : Evaluate all methods -Factory : Evaluate classifier: matching_mlp - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 0.10881 0.51711 [ -1.0020 0.99902 ] - : teta2: -0.96093 0.10865 [ -0.99988 0.46950 ] - : distX: -0.67673 0.27337 [ -0.99968 0.75285 ] - : distY: -0.82663 0.20236 [ -0.99997 0.83868 ] - : dSlope: -0.46394 0.38477 [ -0.99839 0.97924 ] - : dSlopeY: -0.89235 0.16561 [ -1.0000 0.93883 ] - : ----------------------------------------------------------- -matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 0.10881 0.51711 [ -1.0020 0.99902 ] - : teta2: -0.96093 0.10865 [ -0.99988 0.46950 ] - : distX: -0.67673 0.27337 [ -0.99968 0.75285 ] - : distY: -0.82663 0.20236 [ -0.99997 0.83868 ] - : dSlope: -0.46394 0.38477 [ -0.99839 0.97924 ] - : dSlopeY: -0.89235 0.16561 [ -1.0000 0.93883 ] - : ----------------------------------------------------------- - : - : Evaluation results ranked by best signal efficiency and purity (area) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA - : Name: Method: ROC-integ - : MatchNNDataSet matching_mlp : 0.842 - : ------------------------------------------------------------------------------------------------------------------- - : - : Testing efficiency compared to training efficiency (overtraining check) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA Signal efficiency: from test sample (from training sample) - : Name: Method: @B=0.01 @B=0.10 @B=0.30 - : ------------------------------------------------------------------------------------------------------------------- - : MatchNNDataSet matching_mlp : 0.075 (0.082) 0.476 (0.467) 0.841 (0.828) - : ------------------------------------------------------------------------------------------------------------------- - : -Dataset:MatchNNDataSet : Created tree 'TestTree' with 6000 events - : -Dataset:MatchNNDataSet : Created tree 'TrainTree' with 26718 events - : -Factory : Thank you for using TMVA! - : For citation information, please visit: http://tmva.sf.net/citeTMVA.html -Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... -Found minimum and maximum values for 6 variables. -Found 3 matrices: - 1. fWeightMatrix0to1 with 7 columns and 8 rows - 2. fWeightMatrix1to2 with 9 columns and 6 rows - 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_D.txt b/outputs_nn/output_D.txt deleted file mode 100644 index e69de29..0000000 diff --git a/outputs_nn/output_D_res.txt b/outputs_nn/output_D_res.txt deleted file mode 100644 index cb1eefd..0000000 --- a/outputs_nn/output_D_res.txt +++ /dev/null @@ -1,268 +0,0 @@ - : Parsing option string: - : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" - : The following options are set: - : - By User: - : V: "True" [Verbose flag] - : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] - : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] - : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] - : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] - : - Default: - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] - : Correlations: "False" [boolean to show correlation in output] - : ROC: "True" [boolean to show ROC in output] - : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] -DataSetInfo : [MatchNNDataSet] : Added class "Signal" - : Add Tree Signal of type Signal with 8286 events -DataSetInfo : [MatchNNDataSet] : Added class "Background" - : Add Tree Bkg of type Background with 12762964 events - : Dataset[MatchNNDataSet] : Class index : 0 name : Signal - : Dataset[MatchNNDataSet] : Class index : 1 name : Background -Factory : Booking method: matching_mlp - : - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : - : - Default: - : Boost_num: "0" [Number of times the classifier will be boosted] - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : NCycles: "700" [Number of training cycles] - : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] - : NeuronType: "ReLU" [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: "False" [Print method-specific help message] - : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] - : LearningRate: "2.000000e-02" [ANN learning rate parameter] - : DecayRate: "1.000000e-02" [Decay rate for learning parameter] - : TestRate: "50" [Test for overtraining performed at each #th epochs] - : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] - : 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.] - : UseRegulator: "False" [Use regulator to avoid over-training] - : - 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: "Default" [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)] - : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] - : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] - : 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)] - : 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] -matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -matching_mlp : Building Network. - : Initializing weights -Factory : Train all methods - : Rebuilding Dataset MatchNNDataSet - : Parsing option string: - : ... "SplitMode=random:V:nTrain_Signal=0:nTrain_Background=20000.0:nTest_Signal=1000.0:nTest_Background=5000.0" - : The following options are set: - : - By User: - : SplitMode: "Random" [Method of picking training and testing events (default: random)] - : nTrain_Signal: "0" [Number of training events of class Signal (default: 0 = all)] - : nTest_Signal: "1000" [Number of test events of class Signal (default: 0 = all)] - : nTrain_Background: "20000" [Number of training events of class Background (default: 0 = all)] - : nTest_Background: "5000" [Number of test events of class Background (default: 0 = all)] - : V: "True" [Verbosity (default: true)] - : - Default: - : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] - : SplitSeed: "100" [Seed for random event shuffling] - : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] - : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] - : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] - : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Correlations: "True" [Boolean to show correlation output (Default: true)] - : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] - : Building event vectors for type 2 Signal - : Dataset[MatchNNDataSet] : create input formulas for tree Signal - : Building event vectors for type 2 Background - : Dataset[MatchNNDataSet] : create input formulas for tree Bkg -DataSetFactory : [MatchNNDataSet] : Number of events in input trees - : - : - : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... - : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same - : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) - : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... - : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events - : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) - : Number of training and testing events - : --------------------------------------------------------------------------- - : Signal -- training events : 7286 - : Signal -- testing events : 1000 - : Signal -- training and testing events: 8286 - : Background -- training events : 20000 - : Background -- testing events : 5000 - : Background -- training and testing events: 25000 - : -DataSetInfo : Correlation matrix (Signal): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 -0.090 +0.190 +0.270 +0.150 +0.032 - : teta2: -0.090 +1.000 +0.022 +0.557 +0.231 +0.681 - : distX: +0.190 +0.022 +1.000 -0.243 +0.667 +0.066 - : distY: +0.270 +0.557 -0.243 +1.000 +0.299 +0.491 - : dSlope: +0.150 +0.231 +0.667 +0.299 +1.000 +0.343 - : dSlopeY: +0.032 +0.681 +0.066 +0.491 +0.343 +1.000 - : -------------------------------------------------------- -DataSetInfo : Correlation matrix (Background): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 -0.032 +0.249 +0.208 +0.048 +0.047 - : teta2: -0.032 +1.000 +0.256 +0.643 +0.377 +0.464 - : distX: +0.249 +0.256 +1.000 +0.027 +0.771 +0.192 - : distY: +0.208 +0.643 +0.027 +1.000 +0.323 +0.556 - : dSlope: +0.048 +0.377 +0.771 +0.323 +1.000 +0.394 - : dSlopeY: +0.047 +0.464 +0.192 +0.556 +0.394 +1.000 - : -------------------------------------------------------- -DataSetFactory : [MatchNNDataSet] : - : -Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -TFHandler_Factory : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 15.110 7.5957 [ 0.25759 29.998 ] - : teta2: 0.0049007 0.015613 [ 1.1810e-05 0.34609 ] - : distX: 77.540 64.030 [ 0.00059319 494.45 ] - : distY: 35.596 43.128 [ 0.0016556 497.11 ] - : dSlope: 0.37313 0.24282 [ 0.00012810 1.2803 ] - : dSlopeY: 0.0071048 0.011434 [ 4.9639e-07 0.14679 ] - : ----------------------------------------------------------- - : Ranking input variables (method unspecific)... -IdTransformation : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Separation - : -------------------------------- - : 1 : chi2 : 8.701e-02 - : 2 : distY : 7.455e-02 - : 3 : dSlope : 6.957e-02 - : 4 : teta2 : 4.316e-02 - : 5 : dSlopeY : 2.562e-02 - : 6 : distX : 1.371e-02 - : -------------------------------- -Factory : Train method: matching_mlp for Classification - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.0011851 0.51079 [ -1.0000 1.0000 ] - : teta2: -0.97175 0.090226 [ -1.0000 1.0000 ] - : distX: -0.68636 0.25900 [ -1.0000 1.0000 ] - : distY: -0.85679 0.17352 [ -1.0000 1.0000 ] - : dSlope: -0.41728 0.37935 [ -1.0000 1.0000 ] - : dSlopeY: -0.90320 0.15579 [ -1.0000 1.0000 ] - : ----------------------------------------------------------- - : Training Network - : - : Elapsed time for training with 27286 events: 59.2 sec -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (27286 events) - : Elapsed time for evaluation of 27286 events: 0.0331 sec - : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml - : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C - : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp -Factory : Training finished - : - : Ranking input variables (method specific)... -matching_mlp : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Importance - : -------------------------------- - : 1 : distY : 1.487e+02 - : 2 : distX : 9.251e+01 - : 3 : dSlopeY : 5.612e+01 - : 4 : teta2 : 3.951e+01 - : 5 : dSlope : 1.219e+01 - : 6 : chi2 : 1.428e+00 - : -------------------------------- -Factory : === Destroy and recreate all methods via weight files for testing === - : - : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml -matching_mlp : Building Network. - : Initializing weights -Factory : Test all methods -Factory : Test method: matching_mlp for Classification performance - : -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (6000 events) - : Elapsed time for evaluation of 6000 events: 0.0113 sec -Factory : Evaluate all methods -Factory : Evaluate classifier: matching_mlp - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 0.10129 0.51080 [ -0.98564 0.99991 ] - : teta2: -0.96473 0.096760 [ -0.99997 0.43123 ] - : distX: -0.68127 0.26859 [ -0.99983 0.92711 ] - : distY: -0.83124 0.20417 [ -0.99994 1.0115 ] - : dSlope: -0.45660 0.39080 [ -0.99695 0.96415 ] - : dSlopeY: -0.89629 0.16201 [ -0.99999 1.0015 ] - : ----------------------------------------------------------- -matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 0.10129 0.51080 [ -0.98564 0.99991 ] - : teta2: -0.96473 0.096760 [ -0.99997 0.43123 ] - : distX: -0.68127 0.26859 [ -0.99983 0.92711 ] - : distY: -0.83124 0.20417 [ -0.99994 1.0115 ] - : dSlope: -0.45660 0.39080 [ -0.99695 0.96415 ] - : dSlopeY: -0.89629 0.16201 [ -0.99999 1.0015 ] - : ----------------------------------------------------------- - : - : Evaluation results ranked by best signal efficiency and purity (area) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA - : Name: Method: ROC-integ - : MatchNNDataSet matching_mlp : 0.854 - : ------------------------------------------------------------------------------------------------------------------- - : - : Testing efficiency compared to training efficiency (overtraining check) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA Signal efficiency: from test sample (from training sample) - : Name: Method: @B=0.01 @B=0.10 @B=0.30 - : ------------------------------------------------------------------------------------------------------------------- - : MatchNNDataSet matching_mlp : 0.091 (0.089) 0.501 (0.494) 0.851 (0.854) - : ------------------------------------------------------------------------------------------------------------------- - : -Dataset:MatchNNDataSet : Created tree 'TestTree' with 6000 events - : -Dataset:MatchNNDataSet : Created tree 'TrainTree' with 27286 events - : -Factory : Thank you for using TMVA! - : For citation information, please visit: http://tmva.sf.net/citeTMVA.html -Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... -Found minimum and maximum values for 6 variables. -Found 3 matrices: - 1. fWeightMatrix0to1 with 7 columns and 8 rows - 2. fWeightMatrix1to2 with 9 columns and 6 rows - 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_both.txt b/outputs_nn/output_both.txt deleted file mode 100644 index 5062d7d..0000000 --- a/outputs_nn/output_both.txt +++ /dev/null @@ -1,268 +0,0 @@ - : Parsing option string: - : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" - : The following options are set: - : - By User: - : V: "True" [Verbose flag] - : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] - : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] - : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] - : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] - : - Default: - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] - : Correlations: "False" [boolean to show correlation in output] - : ROC: "True" [boolean to show ROC in output] - : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] -DataSetInfo : [MatchNNDataSet] : Added class "Signal" - : Add Tree Signal of type Signal with 13829 events -DataSetInfo : [MatchNNDataSet] : Added class "Background" - : Add Tree Bkg of type Background with 29144752 events - : Dataset[MatchNNDataSet] : Class index : 0 name : Signal - : Dataset[MatchNNDataSet] : Class index : 1 name : Background -Factory : Booking method: matching_mlp - : - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : - : - Default: - : Boost_num: "0" [Number of times the classifier will be boosted] - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : NCycles: "700" [Number of training cycles] - : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] - : NeuronType: "ReLU" [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: "False" [Print method-specific help message] - : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] - : LearningRate: "2.000000e-02" [ANN learning rate parameter] - : DecayRate: "1.000000e-02" [Decay rate for learning parameter] - : TestRate: "50" [Test for overtraining performed at each #th epochs] - : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] - : 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.] - : UseRegulator: "False" [Use regulator to avoid over-training] - : - 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: "Default" [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)] - : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] - : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] - : 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)] - : 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] -matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -matching_mlp : Building Network. - : Initializing weights -Factory : Train all methods - : Rebuilding Dataset MatchNNDataSet - : Parsing option string: - : ... "SplitMode=random:V:nTrain_Signal=0:nTrain_Background=20000.0:nTest_Signal=2000.0:nTest_Background=5000.0" - : The following options are set: - : - By User: - : SplitMode: "Random" [Method of picking training and testing events (default: random)] - : nTrain_Signal: "0" [Number of training events of class Signal (default: 0 = all)] - : nTest_Signal: "2000" [Number of test events of class Signal (default: 0 = all)] - : nTrain_Background: "20000" [Number of training events of class Background (default: 0 = all)] - : nTest_Background: "5000" [Number of test events of class Background (default: 0 = all)] - : V: "True" [Verbosity (default: true)] - : - Default: - : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] - : SplitSeed: "100" [Seed for random event shuffling] - : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] - : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] - : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] - : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Correlations: "True" [Boolean to show correlation output (Default: true)] - : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] - : Building event vectors for type 2 Signal - : Dataset[MatchNNDataSet] : create input formulas for tree Signal - : Building event vectors for type 2 Background - : Dataset[MatchNNDataSet] : create input formulas for tree Bkg -DataSetFactory : [MatchNNDataSet] : Number of events in input trees - : - : - : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... - : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same - : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) - : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... - : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events - : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) - : Number of training and testing events - : --------------------------------------------------------------------------- - : Signal -- training events : 11829 - : Signal -- testing events : 2000 - : Signal -- training and testing events: 13829 - : Background -- training events : 20000 - : Background -- testing events : 5000 - : Background -- training and testing events: 25000 - : -DataSetInfo : Correlation matrix (Signal): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 -0.082 +0.200 +0.302 +0.182 +0.049 - : teta2: -0.082 +1.000 +0.033 +0.461 +0.179 +0.632 - : distX: +0.200 +0.033 +1.000 -0.222 +0.685 +0.075 - : distY: +0.302 +0.461 -0.222 +1.000 +0.306 +0.463 - : dSlope: +0.182 +0.179 +0.685 +0.306 +1.000 +0.319 - : dSlopeY: +0.049 +0.632 +0.075 +0.463 +0.319 +1.000 - : -------------------------------------------------------- -DataSetInfo : Correlation matrix (Background): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 -0.003 +0.368 +0.313 -0.005 +0.094 - : teta2: -0.003 +1.000 +0.215 +0.617 +0.302 +0.491 - : distX: +0.368 +0.215 +1.000 +0.065 +0.633 +0.203 - : distY: +0.313 +0.617 +0.065 +1.000 +0.246 +0.532 - : dSlope: -0.005 +0.302 +0.633 +0.246 +1.000 +0.356 - : dSlopeY: +0.094 +0.491 +0.203 +0.532 +0.356 +1.000 - : -------------------------------------------------------- -DataSetFactory : [MatchNNDataSet] : - : -Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -TFHandler_Factory : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 13.817 7.9796 [ 0.0011579 29.997 ] - : teta2: 0.0040130 0.012209 [ 1.9755e-06 0.23492 ] - : distX: 71.018 61.492 [ 0.0031776 478.62 ] - : distY: 31.234 37.327 [ 0.00019073 497.26 ] - : dSlope: 0.37346 0.23976 [ 5.9959e-05 1.2822 ] - : dSlopeY: 0.0063004 0.010258 [ 3.9814e-08 0.14883 ] - : ----------------------------------------------------------- - : Ranking input variables (method unspecific)... -IdTransformation : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Separation - : -------------------------------- - : 1 : chi2 : 9.147e-02 - : 2 : distY : 5.407e-02 - : 3 : teta2 : 4.044e-02 - : 4 : dSlope : 3.233e-02 - : 5 : distX : 2.801e-02 - : 6 : dSlopeY : 1.699e-02 - : -------------------------------- -Factory : Train method: matching_mlp for Classification - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.078822 0.53204 [ -1.0000 1.0000 ] - : teta2: -0.96585 0.10395 [ -1.0000 1.0000 ] - : distX: -0.70325 0.25696 [ -1.0000 1.0000 ] - : distY: -0.87438 0.15013 [ -1.0000 1.0000 ] - : dSlope: -0.41755 0.37399 [ -1.0000 1.0000 ] - : dSlopeY: -0.91533 0.13785 [ -1.0000 1.0000 ] - : ----------------------------------------------------------- - : Training Network - : - : Elapsed time for training with 31829 events: 64.5 sec -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (31829 events) - : Elapsed time for evaluation of 31829 events: 0.0391 sec - : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml - : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C - : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp -Factory : Training finished - : - : Ranking input variables (method specific)... -matching_mlp : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Importance - : -------------------------------- - : 1 : distY : 3.588e+02 - : 2 : dSlopeY : 2.134e+02 - : 3 : distX : 1.426e+02 - : 4 : teta2 : 7.020e+01 - : 5 : dSlope : 1.303e+01 - : 6 : chi2 : 3.098e+00 - : -------------------------------- -Factory : === Destroy and recreate all methods via weight files for testing === - : - : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml -matching_mlp : Building Network. - : Initializing weights -Factory : Test all methods -Factory : Test method: matching_mlp for Classification performance - : -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (7000 events) - : Elapsed time for evaluation of 7000 events: 0.0138 sec -Factory : Evaluate all methods -Factory : Evaluate classifier: matching_mlp - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.055433 0.55630 [ -0.99875 1.0001 ] - : teta2: -0.96118 0.10498 [ -0.99999 0.45981 ] - : distX: -0.71039 0.26310 [ -0.99989 0.79697 ] - : distY: -0.86095 0.16028 [ -1.0000 0.89878 ] - : dSlope: -0.43538 0.38054 [ -0.99815 0.98969 ] - : dSlopeY: -0.91076 0.14080 [ -1.0000 0.93883 ] - : ----------------------------------------------------------- -matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.055433 0.55630 [ -0.99875 1.0001 ] - : teta2: -0.96118 0.10498 [ -0.99999 0.45981 ] - : distX: -0.71039 0.26310 [ -0.99989 0.79697 ] - : distY: -0.86095 0.16028 [ -1.0000 0.89878 ] - : dSlope: -0.43538 0.38054 [ -0.99815 0.98969 ] - : dSlopeY: -0.91076 0.14080 [ -1.0000 0.93883 ] - : ----------------------------------------------------------- - : - : Evaluation results ranked by best signal efficiency and purity (area) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA - : Name: Method: ROC-integ - : MatchNNDataSet matching_mlp : 0.853 - : ------------------------------------------------------------------------------------------------------------------- - : - : Testing efficiency compared to training efficiency (overtraining check) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA Signal efficiency: from test sample (from training sample) - : Name: Method: @B=0.01 @B=0.10 @B=0.30 - : ------------------------------------------------------------------------------------------------------------------- - : MatchNNDataSet matching_mlp : 0.000 (0.000) 0.470 (0.511) 0.877 (0.882) - : ------------------------------------------------------------------------------------------------------------------- - : -Dataset:MatchNNDataSet : Created tree 'TestTree' with 7000 events - : -Dataset:MatchNNDataSet : Created tree 'TrainTree' with 31829 events - : -Factory : Thank you for using TMVA! - : For citation information, please visit: http://tmva.sf.net/citeTMVA.html -Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... -Found minimum and maximum values for 6 variables. -Found 3 matrices: - 1. fWeightMatrix0to1 with 7 columns and 8 rows - 2. fWeightMatrix1to2 with 9 columns and 6 rows - 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_e_B.txt b/outputs_nn/output_e_B.txt deleted file mode 100644 index 58622c8..0000000 --- a/outputs_nn/output_e_B.txt +++ /dev/null @@ -1,268 +0,0 @@ - : Parsing option string: - : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" - : The following options are set: - : - By User: - : V: "True" [Verbose flag] - : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] - : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] - : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] - : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] - : - Default: - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] - : Correlations: "False" [boolean to show correlation in output] - : ROC: "True" [boolean to show ROC in output] - : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] -DataSetInfo : [MatchNNDataSet] : Added class "Signal" - : Add Tree Signal of type Signal with 187767 events -DataSetInfo : [MatchNNDataSet] : Added class "Background" - : Add Tree Bkg of type Background with 14040318 events - : Dataset[MatchNNDataSet] : Class index : 0 name : Signal - : Dataset[MatchNNDataSet] : Class index : 1 name : Background -Factory : Booking method: matching_mlp - : - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : - : - Default: - : Boost_num: "0" [Number of times the classifier will be boosted] - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : NCycles: "700" [Number of training cycles] - : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] - : NeuronType: "ReLU" [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: "False" [Print method-specific help message] - : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] - : LearningRate: "2.000000e-02" [ANN learning rate parameter] - : DecayRate: "1.000000e-02" [Decay rate for learning parameter] - : TestRate: "50" [Test for overtraining performed at each #th epochs] - : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] - : 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.] - : UseRegulator: "False" [Use regulator to avoid over-training] - : - 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: "Default" [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)] - : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] - : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] - : 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)] - : 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] -matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -matching_mlp : Building Network. - : Initializing weights -Factory : Train all methods - : Rebuilding Dataset MatchNNDataSet - : Parsing option string: - : ... "SplitMode=random:V:nTrain_Signal=50000.0:nTrain_Background=500000.0:nTest_Signal=20000.0:nTest_Background=100000.0" - : The following options are set: - : - By User: - : SplitMode: "Random" [Method of picking training and testing events (default: random)] - : nTrain_Signal: "50000" [Number of training events of class Signal (default: 0 = all)] - : nTest_Signal: "20000" [Number of test events of class Signal (default: 0 = all)] - : nTrain_Background: "500000" [Number of training events of class Background (default: 0 = all)] - : nTest_Background: "100000" [Number of test events of class Background (default: 0 = all)] - : V: "True" [Verbosity (default: true)] - : - Default: - : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] - : SplitSeed: "100" [Seed for random event shuffling] - : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] - : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] - : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] - : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Correlations: "True" [Boolean to show correlation output (Default: true)] - : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] - : Building event vectors for type 2 Signal - : Dataset[MatchNNDataSet] : create input formulas for tree Signal - : Building event vectors for type 2 Background - : Dataset[MatchNNDataSet] : create input formulas for tree Bkg -DataSetFactory : [MatchNNDataSet] : Number of events in input trees - : - : - : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... - : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same - : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) - : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... - : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events - : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) - : Number of training and testing events - : --------------------------------------------------------------------------- - : Signal -- training events : 50000 - : Signal -- testing events : 20000 - : Signal -- training and testing events: 70000 - : Background -- training events : 500000 - : Background -- testing events : 100000 - : Background -- training and testing events: 600000 - : -DataSetInfo : Correlation matrix (Signal): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 -0.094 +0.511 +0.560 +0.392 +0.141 - : teta2: -0.094 +1.000 -0.010 +0.336 -0.009 +0.390 - : distX: +0.511 -0.010 +1.000 +0.200 +0.501 +0.229 - : distY: +0.560 +0.336 +0.200 +1.000 +0.505 +0.456 - : dSlope: +0.392 -0.009 +0.501 +0.505 +1.000 +0.494 - : dSlopeY: +0.141 +0.390 +0.229 +0.456 +0.494 +1.000 - : -------------------------------------------------------- -DataSetInfo : Correlation matrix (Background): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 +0.006 +0.360 +0.312 -0.004 +0.103 - : teta2: +0.006 +1.000 +0.218 +0.626 +0.297 +0.487 - : distX: +0.360 +0.218 +1.000 +0.065 +0.633 +0.205 - : distY: +0.312 +0.626 +0.065 +1.000 +0.250 +0.538 - : dSlope: -0.004 +0.297 +0.633 +0.250 +1.000 +0.358 - : dSlopeY: +0.103 +0.487 +0.205 +0.538 +0.358 +1.000 - : -------------------------------------------------------- -DataSetFactory : [MatchNNDataSet] : - : -Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -TFHandler_Factory : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 8.4488 9.2446 [ 5.2334e-05 30.000 ] - : teta2: 0.0057495 0.014113 [ 1.2564e-06 0.42331 ] - : distX: 40.154 55.148 [ 4.3869e-05 499.60 ] - : distY: 26.206 36.751 [ 1.9073e-06 499.20 ] - : dSlope: 0.33045 0.23497 [ 4.7125e-07 1.3693 ] - : dSlopeY: 0.0054210 0.0091700 [ 1.0245e-08 0.14939 ] - : ----------------------------------------------------------- - : Ranking input variables (method unspecific)... -IdTransformation : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Separation - : -------------------------------- - : 1 : chi2 : 5.701e-01 - : 2 : distX : 3.731e-01 - : 3 : distY : 2.108e-01 - : 4 : dSlopeY : 8.367e-02 - : 5 : dSlope : 8.157e-03 - : 6 : teta2 : 3.280e-03 - : -------------------------------- -Factory : Train method: matching_mlp for Classification - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.43675 0.61631 [ -1.0000 1.0000 ] - : teta2: -0.97284 0.066677 [ -1.0000 1.0000 ] - : distX: -0.83926 0.22077 [ -1.0000 1.0000 ] - : distY: -0.89501 0.14724 [ -1.0000 1.0000 ] - : dSlope: -0.51734 0.34321 [ -1.0000 1.0000 ] - : dSlopeY: -0.92743 0.12276 [ -1.0000 1.0000 ] - : ----------------------------------------------------------- - : Training Network - : - : Elapsed time for training with 550000 events: 1.28e+03 sec -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (550000 events) - : Elapsed time for evaluation of 550000 events: 0.743 sec - : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml - : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C - : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp -Factory : Training finished - : - : Ranking input variables (method specific)... -matching_mlp : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Importance - : -------------------------------- - : 1 : distY : 3.418e+02 - : 2 : dSlopeY : 2.969e+02 - : 3 : teta2 : 2.257e+02 - : 4 : distX : 2.089e+02 - : 5 : dSlope : 1.525e+01 - : 6 : chi2 : 3.953e+00 - : -------------------------------- -Factory : === Destroy and recreate all methods via weight files for testing === - : - : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml -matching_mlp : Building Network. - : Initializing weights -Factory : Test all methods -Factory : Test method: matching_mlp for Classification performance - : -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (120000 events) - : Elapsed time for evaluation of 120000 events: 0.165 sec -Factory : Evaluate all methods -Factory : Evaluate classifier: matching_mlp - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.15704 0.62353 [ -1.0000 0.99999 ] - : teta2: -0.97379 0.069648 [ -0.99999 0.49021 ] - : distX: -0.76831 0.25194 [ -1.0000 0.99861 ] - : distY: -0.86100 0.17259 [ -1.0000 0.99055 ] - : dSlope: -0.50135 0.35288 [ -1.0000 0.94915 ] - : dSlopeY: -0.91297 0.13474 [ -1.0000 0.99972 ] - : ----------------------------------------------------------- -matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.15704 0.62353 [ -1.0000 0.99999 ] - : teta2: -0.97379 0.069648 [ -0.99999 0.49021 ] - : distX: -0.76831 0.25194 [ -1.0000 0.99861 ] - : distY: -0.86100 0.17259 [ -1.0000 0.99055 ] - : dSlope: -0.50135 0.35288 [ -1.0000 0.94915 ] - : dSlopeY: -0.91297 0.13474 [ -1.0000 0.99972 ] - : ----------------------------------------------------------- - : - : Evaluation results ranked by best signal efficiency and purity (area) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA - : Name: Method: ROC-integ - : MatchNNDataSet matching_mlp : 0.958 - : ------------------------------------------------------------------------------------------------------------------- - : - : Testing efficiency compared to training efficiency (overtraining check) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA Signal efficiency: from test sample (from training sample) - : Name: Method: @B=0.01 @B=0.10 @B=0.30 - : ------------------------------------------------------------------------------------------------------------------- - : MatchNNDataSet matching_mlp : 0.434 (0.435) 0.889 (0.888) 0.982 (0.982) - : ------------------------------------------------------------------------------------------------------------------- - : -Dataset:MatchNNDataSet : Created tree 'TestTree' with 120000 events - : -Dataset:MatchNNDataSet : Created tree 'TrainTree' with 550000 events - : -Factory : Thank you for using TMVA! - : For citation information, please visit: http://tmva.sf.net/citeTMVA.html -Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... -Found minimum and maximum values for 6 variables. -Found 3 matrices: - 1. fWeightMatrix0to1 with 7 columns and 8 rows - 2. fWeightMatrix1to2 with 9 columns and 6 rows - 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_n_B.txt b/outputs_nn/output_n_B.txt deleted file mode 100644 index 4378c01..0000000 --- a/outputs_nn/output_n_B.txt +++ /dev/null @@ -1,280 +0,0 @@ - : Parsing option string: - : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" - : The following options are set: - : - By User: - : V: "True" [Verbose flag] - : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] - : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] - : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] - : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] - : - Default: - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] - : Correlations: "False" [boolean to show correlation in output] - : ROC: "True" [boolean to show ROC in output] - : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] -DataSetInfo : [MatchNNDataSet] : Added class "Signal" - : Add Tree Signal of type Signal with 2175608 events -DataSetInfo : [MatchNNDataSet] : Added class "Background" - : Add Tree Bkg of type Background with 14040318 events - : Dataset[MatchNNDataSet] : Class index : 0 name : Signal - : Dataset[MatchNNDataSet] : Class index : 1 name : Background -Factory : Booking method: matching_mlp - : - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : - : - Default: - : Boost_num: "0" [Number of times the classifier will be boosted] - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : NCycles: "700" [Number of training cycles] - : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] - : NeuronType: "ReLU" [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: "False" [Print method-specific help message] - : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] - : LearningRate: "2.000000e-02" [ANN learning rate parameter] - : DecayRate: "1.000000e-02" [Decay rate for learning parameter] - : TestRate: "50" [Test for overtraining performed at each #th epochs] - : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] - : 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.] - : UseRegulator: "False" [Use regulator to avoid over-training] - : - 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: "Default" [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)] - : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] - : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] - : 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)] - : 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] -matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -matching_mlp : Building Network. - : Initializing weights -Factory : Train all methods - : Rebuilding Dataset MatchNNDataSet - : Parsing option string: - : ... "SplitMode=random:V:nTrain_Signal=50000.0:nTrain_Background=500000.0:nTest_Signal=20000.0:nTest_Background=100000.0" - : The following options are set: - : - By User: - : SplitMode: "Random" [Method of picking training and testing events (default: random)] - : nTrain_Signal: "50000" [Number of training events of class Signal (default: 0 = all)] - : nTest_Signal: "20000" [Number of test events of class Signal (default: 0 = all)] - : nTrain_Background: "500000" [Number of training events of class Background (default: 0 = all)] - : nTest_Background: "100000" [Number of test events of class Background (default: 0 = all)] - : V: "True" [Verbosity (default: true)] - : - Default: - : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] - : SplitSeed: "100" [Seed for random event shuffling] - : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] - : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] - : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] - : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Correlations: "True" [Boolean to show correlation output (Default: true)] - : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] - : Building event vectors for type 2 Signal - : Dataset[MatchNNDataSet] : create input formulas for tree Signal - : Building event vectors for type 2 Background - : Dataset[MatchNNDataSet] : create input formulas for tree Bkg -DataSetFactory : [MatchNNDataSet] : Number of events in input trees - : Dataset[MatchNNDataSet] : Signal requirement: "chi2<15 && distX<250 && distY<400 && dSlope<1.5 && dSlopeY<0.15" - : Dataset[MatchNNDataSet] : Signal -- number of events passed: 2151182 / sum of weights: 2.15118e+06 - : Dataset[MatchNNDataSet] : Signal -- efficiency : 0.988773 - : Dataset[MatchNNDataSet] : Background requirement: "chi2<15 && distX<250 && distY<400 && dSlope<1.5 && dSlopeY<0.15" - : Dataset[MatchNNDataSet] : Background -- number of events passed: 7175761 / sum of weights: 7.17576e+06 - : Dataset[MatchNNDataSet] : Background -- efficiency : 0.511083 - : Dataset[MatchNNDataSet] : you have opted for interpreting the requested number of training/testing events - : to be the number of events AFTER your preselection cuts - : - : Dataset[MatchNNDataSet] : you have opted for interpreting the requested number of training/testing events - : to be the number of events AFTER your preselection cuts - : - : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... - : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same - : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) - : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... - : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events - : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) - : Number of training and testing events - : --------------------------------------------------------------------------- - : Signal -- training events : 50000 - : Signal -- testing events : 20000 - : Signal -- training and testing events: 70000 - : Dataset[MatchNNDataSet] : Signal -- due to the preselection a scaling factor has been applied to the numbers of requested events: 0.988773 - : Background -- training events : 500000 - : Background -- testing events : 100000 - : Background -- training and testing events: 600000 - : Dataset[MatchNNDataSet] : Background -- due to the preselection a scaling factor has been applied to the numbers of requested events: 0.511083 - : -DataSetInfo : Correlation matrix (Signal): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 +0.197 +0.512 +0.603 +0.392 +0.418 - : teta2: +0.197 +1.000 +0.456 +0.649 +0.399 +0.581 - : distX: +0.512 +0.456 +1.000 +0.445 +0.555 +0.606 - : distY: +0.603 +0.649 +0.445 +1.000 +0.529 +0.568 - : dSlope: +0.392 +0.399 +0.555 +0.529 +1.000 +0.647 - : dSlopeY: +0.418 +0.581 +0.606 +0.568 +0.647 +1.000 - : -------------------------------------------------------- -DataSetInfo : Correlation matrix (Background): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 +0.001 +0.370 +0.305 +0.002 +0.084 - : teta2: +0.001 +1.000 +0.173 +0.650 +0.280 +0.455 - : distX: +0.370 +0.173 +1.000 +0.043 +0.627 +0.195 - : distY: +0.305 +0.650 +0.043 +1.000 +0.240 +0.458 - : dSlope: +0.002 +0.280 +0.627 +0.240 +1.000 +0.362 - : dSlopeY: +0.084 +0.455 +0.195 +0.458 +0.362 +1.000 - : -------------------------------------------------------- -DataSetFactory : [MatchNNDataSet] : - : -Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -TFHandler_Factory : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 4.1539 4.6460 [ 1.3264e-05 15.000 ] - : teta2: 0.0079252 0.017224 [ 1.2100e-06 0.43619 ] - : distX: 27.109 38.586 [ 3.8147e-06 250.00 ] - : distY: 20.564 28.494 [ 1.5259e-05 399.49 ] - : dSlope: 0.28782 0.22814 [ 2.2016e-06 1.3026 ] - : dSlopeY: 0.0054782 0.0099926 [ 1.8626e-09 0.14834 ] - : ----------------------------------------------------------- - : Ranking input variables (method unspecific)... -IdTransformation : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Separation - : -------------------------------- - : 1 : chi2 : 6.095e-01 - : 2 : distX : 4.727e-01 - : 3 : distY : 1.428e-01 - : 4 : dSlope : 7.613e-02 - : 5 : dSlopeY : 5.967e-02 - : 6 : teta2 : 5.937e-02 - : -------------------------------- -Factory : Train method: matching_mlp for Classification - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.44615 0.61947 [ -1.0000 1.0000 ] - : teta2: -0.96367 0.078975 [ -1.0000 1.0000 ] - : distX: -0.78313 0.30869 [ -1.0000 1.0000 ] - : distY: -0.89705 0.14265 [ -1.0000 1.0000 ] - : dSlope: -0.55809 0.35029 [ -1.0000 1.0000 ] - : dSlopeY: -0.92614 0.13472 [ -1.0000 1.0000 ] - : ----------------------------------------------------------- - : Training Network - : - : Elapsed time for training with 550000 events: 1.28e+03 sec -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (550000 events) - : Elapsed time for evaluation of 550000 events: 0.785 sec - : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml - : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C - : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp -Factory : Training finished - : - : Ranking input variables (method specific)... -matching_mlp : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Importance - : -------------------------------- - : 1 : teta2 : 7.346e+02 - : 2 : distX : 1.891e+02 - : 3 : dSlopeY : 5.900e+01 - : 4 : distY : 4.639e+01 - : 5 : dSlope : 1.074e+01 - : 6 : chi2 : 2.093e+00 - : -------------------------------- -Factory : === Destroy and recreate all methods via weight files for testing === - : - : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml -matching_mlp : Building Network. - : Initializing weights -Factory : Test all methods -Factory : Test method: matching_mlp for Classification performance - : -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (120000 events) - : Elapsed time for evaluation of 120000 events: 0.169 sec -Factory : Evaluate all methods -Factory : Evaluate classifier: matching_mlp - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.15813 0.62626 [ -1.0000 0.99995 ] - : teta2: -0.97140 0.071651 [ -1.0000 0.85686 ] - : distX: -0.67477 0.35263 [ -1.0000 0.99866 ] - : distY: -0.87476 0.15583 [ -1.0000 0.99415 ] - : dSlope: -0.49635 0.36886 [ -0.99993 0.97372 ] - : dSlopeY: -0.91980 0.13029 [ -1.0000 1.0219 ] - : ----------------------------------------------------------- -matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.15813 0.62626 [ -1.0000 0.99995 ] - : teta2: -0.97140 0.071651 [ -1.0000 0.85686 ] - : distX: -0.67477 0.35263 [ -1.0000 0.99866 ] - : distY: -0.87476 0.15583 [ -1.0000 0.99415 ] - : dSlope: -0.49635 0.36886 [ -0.99993 0.97372 ] - : dSlopeY: -0.91980 0.13029 [ -1.0000 1.0219 ] - : ----------------------------------------------------------- - : - : Evaluation results ranked by best signal efficiency and purity (area) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA - : Name: Method: ROC-integ - : MatchNNDataSet matching_mlp : 0.970 - : ------------------------------------------------------------------------------------------------------------------- - : - : Testing efficiency compared to training efficiency (overtraining check) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA Signal efficiency: from test sample (from training sample) - : Name: Method: @B=0.01 @B=0.10 @B=0.30 - : ------------------------------------------------------------------------------------------------------------------- - : MatchNNDataSet matching_mlp : 0.543 (0.551) 0.936 (0.936) 0.985 (0.985) - : ------------------------------------------------------------------------------------------------------------------- - : -Dataset:MatchNNDataSet : Created tree 'TestTree' with 120000 events - : -Dataset:MatchNNDataSet : Created tree 'TrainTree' with 550000 events - : -Factory : Thank you for using TMVA! - : For citation information, please visit: http://tmva.sf.net/citeTMVA.html -Transforming neural_net_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... -Found minimum and maximum values for 6 variables. -Found 3 matrices: - 1. fWeightMatrix0to1 with 7 columns and 8 rows - 2. fWeightMatrix1to2 with 9 columns and 6 rows - 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_og_weights_B.txt b/outputs_nn/output_og_weights_B.txt deleted file mode 100644 index d8ec68d..0000000 --- a/outputs_nn/output_og_weights_B.txt +++ /dev/null @@ -1,268 +0,0 @@ - : Parsing option string: - : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" - : The following options are set: - : - By User: - : V: "True" [Verbose flag] - : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] - : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] - : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] - : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] - : - Default: - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] - : Correlations: "False" [boolean to show correlation in output] - : ROC: "True" [boolean to show ROC in output] - : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] -DataSetInfo : [MatchNNDataSet] : Added class "Signal" - : Add Tree Signal of type Signal with 6590 events -DataSetInfo : [MatchNNDataSet] : Added class "Background" - : Add Tree Bkg of type Background with 14040318 events - : Dataset[MatchNNDataSet] : Class index : 0 name : Signal - : Dataset[MatchNNDataSet] : Class index : 1 name : Background -Factory : Booking method: matching_mlp - : - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : - : - Default: - : Boost_num: "0" [Number of times the classifier will be boosted] - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : NCycles: "700" [Number of training cycles] - : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] - : NeuronType: "ReLU" [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: "False" [Print method-specific help message] - : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] - : LearningRate: "2.000000e-02" [ANN learning rate parameter] - : DecayRate: "1.000000e-02" [Decay rate for learning parameter] - : TestRate: "50" [Test for overtraining performed at each #th epochs] - : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] - : 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.] - : UseRegulator: "False" [Use regulator to avoid over-training] - : - 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: "Default" [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)] - : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] - : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] - : 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)] - : 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] -matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -matching_mlp : Building Network. - : Initializing weights -Factory : Train all methods - : Rebuilding Dataset MatchNNDataSet - : Parsing option string: - : ... "SplitMode=random:V:nTrain_Signal=0:nTrain_Background=200000.0:nTest_Signal=1000.0:nTest_Background=50000.0" - : The following options are set: - : - By User: - : SplitMode: "Random" [Method of picking training and testing events (default: random)] - : nTrain_Signal: "0" [Number of training events of class Signal (default: 0 = all)] - : nTest_Signal: "1000" [Number of test events of class Signal (default: 0 = all)] - : nTrain_Background: "200000" [Number of training events of class Background (default: 0 = all)] - : nTest_Background: "50000" [Number of test events of class Background (default: 0 = all)] - : V: "True" [Verbosity (default: true)] - : - Default: - : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] - : SplitSeed: "100" [Seed for random event shuffling] - : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] - : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] - : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] - : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Correlations: "True" [Boolean to show correlation output (Default: true)] - : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] - : Building event vectors for type 2 Signal - : Dataset[MatchNNDataSet] : create input formulas for tree Signal - : Building event vectors for type 2 Background - : Dataset[MatchNNDataSet] : create input formulas for tree Bkg -DataSetFactory : [MatchNNDataSet] : Number of events in input trees - : - : - : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... - : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same - : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) - : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... - : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events - : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) - : Number of training and testing events - : --------------------------------------------------------------------------- - : Signal -- training events : 5590 - : Signal -- testing events : 1000 - : Signal -- training and testing events: 6590 - : Background -- training events : 200000 - : Background -- testing events : 50000 - : Background -- training and testing events: 250000 - : -DataSetInfo : Correlation matrix (Signal): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 -0.083 +0.225 +0.287 +0.211 +0.054 - : teta2: -0.083 +1.000 +0.035 +0.472 +0.174 +0.617 - : distX: +0.225 +0.035 +1.000 -0.194 +0.684 +0.087 - : distY: +0.287 +0.472 -0.194 +1.000 +0.330 +0.471 - : dSlope: +0.211 +0.174 +0.684 +0.330 +1.000 +0.325 - : dSlopeY: +0.054 +0.617 +0.087 +0.471 +0.325 +1.000 - : -------------------------------------------------------- -DataSetInfo : Correlation matrix (Background): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 +0.003 +0.359 +0.315 -0.004 +0.101 - : teta2: +0.003 +1.000 +0.212 +0.622 +0.296 +0.492 - : distX: +0.359 +0.212 +1.000 +0.060 +0.635 +0.204 - : distY: +0.315 +0.622 +0.060 +1.000 +0.246 +0.530 - : dSlope: -0.004 +0.296 +0.635 +0.246 +1.000 +0.360 - : dSlopeY: +0.101 +0.492 +0.204 +0.530 +0.360 +1.000 - : -------------------------------------------------------- -DataSetFactory : [MatchNNDataSet] : - : -Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -TFHandler_Factory : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 13.730 8.0164 [ 0.00031556 30.000 ] - : teta2: 0.0041449 0.012655 [ 1.1428e-06 0.43138 ] - : distX: 69.832 60.841 [ 0.00027466 490.80 ] - : distY: 31.145 37.661 [ 0.00010300 497.14 ] - : dSlope: 0.36688 0.24104 [ 1.2597e-05 1.3582 ] - : dSlopeY: 0.0063738 0.010662 [ 4.9360e-08 0.14883 ] - : ----------------------------------------------------------- - : Ranking input variables (method unspecific)... -IdTransformation : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Separation - : -------------------------------- - : 1 : chi2 : 8.858e-02 - : 2 : distY : 5.736e-02 - : 3 : teta2 : 3.110e-02 - : 4 : distX : 2.441e-02 - : 5 : dSlope : 2.026e-02 - : 6 : dSlopeY : 1.556e-02 - : -------------------------------- -Factory : Train method: matching_mlp for Classification - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.084705 0.53444 [ -1.0000 1.0000 ] - : teta2: -0.98079 0.058673 [ -1.0000 1.0000 ] - : distX: -0.71544 0.24793 [ -1.0000 1.0000 ] - : distY: -0.87470 0.15151 [ -1.0000 1.0000 ] - : dSlope: -0.45977 0.35494 [ -1.0000 1.0000 ] - : dSlopeY: -0.91435 0.14328 [ -1.0000 1.0000 ] - : ----------------------------------------------------------- - : Training Network - : - : Elapsed time for training with 205590 events: 465 sec -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (205590 events) - : Elapsed time for evaluation of 205590 events: 0.252 sec - : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml - : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C - : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp -Factory : Training finished - : - : Ranking input variables (method specific)... -matching_mlp : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Importance - : -------------------------------- - : 1 : distY : 2.139e+02 - : 2 : teta2 : 1.005e+02 - : 3 : dSlopeY : 9.191e+01 - : 4 : distX : 8.898e+01 - : 5 : dSlope : 1.082e+01 - : 6 : chi2 : 1.776e+00 - : -------------------------------- -Factory : === Destroy and recreate all methods via weight files for testing === - : - : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml -matching_mlp : Building Network. - : Initializing weights -Factory : Test all methods -Factory : Test method: matching_mlp for Classification performance - : -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (51000 events) - : Elapsed time for evaluation of 51000 events: 0.0702 sec -Factory : Evaluate all methods -Factory : Evaluate classifier: matching_mlp - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.011828 0.57705 [ -0.99996 0.99998 ] - : teta2: -0.97507 0.067138 [ -0.99998 0.27868 ] - : distX: -0.72636 0.26123 [ -1.0000 0.90538 ] - : distY: -0.84283 0.18429 [ -0.99999 1.0037 ] - : dSlope: -0.48676 0.36013 [ -0.99980 0.87659 ] - : dSlopeY: -0.90653 0.13847 [ -1.0000 1.0030 ] - : ----------------------------------------------------------- -matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.011828 0.57705 [ -0.99996 0.99998 ] - : teta2: -0.97507 0.067138 [ -0.99998 0.27868 ] - : distX: -0.72636 0.26123 [ -1.0000 0.90538 ] - : distY: -0.84283 0.18429 [ -0.99999 1.0037 ] - : dSlope: -0.48676 0.36013 [ -0.99980 0.87659 ] - : dSlopeY: -0.90653 0.13847 [ -1.0000 1.0030 ] - : ----------------------------------------------------------- - : - : Evaluation results ranked by best signal efficiency and purity (area) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA - : Name: Method: ROC-integ - : MatchNNDataSet matching_mlp : 0.850 - : ------------------------------------------------------------------------------------------------------------------- - : - : Testing efficiency compared to training efficiency (overtraining check) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA Signal efficiency: from test sample (from training sample) - : Name: Method: @B=0.01 @B=0.10 @B=0.30 - : ------------------------------------------------------------------------------------------------------------------- - : MatchNNDataSet matching_mlp : 0.050 (0.050) 0.446 (0.447) 0.869 (0.869) - : ------------------------------------------------------------------------------------------------------------------- - : -Dataset:MatchNNDataSet : Created tree 'TestTree' with 51000 events - : -Dataset:MatchNNDataSet : Created tree 'TrainTree' with 205590 events - : -Factory : Thank you for using TMVA! - : For citation information, please visit: http://tmva.sf.net/citeTMVA.html -Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... -Found minimum and maximum values for 6 variables. -Found 3 matrices: - 1. fWeightMatrix0to1 with 7 columns and 8 rows - 2. fWeightMatrix1to2 with 9 columns and 6 rows - 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_og_weights_res_bkg_B.txt b/outputs_nn/output_og_weights_res_bkg_B.txt deleted file mode 100644 index 3792048..0000000 --- a/outputs_nn/output_og_weights_res_bkg_B.txt +++ /dev/null @@ -1,268 +0,0 @@ - : Parsing option string: - : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" - : The following options are set: - : - By User: - : V: "True" [Verbose flag] - : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] - : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] - : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] - : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] - : - Default: - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] - : Correlations: "False" [boolean to show correlation in output] - : ROC: "True" [boolean to show ROC in output] - : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] -DataSetInfo : [MatchNNDataSet] : Added class "Signal" - : Add Tree Signal of type Signal with 6590 events -DataSetInfo : [MatchNNDataSet] : Added class "Background" - : Add Tree Bkg of type Background with 10981310 events - : Dataset[MatchNNDataSet] : Class index : 0 name : Signal - : Dataset[MatchNNDataSet] : Class index : 1 name : Background -Factory : Booking method: matching_mlp - : - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : - : - Default: - : Boost_num: "0" [Number of times the classifier will be boosted] - : Parsing option string: - : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" - : The following options are set: - : - By User: - : NCycles: "700" [Number of training cycles] - : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] - : NeuronType: "ReLU" [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: "False" [Print method-specific help message] - : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] - : LearningRate: "2.000000e-02" [ANN learning rate parameter] - : DecayRate: "1.000000e-02" [Decay rate for learning parameter] - : TestRate: "50" [Test for overtraining performed at each #th epochs] - : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] - : 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.] - : UseRegulator: "False" [Use regulator to avoid over-training] - : - 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: "Default" [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)] - : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] - : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] - : 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)] - : 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] -matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -matching_mlp : Building Network. - : Initializing weights -Factory : Train all methods - : Rebuilding Dataset MatchNNDataSet - : Parsing option string: - : ... "SplitMode=random:V:nTrain_Signal=0:nTrain_Background=200000.0:nTest_Signal=5000.0:nTest_Background=50000.0" - : The following options are set: - : - By User: - : SplitMode: "Random" [Method of picking training and testing events (default: random)] - : nTrain_Signal: "0" [Number of training events of class Signal (default: 0 = all)] - : nTest_Signal: "5000" [Number of test events of class Signal (default: 0 = all)] - : nTrain_Background: "200000" [Number of training events of class Background (default: 0 = all)] - : nTest_Background: "50000" [Number of test events of class Background (default: 0 = all)] - : V: "True" [Verbosity (default: true)] - : - Default: - : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] - : SplitSeed: "100" [Seed for random event shuffling] - : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] - : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] - : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] - : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] - : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] - : Correlations: "True" [Boolean to show correlation output (Default: true)] - : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] - : Building event vectors for type 2 Signal - : Dataset[MatchNNDataSet] : create input formulas for tree Signal - : Building event vectors for type 2 Background - : Dataset[MatchNNDataSet] : create input formulas for tree Bkg -DataSetFactory : [MatchNNDataSet] : Number of events in input trees - : - : - : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... - : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same - : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) - : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... - : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events - : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) - : Number of training and testing events - : --------------------------------------------------------------------------- - : Signal -- training events : 1590 - : Signal -- testing events : 5000 - : Signal -- training and testing events: 6590 - : Background -- training events : 200000 - : Background -- testing events : 50000 - : Background -- training and testing events: 250000 - : -DataSetInfo : Correlation matrix (Signal): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 -0.090 +0.192 +0.272 +0.184 +0.049 - : teta2: -0.090 +1.000 +0.041 +0.483 +0.208 +0.628 - : distX: +0.192 +0.041 +1.000 -0.179 +0.680 +0.101 - : distY: +0.272 +0.483 -0.179 +1.000 +0.363 +0.496 - : dSlope: +0.184 +0.208 +0.680 +0.363 +1.000 +0.350 - : dSlopeY: +0.049 +0.628 +0.101 +0.496 +0.350 +1.000 - : -------------------------------------------------------- -DataSetInfo : Correlation matrix (Background): - : -------------------------------------------------------- - : chi2 teta2 distX distY dSlope dSlopeY - : chi2: +1.000 -0.018 +0.249 +0.222 +0.061 +0.061 - : teta2: -0.018 +1.000 +0.219 +0.658 +0.336 +0.485 - : distX: +0.249 +0.219 +1.000 -0.003 +0.782 +0.189 - : distY: +0.222 +0.658 -0.003 +1.000 +0.284 +0.551 - : dSlope: +0.061 +0.336 +0.782 +0.284 +1.000 +0.379 - : dSlopeY: +0.061 +0.485 +0.189 +0.551 +0.379 +1.000 - : -------------------------------------------------------- -DataSetFactory : [MatchNNDataSet] : - : -Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. - : - : Transformation, Variable selection : - : Input : variable 'chi2' <---> Output : variable 'chi2' - : Input : variable 'teta2' <---> Output : variable 'teta2' - : Input : variable 'distX' <---> Output : variable 'distX' - : Input : variable 'distY' <---> Output : variable 'distY' - : Input : variable 'dSlope' <---> Output : variable 'dSlope' - : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' -TFHandler_Factory : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 14.983 7.6381 [ 0.13393 30.000 ] - : teta2: 0.0045002 0.013698 [ 1.0756e-06 0.36197 ] - : distX: 74.269 61.998 [ 0.00010681 495.87 ] - : distY: 33.972 40.646 [ 0.00016022 498.46 ] - : dSlope: 0.35639 0.24245 [ 9.2713e-06 1.3376 ] - : dSlopeY: 0.0069454 0.011901 [ 8.8476e-08 0.14989 ] - : ----------------------------------------------------------- - : Ranking input variables (method unspecific)... -IdTransformation : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Separation - : -------------------------------- - : 1 : chi2 : 9.899e-02 - : 2 : distY : 8.544e-02 - : 3 : teta2 : 4.508e-02 - : 4 : dSlope : 3.745e-02 - : 5 : dSlopeY : 2.733e-02 - : 6 : distX : 1.657e-02 - : -------------------------------- -Factory : Train method: matching_mlp for Classification - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: -0.0056167 0.51149 [ -1.0000 1.0000 ] - : teta2: -0.97514 0.075684 [ -1.0000 1.0000 ] - : distX: -0.70045 0.25006 [ -1.0000 1.0000 ] - : distY: -0.86369 0.16308 [ -1.0000 1.0000 ] - : dSlope: -0.46715 0.36251 [ -1.0000 1.0000 ] - : dSlopeY: -0.90733 0.15880 [ -1.0000 1.0000 ] - : ----------------------------------------------------------- - : Training Network - : - : Elapsed time for training with 201590 events: 424 sec -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (201590 events) - : Elapsed time for evaluation of 201590 events: 0.244 sec - : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml - : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C - : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp -Factory : Training finished - : - : Ranking input variables (method specific)... -matching_mlp : Ranking result (top variable is best ranked) - : -------------------------------- - : Rank : Variable : Importance - : -------------------------------- - : 1 : distY : 7.131e+01 - : 2 : teta2 : 3.522e+01 - : 3 : distX : 2.316e+01 - : 4 : dSlopeY : 1.020e+01 - : 5 : dSlope : 6.822e+00 - : 6 : chi2 : 2.546e+00 - : -------------------------------- -Factory : === Destroy and recreate all methods via weight files for testing === - : - : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml -matching_mlp : Building Network. - : Initializing weights -Factory : Test all methods -Factory : Test method: matching_mlp for Classification performance - : -matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (55000 events) - : Elapsed time for evaluation of 55000 events: 0.0744 sec -Factory : Evaluate all methods -Factory : Evaluate classifier: matching_mlp - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 0.12456 0.50663 [ -0.99498 1.0000 ] - : teta2: -0.96870 0.085208 [ -1.0000 0.96194 ] - : distX: -0.68732 0.27168 [ -0.99998 0.99743 ] - : distY: -0.83061 0.19253 [ -1.0000 1.0027 ] - : dSlope: -0.50226 0.36648 [ -0.99996 0.94917 ] - : dSlopeY: -0.90192 0.14156 [ -1.0000 0.98588 ] - : ----------------------------------------------------------- -matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... - : -TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] - : ----------------------------------------------------------- - : chi2: 0.12456 0.50663 [ -0.99498 1.0000 ] - : teta2: -0.96870 0.085208 [ -1.0000 0.96194 ] - : distX: -0.68732 0.27168 [ -0.99998 0.99743 ] - : distY: -0.83061 0.19253 [ -1.0000 1.0027 ] - : dSlope: -0.50226 0.36648 [ -0.99996 0.94917 ] - : dSlopeY: -0.90192 0.14156 [ -1.0000 0.98588 ] - : ----------------------------------------------------------- - : - : Evaluation results ranked by best signal efficiency and purity (area) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA - : Name: Method: ROC-integ - : MatchNNDataSet matching_mlp : 0.838 - : ------------------------------------------------------------------------------------------------------------------- - : - : Testing efficiency compared to training efficiency (overtraining check) - : ------------------------------------------------------------------------------------------------------------------- - : DataSet MVA Signal efficiency: from test sample (from training sample) - : Name: Method: @B=0.01 @B=0.10 @B=0.30 - : ------------------------------------------------------------------------------------------------------------------- - : MatchNNDataSet matching_mlp : 0.067 (0.067) 0.460 (0.458) 0.828 (0.824) - : ------------------------------------------------------------------------------------------------------------------- - : -Dataset:MatchNNDataSet : Created tree 'TestTree' with 55000 events - : -Dataset:MatchNNDataSet : Created tree 'TrainTree' with 201590 events - : -Factory : Thank you for using TMVA! - : For citation information, please visit: http://tmva.sf.net/citeTMVA.html -Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... -Found minimum and maximum values for 6 variables. -Found 3 matrices: - 1. fWeightMatrix0to1 with 7 columns and 8 rows - 2. fWeightMatrix1to2 with 9 columns and 6 rows - 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/test/ghost_data_new_vars.ipynb b/test/ghost_data_new_vars.ipynb deleted file mode 100644 index 40705b4..0000000 --- a/test/ghost_data_new_vars.ipynb +++ /dev/null @@ -1,186 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "import uproot\n", - "import ROOT\n", - "import matplotlib.pyplot as plt\n", - "import awkward as ak\n", - "import numpy as np\n", - "from numpy import abs\n", - "import math\n", - "from array import array\n", - "import mplhep\n", - "mplhep.style.use([\"LHCbTex2\"])\n", - "#%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "File = uproot.open(\"/work/cetin/LHCb/reco_tuner/data/ghost_data_B_new_vars_default_weights.root:PrMatchNN_3e224c41.PrMCDebugMatchToolNN/MVAInputAndOutput\")\n", - "allcolumns = File.arrays()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "tracked = allcolumns[allcolumns[\"mc_quality\"]==-1]\n", - "ghost = allcolumns[allcolumns[\"mc_quality\"]==0]" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "tracked_zmag = ak.to_numpy(tracked[\"mc_zMag\"])\n", - "\n", - "ghost_zmag = ak.to_numpy(ghost[\"mc_zMag\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.hist(tracked_zmag, bins=100, label=\"tracked\", alpha=0.6, density=True)\n", - "plt.hist(ghost_zmag, bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", - "plt.xlabel(r\"$z_{mag}$\")\n", - "plt.ylabel(\"a.u.\")\n", - "plt.title(\"Magnet kink position\")\n", - "plt.legend()\n", - "#plt.colorbar(h2[3])\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "tuner", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/test/ghost_data_test.ipynb b/test/ghost_data_test.ipynb deleted file mode 100644 index cfdf048..0000000 --- a/test/ghost_data_test.ipynb +++ /dev/null @@ -1,408 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Welcome to JupyROOT 6.28/04\n" - ] - } - ], - "source": [ - "import uproot\n", - "import ROOT\n", - "import matplotlib.pyplot as plt\n", - "import awkward as ak\n", - "import numpy as np\n", - "import math\n", - "from array import array\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "File = uproot.open(\"/work/cetin/LHCb/reco_tuner/data/ghost_data_B_default_weights.root:PrMatchNN_3e224c41.PrMCDebugMatchToolNN/MVAInputAndOutput\")\n", - "allcolumns = File.arrays()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "tracked = allcolumns[allcolumns[\"mc_quality\"]==-1]\n", - "ghost = allcolumns[allcolumns[\"mc_quality\"]==0]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "tracked_v_qop = np.abs(ak.to_numpy(tracked[\"mc_end_velo_qop\"]))\n", - "tracked_t_qop = np.abs(ak.to_numpy(tracked[\"mc_end_t_qop\"]))\n", - "\n", - "ghost_v_qop = np.abs(ak.to_numpy(ghost[\"mc_end_velo_qop\"]))\n", - "ghost_t_qop = np.abs(ak.to_numpy(ghost[\"mc_end_t_qop\"]))" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "\n", - "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n", - "\n", - "a0=ax0.hist2d(tracked_v_qop[:180000], tracked_t_qop[:180000], bins=200, cmap=plt.cm.jet, cmin=1)\n", - "ax0.set_xlabel(\"Velo qop\")\n", - "ax0.set_ylabel(\"Scifi qop\")\n", - "ax0.set_title(\"Tracked Velo qop vs. Scifi qop\")\n", - "plt.colorbar(a0[3],ax=ax0)\n", - "\n", - "a1=ax1.hist2d(ghost_v_qop[:180000], ghost_t_qop[:180000], bins=200, cmap=plt.cm.jet, cmin=1)\n", - "ax1.set_xlabel(\"Velo qop\")\n", - "ax1.set_ylabel(\"Scifi qop\")\n", - "ax1.set_title(\"Ghost Velo qop vs. Scifi qop\")\n", - "plt.colorbar(a1[3],ax=ax1)\n", - "\n", - "\n", - "\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "tracked_dQop = np.abs( tracked_v_qop[:180000]-tracked_t_qop[:180000] )\n", - "ghost_dQop = np.abs( ghost_v_qop[:180000]-ghost_t_qop[:180000] )\n", - "\n", - "\n", - "plt.hist(tracked_dQop, bins=100, label=\"tracked\", alpha=0.6, density=True)\n", - "plt.hist(ghost_dQop, bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", - "plt.xlabel(\"Velo qop - Scifi qop\")\n", - "plt.ylabel(\"a.u.\")\n", - "plt.title(\"Velo qop - Scifi qop\")\n", - "plt.legend()\n", - "#plt.colorbar(h2[3])\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "tracked_t_tx = ak.to_numpy(tracked[\"mc_end_t_tx\"])\n", - "tracked_t_ty = ak.to_numpy(tracked[\"mc_end_t_ty\"])\n", - "\n", - "tracked_t_teta2 = tracked_t_tx * tracked_t_tx + tracked_t_ty * tracked_t_ty\n", - "\n", - "tracked_v_tx = ak.to_numpy(tracked[\"mc_end_velo_tx\"])\n", - "tracked_v_ty = ak.to_numpy(tracked[\"mc_end_velo_ty\"])\n", - "tracked_v_teta2 = ak.to_numpy(tracked[\"mc_teta2\"])\n", - "\n", - "ghost_t_tx = ak.to_numpy(ghost[\"mc_end_t_tx\"])\n", - "ghost_t_ty = ak.to_numpy(ghost[\"mc_end_t_ty\"])\n", - "\n", - "ghost_t_teta2 = ghost_t_tx * ghost_t_tx + ghost_t_ty * ghost_t_ty\n", - "\n", - "ghost_v_tx = ak.to_numpy(ghost[\"mc_end_velo_tx\"])\n", - "ghost_v_ty = ak.to_numpy(ghost[\"mc_end_velo_ty\"])\n", - "ghost_v_teta2 = ak.to_numpy(ghost[\"mc_teta2\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n", - "\n", - "a0=ax0.hist2d(tracked_v_teta2, tracked_t_teta2, bins=100, cmap=plt.cm.jet, cmin=1, range=[[0,0.3],[0,1.3]],cmax=8000)\n", - "ax0.set_xlabel(\"Velo teta2\")\n", - "ax0.set_ylabel(\"Scifi teta2\")\n", - "ax0.set_title(\"Tracked Velo vs. Scifi teta2\")\n", - "plt.colorbar(a0[3],ax=ax0)\n", - "\n", - "a1=ax1.hist2d(ghost_v_teta2, ghost_t_teta2, bins=100, cmap=plt.cm.jet, cmin=1, range=[[0,0.3],[0,1.3]], cmax=8000)\n", - "ax1.set_xlabel(\"Velo teta2\")\n", - "ax1.set_ylabel(\"Scifi teta2\")\n", - "ax1.set_title(\"Ghost Velo vs. Scifi teta2\")\n", - "plt.colorbar(a1[3],ax=ax1)\n", - "\n", - "\n", - "\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from numpy import abs\n", - "\n", - "tracked_dteta2 = tracked_v_teta2-tracked_t_teta2\n", - "ghost_dteta2 = ghost_v_teta2-ghost_t_teta2\n", - "\n", - "plt.hist(tracked_dteta2, bins=100, label=\"tracked\", alpha=0.6, density=True)\n", - "plt.hist(ghost_dteta2, bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", - "plt.xlabel(\"dteta2\")\n", - "plt.ylabel(\"a.u.\")\n", - "plt.title(\"Velo teta2 - Scifi teta2\")\n", - "plt.legend()\n", - "#plt.colorbar(h2[3])\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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92mFQmHSpmvXro1KpdLkNaN4b35t42cNAAAAmNbv90e7u7sjx3FGuVxu5LruyHXdUalUmokF2u32KJfLTfrm/X5/EgOM44dH46pxbFEoFEa7u7uj3d3dUb/fn6pznjjhvL7+aUmIj6KIjRZ5b37tIz4CgHisjUajUbzDOgAA2Nfr9dRutydT8QEAAABgVREfAUB8WC4MAJAJzWYzdAJNAAAAAMgS4iMAiM+lZTcAAICwer2eHMeZJNx0XXfZTQIAAACApSA+AoDlYJAFAJBKvV5PxWJx8u+Dg4MltgYAAAAAlof4CACWh5wsAIDUqlarGgwGun79OndpAQAAAFhpxEcAsBwMsgAAAAAAAAAAAIRA4nsAAAAAAAAAAIAQyMkSkXfeeUe/8iu/os985jNaX19fdnMAAACMHB0d6a233tLnP/95ffKTn1x2cyRJX//61/XOO+9EUvcnP/lJ/eAP/mAkdQPwR8wEAADSLmlxEzHTcjDIEpFf+ZVf0Re+8IVlNwMAAGAhX/7yl/XjP/7jy26Gvv71r+uH/tV/VR9GVP93f/d368033yRoAGJEzAQAALIiCXETMdPyhB5k+bmf+zn9xb/4F222JVM+85nPSDo5wZ566ilr9W5vb2tvb89afVHWe/fuXT333HN67bXXdOXKFat1R9HeNB3bqOpN22dGvSei+tzSdAzSVi/nmn+9+XzTt0y/X16oXhtW8TN788039YUvfGHSp1m2d955Rx9K+jFJtu8Pe0fSL33nO3rnnXcIGGAVMdPZTGOm6d+JW5KuSjL7nQj6rTldpz026/xA0i9I+glJH7NUp2T/fSfnOJ713bD5+5uW/rhJffP2y5bZxnlk8bNZVp026zv5fs1e04LOWb/vo19Z0zae/ZswlpxrWpj6/I7T+e87it+bxd6z6ec932c7W3eY73mS4iZipuUJPchy7do1vfrqqyqXy7p69aoee+wxm+1KvfF096eeekqu61qt12Z9Udb73nvvSZKeeeYZ69+PKNqbpmMbVb1p+8yo90RUn1uajkHa6uVcC6r3075lwryu7fau8meWtCV8fkBB35TwmNqNqBAznc08Znr07L80+bfZte6sK8ilc/aHYbPO9x/+9wckfdxSnZL9952c43jWd8Pm729a+uNm9c3XL1tuG8+Xzc9mOXXare/T8rumBdc/+330K2vexnmu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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "tracked_dtx = tracked_v_tx - tracked_t_tx\n", - "tracked_dty = tracked_v_ty - tracked_t_ty\n", - "\n", - "ghost_dtx = ghost_v_tx - ghost_t_tx\n", - "ghost_dty = ghost_v_ty - ghost_t_ty\n", - "\n", - "\n", - "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n", - "\n", - "a0=ax0.hist2d(tracked_dtx, tracked_dty, bins=100, cmap=plt.cm.jet, cmin=1)\n", - "ax0.set_xlabel(\"dtx\")\n", - "ax0.set_ylabel(\"dty\")\n", - "ax0.set_title(\"tracked dtx vs dty\")\n", - "plt.colorbar(a0[3],ax=ax0)\n", - "\n", - "a1=ax1.hist2d(ghost_dtx, ghost_dty, bins=100, cmap=plt.cm.jet, cmin=1)\n", - "ax1.set_xlabel(\"dtx\")\n", - "ax1.set_ylabel(\"dty\")\n", - "ax1.set_title(\"Ghost dtx vs dty\")\n", - "plt.colorbar(a1[3],ax=ax1)\n", - "\n", - "\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "\n", - "plt.hist(abs(tracked_dtx), bins=100, label=\"tracked\", alpha=0.6, density=True)\n", - "plt.hist(abs(ghost_dtx), bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", - "plt.xlabel(\"dtx\")\n", - "plt.ylabel(\"a.u.\")\n", - "plt.legend()\n", - "#plt.colorbar(h2[3])\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.hist(abs(tracked_dty), bins=100, label=\"tracked\", alpha=0.6, density=True)\n", - "plt.hist(abs(ghost_dty), bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", - "plt.xlabel(\"dtx\")\n", - "plt.ylabel(\"a.u.\")\n", - "plt.legend()\n", - "#plt.colorbar(h2[3])\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.hist(tracked_dtx-tracked_dty, bins=100, label=\"tracked\", alpha=0.6, density=True)\n", - "plt.hist(ghost_dtx-ghost_dty, bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", - "plt.xlabel(\"dtx\")\n", - "plt.ylabel(\"a.u.\")\n", - "plt.legend()\n", - "#plt.colorbar(h2[3])\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tracked_zmag = tracked[\"mc_zMag\"]\n", - "ghost_zmag = ghost[\"mc_zMag\"]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.hist(tracked_zmag, bins=100, label=\"tracked\", alpha=0.6, density=True)\n", - "plt.hist(ghost_zmag, bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", - "plt.xlabel(r\"$z_{mag}$\")\n", - "plt.ylabel(\"a.u.\")\n", - "plt.legend()\n", - "#plt.colorbar(h2[3])\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "tuner", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}