diff --git a/DEF-files/SHMS/GEN/pstackana.def b/DEF-files/SHMS/GEN/pstackana.def index 9a7fff8439c5b6a813a153a3871f3c77d44161de..5c7484607c6e2f2b2a6bcb59f5961ada937b9f56 100644 --- a/DEF-files/SHMS/GEN/pstackana.def +++ b/DEF-files/SHMS/GEN/pstackana.def @@ -4,22 +4,24 @@ block T.shms.* #block P.ngcer.* #block P.dc.* #block P.tr.* -#block P.hod.* +block P.hod.* #block P.hgcer.* #block P.aero.* #block P.cal.* #block P.gtr.* -#TH1F hptrig2_minus_p1x 'SHMS Trigger 2 - p1X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1X_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1 -#TH1F hptrig2_minus_p1y 'SHMS Trigger 2 - p1Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1Y_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1 -#TH1F hptrig2_minus_p2x 'SHMS Trigger 2 - p2X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2X_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1 -#TH1F hptrig2_minus_p2y 'SHMS Trigger 2 - p2Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2Y_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1 -#TH1F hptrig2_minus_ps1 'SHMS Trigger 2 - pS1 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1T_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1 -#TH1F hptrig2_minus_ps2 'SHMS Trigger 2 - pS2 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2T_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1 +TH1F hptrig2_minus_p1x 'SHMS Trigger 2 - p1X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1X_tdcTime)*0.1 150 0 150 +TH1F hptrig2_minus_p1y 'SHMS Trigger 2 - p1Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1Y_tdcTime)*0.1 150 0 150 +TH1F hptrig2_minus_p2x 'SHMS Trigger 2 - p2X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2X_tdcTime)*0.1 150 0 150 +TH1F hptrig2_minus_p2y 'SHMS Trigger 2 - p2Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2Y_tdcTime)*0.1 150 0 150 +TH1F hptrig2_minus_ps1 'SHMS Trigger 2 - pS1 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1T_tdcTime)*0.1 150 0 150 +TH1F hptrig2_minus_ps2 'SHMS Trigger 2 - pS2 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2T_tdcTime)*0.1 150 0 150 -#TH1F hptrig3_minus_p1x 'SHMS Trigger 3 - p1X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1X_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1 -#TH1F hptrig3_minus_p1y 'SHMS Trigger 3 - p1Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1Y_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1 -#TH1F hptrig3_minus_p2x 'SHMS Trigger 3 - p2X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2X_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1 -#TH1F hptrig3_minus_p2y 'SHMS Trigger 3 - p2Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2Y_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1 -#TH1F hptrig2_minus_ps1 'SHMS Trigger 3 - pS1 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1T_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1 -#TH1F hptrig2_minus_ps2 'SHMS Trigger 3 - pS2 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2T_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1 \ No newline at end of file +TH1F hptrig3_minus_p1x 'SHMS Trigger 3 - p1X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1X_tdcTime)*0.1 150 0 150 +TH1F hptrig3_minus_p1y 'SHMS Trigger 3 - p1Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1Y_tdcTime)*0.1 150 0 150 +TH1F hptrig3_minus_p2x 'SHMS Trigger 3 - p2X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2X_tdcTime)*0.1 150 0 150 +TH1F hptrig3_minus_p2y 'SHMS Trigger 3 - p2Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2Y_tdcTime)*0.1 150 0 150 +TH1F hptrig3_minus_ps1 'SHMS Trigger 3 - pS1 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1T_tdcTime)*0.1 150 0 150 +TH1F hptrig3_minus_ps2 'SHMS Trigger 3 - pS2 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2T_tdcTime)*0.1 150 0 150 + +TH1F hptrig3_minus_ptrig2 'test' (T.shms.pT3_tdcTime-T.shms.pT2_tdcTime)*0.1 2000 -1000 1000 \ No newline at end of file diff --git a/onlineGUI/Config/kpp.cfg b/onlineGUI/Config/kpp.cfg index 4f678f324e635b14788099fa36279ad2da7318d8..c461f86813921ac6f471b606027185bb2ab291ec 100755 --- a/onlineGUI/Config/kpp.cfg +++ b/onlineGUI/Config/kpp.cfg @@ -1,7 +1,56 @@ protorootfile ../ROOTfiles/shms_replay_XXXXX.root guicolor lightblue -canvassize 1600 800 -newpage 4 4 -title poop +canvassize 800 800 + +definecut 1x_goodHitCut P.hod.1x.ngoodhits>1 +definecut 1y_goodHitCut P.hod.1y.ngoodhits>1 +definecut 2x_goodHitCut P.hod.2x.ngoodhits>1 +definecut 2y_goodHitCut P.hod.2y.ngoodhits>1 + +newpage 3 3 logy +title Trigger Times +macro Macros/kpp_analysis.C("h_p1X_tdc") +macro Macros/kpp_analysis.C("h_p1Y_tdc") +macro Macros/kpp_analysis.C("h_p2X_tdc") +macro Macros/kpp_analysis.C("h_p2Y_tdc") macro Macros/kpp_analysis.C("h_p1T_tdc") +macro Macros/kpp_analysis.C("h_p2T_tdc") +macro Macros/kpp_analysis.C("h_pT1_tdc") +macro Macros/kpp_analysis.C("h_pT2_tdc") +macro Macros/kpp_analysis.C("h_pT3_tdc") +newpage 4 3 logy +title DC Reference Times +macro Macros/kpp_analysis.C("h_pDCREF1_tdc") +macro Macros/kpp_analysis.C("h_pDCREF2_tdc") +macro Macros/kpp_analysis.C("h_pDCREF3_tdc") +macro Macros/kpp_analysis.C("h_pDCREF4_tdc") +macro Macros/kpp_analysis.C("h_pDCREF5_tdc") +macro Macros/kpp_analysis.C("h_pDCREF6_tdc") +macro Macros/kpp_analysis.C("h_pDCREF7_tdc") +macro Macros/kpp_analysis.C("h_pDCREF8_tdc") +macro Macros/kpp_analysis.C("h_pDCREF9_tdc") +macro Macros/kpp_analysis.C("h_pDCREF10_tdc") +newpage 4 3 logy +title Hodoscope Plane Reference Times +macro Macros/kpp_analysis.C("h_p1XmpT2_tdc") +macro Macros/kpp_analysis.C("h_p1YmpT2_tdc") +macro Macros/kpp_analysis.C("h_p2XmpT2_tdc") +macro Macros/kpp_analysis.C("h_p2YmpT2_tdc") +macro Macros/kpp_analysis.C("h_p1XmpT3_tdc") +macro Macros/kpp_analysis.C("h_p1YmpT3_tdc") +macro Macros/kpp_analysis.C("h_p2XmpT3_tdc") +macro Macros/kpp_analysis.C("h_p2YmpT3_tdc") +macro Macros/kpp_analysis.C("h_p1TmpT2_tdc") +macro Macros/kpp_analysis.C("h_p1TmpT3_tdc") +macro Macros/kpp_analysis.C("h_p2TmpT2_tdc") +macro Macros/kpp_analysis.C("h_p2TmpT3_tdc") +newpage 2 2 logy +title Pulse Time - TDC Time +macro Macros/kpp_analysis.C("h_p1Xneg_pt_tt_diff") +macro Macros/kpp_analysis.C("h_p1Yneg_pt_tt_diff") +macro Macros/kpp_analysis.C("h_p2Xneg_pt_tt_diff") +macro Macros/kpp_analysis.C("h_p2Yneg_pt_tt_diff") + + + diff --git a/onlineGUI/Macros/kpp_analysis.C b/onlineGUI/Macros/kpp_analysis.C index e4ae48a2023c05e0487cedbf5e60394629058232..7c6eb4f69e6f59863d34f0d5b9cfc1fb75fac583 100644 --- a/onlineGUI/Macros/kpp_analysis.C +++ b/onlineGUI/Macros/kpp_analysis.C @@ -1,51 +1,132 @@ void UserScript() { - Double_t num_p1T; - - Double_t p1T_tdc[128]; - + // Declare constants + static const Double_t clk2tdc = 0.100; + static const UInt_t ndcRefTimes = 10; + + // Declare variables + Double_t p1X_tdcTime, p1Y_tdcTime, p2X_tdcTime, p2Y_tdcTime; + Double_t p1T_tdcTime, p2T_tdcTime; + Double_t pT1_tdcTime, pT2_tdcTime, pT3_tdcTime; + Double_t pDCREF_tdcTime[ndcRefTimes]; + Double_t p1X_nGoodHodoHits, p1Y_nGoodHodoHits, p2X_nGoodHodoHits, p2Y_nGoodHodoHits; + Double_t p1X_negAdcHits, p1Y_negAdcHits, p2X_negAdcHits, p2Y_negAdcHits; + Double_t p1X_negTdcHits, p1Y_negTdcHits, p2X_negTdcHits, p2Y_negTdcHits; + Double_t p1X_negAdcPulseTime, p1Y_negAdcPulseTime, p2X_negAdcPulseTime, p2Y_negAdcPulseTime; + Double_t p1X_negTdcTime, p1Y_negTdcTime, p2X_negTdcTime, p2Y_negTdcTime; Long64_t nentries; - TH1F *h_p1T_tdc; - + // Declare Histos + TH1F *h_p1X_tdc, *h_p1Y_tdc, *h_p2X_tdc, *h_p2Y_tdc; + TH1F *h_p1T_tdc, *h_p2T_tdc; + TH1F *h_pT1_tdc, *h_pT2_tdc, *h_pT3_tdc; + TH1F *h_p1XmpT2_tdc, *h_p1YmpT2_tdc, *h_p2XmpT2_tdc, *h_p2YmpT2_tdc; + TH1F *h_p1XmpT3_tdc, *h_p1YmpT3_tdc, *h_p2XmpT3_tdc, *h_p2YmpT3_tdc; + TH1F *h_p1TmpT2_tdc, *h_p2TmpT2_tdc, *h_p1TmpT3_tdc, *h_p2TmpT3_tdc; + TH1F *h_pDCREF_tdc[ndcRefTimes]; + TH1F *h_p1Xneg_pt_tt_diff, *h_p1Yneg_pt_tt_diff, *h_p2Xneg_pt_tt_diff, *h_p2Yneg_pt_tt_diff; + + // Declare trees TTree *T = (TTree*) gDirectory->Get("T"); + // Acquire the number of entries nentries = T->GetEntries(); - T->SetBranchAddress("T.shms.p1T_tdcMultiplicity", &num_p1T); - T->SetBranchAddress("T.shms.p1T_tdcTime", &p1T_tdc); - - h_p1T_tdc = new TH1F("h_p1T_tdc", "p1T; TDC Time (ns); Counts / 1 ns", 2000, 0, 2000); - + // Acquire the branches + T->SetBranchAddress("T.shms.p1X_tdcTime", &p1X_tdcTime); + T->SetBranchAddress("T.shms.p1Y_tdcTime", &p1Y_tdcTime); + T->SetBranchAddress("T.shms.p2X_tdcTime", &p2X_tdcTime); + T->SetBranchAddress("T.shms.p2Y_tdcTime", &p2Y_tdcTime); + T->SetBranchAddress("T.shms.p1T_tdcTime", &p1T_tdcTime); + T->SetBranchAddress("T.shms.p2T_tdcTime", &p2T_tdcTime); + T->SetBranchAddress("T.shms.pT1_tdcTime", &pT1_tdcTime); + T->SetBranchAddress("T.shms.pT2_tdcTime", &pT2_tdcTime); + T->SetBranchAddress("T.shms.pT3_tdcTime", &pT3_tdcTime); + for (UInt_t iref = 0; iref < ndcRefTimes; iref++) + T->SetBranchAddress(Form("T.shms.pDCREF%d_tdcTime", iref+1), &pDCREF_tdcTime[iref]); + T->SetBranchAddress("P.hod.1x.ngoodhits", &p1X_nGoodHodoHits); + T->SetBranchAddress("P.hod.1y.ngoodhits", &p1Y_nGoodHodoHits); + T->SetBranchAddress("P.hod.2x.ngoodhits", &p2X_nGoodHodoHits); + T->SetBranchAddress("P.hod.2y.ngoodhits", &p2Y_nGoodHodoHits); + T->SetBranchAddress("P.hod.1x.negAdcPulseTimeRaw", &p1X_negAdcPulseTime); + T->SetBranchAddress("P.hod.1y.negAdcPulseTimeRaw", &p1Y_negAdcPulseTime); + T->SetBranchAddress("P.hod.2x.negAdcPulseTimeRaw", &p2X_negAdcPulseTime); + T->SetBranchAddress("P.hod.2y.negAdcPulseTimeRaw", &p2Y_negAdcPulseTime); + T->SetBranchAddress("P.hod.1x.negTdcTime", &p1X_negTdcTime); + T->SetBranchAddress("P.hod.1y.negTdcTime", &p1Y_negTdcTime); + T->SetBranchAddress("P.hod.2x.negTdcTime", &p2X_negTdcTime); + T->SetBranchAddress("P.hod.2y.negTdcTime", &p2Y_negTdcTime); + + // Create histos + h_p1X_tdc = new TH1F("h_p1X_tdc", "S1X Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p1Y_tdc = new TH1F("h_p1Y_tdc", "S1Y Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p2X_tdc = new TH1F("h_p2X_tdc", "S2X Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p2Y_tdc = new TH1F("h_p2Y_tdc", "S2Y Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p1T_tdc = new TH1F("h_p1T_tdc", "S1X/S1Y Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p2T_tdc = new TH1F("h_p2T_tdc", "S2X/S2Y Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_pT1_tdc = new TH1F("h_pT1_tdc", "Hodoscope Trigger (Slot 20 Channel 15); TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_pT2_tdc = new TH1F("h_pT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31); TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_pT3_tdc = new TH1F("h_pT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38); TDC Time (ns); Counts / 1 ns", 200, 0, 200); + for (UInt_t iref = 0; iref < ndcRefTimes; iref++) + h_pDCREF_tdc[iref] = new TH1F(Form("h_pDCREF%d_tdc", iref+1), Form("DC Reference Time %d; TDC Time (ns); Counts / 1 ns", iref+1), 100, 500, 600); + h_p1XmpT2_tdc = new TH1F("h_p1XmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S1X; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p1YmpT2_tdc = new TH1F("h_p1YmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S1Y; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p2XmpT2_tdc = new TH1F("h_p2XmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S2X; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p2YmpT2_tdc = new TH1F("h_p2YmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S2Y; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p1TmpT2_tdc = new TH1F("h_p1TmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S1; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p2TmpT2_tdc = new TH1F("h_p2TmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S2; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p1XmpT3_tdc = new TH1F("h_p1XmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S1X; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p1YmpT3_tdc = new TH1F("h_p1YmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S1Y; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p2XmpT3_tdc = new TH1F("h_p2XmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S2X; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p2YmpT3_tdc = new TH1F("h_p2YmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S2Y; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p1TmpT3_tdc = new TH1F("h_p1TmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S1; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p2TmpT3_tdc = new TH1F("h_p2TmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S2; TDC Time (ns); Counts / 1 ns", 200, 0, 200); + h_p1Xneg_pt_tt_diff = new TH1F("h_p1Xneg_pt_tt_diff", "S1X- Pulse Time - TDC Time; Pulse Time - TDC Time (ns); Counts / 1 ns", 500, -250, 250); + h_p1Yneg_pt_tt_diff = new TH1F("h_p1Yneg_pt_tt_diff", "S1Y- Pulse Time - TDC Time; Pulse Time - TDC Time (ns); Counts / 1 ns", 500, -250, 250); + h_p2Xneg_pt_tt_diff = new TH1F("h_p2Xneg_pt_tt_diff", "S2X- Pulse Time - TDC Time; Pulse Time - TDC Time (ns); Counts / 1 ns", 500, -250, 250); + h_p2Yneg_pt_tt_diff = new TH1F("h_p2Yneg_pt_tt_diff", "S2Y- Pulse Time - TDC Time; Pulse Time - TDC Time (ns); Counts / 1 ns", 500, -250, 250); + + // Loop of entries in tree for(UInt_t ievent = 0; ievent < nentries; ievent++) { T->GetEntry(ievent); - for (UInt_t ihit = 0; ihit < num_p1T; ihit++) { - - Double_t p1T_tdc_data = p1T_tdc[ihit]; - - cout << ihit << "\t" << p1T_tdc_data << endl; - - h_p1T_tdc->Fill(p1T_tdc_data); - - } + if (p1X_nGoodHodoHits < 1 || p1Y_nGoodHodoHits < 1 || p2X_nGoodHodoHits < 1 || p2Y_nGoodHodoHits < 1) continue; + + // Fill histos + h_p1X_tdc->Fill(p1X_tdcTime*clk2tdc); h_p1Y_tdc->Fill(p1Y_tdcTime*clk2tdc); + h_p2X_tdc->Fill(p2X_tdcTime*clk2tdc); h_p2Y_tdc->Fill(p2Y_tdcTime*clk2tdc); + h_p1T_tdc->Fill(p1T_tdcTime*clk2tdc); h_p2T_tdc->Fill(p2T_tdcTime*clk2tdc); + h_pT1_tdc->Fill(pT1_tdcTime*clk2tdc); h_pT2_tdc->Fill(pT2_tdcTime*clk2tdc); h_pT3_tdc->Fill(pT3_tdcTime*clk2tdc); + for (UInt_t iref = 0; iref < ndcRefTimes; iref++) + h_pDCREF_tdc[iref]->Fill(pDCREF_tdcTime[iref]*clk2tdc); + h_p1XmpT2_tdc->Fill((pT2_tdcTime - p1X_tdcTime)*clk2tdc); h_p1YmpT2_tdc->Fill((pT2_tdcTime - p1Y_tdcTime)*clk2tdc); + h_p2XmpT2_tdc->Fill((pT2_tdcTime - p2X_tdcTime)*clk2tdc); h_p2YmpT2_tdc->Fill((pT2_tdcTime - p2Y_tdcTime)*clk2tdc); + h_p1TmpT2_tdc->Fill((pT2_tdcTime - p1T_tdcTime)*clk2tdc); h_p2TmpT2_tdc->Fill((pT2_tdcTime - p2T_tdcTime)*clk2tdc); + h_p1XmpT3_tdc->Fill((pT3_tdcTime - p1X_tdcTime)*clk2tdc); h_p1YmpT3_tdc->Fill((pT3_tdcTime - p1Y_tdcTime)*clk2tdc); + h_p2XmpT3_tdc->Fill((pT3_tdcTime - p2X_tdcTime)*clk2tdc); h_p2YmpT3_tdc->Fill((pT3_tdcTime - p2Y_tdcTime)*clk2tdc); + h_p1TmpT3_tdc->Fill((pT3_tdcTime - p1T_tdcTime)*clk2tdc); h_p2TmpT3_tdc->Fill((pT3_tdcTime - p2T_tdcTime)*clk2tdc); + h_p1Xneg_pt_tt_diff->Fill(p1X_negAdcPulseTime - p1X_negTdcTime); h_p1Yneg_pt_tt_diff->Fill(p1Y_negAdcPulseTime - p1Y_negTdcTime); + h_p2Xneg_pt_tt_diff->Fill(p2X_negAdcPulseTime - p2X_negTdcTime); h_p2Yneg_pt_tt_diff->Fill(p2Y_negAdcPulseTime - p2Y_negTdcTime); } // Entries loop - -} +} // UserScript function void kpp_analysis(TString histname) { - TH1F* h; h = (TH1F*) gDirectory->Get(histname); + // Grab the histo + TH1F *h; h = dynamic_cast <TH1F*> gDirectory->Get(histname); + + // Grab histo directly if it does not already exist if(!h) { + UserScript(); h = (TH1F*) gDirectory->Get(histname); - if(!h) { - cout << "User histogram " << histname << " not found" << endl; - exit(1); - } - } + + // Throw error + if(!h) { cout << "User histogram " << histname << " not found" << endl; exit(1);} + } // Histo existing condition h->Draw(); -} + +} // kpp_analysis function