/* * trainStokesFisherOvRResponse.C * * Created on: June 18, 2020 * Author: John Russell * * Using both coherent and deconvolved waveforms, let's see if normalized Stokes parameters provide * good discrimination? */ #include "AnitaTMVA.h" // Use this to take care of requisite TMVA includes. #include "AnitaEventSummary.h" void trainStokesFisherOvRResponse() { const char * summaryPath = "~/jwrussWork/eventSummaries/%s"; // Create TChains from which to access eventSummaries for various data types. TChain WAISHPolChain("sampleA4"), WAISVPolChain("sampleA4"), HiCal2AChain("sampleA4"), HiCal2BChain("sampleA4"), iceMCChain("sampleA4"); TChain RCPChain("sampleA4"), LCPChain("sampleA4"), payloadBlastChain("sampleA4"), sunChain("sampleA4"); TChain minBiasThermalChain("sampleA4"), nonphysicalThermalChain("sampleA4"); WAISHPolChain.Add(TString::Format(summaryPath, "WAISHPol/purified/summary-full-*")); WAISVPolChain.Add(TString::Format(summaryPath, "WAISVPol/purified/summary-full-*")); HiCal2AChain.Add(TString::Format(summaryPath, "HiCal2A/purified/summary-full-*")); HiCal2BChain.Add(TString::Format(summaryPath, "HiCal2B/purified/summary-full-*")); iceMCChain.Add(TString::Format(summaryPath, "iceMC/purified/summary-*")); RCPChain.Add(TString::Format(summaryPath, "other/RCP/summary-full-*")); LCPChain.Add(TString::Format(summaryPath, "other/LCP/summary-full-*")); payloadBlastChain.Add(TString::Format(summaryPath, "other/payloadBlast/summary-full-*")); sunChain.Add(TString::Format(summaryPath, "other/sun/summary-full-*")); minBiasThermalChain.Add(TString::Format(summaryPath, "minBias/thermal/summary-full-*")); nonphysicalThermalChain.Add(TString::Format(summaryPath, "nonphysical/thermal/summary-full-*")); // Create weights for each classification. So that each classification effectively balanced. Should better distinguish each classification this way. 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(); double RCPWeight = 1. / RCPChain.GetEntries(); double LCPWeight = 1. / LCPChain.GetEntries(); double payloadBlastWeight = 1. / payloadBlastChain.GetEntries(); double sunWeight = 1. / sunChain.GetEntries(); double minBiasThermalWeight = 1. / minBiasThermalChain.GetEntries(); double nonphysicalThermalWeight = 1. / nonphysicalThermalChain.GetEntries(); // Set up DataLoader objects. // WAIS Hpol DataLoader object. TMVA::DataLoader WAISHPolDL("StokesResults"); WAISHPolDL.AddSignalTree(& WAISHPolChain, WAISHPolWeight); WAISHPolDL.AddBackgroundTree(& WAISVPolChain, WAISVPolWeight); WAISHPolDL.AddBackgroundTree(& HiCal2AChain, HiCal2AWeight); WAISHPolDL.AddBackgroundTree(& HiCal2BChain, HiCal2BWeight); WAISHPolDL.AddBackgroundTree(& iceMCChain, iceMCWeight); WAISHPolDL.AddBackgroundTree(& RCPChain, RCPWeight); WAISHPolDL.AddBackgroundTree(& LCPChain, LCPWeight); WAISHPolDL.AddBackgroundTree(& payloadBlastChain, payloadBlastWeight); WAISHPolDL.AddBackgroundTree(& sunChain, sunWeight); WAISHPolDL.AddBackgroundTree(& minBiasThermalChain, minBiasThermalWeight); WAISHPolDL.AddBackgroundTree(& nonphysicalThermalChain, nonphysicalThermalWeight); WAISHPolDL.AddSpectator("run"); WAISHPolDL.AddSpectator("eventNumber"); WAISHPolDL.AddVariable("cohPAPRI := mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I"); // Peak-to-average-power-ratio (PAPR). Equal to the square of crest factor (what we call SNR.) WAISHPolDL.AddVariable("cohFracQ := mostImpulsiveCoherentFiltered(2).Q / mostImpulsiveCoherentFiltered(2).I"); WAISHPolDL.AddVariable("cohFracU := mostImpulsiveCoherentFiltered(2).U / mostImpulsiveCoherentFiltered(2).I"); WAISHPolDL.AddVariable("cohFracV := mostImpulsiveCoherentFiltered(2).V / mostImpulsiveCoherentFiltered(2).I"); WAISHPolDL.AddVariable("deconvPAPRI := mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I"); WAISHPolDL.AddVariable("deconvFracQ := mostImpulsiveDeconvolvedFiltered(2).Q / mostImpulsiveDeconvolvedFiltered(2).I"); WAISHPolDL.AddVariable("deconvFracU := mostImpulsiveDeconvolvedFiltered(2).U / mostImpulsiveDeconvolvedFiltered(2).I"); WAISHPolDL.AddVariable("deconvFracV := mostImpulsiveDeconvolvedFiltered(2).V / mostImpulsiveDeconvolvedFiltered(2).I"); WAISHPolDL.AddVariable("diffSqPAPRI := pow(mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I, 2) - pow(mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I, 2)"); // WAIS Vpol DataLoader object. TMVA::DataLoader WAISVPolDL("StokesResults"); WAISVPolDL.AddBackgroundTree(& WAISHPolChain, WAISHPolWeight); WAISVPolDL.AddSignalTree(& WAISVPolChain, WAISVPolWeight); WAISVPolDL.AddBackgroundTree(& HiCal2AChain, HiCal2AWeight); WAISVPolDL.AddBackgroundTree(& HiCal2BChain, HiCal2BWeight); WAISVPolDL.AddBackgroundTree(& iceMCChain, iceMCWeight); WAISVPolDL.AddBackgroundTree(& RCPChain, RCPWeight); WAISVPolDL.AddBackgroundTree(& LCPChain, LCPWeight); WAISVPolDL.AddBackgroundTree(& payloadBlastChain, payloadBlastWeight); WAISVPolDL.AddBackgroundTree(& sunChain, sunWeight); WAISVPolDL.AddBackgroundTree(& minBiasThermalChain, minBiasThermalWeight); WAISVPolDL.AddBackgroundTree(& nonphysicalThermalChain, nonphysicalThermalWeight); WAISVPolDL.AddSpectator("run"); WAISVPolDL.AddSpectator("eventNumber"); WAISVPolDL.AddVariable("cohPAPRI := mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I"); WAISVPolDL.AddVariable("cohFracQ := mostImpulsiveCoherentFiltered(2).Q / mostImpulsiveCoherentFiltered(2).I"); WAISVPolDL.AddVariable("cohFracU := mostImpulsiveCoherentFiltered(2).U / mostImpulsiveCoherentFiltered(2).I"); WAISVPolDL.AddVariable("cohFracV := mostImpulsiveCoherentFiltered(2).V / mostImpulsiveCoherentFiltered(2).I"); WAISVPolDL.AddVariable("deconvPAPRI := mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I"); WAISVPolDL.AddVariable("deconvFracQ := mostImpulsiveDeconvolvedFiltered(2).Q / mostImpulsiveDeconvolvedFiltered(2).I"); WAISVPolDL.AddVariable("deconvFracU := mostImpulsiveDeconvolvedFiltered(2).U / mostImpulsiveDeconvolvedFiltered(2).I"); WAISVPolDL.AddVariable("deconvFracV := mostImpulsiveDeconvolvedFiltered(2).V / mostImpulsiveDeconvolvedFiltered(2).I"); WAISVPolDL.AddVariable("diffSqPAPRI := pow(mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I, 2) - pow(mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I, 2)"); // HiCal2A DataLoader object. TMVA::DataLoader HiCal2ADL("StokesResults"); HiCal2ADL.AddBackgroundTree(& WAISHPolChain, WAISHPolWeight); HiCal2ADL.AddBackgroundTree(& WAISVPolChain, WAISVPolWeight); HiCal2ADL.AddSignalTree(& HiCal2AChain, HiCal2AWeight); HiCal2ADL.AddBackgroundTree(& HiCal2BChain, HiCal2BWeight); HiCal2ADL.AddBackgroundTree(& iceMCChain, iceMCWeight); HiCal2ADL.AddBackgroundTree(& RCPChain, RCPWeight); HiCal2ADL.AddBackgroundTree(& LCPChain, LCPWeight); HiCal2ADL.AddBackgroundTree(& payloadBlastChain, payloadBlastWeight); HiCal2ADL.AddBackgroundTree(& sunChain, sunWeight); HiCal2ADL.AddBackgroundTree(& minBiasThermalChain, minBiasThermalWeight); HiCal2ADL.AddBackgroundTree(& nonphysicalThermalChain, nonphysicalThermalWeight); HiCal2ADL.AddSpectator("run"); HiCal2ADL.AddSpectator("eventNumber"); HiCal2ADL.AddVariable("cohPAPRI := mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I"); HiCal2ADL.AddVariable("cohFracQ := mostImpulsiveCoherentFiltered(2).Q / mostImpulsiveCoherentFiltered(2).I"); HiCal2ADL.AddVariable("cohFracU := mostImpulsiveCoherentFiltered(2).U / mostImpulsiveCoherentFiltered(2).I"); HiCal2ADL.AddVariable("cohFracV := mostImpulsiveCoherentFiltered(2).V / mostImpulsiveCoherentFiltered(2).I"); HiCal2ADL.AddVariable("deconvPAPRI := mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I"); HiCal2ADL.AddVariable("deconvFracQ := mostImpulsiveDeconvolvedFiltered(2).Q / mostImpulsiveDeconvolvedFiltered(2).I"); HiCal2ADL.AddVariable("deconvFracU := mostImpulsiveDeconvolvedFiltered(2).U / mostImpulsiveDeconvolvedFiltered(2).I"); HiCal2ADL.AddVariable("deconvFracV := mostImpulsiveDeconvolvedFiltered(2).V / mostImpulsiveDeconvolvedFiltered(2).I"); HiCal2ADL.AddVariable("diffSqPAPRI := pow(mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I, 2) - pow(mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I, 2)"); // HiCal2B DataLoader object. TMVA::DataLoader HiCal2BDL("StokesResults"); HiCal2BDL.AddBackgroundTree(& WAISHPolChain, WAISHPolWeight); HiCal2BDL.AddBackgroundTree(& WAISVPolChain, WAISVPolWeight); HiCal2BDL.AddBackgroundTree(& HiCal2AChain, HiCal2AWeight); HiCal2BDL.AddSignalTree(& HiCal2BChain, HiCal2BWeight); HiCal2BDL.AddBackgroundTree(& iceMCChain, iceMCWeight); HiCal2BDL.AddBackgroundTree(& RCPChain, RCPWeight); HiCal2BDL.AddBackgroundTree(& LCPChain, LCPWeight); HiCal2BDL.AddBackgroundTree(& payloadBlastChain, payloadBlastWeight); HiCal2BDL.AddBackgroundTree(& sunChain, sunWeight); HiCal2BDL.AddBackgroundTree(& minBiasThermalChain, minBiasThermalWeight); HiCal2BDL.AddBackgroundTree(& nonphysicalThermalChain, nonphysicalThermalWeight); HiCal2BDL.AddSpectator("run"); HiCal2BDL.AddSpectator("eventNumber"); HiCal2BDL.AddVariable("cohPAPRI := mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I"); HiCal2BDL.AddVariable("cohFracQ := mostImpulsiveCoherentFiltered(2).Q / mostImpulsiveCoherentFiltered(2).I"); HiCal2BDL.AddVariable("cohFracU := mostImpulsiveCoherentFiltered(2).U / mostImpulsiveCoherentFiltered(2).I"); HiCal2BDL.AddVariable("cohFracV := mostImpulsiveCoherentFiltered(2).V / mostImpulsiveCoherentFiltered(2).I"); HiCal2BDL.AddVariable("deconvPAPRI := mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I"); HiCal2BDL.AddVariable("deconvFracQ := mostImpulsiveDeconvolvedFiltered(2).Q / mostImpulsiveDeconvolvedFiltered(2).I"); HiCal2BDL.AddVariable("deconvFracU := mostImpulsiveDeconvolvedFiltered(2).U / mostImpulsiveDeconvolvedFiltered(2).I"); HiCal2BDL.AddVariable("deconvFracV := mostImpulsiveDeconvolvedFiltered(2).V / mostImpulsiveDeconvolvedFiltered(2).I"); HiCal2BDL.AddVariable("diffSqPAPRI := pow(mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I, 2) - pow(mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I, 2)"); // iceMC DataLoader object. TMVA::DataLoader iceMCDL("StokesResults"); iceMCDL.AddBackgroundTree(& WAISHPolChain, WAISHPolWeight); iceMCDL.AddBackgroundTree(& WAISVPolChain, WAISVPolWeight); iceMCDL.AddBackgroundTree(& HiCal2AChain, HiCal2AWeight); iceMCDL.AddBackgroundTree(& HiCal2BChain, HiCal2BWeight); iceMCDL.AddSignalTree(& iceMCChain, iceMCWeight); iceMCDL.AddBackgroundTree(& RCPChain, RCPWeight); iceMCDL.AddBackgroundTree(& LCPChain, LCPWeight); iceMCDL.AddBackgroundTree(& payloadBlastChain, payloadBlastWeight); iceMCDL.AddBackgroundTree(& sunChain, sunWeight); iceMCDL.AddBackgroundTree(& minBiasThermalChain, minBiasThermalWeight); iceMCDL.AddBackgroundTree(& nonphysicalThermalChain, nonphysicalThermalWeight); iceMCDL.AddSpectator("run"); iceMCDL.AddSpectator("eventNumber"); iceMCDL.AddVariable("cohPAPRI := mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I"); iceMCDL.AddVariable("cohFracQ := mostImpulsiveCoherentFiltered(2).Q / mostImpulsiveCoherentFiltered(2).I"); iceMCDL.AddVariable("cohFracU := mostImpulsiveCoherentFiltered(2).U / mostImpulsiveCoherentFiltered(2).I"); iceMCDL.AddVariable("cohFracV := mostImpulsiveCoherentFiltered(2).V / mostImpulsiveCoherentFiltered(2).I"); iceMCDL.AddVariable("deconvPAPRI := mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I"); iceMCDL.AddVariable("deconvFracQ := mostImpulsiveDeconvolvedFiltered(2).Q / mostImpulsiveDeconvolvedFiltered(2).I"); iceMCDL.AddVariable("deconvFracU := mostImpulsiveDeconvolvedFiltered(2).U / mostImpulsiveDeconvolvedFiltered(2).I"); iceMCDL.AddVariable("deconvFracV := mostImpulsiveDeconvolvedFiltered(2).V / mostImpulsiveDeconvolvedFiltered(2).I"); iceMCDL.AddVariable("diffSqPAPRI := pow(mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I, 2) - pow(mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I, 2)"); // RCP DataLoader object. TMVA::DataLoader RCPDL("StokesResults"); RCPDL.AddBackgroundTree(& WAISHPolChain, WAISHPolWeight); RCPDL.AddBackgroundTree(& WAISVPolChain, WAISVPolWeight); RCPDL.AddBackgroundTree(& HiCal2AChain, HiCal2AWeight); RCPDL.AddBackgroundTree(& HiCal2BChain, HiCal2BWeight); RCPDL.AddBackgroundTree(& iceMCChain, iceMCWeight); RCPDL.AddSignalTree(& RCPChain, RCPWeight); RCPDL.AddBackgroundTree(& LCPChain, LCPWeight); RCPDL.AddBackgroundTree(& payloadBlastChain, payloadBlastWeight); RCPDL.AddBackgroundTree(& sunChain, sunWeight); RCPDL.AddBackgroundTree(& minBiasThermalChain, minBiasThermalWeight); RCPDL.AddBackgroundTree(& nonphysicalThermalChain, nonphysicalThermalWeight); RCPDL.AddSpectator("run"); RCPDL.AddSpectator("eventNumber"); RCPDL.AddVariable("cohPAPRI := mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I"); RCPDL.AddVariable("cohFracQ := mostImpulsiveCoherentFiltered(2).Q / mostImpulsiveCoherentFiltered(2).I"); RCPDL.AddVariable("cohFracU := mostImpulsiveCoherentFiltered(2).U / mostImpulsiveCoherentFiltered(2).I"); RCPDL.AddVariable("cohFracV := mostImpulsiveCoherentFiltered(2).V / mostImpulsiveCoherentFiltered(2).I"); RCPDL.AddVariable("deconvPAPRI := mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I"); RCPDL.AddVariable("deconvFracQ := mostImpulsiveDeconvolvedFiltered(2).Q / mostImpulsiveDeconvolvedFiltered(2).I"); RCPDL.AddVariable("deconvFracU := mostImpulsiveDeconvolvedFiltered(2).U / mostImpulsiveDeconvolvedFiltered(2).I"); RCPDL.AddVariable("deconvFracV := mostImpulsiveDeconvolvedFiltered(2).V / mostImpulsiveDeconvolvedFiltered(2).I"); RCPDL.AddVariable("diffSqPAPRI := pow(mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I, 2) - pow(mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I, 2)"); // LCP DataLoader object. TMVA::DataLoader LCPDL("StokesResults"); LCPDL.AddBackgroundTree(& WAISHPolChain, WAISHPolWeight); LCPDL.AddBackgroundTree(& WAISVPolChain, WAISVPolWeight); LCPDL.AddBackgroundTree(& HiCal2AChain, HiCal2AWeight); LCPDL.AddBackgroundTree(& HiCal2BChain, HiCal2BWeight); LCPDL.AddBackgroundTree(& iceMCChain, iceMCWeight); LCPDL.AddBackgroundTree(& RCPChain, RCPWeight); LCPDL.AddSignalTree(& LCPChain, LCPWeight); LCPDL.AddBackgroundTree(& payloadBlastChain, payloadBlastWeight); LCPDL.AddBackgroundTree(& sunChain, sunWeight); LCPDL.AddBackgroundTree(& minBiasThermalChain, minBiasThermalWeight); LCPDL.AddBackgroundTree(& nonphysicalThermalChain, nonphysicalThermalWeight); LCPDL.AddSpectator("run"); LCPDL.AddSpectator("eventNumber"); LCPDL.AddVariable("cohPAPRI := mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I"); LCPDL.AddVariable("cohFracQ := mostImpulsiveCoherentFiltered(2).Q / mostImpulsiveCoherentFiltered(2).I"); LCPDL.AddVariable("cohFracU := mostImpulsiveCoherentFiltered(2).U / mostImpulsiveCoherentFiltered(2).I"); LCPDL.AddVariable("cohFracV := mostImpulsiveCoherentFiltered(2).V / mostImpulsiveCoherentFiltered(2).I"); LCPDL.AddVariable("deconvPAPRI := mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I"); LCPDL.AddVariable("deconvFracQ := mostImpulsiveDeconvolvedFiltered(2).Q / mostImpulsiveDeconvolvedFiltered(2).I"); LCPDL.AddVariable("deconvFracU := mostImpulsiveDeconvolvedFiltered(2).U / mostImpulsiveDeconvolvedFiltered(2).I"); LCPDL.AddVariable("deconvFracV := mostImpulsiveDeconvolvedFiltered(2).V / mostImpulsiveDeconvolvedFiltered(2).I"); LCPDL.AddVariable("diffSqPAPRI := pow(mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I, 2) - pow(mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I, 2)"); // Payload Blast DataLoader object. TMVA::DataLoader payloadBlastDL("StokesResults"); payloadBlastDL.AddBackgroundTree(& WAISHPolChain, WAISHPolWeight); payloadBlastDL.AddBackgroundTree(& WAISVPolChain, WAISVPolWeight); payloadBlastDL.AddBackgroundTree(& HiCal2AChain, HiCal2AWeight); payloadBlastDL.AddBackgroundTree(& HiCal2BChain, HiCal2BWeight); payloadBlastDL.AddBackgroundTree(& iceMCChain, iceMCWeight); payloadBlastDL.AddBackgroundTree(& RCPChain, RCPWeight); payloadBlastDL.AddBackgroundTree(& LCPChain, LCPWeight); payloadBlastDL.AddSignalTree(& payloadBlastChain, payloadBlastWeight); payloadBlastDL.AddBackgroundTree(& sunChain, sunWeight); payloadBlastDL.AddBackgroundTree(& minBiasThermalChain, minBiasThermalWeight); payloadBlastDL.AddBackgroundTree(& nonphysicalThermalChain, nonphysicalThermalWeight); payloadBlastDL.AddSpectator("run"); payloadBlastDL.AddSpectator("eventNumber"); payloadBlastDL.AddVariable("cohPAPRI := mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I"); payloadBlastDL.AddVariable("cohFracQ := mostImpulsiveCoherentFiltered(2).Q / mostImpulsiveCoherentFiltered(2).I"); payloadBlastDL.AddVariable("cohFracU := mostImpulsiveCoherentFiltered(2).U / mostImpulsiveCoherentFiltered(2).I"); payloadBlastDL.AddVariable("cohFracV := mostImpulsiveCoherentFiltered(2).V / mostImpulsiveCoherentFiltered(2).I"); payloadBlastDL.AddVariable("deconvPAPRI := mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I"); payloadBlastDL.AddVariable("deconvFracQ := mostImpulsiveDeconvolvedFiltered(2).Q / mostImpulsiveDeconvolvedFiltered(2).I"); payloadBlastDL.AddVariable("deconvFracU := mostImpulsiveDeconvolvedFiltered(2).U / mostImpulsiveDeconvolvedFiltered(2).I"); payloadBlastDL.AddVariable("deconvFracV := mostImpulsiveDeconvolvedFiltered(2).V / mostImpulsiveDeconvolvedFiltered(2).I"); payloadBlastDL.AddVariable("diffSqPAPRI := pow(mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I, 2) - pow(mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I, 2)"); // Sun DataLoader object. TMVA::DataLoader sunDL("StokesResults"); sunDL.AddBackgroundTree(& WAISHPolChain, WAISHPolWeight); sunDL.AddBackgroundTree(& WAISVPolChain, WAISVPolWeight); sunDL.AddBackgroundTree(& HiCal2AChain, HiCal2AWeight); sunDL.AddBackgroundTree(& HiCal2BChain, HiCal2BWeight); sunDL.AddBackgroundTree(& iceMCChain, iceMCWeight); sunDL.AddBackgroundTree(& RCPChain, RCPWeight); sunDL.AddBackgroundTree(& LCPChain, LCPWeight); sunDL.AddBackgroundTree(& payloadBlastChain, payloadBlastWeight); sunDL.AddSignalTree(& sunChain, sunWeight); sunDL.AddBackgroundTree(& minBiasThermalChain, minBiasThermalWeight); sunDL.AddBackgroundTree(& nonphysicalThermalChain, nonphysicalThermalWeight); sunDL.AddSpectator("run"); sunDL.AddSpectator("eventNumber"); sunDL.AddVariable("cohPAPRI := mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I"); sunDL.AddVariable("cohFracQ := mostImpulsiveCoherentFiltered(2).Q / mostImpulsiveCoherentFiltered(2).I"); sunDL.AddVariable("cohFracU := mostImpulsiveCoherentFiltered(2).U / mostImpulsiveCoherentFiltered(2).I"); sunDL.AddVariable("cohFracV := mostImpulsiveCoherentFiltered(2).V / mostImpulsiveCoherentFiltered(2).I"); sunDL.AddVariable("deconvPAPRI := mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I"); sunDL.AddVariable("deconvFracQ := mostImpulsiveDeconvolvedFiltered(2).Q / mostImpulsiveDeconvolvedFiltered(2).I"); sunDL.AddVariable("deconvFracU := mostImpulsiveDeconvolvedFiltered(2).U / mostImpulsiveDeconvolvedFiltered(2).I"); sunDL.AddVariable("deconvFracV := mostImpulsiveDeconvolvedFiltered(2).V / mostImpulsiveDeconvolvedFiltered(2).I"); sunDL.AddVariable("diffSqPAPRI := pow(mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I, 2) - pow(mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I, 2)"); // Minimumly biased thermal DataLoader object. TMVA::DataLoader minBiasThermalDL("StokesResults"); minBiasThermalDL.AddBackgroundTree(& WAISHPolChain, WAISHPolWeight); minBiasThermalDL.AddBackgroundTree(& WAISVPolChain, WAISVPolWeight); minBiasThermalDL.AddBackgroundTree(& HiCal2AChain, HiCal2AWeight); minBiasThermalDL.AddBackgroundTree(& HiCal2BChain, HiCal2BWeight); minBiasThermalDL.AddBackgroundTree(& iceMCChain, iceMCWeight); minBiasThermalDL.AddBackgroundTree(& RCPChain, RCPWeight); minBiasThermalDL.AddBackgroundTree(& LCPChain, LCPWeight); minBiasThermalDL.AddBackgroundTree(& payloadBlastChain, payloadBlastWeight); minBiasThermalDL.AddBackgroundTree(& sunChain, sunWeight); minBiasThermalDL.AddSignalTree(& minBiasThermalChain, minBiasThermalWeight); minBiasThermalDL.AddBackgroundTree(& nonphysicalThermalChain, nonphysicalThermalWeight); minBiasThermalDL.AddSpectator("run"); minBiasThermalDL.AddSpectator("eventNumber"); minBiasThermalDL.AddVariable("cohPAPRI := mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I"); minBiasThermalDL.AddVariable("cohFracQ := mostImpulsiveCoherentFiltered(2).Q / mostImpulsiveCoherentFiltered(2).I"); minBiasThermalDL.AddVariable("cohFracU := mostImpulsiveCoherentFiltered(2).U / mostImpulsiveCoherentFiltered(2).I"); minBiasThermalDL.AddVariable("cohFracV := mostImpulsiveCoherentFiltered(2).V / mostImpulsiveCoherentFiltered(2).I"); minBiasThermalDL.AddVariable("deconvPAPRI := mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I"); minBiasThermalDL.AddVariable("deconvFracQ := mostImpulsiveDeconvolvedFiltered(2).Q / mostImpulsiveDeconvolvedFiltered(2).I"); minBiasThermalDL.AddVariable("deconvFracU := mostImpulsiveDeconvolvedFiltered(2).U / mostImpulsiveDeconvolvedFiltered(2).I"); minBiasThermalDL.AddVariable("deconvFracV := mostImpulsiveDeconvolvedFiltered(2).V / mostImpulsiveDeconvolvedFiltered(2).I"); minBiasThermalDL.AddVariable("diffSqPAPRI := pow(mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I, 2) - pow(mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I, 2)"); // Nonphysical thermal DataLoader object. TMVA::DataLoader nonphysicalThermalDL("StokesResults"); nonphysicalThermalDL.AddBackgroundTree(& WAISHPolChain, WAISHPolWeight); nonphysicalThermalDL.AddBackgroundTree(& WAISVPolChain, WAISVPolWeight); nonphysicalThermalDL.AddBackgroundTree(& HiCal2AChain, HiCal2AWeight); nonphysicalThermalDL.AddBackgroundTree(& HiCal2BChain, HiCal2BWeight); nonphysicalThermalDL.AddBackgroundTree(& iceMCChain, iceMCWeight); nonphysicalThermalDL.AddBackgroundTree(& RCPChain, RCPWeight); nonphysicalThermalDL.AddBackgroundTree(& LCPChain, LCPWeight); nonphysicalThermalDL.AddBackgroundTree(& payloadBlastChain, payloadBlastWeight); nonphysicalThermalDL.AddBackgroundTree(& sunChain, sunWeight); nonphysicalThermalDL.AddBackgroundTree(& minBiasThermalChain, minBiasThermalWeight); nonphysicalThermalDL.AddSignalTree(& nonphysicalThermalChain, nonphysicalThermalWeight); nonphysicalThermalDL.AddSpectator("run"); nonphysicalThermalDL.AddSpectator("eventNumber"); nonphysicalThermalDL.AddVariable("cohPAPRI := mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I"); nonphysicalThermalDL.AddVariable("cohFracQ := mostImpulsiveCoherentFiltered(2).Q / mostImpulsiveCoherentFiltered(2).I"); nonphysicalThermalDL.AddVariable("cohFracU := mostImpulsiveCoherentFiltered(2).U / mostImpulsiveCoherentFiltered(2).I"); nonphysicalThermalDL.AddVariable("cohFracV := mostImpulsiveCoherentFiltered(2).V / mostImpulsiveCoherentFiltered(2).I"); nonphysicalThermalDL.AddVariable("deconvPAPRI := mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I"); nonphysicalThermalDL.AddVariable("deconvFracQ := mostImpulsiveDeconvolvedFiltered(2).Q / mostImpulsiveDeconvolvedFiltered(2).I"); nonphysicalThermalDL.AddVariable("deconvFracU := mostImpulsiveDeconvolvedFiltered(2).U / mostImpulsiveDeconvolvedFiltered(2).I"); nonphysicalThermalDL.AddVariable("deconvFracV := mostImpulsiveDeconvolvedFiltered(2).V / mostImpulsiveDeconvolvedFiltered(2).I"); nonphysicalThermalDL.AddVariable("diffSqPAPRI := pow(mostImpulsiveDeconvolvedFiltered(2).max_dI / mostImpulsiveDeconvolvedFiltered(2).I, 2) - pow(mostImpulsiveCoherentFiltered(2).max_dI / mostImpulsiveCoherentFiltered(2).I, 2)"); // Change weighting for multiclass purposes. WAISHPolDL.PrepareTrainingAndTestTree("", "NormMode=None"); WAISVPolDL.PrepareTrainingAndTestTree("", "NormMode=None"); HiCal2ADL.PrepareTrainingAndTestTree("", "NormMode=None"); HiCal2BDL.PrepareTrainingAndTestTree("", "NormMode=None"); iceMCDL.PrepareTrainingAndTestTree("", "NormMode=None"); RCPDL.PrepareTrainingAndTestTree("", "NormMode=None"); LCPDL.PrepareTrainingAndTestTree("", "NormMode=None"); payloadBlastDL.PrepareTrainingAndTestTree("", "NormMode=None"); sunDL.PrepareTrainingAndTestTree("", "NormMode=None"); minBiasThermalDL.PrepareTrainingAndTestTree("", "NormMode=None"); nonphysicalThermalDL.PrepareTrainingAndTestTree("", "NormMode=None"); // Create files in which to store TMVA results. TFile fisherOvRFile("StokesResults/StokesFisherOvRResults.root", "recreate"); // Run TMVA factory, placing output into output file. TMVA::Factory fisherOvRFactory("StokesFisherOvRFactory", & fisherOvRFile); // Booking, training, and writing. // fisherOvRFactory.BookMethod(& WAISHPolDL, TMVA::Types::kFisher, "WAISHPol", "CreateMVAPdfs:PDFInterpolMVAPdf=Spline3"); // fisherOvRFactory.BookMethod(& WAISVPolDL, TMVA::Types::kFisher, "WAISVPol", "CreateMVAPdfs:PDFInterpolMVAPdf=Spline3"); // fisherOvRFactory.BookMethod(& HiCal2ADL, TMVA::Types::kFisher, "HiCal2A", "CreateMVAPdfs:PDFInterpolMVAPdf=Spline3"); // fisherOvRFactory.BookMethod(& HiCal2BDL, TMVA::Types::kFisher, "HiCal2B", "CreateMVAPdfs:PDFInterpolMVAPdf=Spline3"); // fisherOvRFactory.BookMethod(& iceMCDL, TMVA::Types::kFisher, "iceMC", "CreateMVAPdfs:PDFInterpolMVAPdf=Spline3"); // fisherOvRFactory.BookMethod(& RCPDL, TMVA::Types::kFisher, "RCP", "CreateMVAPdfs:PDFInterpolMVAPdf=Spline3"); // fisherOvRFactory.BookMethod(& LCPDL, TMVA::Types::kFisher, "LCP", "CreateMVAPdfs:PDFInterpolMVAPdf=Spline3"); // fisherOvRFactory.BookMethod(& payloadBlastDL, TMVA::Types::kFisher, "payloadBlast", "CreateMVAPdfs:PDFInterpolMVAPdf=Spline3"); // fisherOvRFactory.BookMethod(& sunDL, TMVA::Types::kFisher, "sun", "CreateMVAPdfs:PDFInterpolMVAPdf=Spline3"); // fisherOvRFactory.BookMethod(& minBiasThermalDL, TMVA::Types::kFisher, "minBiasThermal", "CreateMVAPdfs:PDFInterpolMVAPdf=Spline3"); // fisherOvRFactory.BookMethod(& nonphysicalThermalDL, TMVA::Types::kFisher, "nonphysicalThermal", "CreateMVAPdfs:PDFInterpolMVAPdf=Spline3"); // fisherOvRFactory.BookMethod(& WAISHPolDL, TMVA::Types::kFisher, "WAISHPol", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); // fisherOvRFactory.BookMethod(& WAISVPolDL, TMVA::Types::kFisher, "WAISVPol", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); // fisherOvRFactory.BookMethod(& HiCal2ADL, TMVA::Types::kFisher, "HiCal2A", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); // fisherOvRFactory.BookMethod(& HiCal2BDL, TMVA::Types::kFisher, "HiCal2B", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); // fisherOvRFactory.BookMethod(& iceMCDL, TMVA::Types::kFisher, "iceMC", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); // fisherOvRFactory.BookMethod(& RCPDL, TMVA::Types::kFisher, "RCP", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); // fisherOvRFactory.BookMethod(& LCPDL, TMVA::Types::kFisher, "LCP", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); // fisherOvRFactory.BookMethod(& payloadBlastDL, TMVA::Types::kFisher, "payloadBlast", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); // fisherOvRFactory.BookMethod(& sunDL, TMVA::Types::kFisher, "sun", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); // fisherOvRFactory.BookMethod(& minBiasThermalDL, TMVA::Types::kFisher, "minBiasThermal", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); // fisherOvRFactory.BookMethod(& nonphysicalThermalDL, TMVA::Types::kFisher, "nonphysicalThermal", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); // fisherOvRFactory.BookMethod(& WAISHPolDL, TMVA::Types::kFisher, "WAISHPol", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500:KDEborderMVAPdf=Mirror"); // fisherOvRFactory.BookMethod(& WAISVPolDL, TMVA::Types::kFisher, "WAISVPol", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500:KDEborderMVAPdf=Mirror"); // fisherOvRFactory.BookMethod(& HiCal2ADL, TMVA::Types::kFisher, "HiCal2A", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500:KDEborderMVAPdf=Mirror"); // fisherOvRFactory.BookMethod(& HiCal2BDL, TMVA::Types::kFisher, "HiCal2B", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500:KDEborderMVAPdf=Mirror"); // fisherOvRFactory.BookMethod(& iceMCDL, TMVA::Types::kFisher, "iceMC", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500:KDEborderMVAPdf=Mirror"); // fisherOvRFactory.BookMethod(& RCPDL, TMVA::Types::kFisher, "RCP", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500:KDEborderMVAPdf=Mirror"); // fisherOvRFactory.BookMethod(& LCPDL, TMVA::Types::kFisher, "LCP", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500:KDEborderMVAPdf=Mirror"); // fisherOvRFactory.BookMethod(& payloadBlastDL, TMVA::Types::kFisher, "payloadBlast", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500:KDEborderMVAPdf=Mirror"); // fisherOvRFactory.BookMethod(& sunDL, TMVA::Types::kFisher, "sun", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500:KDEborderMVAPdf=Mirror"); // fisherOvRFactory.BookMethod(& minBiasThermalDL, TMVA::Types::kFisher, "minBiasThermal", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500:KDEborderMVAPdf=Mirror"); // fisherOvRFactory.BookMethod(& nonphysicalThermalDL, TMVA::Types::kFisher, "nonphysicalThermal", "CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500:KDEborderMVAPdf=Mirror"); fisherOvRFactory.BookMethod(& WAISHPolDL, TMVA::Types::kFisher, "WAISHPol", "VarTransform=P:CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); fisherOvRFactory.BookMethod(& WAISVPolDL, TMVA::Types::kFisher, "WAISVPol", "VarTransform=P:CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); fisherOvRFactory.BookMethod(& HiCal2ADL, TMVA::Types::kFisher, "HiCal2A", "VarTransform=P:CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); fisherOvRFactory.BookMethod(& HiCal2BDL, TMVA::Types::kFisher, "HiCal2B", "VarTransform=P:CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); fisherOvRFactory.BookMethod(& iceMCDL, TMVA::Types::kFisher, "iceMC", "VarTransform=P:CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); fisherOvRFactory.BookMethod(& RCPDL, TMVA::Types::kFisher, "RCP", "VarTransform=P:CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); fisherOvRFactory.BookMethod(& LCPDL, TMVA::Types::kFisher, "LCP", "VarTransform=P:CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); fisherOvRFactory.BookMethod(& payloadBlastDL, TMVA::Types::kFisher, "payloadBlast", "VarTransform=P:CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); fisherOvRFactory.BookMethod(& sunDL, TMVA::Types::kFisher, "sun", "VarTransform=P:CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); fisherOvRFactory.BookMethod(& minBiasThermalDL, TMVA::Types::kFisher, "minBiasThermal", "VarTransform=P:CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); fisherOvRFactory.BookMethod(& nonphysicalThermalDL, TMVA::Types::kFisher, "nonphysicalThermal", "VarTransform=P:CreateMVAPdfs:PDFInterpolMVAPdf=KDE:NbinsMVAPdf=500"); fisherOvRFactory.TrainAllMethods(); fisherOvRFactory.TestAllMethods(); fisherOvRFactory.EvaluateAllMethods(); fisherOvRFile.cd(); fisherOvRFile.Write(); fisherOvRFile.Close(); }