/* * trainKLCoeffsWithImpulsivityAndLinPolFracResponsesSemiweighted.C * * Created on: Feb 02, 2020 * Author: John Russell * * Following up with a suggestions Cosmin made, here we try weighted signal, unweighted background. * In the instance of cross-polarized exculsive background, we weight the signal-like backgrounds * so that they're uniform relative to eachother. */ #include "AnitaTMVA.h" // Use this to take care of requisite TMVA includes. #include "AnitaEventSummary.h" void trainKLCoeffsWithImpulsivityAndLinPolFracResponsesSemiweighted() { // Create TChains from which to access eventSummaries for various data types. const char * summaryPath = "~/decimatedSampleFiles/summary-decimated-%s-part_all_*-sinsub_10_3_ad_2.root"; TChain waisHPolSumChain("sampleA4"), waisVPolSumChain("sampleA4"), hiCal2ASumChain("sampleA4"), hiCal2BSumChain("sampleA4"), iceMCSumChain("sampleA4"); TChain thermalSumChain("sampleA4"), minBiasSumChain("sampleA4"), payloadBlastSumChain("sampleA4"), strongCWSumChain("sampleA4"); waisHPolSumChain.Add(TString::Format(summaryPath, "WAISHPol")); waisVPolSumChain.Add(TString::Format(summaryPath, "WAISVPol")); hiCal2ASumChain.Add(TString::Format(summaryPath, "HiCal2A")); hiCal2BSumChain.Add(TString::Format(summaryPath, "HiCal2B")); iceMCSumChain.Add(TString::Format(summaryPath, "iceMC-Pangolin-MinBiasEnergy_E222")); thermalSumChain.Add(TString::Format(summaryPath, "thermal")); minBiasSumChain.Add(TString::Format(summaryPath, "minBias")); payloadBlastSumChain.Add(TString::Format(summaryPath, "payloadBlast")); strongCWSumChain.Add(TString::Format(summaryPath, "strongCW")); // Create TChains from which to access KL coefficients, then friend them with the above corresponding summaries. const char * coeffPath = "~/makeKLCoeffs/KLCoeffsOriginal-decimated-%s-part_all_*.root"; TChain waisHPolChain("KLCoeffsTree"), waisVPolChain("KLCoeffsTree"), hiCal2AChain("KLCoeffsTree"), hiCal2BChain("KLCoeffsTree"), iceMCChain("KLCoeffsTree"); TChain thermalChain("KLCoeffsTree"), minBiasChain("KLCoeffsTree"), payloadBlastChain("KLCoeffsTree"), strongCWChain("KLCoeffsTree"); waisHPolChain.Add(TString::Format(coeffPath, "WAISHPol")); waisVPolChain.Add(TString::Format(coeffPath, "WAISVPol")); hiCal2AChain.Add(TString::Format(coeffPath, "HiCal2A")); hiCal2BChain.Add(TString::Format(coeffPath, "HiCal2B")); iceMCChain.Add(TString::Format(coeffPath, "iceMC-Pangolin-MinBiasEnergy_E222")); thermalChain.Add(TString::Format(coeffPath, "thermal")); minBiasChain.Add(TString::Format(coeffPath, "minBias")); payloadBlastChain.Add(TString::Format(coeffPath, "payloadBlast")); strongCWChain.Add(TString::Format(coeffPath, "strongCW")); waisHPolChain.AddFriend(& waisHPolSumChain); waisVPolChain.AddFriend(& waisVPolSumChain); hiCal2AChain.AddFriend(& hiCal2ASumChain); hiCal2BChain.AddFriend(& hiCal2BSumChain); iceMCChain.AddFriend(& iceMCSumChain); thermalChain.AddFriend(& thermalSumChain); minBiasChain.AddFriend(& minBiasSumChain); payloadBlastChain.AddFriend(& payloadBlastSumChain); strongCWChain.AddFriend(& strongCWSumChain); // Weights to apply to trees. See discussion at https://root-forum.cern.ch/t/with-multiple-signal-and-background-types-handling-one-signal-or-background-type-divided-over-multiple-trees-using-weights/32252/5 double waisHPolWeight = 1. / waisHPolChain.GetEntries(); double waisVPolWeight = 1. / waisVPolChain.GetEntries(); double hiCal2AWeight = 1. / hiCal2AChain.GetEntries(); double hiCal2BWeight = 1. / hiCal2BChain.GetEntries(); double iceMCWeight = 1. / iceMCChain.GetEntries(); int totalXPolH = waisHPolChain.GetEntries() + hiCal2AChain.GetEntries() + hiCal2BChain.GetEntries(); int totalXPolV = waisVPolChain.GetEntries() + iceMCChain.GetEntries(); // Set up DataLoader objects. // Hpol objects. TMVA::DataLoader * hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL = new TMVA::DataLoader("trainedKLCoeffsWithImpulsivityAndLinPolFracResults"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSignalTree(& waisHPolChain, waisHPolWeight); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSignalTree(& hiCal2AChain, hiCal2AWeight); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSignalTree(& hiCal2BChain, hiCal2BWeight); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddBackgroundTree(& thermalChain); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSpectator("run"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSpectator("eventNumber"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSpectator("hPolCoh.KLMagIdx"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSpectator("hPolDeconv.KLMagIdx"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSpectator("hPol.KLMagIdx"); TMVA::DataLoader * hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL = hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> MakeCopy("trainedKLCoeffsWithImpulsivityAndLinPolFracResults"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddBackgroundTree(& minBiasChain); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddBackgroundTree(& payloadBlastChain); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddBackgroundTree(& strongCWChain); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddSpectator("run"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddSpectator("eventNumber"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddSpectator("hPolCoh.KLMagIdx"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddSpectator("hPolDeconv.KLMagIdx"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddSpectator("hPol.KLMagIdx"); TMVA::DataLoader * hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL = hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> MakeCopy("trainedKLCoeffsWithImpulsivityAndLinPolFracResults"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddBackgroundTree(& waisVPolChain, totalXPolV * waisVPolWeight / 2); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddBackgroundTree(& iceMCChain, totalXPolV * iceMCWeight / 2); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddSpectator("run"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddSpectator("eventNumber"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddSpectator("hPolCoh.KLMagIdx"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddSpectator("hPolDeconv.KLMagIdx"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddSpectator("hPol.KLMagIdx"); // Vpol objects. TMVA::DataLoader * vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL = new TMVA::DataLoader("trainedKLCoeffsWithImpulsivityAndLinPolFracResults"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSignalTree(& waisVPolChain, waisVPolWeight); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSignalTree(& iceMCChain, iceMCWeight); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddBackgroundTree(& thermalChain); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSpectator("run"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSpectator("eventNumber"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSpectator("vPolCoh.KLMagIdx"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSpectator("vPolDeconv.KLMagIdx"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddSpectator("vPol.KLMagIdx"); TMVA::DataLoader * vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL = vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> MakeCopy("trainedKLCoeffsWithImpulsivityAndLinPolFracResults"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddBackgroundTree(& minBiasChain); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddBackgroundTree(& payloadBlastChain); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddBackgroundTree(& strongCWChain); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddSpectator("run"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddSpectator("eventNumber"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddSpectator("vPolCoh.KLMagIdx"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddSpectator("vPolDeconv.KLMagIdx"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddSpectator("vPol.KLMagIdx"); TMVA::DataLoader * vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL = vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> MakeCopy("trainedKLCoeffsWithImpulsivityAndLinPolFracResults"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddBackgroundTree(& waisHPolChain, totalXPolH * waisHPolWeight / 3); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddBackgroundTree(& hiCal2AChain, totalXPolH * hiCal2AWeight / 3); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddBackgroundTree(& hiCal2BChain, totalXPolH * hiCal2BWeight / 3); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddSpectator("run"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddSpectator("eventNumber"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddSpectator("vPolCoh.KLMagIdx"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddSpectator("vPolDeconv.KLMagIdx"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddSpectator("vPol.KLMagIdx"); // Variables to train on. hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("hPolCoh.KLMag[hPolCoh.KLMagIdx]"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("hPolDeconv.KLMag[hPolDeconv.KLMagIdx]"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("hPol.KLMag[hPol.KLMagIdx]"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).impulsivityMeasure"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("mostImpulsiveCoherentFiltered(2).impulsivityMeasure"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).linearPolFrac()"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("mostImpulsiveCoherentFiltered(2).linearPolFrac()"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("hPolCoh.KLMag[hPolCoh.KLMagIdx]"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("hPolDeconv.KLMag[hPolDeconv.KLMagIdx]"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("hPol.KLMag[hPol.KLMagIdx]"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).impulsivityMeasure"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("mostImpulsiveCoherentFiltered(2).impulsivityMeasure"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).linearPolFrac()"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("mostImpulsiveCoherentFiltered(2).linearPolFrac()"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("hPolCoh.KLMag[hPolCoh.KLMagIdx]"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("hPolDeconv.KLMag[hPolDeconv.KLMagIdx]"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("hPol.KLMag[hPol.KLMagIdx]"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).impulsivityMeasure"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("mostImpulsiveCoherentFiltered(2).impulsivityMeasure"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).linearPolFrac()"); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("mostImpulsiveCoherentFiltered(2).linearPolFrac()"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("vPolCoh.KLMag[vPolCoh.KLMagIdx]"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("vPolDeconv.KLMag[vPolDeconv.KLMagIdx]"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("vPol.KLMag[vPol.KLMagIdx]"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).impulsivityMeasure"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("mostImpulsiveCoherentFiltered(2).impulsivityMeasure"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).linearPolFrac()"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> AddVariable("mostImpulsiveCoherentFiltered(2).linearPolFrac()"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("vPolCoh.KLMag[vPolCoh.KLMagIdx]"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("vPolDeconv.KLMag[vPolDeconv.KLMagIdx]"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("vPol.KLMag[vPol.KLMagIdx]"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).impulsivityMeasure"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("mostImpulsiveCoherentFiltered(2).impulsivityMeasure"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).linearPolFrac()"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> AddVariable("mostImpulsiveCoherentFiltered(2).linearPolFrac()"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("vPolCoh.KLMag[vPolCoh.KLMagIdx]"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("vPolDeconv.KLMag[vPolDeconv.KLMagIdx]"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("vPol.KLMag[vPol.KLMagIdx]"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).impulsivityMeasure"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("mostImpulsiveCoherentFiltered(2).impulsivityMeasure"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("mostImpulsiveDeconvolvedFiltered(2).linearPolFrac()"); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> AddVariable("mostImpulsiveCoherentFiltered(2).linearPolFrac()"); // Attempting to cut out NaN values, which should be absent anyway. TCut hPolCut("isfinite(hPolCoh.KLMag) && hPolCoh.KLMag <= 1 && isfinite(hPolDeconv.KLMag) && hPolDeconv.KLMag <= 1 && isfinite(hPol.KLMag) && hPol.KLMag <= 2"); hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> PrepareTrainingAndTestTree(hPolCut, ""); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> PrepareTrainingAndTestTree(hPolCut, ""); hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> PrepareTrainingAndTestTree(hPolCut, ""); TCut vPolCut("isfinite(vPolCoh.KLMag) && vPolCoh.KLMag <= 1 && isfinite(vPolDeconv.KLMag) && vPolDeconv.KLMag <= 1 && isfinite(vPol.KLMag) && vPol.KLMag <= 2"); vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL -> PrepareTrainingAndTestTree(vPolCut, ""); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL -> PrepareTrainingAndTestTree(vPolCut, ""); vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL -> PrepareTrainingAndTestTree(vPolCut, ""); // Create files in which to store TMVA results. TFile hPolKLCoeffsWithImpulsivityAndLinPolFracFile("trainedKLCoeffsWithImpulsivityAndLinPolFracResults/hPolKLCoeffsWithImpulsivityAndLinPolFracSemiweightedResults.root", "recreate"); TFile vPolKLCoeffsWithImpulsivityAndLinPolFracFile("trainedKLCoeffsWithImpulsivityAndLinPolFracResults/vPolKLCoeffsWithImpulsivityAndLinPolFracSemiweightedResults.root", "recreate"); // Run TMVA factory, placing output into output file. TMVA::Factory * hPolKLCoeffsWithImpulsivityAndLinPolFracFactory = new TMVA::Factory("hPolKLCoeffsWithImpulsivityAndLinPolFracSemiweightedFactory", & hPolKLCoeffsWithImpulsivityAndLinPolFracFile); TMVA::Factory * vPolKLCoeffsWithImpulsivityAndLinPolFracFactory = new TMVA::Factory("vPolKLCoeffsWithImpulsivityAndLinPolFracSemiweightedFactory", & vPolKLCoeffsWithImpulsivityAndLinPolFracFile); // Hpol booking, training, and writing. hPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> BookMethod(hPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL, TMVA::Types::kFisher, "idealFisher", "H"); hPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> BookMethod(hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL, TMVA::Types::kFisher, "practicalFisher"); hPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> BookMethod(hPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL, TMVA::Types::kFisher, "practicalXPolFisher"); hPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> TrainAllMethods(); hPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> TestAllMethods(); hPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> EvaluateAllMethods(); hPolKLCoeffsWithImpulsivityAndLinPolFracFile.cd(); hPolKLCoeffsWithImpulsivityAndLinPolFracFile.Write(); hPolKLCoeffsWithImpulsivityAndLinPolFracFile.Close(); // Vpol booking, training, and writing. vPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> BookMethod(vPolKLCoeffsWithImpulsivityAndLinPolFracIdealDL, TMVA::Types::kFisher, "idealFisher", "H"); vPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> BookMethod(vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalDL, TMVA::Types::kFisher, "practicalFisher"); vPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> BookMethod(vPolKLCoeffsWithImpulsivityAndLinPolFracPracticalXPolDL, TMVA::Types::kFisher, "practicalXPolFisher"); vPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> TrainAllMethods(); vPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> TestAllMethods(); vPolKLCoeffsWithImpulsivityAndLinPolFracFactory -> EvaluateAllMethods(); vPolKLCoeffsWithImpulsivityAndLinPolFracFile.cd(); vPolKLCoeffsWithImpulsivityAndLinPolFracFile.Write(); vPolKLCoeffsWithImpulsivityAndLinPolFracFile.Close(); }