/* * getVoltsAtDigitizerCuts.C * * Created on: Nov 26, 2019 * Author: John Russell * * Compared to "getVoltsAtDigitizer.C", we use the ROOT binary alrady produced there to create histograms. * The histograms here cut out the bad channel, 7BV. */ #include "FFTtools.h" #include "AnitaDataset.h" #include "AnitaConventions.h" #include "UCUtil.h" #include "Hical2.h" // Fixing typo. #ifndef NUM_DIGITIZED_CHANNELS #define NUM_DIGITIZED_CHANNELS NUM_DIGITZED_CHANNELS #endif void produceDataTypeHists(const char * dataType) { // Opening the relevant file. TFile voltsAtDigitizerFile("voltsAtDigitizer.root"); // Accessing the TTree corresponding to dataType. TTree * dataTypeTree = (TTree *) voltsAtDigitizerFile.Get(TString::Format("%sTree", dataType)); // Create TH1D objects to fill clock cut histograms. int nbinsx = 200; double xlow = -1.5; double xup = 1.5; double xlowRange = -50; double xupRange = 50; // Creating TH1D objects to be filled. TH1D hNoiseAtDigitizerWeightCut(TString::Format("hNoiseAtDigitizer%sWeightCut", dataType), "fNoiseAtDigitizer", nbinsx, xlow, xup); TH1D hSignalAtDigitizerWeightCut(TString::Format("hSignalAtDigitizer%sWeightCut", dataType), "fSignalAtDigitizer", nbinsx, xlow, xup); TH1D hVoltsWeightCut(TString::Format("hVolts%sWeightCut", dataType), "fVolts", nbinsx, xlow, xup); TH1D hVoltsRelSignalAtDigitizerWeightCut(TString::Format("hVoltsRelSignalAtDigitizer%sWeightCut", dataType), "fVolts - fSignalAtDigitizer", nbinsx, xlow, xup); TH1D hSignalAtDigitizerWeightCutRange(TString::Format("hSignalAtDigitizer%sWeightCutRange", dataType), "fSignalAtDigitizer", nbinsx, xlowRange, xupRange); TH1D hVoltsWeightCutRange(TString::Format("hVolts%sWeightCutRange", dataType), "fVolts", nbinsx, xlowRange, xupRange); TH1D hVoltsRelSignalAtDigitizerWeightCutRange(TString::Format("hVoltsRelSignalAtDigitizer%sWeightCutRange", dataType), "fVolts - fSignalAtDigitizer", nbinsx, xlowRange, xupRange); // Show fitting results. gStyle -> SetOptFit(); // Create canvases over entire data, then save them. TCanvas cVoltsAtDigitizer; cVoltsAtDigitizer.cd(); cVoltsAtDigitizer.SetLogy(); // Histograms with weights and cuts applied. for (int chan = 0; chan < NUM_DIGITIZED_CHANNELS; ++chan) { if (chan % 9 == 8) continue; // Excluding clock channels. if (chan == 11) continue; // Excluding broken channel, Vpol #45. dataTypeTree -> Draw(TString::Format("fNoiseAtDigitizer[%d] >>+ hNoiseAtDigitizer%sWeightCut", chan, dataType), "weight", "goff"); dataTypeTree -> Draw(TString::Format("fSignalAtDigitizer[%d] >>+ hSignalAtDigitizer%sWeightCut", chan, dataType), "weight", "goff"); dataTypeTree -> Draw(TString::Format("fVolts[%d] >>+ hVolts%sWeightCut", chan, dataType), "weight", "goff"); dataTypeTree -> Draw(TString::Format("fVolts[%d] - fSignalAtDigitizer[%d] >>+ hVoltsRelSignalAtDigitizer%sWeightCut", chan, chan, dataType), "weight", "goff"); dataTypeTree -> Draw(TString::Format("fSignalAtDigitizer[%d] >>+ hSignalAtDigitizer%sWeightCutRange", chan, dataType), "weight", "goff"); dataTypeTree -> Draw(TString::Format("fVolts[%d] >>+ hVolts%sWeightCutRange", chan, dataType), "weight", "goff"); dataTypeTree -> Draw(TString::Format("fVolts[%d] - fSignalAtDigitizer[%d] >>+ hVoltsRelSignalAtDigitizer%sWeightCutRange", chan, chan, dataType), "weight", "goff"); } hNoiseAtDigitizerWeightCut.Fit("gaus", "", "", -0.5, 0.5); cVoltsAtDigitizer.SaveAs(TString::Format("%s_fNoiseAtDigitizer-weight-cut.png", dataType)); hSignalAtDigitizerWeightCut.Draw(); cVoltsAtDigitizer.SaveAs(TString::Format("%s_fSignalAtDigitizer-weight-cut.png", dataType)); hVoltsWeightCut.Draw(); cVoltsAtDigitizer.SaveAs(TString::Format("%s_fVolts-weight-cut.png", dataType)); hVoltsRelSignalAtDigitizerWeightCut.Fit("gaus", "", "", -0.5, 0.5); cVoltsAtDigitizer.SaveAs(TString::Format("%s_fVoltsRelSignalAtDigitizer-weight-cut.png", dataType)); hSignalAtDigitizerWeightCutRange.Draw(); cVoltsAtDigitizer.SaveAs(TString::Format("%s_fSignalAtDigitizer-weight-cut-range.png", dataType)); hVoltsWeightCutRange.Draw(); cVoltsAtDigitizer.SaveAs(TString::Format("%s_fVolts-weight-cut-range.png", dataType)); hVoltsRelSignalAtDigitizerWeightCutRange.Fit("gaus"); cVoltsAtDigitizer.SaveAs(TString::Format("%s_fVoltsRelSignalAtDigitizer-weight-cut-range.png", dataType)); // Now close the file. voltsAtDigitizerFile.Close(); } void getVoltsAtDigitizerCuts() { produceDataTypeHists("Energy_222"); produceDataTypeHists("MinBiasEnergy_E222"); produceDataTypeHists("MinBiasEnergyRenorm_E222"); produceDataTypeHists("MinBiasNoSignalEnergy_E222"); }