/* * 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-*")); // Set up DataLoader objects. // WAIS Hpol DataLoader object. TMVA::DataLoader WAISHPolDL("StokesResults"); WAISHPolDL.AddSignalTree(& WAISHPolChain); WAISHPolDL.AddBackgroundTree(& WAISVPolChain); WAISHPolDL.AddBackgroundTree(& HiCal2AChain); WAISHPolDL.AddBackgroundTree(& HiCal2BChain); WAISHPolDL.AddBackgroundTree(& iceMCChain); WAISHPolDL.AddBackgroundTree(& RCPChain); WAISHPolDL.AddBackgroundTree(& LCPChain); WAISHPolDL.AddBackgroundTree(& payloadBlastChain); WAISHPolDL.AddBackgroundTree(& sunChain); WAISHPolDL.AddBackgroundTree(& minBiasThermalChain); WAISHPolDL.AddBackgroundTree(& nonphysicalThermalChain); 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); WAISVPolDL.AddSignalTree(& WAISVPolChain); WAISVPolDL.AddBackgroundTree(& HiCal2AChain); WAISVPolDL.AddBackgroundTree(& HiCal2BChain); WAISVPolDL.AddBackgroundTree(& iceMCChain); WAISVPolDL.AddBackgroundTree(& RCPChain); WAISVPolDL.AddBackgroundTree(& LCPChain); WAISVPolDL.AddBackgroundTree(& payloadBlastChain); WAISVPolDL.AddBackgroundTree(& sunChain); WAISVPolDL.AddBackgroundTree(& minBiasThermalChain); WAISVPolDL.AddBackgroundTree(& nonphysicalThermalChain); 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); HiCal2ADL.AddBackgroundTree(& WAISVPolChain); HiCal2ADL.AddSignalTree(& HiCal2AChain); HiCal2ADL.AddBackgroundTree(& HiCal2BChain); HiCal2ADL.AddBackgroundTree(& iceMCChain); HiCal2ADL.AddBackgroundTree(& RCPChain); HiCal2ADL.AddBackgroundTree(& LCPChain); HiCal2ADL.AddBackgroundTree(& payloadBlastChain); HiCal2ADL.AddBackgroundTree(& sunChain); HiCal2ADL.AddBackgroundTree(& minBiasThermalChain); HiCal2ADL.AddBackgroundTree(& nonphysicalThermalChain); 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); HiCal2BDL.AddBackgroundTree(& WAISVPolChain); HiCal2BDL.AddBackgroundTree(& HiCal2AChain); HiCal2BDL.AddSignalTree(& HiCal2BChain); HiCal2BDL.AddBackgroundTree(& iceMCChain); HiCal2BDL.AddBackgroundTree(& RCPChain); HiCal2BDL.AddBackgroundTree(& LCPChain); HiCal2BDL.AddBackgroundTree(& payloadBlastChain); HiCal2BDL.AddBackgroundTree(& sunChain); HiCal2BDL.AddBackgroundTree(& minBiasThermalChain); HiCal2BDL.AddBackgroundTree(& nonphysicalThermalChain); 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); iceMCDL.AddBackgroundTree(& WAISVPolChain); iceMCDL.AddBackgroundTree(& HiCal2AChain); iceMCDL.AddBackgroundTree(& HiCal2BChain); iceMCDL.AddSignalTree(& iceMCChain); iceMCDL.AddBackgroundTree(& RCPChain); iceMCDL.AddBackgroundTree(& LCPChain); iceMCDL.AddBackgroundTree(& payloadBlastChain); iceMCDL.AddBackgroundTree(& sunChain); iceMCDL.AddBackgroundTree(& minBiasThermalChain); iceMCDL.AddBackgroundTree(& nonphysicalThermalChain); 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); RCPDL.AddBackgroundTree(& WAISVPolChain); RCPDL.AddBackgroundTree(& HiCal2AChain); RCPDL.AddBackgroundTree(& HiCal2BChain); RCPDL.AddBackgroundTree(& iceMCChain); RCPDL.AddSignalTree(& RCPChain); RCPDL.AddBackgroundTree(& LCPChain); RCPDL.AddBackgroundTree(& payloadBlastChain); RCPDL.AddBackgroundTree(& sunChain); RCPDL.AddBackgroundTree(& minBiasThermalChain); RCPDL.AddBackgroundTree(& nonphysicalThermalChain); 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); LCPDL.AddBackgroundTree(& WAISVPolChain); LCPDL.AddBackgroundTree(& HiCal2AChain); LCPDL.AddBackgroundTree(& HiCal2BChain); LCPDL.AddBackgroundTree(& iceMCChain); LCPDL.AddBackgroundTree(& RCPChain); LCPDL.AddSignalTree(& LCPChain); LCPDL.AddBackgroundTree(& payloadBlastChain); LCPDL.AddBackgroundTree(& sunChain); LCPDL.AddBackgroundTree(& minBiasThermalChain); LCPDL.AddBackgroundTree(& nonphysicalThermalChain); 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); payloadBlastDL.AddBackgroundTree(& WAISVPolChain); payloadBlastDL.AddBackgroundTree(& HiCal2AChain); payloadBlastDL.AddBackgroundTree(& HiCal2BChain); payloadBlastDL.AddBackgroundTree(& iceMCChain); payloadBlastDL.AddBackgroundTree(& RCPChain); payloadBlastDL.AddBackgroundTree(& LCPChain); payloadBlastDL.AddSignalTree(& payloadBlastChain); payloadBlastDL.AddBackgroundTree(& sunChain); payloadBlastDL.AddBackgroundTree(& minBiasThermalChain); payloadBlastDL.AddBackgroundTree(& nonphysicalThermalChain); 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); sunDL.AddBackgroundTree(& WAISVPolChain); sunDL.AddBackgroundTree(& HiCal2AChain); sunDL.AddBackgroundTree(& HiCal2BChain); sunDL.AddBackgroundTree(& iceMCChain); sunDL.AddBackgroundTree(& RCPChain); sunDL.AddBackgroundTree(& LCPChain); sunDL.AddBackgroundTree(& payloadBlastChain); sunDL.AddSignalTree(& sunChain); sunDL.AddBackgroundTree(& minBiasThermalChain); sunDL.AddBackgroundTree(& nonphysicalThermalChain); 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(& LCPChain); minBiasThermalDL.AddBackgroundTree(& RCPChain); minBiasThermalDL.AddBackgroundTree(& payloadBlastChain); minBiasThermalDL.AddBackgroundTree(& sunChain); minBiasThermalDL.AddBackgroundTree(& WAISHPolChain); minBiasThermalDL.AddBackgroundTree(& WAISVPolChain); minBiasThermalDL.AddBackgroundTree(& HiCal2AChain); minBiasThermalDL.AddBackgroundTree(& HiCal2BChain); minBiasThermalDL.AddBackgroundTree(& iceMCChain); minBiasThermalDL.AddSignalTree(& minBiasThermalChain); minBiasThermalDL.AddBackgroundTree(& nonphysicalThermalChain); 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(& LCPChain); nonphysicalThermalDL.AddBackgroundTree(& RCPChain); nonphysicalThermalDL.AddBackgroundTree(& payloadBlastChain); nonphysicalThermalDL.AddBackgroundTree(& sunChain); nonphysicalThermalDL.AddBackgroundTree(& WAISHPolChain); nonphysicalThermalDL.AddBackgroundTree(& WAISVPolChain); nonphysicalThermalDL.AddBackgroundTree(& HiCal2AChain); nonphysicalThermalDL.AddBackgroundTree(& HiCal2BChain); nonphysicalThermalDL.AddBackgroundTree(& iceMCChain); nonphysicalThermalDL.AddBackgroundTree(& minBiasThermalChain); nonphysicalThermalDL.AddSignalTree(& nonphysicalThermalChain); 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)"); // 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.TrainAllMethods(); fisherOvRFactory.TestAllMethods(); fisherOvRFactory.EvaluateAllMethods(); fisherOvRFile.cd(); fisherOvRFile.Write(); fisherOvRFile.Close(); }