From c2e3787aa55a0aabcbeb2ce87cb83e6442b38105 Mon Sep 17 00:00:00 2001 From: hallc-online <hallc-online@jlab.org> Date: Tue, 21 Mar 2017 13:14:46 -0400 Subject: [PATCH] Speed up HMS calorimeter calibration code. In THcShowerCalib, move per event Root branch assignments into the Init step, such that branch assignments are done one time, before event loops. --- CALIBRATION/hms_cal_calib/THcShowerCalib.h | 131 +++++++++++++++++---- 1 file changed, 109 insertions(+), 22 deletions(-) diff --git a/CALIBRATION/hms_cal_calib/THcShowerCalib.h b/CALIBRATION/hms_cal_calib/THcShowerCalib.h index b9606624..b4ba88f3 100644 --- a/CALIBRATION/hms_cal_calib/THcShowerCalib.h +++ b/CALIBRATION/hms_cal_calib/THcShowerCalib.h @@ -74,6 +74,60 @@ class THcShowerCalib { TTree* fTree; UInt_t fNentries; + // Declaration of leaves types + + // Calorimeter ADC signals. + + Double_t H_cal_1pr_aneg_p[THcShTrack::fNrows]; + Double_t H_cal_1pr_apos_p[THcShTrack::fNrows]; + + Double_t H_cal_2ta_aneg_p[THcShTrack::fNrows]; + Double_t H_cal_2ta_apos_p[THcShTrack::fNrows]; + + Double_t H_cal_3ta_aneg_p[THcShTrack::fNrows]; + Double_t H_cal_3ta_apos_p[THcShTrack::fNrows]; + + Double_t H_cal_4ta_aneg_p[THcShTrack::fNrows]; + Double_t H_cal_4ta_apos_p[THcShTrack::fNrows]; + + // Track parameters. + + double H_tr_n; + Double_t H_tr_p; + Double_t H_tr_x; //X FP + Double_t H_tr_xp; + Double_t H_tr_y; //Y FP + Double_t H_tr_yp; + + Double_t H_tr_tg_dp; + + Double_t H_cer_npe[2]; + Double_t H_tr_beta; + + TBranch* b_H_cal_1pr_aneg_p; + TBranch* b_H_cal_1pr_apos_p; + + TBranch* b_H_cal_2ta_aneg_p; + TBranch* b_H_cal_2ta_apos_p; + + TBranch* b_H_cal_3ta_aneg_p; + TBranch* b_H_cal_3ta_apos_p; + + TBranch* b_H_cal_4ta_aneg_p; + TBranch* b_H_cal_4ta_apos_p; + + TBranch* b_H_tr_n; + TBranch* b_H_tr_x; + TBranch* b_H_tr_y; + TBranch* b_H_tr_xp; + TBranch* b_H_tr_yp; + TBranch* b_H_tr_p; + + TBranch* b_H_tr_tg_dp; + + TBranch* b_H_cer_npe; + TBranch* b_H_tr_beta; + // Quantities for calculations of the calibration constants. Double_t fe0; @@ -150,6 +204,40 @@ void THcShowerCalib::Init() { fNentries = fTree->GetEntries(); cout << "THcShowerCalib::Init: fNentries= " << fNentries << endl; + // Set branch addresses. + + fTree->SetBranchAddress("H.cal.1pr.aneg_p",H_cal_1pr_aneg_p, + &b_H_cal_1pr_aneg_p); +fTree->SetBranchAddress("H.cal.1pr.apos_p",H_cal_1pr_apos_p, + &b_H_cal_1pr_apos_p); + +fTree->SetBranchAddress("H.cal.2ta.aneg_p",H_cal_2ta_aneg_p, + &b_H_cal_2ta_aneg_p); +fTree->SetBranchAddress("H.cal.2ta.apos_p",H_cal_2ta_apos_p, + &b_H_cal_2ta_apos_p); + +fTree->SetBranchAddress("H.cal.3ta.aneg_p",H_cal_3ta_aneg_p, + &b_H_cal_3ta_aneg_p); +fTree->SetBranchAddress("H.cal.3ta.apos_p",H_cal_3ta_apos_p, + &b_H_cal_3ta_apos_p); + +fTree->SetBranchAddress("H.cal.4ta.aneg_p",H_cal_4ta_aneg_p, + &b_H_cal_4ta_aneg_p); +fTree->SetBranchAddress("H.cal.4ta.apos_p",H_cal_4ta_apos_p, + &b_H_cal_4ta_apos_p); + +fTree->SetBranchAddress("H.tr.n", &H_tr_n,&b_H_tr_n); +fTree->SetBranchAddress("H.tr.x",&H_tr_x,&b_H_tr_x); +fTree->SetBranchAddress("H.tr.y",&H_tr_y,&b_H_tr_y); +fTree->SetBranchAddress("H.tr.th",&H_tr_xp,&b_H_tr_xp); +fTree->SetBranchAddress("H.tr.ph",&H_tr_yp,&b_H_tr_yp); +fTree->SetBranchAddress("H.tr.p",&H_tr_p,&b_H_tr_p); + +fTree->SetBranchAddress("H.tr.tg_dp", &H_tr_tg_dp,&b_H_tr_tg_dp); + +fTree->SetBranchAddress("H.cer.npe", H_cer_npe,&b_H_cer_npe); +fTree->SetBranchAddress("H.tr.beta", &H_tr_beta,&b_H_tr_beta); + // Histogram declarations. hEunc = new TH1F("hEunc", "Edep/P uncalibrated", 500, 0., 5.); @@ -159,7 +247,6 @@ void THcShowerCalib::Init() { hETAvsEPR = new TH2F("hETAvsEPR", "E_{TA} versus E_{PR}", 300,0.,1.5, 300,0.,1.5); - // Initialize qumulative quantities. for (UInt_t i=0; i<THcShTrack::fNpmts; i++) fHitCount[i] = 0; @@ -265,7 +352,7 @@ bool THcShowerCalib::ReadShRawTrack(THcShTrack &trk, UInt_t ientry) { // Declaration of leaves types // Calorimeter ADC signals. - + /* Double_t H_cal_1pr_aneg_p[THcShTrack::fNrows]; Double_t H_cal_1pr_apos_p[THcShTrack::fNrows]; @@ -291,33 +378,33 @@ bool THcShowerCalib::ReadShRawTrack(THcShTrack &trk, UInt_t ientry) { Double_t H_cer_npe[2]; Double_t H_tr_beta; - + */ // Set branch addresses. + /* +TBranch ("H.cal.1pr.aneg_p",H_cal_1pr_aneg_p); +TBranch ("H.cal.1pr.apos_p",H_cal_1pr_apos_p); - fTree->SetBranchAddress("H.cal.1pr.aneg_p",H_cal_1pr_aneg_p); - fTree->SetBranchAddress("H.cal.1pr.apos_p",H_cal_1pr_apos_p); +TBranch ("H.cal.2ta.aneg_p",H_cal_2ta_aneg_p); +TBranch ("H.cal.2ta.apos_p",H_cal_2ta_apos_p); - fTree->SetBranchAddress("H.cal.2ta.aneg_p",H_cal_2ta_aneg_p); - fTree->SetBranchAddress("H.cal.2ta.apos_p",H_cal_2ta_apos_p); +TBranch ("H.cal.3ta.aneg_p",H_cal_3ta_aneg_p); +TBranch ("H.cal.3ta.apos_p",H_cal_3ta_apos_p); - fTree->SetBranchAddress("H.cal.3ta.aneg_p",H_cal_3ta_aneg_p); - fTree->SetBranchAddress("H.cal.3ta.apos_p",H_cal_3ta_apos_p); +TBranch ("H.cal.4ta.aneg_p",H_cal_4ta_aneg_p); +TBranch ("H.cal.4ta.apos_p",H_cal_4ta_apos_p); - fTree->SetBranchAddress("H.cal.4ta.aneg_p",H_cal_4ta_aneg_p); - fTree->SetBranchAddress("H.cal.4ta.apos_p",H_cal_4ta_apos_p); +TBranch ("H.tr.n", &H_tr_n); +TBranch ("H.tr.x",&H_tr_x); +TBranch ("H.tr.y",&H_tr_y); +TBranch ("H.tr.th",&H_tr_xp); +TBranch ("H.tr.ph",&H_tr_yp); +TBranch ("H.tr.p",&H_tr_p); - fTree->SetBranchAddress("H.tr.n", &H_tr_n); - fTree->SetBranchAddress("H.tr.x",&H_tr_x); - fTree->SetBranchAddress("H.tr.y",&H_tr_y); - fTree->SetBranchAddress("H.tr.th",&H_tr_xp); - fTree->SetBranchAddress("H.tr.ph",&H_tr_yp); - fTree->SetBranchAddress("H.tr.p",&H_tr_p); - - fTree->SetBranchAddress("H.tr.tg_dp", &H_tr_tg_dp); +TBranch ("H.tr.tg_dp", &H_tr_tg_dp); - fTree->SetBranchAddress("H.cer.npe", H_cer_npe); - fTree->SetBranchAddress("H.tr.beta", &H_tr_beta); - +TBranch ("H.cer.npe", H_cer_npe); +TBranch ("H.tr.beta", &H_tr_beta); + */ fTree->GetEntry(ientry); if (ientry%100000 == 0) cout << " ReadShRawTrack: " << ientry << endl; -- GitLab