From 43e8ba6817330e1df1aa06d7cf773841ede0be93 Mon Sep 17 00:00:00 2001 From: Hall C Online Analyzer User <brad.hallc-online@swatter.net> Date: Mon, 29 Jan 2018 18:55:41 -0500 Subject: [PATCH] Spring 2018 ver9 (#380) * Update standard kinematic * Update coin monitoring scripts * Update kinematics files * Add more scaler event types * Updates to CT monitoring * Update to BCM gains and offsets --- DBASE/COIN/STD/standard.kinematics | 26 +- DBASE/HMS/STD/standard.kinematics | 14 ++ DBASE/SHMS/STD/standard.kinematics | 14 ++ PARAM/GEN/gscalers.param | 8 +- SCRIPTS/COIN/MONITOR/Bean_counter.C | 26 +- SCRIPTS/COIN/MONITOR/coin_monitor.README | 35 +++ SCRIPTS/COIN/MONITOR/coin_monitor.root | Bin 0 -> 10727 bytes SCRIPTS/COIN/MONITOR/coin_monitor_calc.C | 223 ++++++++++++++++++ .../COIN/MONITOR/coin_monitor_calc_batch.sh | 23 ++ SCRIPTS/COIN/MONITOR/coin_monitor_graph.C | 149 ++++++++++++ SCRIPTS/COIN/MONITOR/coin_monitor_init.C | 26 ++ SCRIPTS/COIN/MONITOR/coin_yield.root | Bin 6904 -> 0 bytes SCRIPTS/COIN/MONITOR/temp.sh | 13 - SCRIPTS/COIN/MONITOR/yield.README | 11 - SCRIPTS/COIN/MONITOR/yield_calc.C | 125 ---------- SCRIPTS/COIN/MONITOR/yield_graph.C | 50 ---- .../PRODUCTION/replay_production_hms_coin.C | 4 + .../PRODUCTION/replay_production_shms_coin.C | 4 + 18 files changed, 537 insertions(+), 214 deletions(-) create mode 100644 SCRIPTS/COIN/MONITOR/coin_monitor.README create mode 100644 SCRIPTS/COIN/MONITOR/coin_monitor.root create mode 100644 SCRIPTS/COIN/MONITOR/coin_monitor_calc.C create mode 100755 SCRIPTS/COIN/MONITOR/coin_monitor_calc_batch.sh create mode 100644 SCRIPTS/COIN/MONITOR/coin_monitor_graph.C create mode 100644 SCRIPTS/COIN/MONITOR/coin_monitor_init.C delete mode 100644 SCRIPTS/COIN/MONITOR/coin_yield.root delete mode 100755 SCRIPTS/COIN/MONITOR/temp.sh delete mode 100644 SCRIPTS/COIN/MONITOR/yield.README delete mode 100644 SCRIPTS/COIN/MONITOR/yield_calc.C delete mode 100644 SCRIPTS/COIN/MONITOR/yield_graph.C diff --git a/DBASE/COIN/STD/standard.kinematics b/DBASE/COIN/STD/standard.kinematics index b8344892..8d3f6164 100644 --- a/DBASE/COIN/STD/standard.kinematics +++ b/DBASE/COIN/STD/standard.kinematics @@ -326,7 +326,7 @@ ppcentral = 5.122*0.985 ppartmass = 0.93827231 hpartmass = 0.00051099 -2067-9999 +2067-2068 gpbeam = 6.405 gtargmass_amu = 26.98 htheta_lab = -45.11 @@ -334,4 +334,26 @@ ptheta_lab = 17.12 hpcentral = 2.131 ppcentral = 5.122*0.985 ppartmass = 0.93827231 -hpartmass = 0.0005109 \ No newline at end of file +hpartmass = 0.0005109 + +#Carbon Hole, Jan 26 2018 +2081-2185 +gpbeam = 6.405 +gtargmass_amu = 12.0107 +htheta_lab = -45.11 +ptheta_lab = 17.12 +hpcentral = 2.131 +ppcentral = 5.122*0.985 +ppartmass = 0.93827231 +hpartmass = 0.0005109 + +#CT Experiment (E12-06-107) +2186-9999 +gpbeam = 6.405 +gtargmass_amu = 12.0107 +htheta_lab = -45.145 +ptheta_lab = 17.11 +hpcentral = 2.131 +ppcentral = 5.122*0.985 +ppartmass = 0.93827231 +hpartmass = 0.0005109 diff --git a/DBASE/HMS/STD/standard.kinematics b/DBASE/HMS/STD/standard.kinematics index 52b28456..c34f08d2 100644 --- a/DBASE/HMS/STD/standard.kinematics +++ b/DBASE/HMS/STD/standard.kinematics @@ -433,3 +433,17 @@ gtargmass_amu= 1.00794 hpartmass = 0.00051099 htheta_lab = -65.0 hpcentral = 1.0 + +1481-1492 +gpbeam = 6.404 +gtargmass_amu= 26.98 +hpartmass = 0.00051099 +htheta_lab = -64.99 +hpcentral = 1.0 + +1493-1497 +gpbeam = 6.404 +gtargmass_amu= 1.00794 +hpartmass = 0.00051099 +htheta_lab = -65.0 +hpcentral = 1.0 \ No newline at end of file diff --git a/DBASE/SHMS/STD/standard.kinematics b/DBASE/SHMS/STD/standard.kinematics index a2b52b38..9e8a6fd5 100644 --- a/DBASE/SHMS/STD/standard.kinematics +++ b/DBASE/SHMS/STD/standard.kinematics @@ -322,3 +322,17 @@ gtargmass_amu= 1.00794 ppartmass = 0.00051099 ptheta_lab =35.06 ppcentral = 2.869 + +2214-2220 +gpbeam = 6.404 +gtargmass_amu= 26.98 +ppartmass = 0.00051099 +ptheta_lab =25.0 +ppcentral = 3.911 + +2221-2225 +gpbeam = 6.404 +gtargmass_amu= 1.00794 +ppartmass = 0.00051099 +ptheta_lab =25.0 +ppcentral = 3.911 \ No newline at end of file diff --git a/PARAM/GEN/gscalers.param b/PARAM/GEN/gscalers.param index 53b5ed81..d7df94dd 100644 --- a/PARAM/GEN/gscalers.param +++ b/PARAM/GEN/gscalers.param @@ -1,7 +1,9 @@ +# Please keep the order of BCM1 BCM2 BCM4A BCM4B BCM17 Unser +# Some code in hcana depends on the order. gNumBCMs=6 -gBCM_Gain = 4574,3847,4166,13560,6456.,2154. -gBCM_Offset = 250200,250100,393000,-2994.0,-1148.0,-154.3 +gBCM_Gain = 4574,3847,13560,6456.,2154.,4166 +gBCM_Offset = 250200,250100,-2994.0,-1148.0,-154.3,393000 gBCM_Names="BCM1 BCM2 Unser BCM4A BCM4B BCM17" -gBCM_Current_threshold=0.5 +gBCM_Current_threshold=20 ; index = 0 to gNumBCMs-1 gBCM_Current_threshold_index=3 diff --git a/SCRIPTS/COIN/MONITOR/Bean_counter.C b/SCRIPTS/COIN/MONITOR/Bean_counter.C index d95bb962..f0e9f8f4 100644 --- a/SCRIPTS/COIN/MONITOR/Bean_counter.C +++ b/SCRIPTS/COIN/MONITOR/Bean_counter.C @@ -31,14 +31,14 @@ void Bean_counter(Int_t runNumber, Int_t targ){ TH1D *h_hyptar = new TH1D("h_hyptar","HMS YPTAR (rad)",100,-0.08,0.08); TH1D *h_hytar = new TH1D("h_hytar","HMS YTAR (cm)",100,-12.0,12.0); - TH1D *h_pdelta = new TH1D("h_pdelta","SHMS DELTA (%)",100,-12,12); + TH1D *h_pdelta = new TH1D("h_pdelta","SHMS DELTA (%)",100,-15,15); TH1D *h_pxptar = new TH1D("h_pxptar","SHMS XPTAR (rad)",100,-0.06,0.06); TH1D *h_pyptar = new TH1D("h_pyptar","SHMS YPTAR (rad)",100,-0.06,0.06); TH1D *h_pytar = new TH1D("h_pytar","SHMS YTAR (cm)",100,-12.0,12.0); - TH1D *h_Emd = new TH1D("h_Emd","Missing Energy (GeV)",200,-0.2,0.2); - TH1D *h_Wd = new TH1D("h_Wd","W (GeV)", 150, 0, 2); - TH1D *h_pmd = new TH1D("h_pmd","Pm (GeV/c)", 100, -0.2, 0.2); + TH1D *h_Emd = new TH1D("h_Emd",Form("Missing Energy (GeV) Run:%d",runNumber),200,-0.15,0.25); + TH1D *h_Wd = new TH1D("h_Wd",Form("W (GeV) Run:%d",runNumber), 150, 0., 2.); + TH1D *h_pmd = new TH1D("h_pmd","Pm (GeV/c)", 100, -0.02, 0.35); TH1D *h1PcointimeROC1 = new TH1D("SHMS ROC1 Corrected Coin Time","SHMS ROC1 Corrected Coin Time; cointime [ns]", 200, -10, 10); TH1D *h1PcointimeROC2 = new TH1D("SHMS ROC2 Corrected Coin Time","SHMS ROC2 Corrected Coin Time; cointime [ns]", 200, -10, 10); @@ -46,7 +46,7 @@ void Bean_counter(Int_t runNumber, Int_t targ){ Double_t HgtrX, HgtrTh, HgtrY, HgtrPh, hdelta, PgtrX, PgtrTh, PgtrY, PgtrPh, pdelta; Double_t HgtrBetaCalc, PgtrBetaCalc, evtType, PgtrP, HgtrP, PhodStatus, PhodStartTime, PhodfpHitsTime; Double_t cointime, HhodStatus, HhodStartTime, HhodfpHitsTime, SHMSpartMass, HMSpartMass; - Double_t pkinW, pEm, pPm, pbeta, hbeta, hcalepr, hcaletot, hcernpe, pcaletot, pcalepr, pcernpe; + Double_t pkinW, pEm, pPm, modPm, pbeta, hbeta, hcalepr, hcaletot, hcernpe, pcaletot, pcalepr, pcernpe; Double_t TcoinpTRIG1_ROC1_tdcTimeRaw, TcoinpTRIG4_ROC1_tdcTimeRaw, TcoinpTRIG1_ROC2_tdcTimeRaw; Double_t TcoinhTRIG1_ROC1_tdcTimeRaw, TcoinhTRIG1_ROC2_tdcTimeRaw, TcoinhTRIG4_ROC1_tdcTimeRaw; Double_t TcoinhTRIG4_ROC2_tdcTimeRaw, TcoinpTRIG4_ROC2_tdcTimeRaw; @@ -156,7 +156,7 @@ void Bean_counter(Int_t runNumber, Int_t targ){ tt->GetEntry(kk); if (kk % 50000 == 0) cout << kk*100/nentriesD << " % of data done" << endl; evtType = tt->GetLeaf("fEvtHdr.fEvtType")->GetValue(); - if (pbeta>0.8 && pbeta<1.3 && hbeta>0.8 && hbeta<1.2 && hcernpe>0.1 && hcaletot >0.8 && hcaletot<1.2 && PhodStatus == 1 && HhodStatus ==1 && hdelta > -10 && hdelta < 10 && pdelta > -12 && pdelta < 12 && pcernpe < 0.1) + if (pbeta>0.6 && pbeta<1.4 && hbeta>0.8 && hbeta<1.2 && hcernpe>0. && hcaletot >0.6 && hcaletot<2.0 && PhodStatus == 1 && HhodStatus ==1 && hdelta > -10 && hdelta < 10 && pdelta > -15 && pdelta < 15 && pcernpe < 0.1) { DeltaHMSpathLength = 12.462*HgtrTh + 0.1138*HgtrTh*HgtrX - 0.0154*HgtrX - 72.292*HgtrTh*HgtrTh - 0.0000544*HgtrX*HgtrX - 116.52*HgtrPh*HgtrPh; PgtrBetaCalc = PgtrP/sqrt(PgtrP*PgtrP + SHMSpartMass*SHMSpartMass); @@ -187,7 +187,7 @@ void Bean_counter(Int_t runNumber, Int_t targ){ } else if (targ == 2) { - if (pkinW > 0.5 && pkinW < 1.5) + if (sqrt(pPm*pPm) < 0.4) { h_hdelta->Fill(hdelta); h_hxptar->Fill(HgtrPh); @@ -197,9 +197,10 @@ void Bean_counter(Int_t runNumber, Int_t targ){ h_pxptar->Fill(PgtrPh); h_pyptar->Fill(PgtrTh); h_pytar->Fill(PgtrY); - h_Emd->Fill(pEm+0.025); + h_Emd->Fill(pEm); h_Wd->Fill(pkinW); - h_pmd->Fill(pPm-0.04); + modPm = sqrt(pPm*pPm); + h_pmd->Fill(modPm); cnts++; } } @@ -232,15 +233,20 @@ void Bean_counter(Int_t runNumber, Int_t targ){ h_pytar->Draw(); // can1->SaveAs("tmp1.pdf"); - TCanvas *can2 = new TCanvas ("can2","can2"); + TCanvas *can2 = new TCanvas ("can2",Form("can2 Run: %d",runNumber)); can2->Divide(2,2); can2->cd(1); + h_Wd->SetFillColor(kBlue); h_Wd->Draw(); can2->cd(2); + h_Emd->SetFillColor(kBlue); h_Emd->Draw(); can2->cd(3); + h_pmd->SetFillColor(kBlue); h_pmd->Draw(); can2->cd(4); + h1PcointimeROC1->SetLineColor(kBlue); + h1PcointimeROC1->SetLineWidth(3); h1PcointimeROC1->Draw(); // can2->SaveAs("tmp.pdf"); diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor.README b/SCRIPTS/COIN/MONITOR/coin_monitor.README new file mode 100644 index 00000000..9b7553a4 --- /dev/null +++ b/SCRIPTS/COIN/MONITOR/coin_monitor.README @@ -0,0 +1,35 @@ +These two scripts calculate and plot (vs run number) various quantities +including yield per mC, live time, and efficiencies. These are all +grabbed from report files using awk. This obviously makes STRONG assumptions +about the structure of the template report file, so be careful. + +1) Grab monitored quantities + 1) Run `./hcana SCRIPTS/COIN/MONITOR/coin_monitor_calc.C` + in your hallc_replay directory + 2) Enter run number + 3) Enter index specifying target + + It will warn you if you're overwriting a run already in coin_monitor.root, + but this might be what you want to do! For example, you might have added + something to the macro and need to add the new quantities for old runs. + +2) Plot monitored quantities vs run + 1) Run `./hcana SCRIPTS/COIN/MONITOR/coin_monitor_graph.C` + in your hallc_replay directory + 2) Make sure nothing has fluctuated + + *) If you prefer, you can specify a range of runs to graph + e.g. `.x SCRIPTS/COIN/MONITOR/coin_monitor_graph.C(2185,2191)` + +TROUBLESHOOTING: +If coin_monitor.root gets deleted, you can run coin_monitor_init.C to create an +empty coin_monitor.root. Running this will also overwrite any existing data in +a non-empty coin_monitor.root + +TO-DO: +- Macro to delete a run's data from coin_monitor.root +- Implement kinematic settings (different markers?) +- Save as PDF + +QUESTIONS/CONCERNS: +Email matter@virginia.edu diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor.root b/SCRIPTS/COIN/MONITOR/coin_monitor.root new file mode 100644 index 0000000000000000000000000000000000000000..53529423655263fbbc212491eb28adb57add778a GIT binary patch literal 10727 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 X@d1sufR|*ZkiJ+FtoM1j=@bS4`{p{} literal 0 HcmV?d00001 diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor_calc.C b/SCRIPTS/COIN/MONITOR/coin_monitor_calc.C new file mode 100644 index 00000000..e74d818e --- /dev/null +++ b/SCRIPTS/COIN/MONITOR/coin_monitor_calc.C @@ -0,0 +1,223 @@ +void coin_monitor_calc(Int_t RunNumber = 0, Int_t TargetType = 0, Int_t KinematicsType = 0) +{ + + // Get RunNumber if not provided. + if(RunNumber == 0) { + cout << "Enter a Run Number (-1 to exit): "; + cin >> RunNumber; + if( RunNumber<=0 ) return; + } + + // Get if not provided. + if(TargetType == 0) { + cout << "Enter a target (1=LH2, 2=6% Carbon, 3=dummy, -1 to exit): "; + cin >> TargetType; + if( TargetType<=0 ) return; + } + + // Get KinematicsType if not provided. + //if(KinematicsType == 0) { + // cout << "Enter a kinematics index (see coin_monitor.README; -1 to exit): "; + // cin >> KinematicsType; + // if( KinematicsType<=0 ) return; + //} + + + // ======================================================================== + // A cheat to grab some efficiencies from the report output. + // I'm doing this because I don't know how to access this from the root file + // Note that this makes BIG assumptions about the structure of the template! + // + TString sysOutput; // awk output + TString field; // description in report + TObjArray* stringsPtr; // used in tokenizing + + // report filename + TString reportFile = Form("REPORT_OUTPUT/COIN/PRODUCTION/replay_coin_production_%d_-1.report", RunNumber); + + // awk template for getting value form report + // Assumes value is separated from description by a colon. + // You need to be careful if there are multiple matches in the file. + TString awk_template = "awk -F':' '/%s/{print $2}' %s"; + + // SHMS charge1 ------------------------------------------------------- + field = "SHMS BCM1 Beam Cut Charge"; + sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data())); + stringsPtr = sysOutput.Tokenize("\n"); + double pQ_BCM1 = ((TObjString *)(stringsPtr->At(0)))->String().Atof(); + + // SHMS charge2 ------------------------------------------------------- + field = "SHMS BCM2 Beam Cut Charge"; + sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data())); + stringsPtr = sysOutput.Tokenize("\n"); + double pQ_BCM2 = ((TObjString *)(stringsPtr->At(0)))->String().Atof(); + + // HMS charge1 -------------------------------------------------------- + field = "HMS BCM1 Beam Cut Charge"; + sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data())); + stringsPtr = sysOutput.Tokenize("\n"); + double hQ_BCM1 = ((TObjString *)(stringsPtr->At(0)))->String().Atof(); + + // HMS charge2 -------------------------------------------------------- + field = "HMS BCM1 Beam Cut Charge"; + sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data())); + stringsPtr = sysOutput.Tokenize("\n"); + double hQ_BCM2 = ((TObjString *)(stringsPtr->At(0)))->String().Atof(); + + // SHMS N TRIG -------------------------------------------------------- + field = "SHMS Accepted Physics Triggers"; + sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data())); + stringsPtr = sysOutput.Tokenize("\n"); + double pN_trig = ((TObjString *)(stringsPtr->At(0)))->String().Atof(); + + // HMS N TRIG --------------------------------------------------------- + field = "HMS Accepted Physics Triggers"; + sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data())); + stringsPtr = sysOutput.Tokenize("\n"); + double hN_trig = ((TObjString *)(stringsPtr->At(0)))->String().Atof(); + + + // Yield per mC + double pYield = 1000 * pN_trig / ((pQ_BCM1 + pQ_BCM2)/2.0); + double hYield = 1000 * hN_trig / ((hQ_BCM1 + hQ_BCM2)/2.0); + + // SHMS hadron track efficiency --------------------------------------- + // Assume SHMS is the first match, HMS is the second + field = "HADRON SING FID TRACK EFF"; + sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data())); + stringsPtr = sysOutput.Tokenize("\n"); + sysOutput = ((TObjString *)(stringsPtr->At(0)))->String(); // first match + stringsPtr = sysOutput.Tokenize("+-"); // this line has erorr printed as well + double pHadTrackEff = ((TObjString *)(stringsPtr->At(0)))->String().Atof(); + double pHadTrackEffErr = ((TObjString *)(stringsPtr->At(1)))->String().Atof(); + + // HMS electron track efficiency --------------------------------------- + // Assume SHMS is the first match, HMS is the second + field = "E SING FID TRACK EFFIC"; + sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data())); + stringsPtr = sysOutput.Tokenize("\n"); + sysOutput = ((TObjString *)(stringsPtr->At(1)))->String(); // second match + stringsPtr = sysOutput.Tokenize("+-"); // this line has erorr printed as well + double hElecTrackEff = ((TObjString *)(stringsPtr->At(0)))->String().Atof(); + double hElecTrackEffErr = ((TObjString *)(stringsPtr->At(1)))->String().Atof(); + + // SHMS and HMS 3/4 trigger efficiency --------------------------------- + // Assume SHMS is the first match, HMS is the second + field = "3_of_4 EFF"; + sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data())); + stringsPtr = sysOutput.Tokenize("\n"); + double p3of4Eff = ((TObjString *)(stringsPtr->At(0)))->String().Atof(); + double h3of4Eff = ((TObjString *)(stringsPtr->At(1)))->String().Atof(); + + // Live Time ---------------------------------------------------------- + field = "ROC2 Pre-Scaled Ps6 ROC2 Computer Live Time"; + sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data())); + stringsPtr = sysOutput.Tokenize("\n"); + double roc2PS6liveTime = ((TObjString *)(stringsPtr->At(0)))->String().Atof(); + + // ======================================================================== + // Bookkeeping + + // Open old data, copy to new tree. + // We skip if an old datum's run number matches the one the user specified. + TFile* newYieldF = new TFile("SCRIPTS/COIN/MONITOR/coin_monitor_new.root", "RECREATE"); + TTree* TY_new = new TTree("Y","coin_monitor tree"); + int run_new, tgt_new, kin_new, pN_trig_new, hN_trig_new; + double pYpc_new, hYpc_new, pQ_new, hQ_new; + double pHadTrackEff_new, pHadTrackEffErr_new, hElecTrackEff_new, hElecTrackEffErr_new; + double p3of4Eff_new, h3of4Eff_new, roc2PS6liveTime_new; + TY_new->Branch("run",&run_new); + TY_new->Branch("tgt",&tgt_new); + TY_new->Branch("kin",&kin_new); + TY_new->Branch("pYpc",&pYpc_new); + TY_new->Branch("hYpc",&hYpc_new); + TY_new->Branch("pN_trig",&pN_trig_new); + TY_new->Branch("hN_trig",&hN_trig_new); + TY_new->Branch("pQ",&pQ_new); + TY_new->Branch("hQ",&hQ_new); + TY_new->Branch("pHadTrackEff",&pHadTrackEff_new); + TY_new->Branch("pHadTrackEffErr",&pHadTrackEffErr_new); + TY_new->Branch("hElecTrackEff",&hElecTrackEff_new); + TY_new->Branch("hElecTrackEffErr",&hElecTrackEffErr_new); + TY_new->Branch("p3of4Eff",&p3of4Eff_new); + TY_new->Branch("h3of4Eff",&h3of4Eff_new); + TY_new->Branch("roc2PS6liveTime",&roc2PS6liveTime_new); + + TFile* yieldF = new TFile("SCRIPTS/COIN/MONITOR/coin_monitor.root","READ"); + TTree* TY_old = (TTree*)yieldF->Get("Y"); + + int run_old, tgt_old, kin_old, pN_trig_old, hN_trig_old; + double pYpc_old, hYpc_old, pQ_old, hQ_old; + double pHadTrackEff_old, pHadTrackEffErr_old, hElecTrackEff_old, hElecTrackEffErr_old; + double p3of4Eff_old, h3of4Eff_old, roc2PS6liveTime_old; + TY_old->SetBranchAddress("run",&run_old); + TY_old->SetBranchAddress("tgt",&tgt_old); + TY_old->SetBranchAddress("kin",&kin_old); + TY_old->SetBranchAddress("pYpc",&pYpc_old); + TY_old->SetBranchAddress("hYpc",&hYpc_old); + TY_old->SetBranchAddress("pN_trig",&pN_trig_old); + TY_old->SetBranchAddress("hN_trig",&hN_trig_old); + TY_old->SetBranchAddress("pQ",&pQ_old); + TY_old->SetBranchAddress("hQ",&hQ_old); + TY_old->SetBranchAddress("pHadTrackEff",&pHadTrackEff_old); + TY_old->SetBranchAddress("pHadTrackEffErr",&pHadTrackEffErr_old); + TY_old->SetBranchAddress("hElecTrackEff",&hElecTrackEff_old); + TY_old->SetBranchAddress("hElecTrackEffErr",&hElecTrackEffErr_old); + TY_old->SetBranchAddress("p3of4Eff",&p3of4Eff_old); + TY_old->SetBranchAddress("h3of4Eff",&h3of4Eff_old); + TY_old->SetBranchAddress("roc2PS6liveTime",&roc2PS6liveTime_old); + + newYieldF->cd(); + for (int i=0; i<TY_old->GetEntries(); i++) { + TY_old->GetEntry(i); + + // Skip if matches user specified run + if (run_old == RunNumber) { + cout << "WARNING: Overwriting run " << RunNumber << endl; + continue; + } + + run_new = run_old; + tgt_new = tgt_old; + kin_new = kin_old; + pYpc_new = pYpc_old; + hYpc_new = hYpc_old; + pN_trig_new = pN_trig_old; + hN_trig_new = pN_trig_old; + pQ_new = pQ_old; + hQ_new = hQ_old; + pHadTrackEff_new = pHadTrackEff_old; + pHadTrackEffErr_new = pHadTrackEffErr_old; + hElecTrackEff_new = hElecTrackEff_old; + hElecTrackEffErr_new = hElecTrackEffErr_old; + p3of4Eff_new = p3of4Eff_old; + h3of4Eff_new = h3of4Eff_old; + roc2PS6liveTime_new = roc2PS6liveTime_old; + + TY_new->Fill(); + } + + // Add user specified run + run_new = RunNumber; + tgt_new = TargetType; + kin_new = KinematicsType; + pYpc_new = pYield; + hYpc_new = hYield; + pN_trig_new = pN_trig; + hN_trig_new = hN_trig; + pQ_new = ((pQ_BCM1 + pQ_BCM2)/2.0) / 1000.0; + hQ_new = ((hQ_BCM1 + hQ_BCM2)/2.0) / 1000.0; + pHadTrackEff_new = pHadTrackEff; + pHadTrackEffErr_new = pHadTrackEffErr; + hElecTrackEff_new = hElecTrackEff; + hElecTrackEffErr_new = hElecTrackEffErr; + p3of4Eff_new = p3of4Eff; + h3of4Eff_new = h3of4Eff; + roc2PS6liveTime_new = roc2PS6liveTime; + TY_new->Fill(); + + // Rename new root file to old one + newYieldF->Write(); + newYieldF->Close(); + gSystem->Exec("mv SCRIPTS/COIN/MONITOR/coin_monitor_new.root SCRIPTS/COIN/MONITOR/coin_monitor.root"); +} diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor_calc_batch.sh b/SCRIPTS/COIN/MONITOR/coin_monitor_calc_batch.sh new file mode 100755 index 00000000..e3b1f829 --- /dev/null +++ b/SCRIPTS/COIN/MONITOR/coin_monitor_calc_batch.sh @@ -0,0 +1,23 @@ +#!/bin/bash +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_init.C" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2023,1,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2046,1,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2047,1,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2048,1,1)" +#./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2049,1,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2050,1,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2051,1,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2052,1,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2054,1,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2055,3,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2056,2,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2062,2,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2064,2,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2065,2,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2066,1,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2067,3,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2068,3,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2187,2,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2188,2,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2189,2,1)" +./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2190,2,1)" diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor_graph.C b/SCRIPTS/COIN/MONITOR/coin_monitor_graph.C new file mode 100644 index 00000000..cae6103d --- /dev/null +++ b/SCRIPTS/COIN/MONITOR/coin_monitor_graph.C @@ -0,0 +1,149 @@ +void coin_monitor_graph(int runMin = -1, int runMax = -1) { + TFile* yieldF = new TFile("SCRIPTS/COIN/MONITOR/coin_monitor.root","READ"); + TTree* TY=(TTree*)yieldF->Get("Y"); + + //gStyle->SetOptTitle(kFALSE); + gStyle->SetPalette(1); + TVirtualPad *pad; + + TCanvas* c = new TCanvas("c", "Coincidence monitoring", 1024, 640); + c->Divide(2,2); + + // Get min and max run number + // If user specifies -1 for min||max, we use the min||max in coin_monitor.root + // These are also the defaults + Y->Draw("run>>htemp","","goff"); + if (runMin==-1) { + runMin = htemp->GetXaxis()->GetXmin() - 5; + } + if (runMax==-1) { + runMax = htemp->GetXaxis()->GetXmax() + 5; + } + + // ============================================= + // YIELD + pad = c->cd(1); + + TCut hCut = "tgt==1"; + Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",hCut,"goff"); + TGraphErrors* gHydrogen = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3()); + + TCut cCut = "tgt==2"; + Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",cCut,"goff"); + TGraphErrors* gCarbon = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3()); + + //TCut dCut = "tgt==3"; + //Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",dCut,"goff"); + //TGraphErrors* gDummy = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3()); + + gHydrogen->SetLineColor(46); + gCarbon->SetLineColor(38); + //gDummy->SetLineColor(41); + + + TMultiGraph *mgYield = new TMultiGraph("mgYield", "Coincidence yield per run"); + + mgYield->Add(gHydrogen); + mgYield->Add(gCarbon); + //mgYield->Add(gDummy); + + mgYield->Draw("AP"); + mgYield->GetXaxis()->SetLimits(runMin, runMax); + mgYield->GetXaxis()->SetTitle("Run Number"); + mgYield->GetYaxis()->SetTitle("Yield per mC"); + + TLegend *legYield = new TLegend(0.15, 0.3, 0.35, 0.2); + legYield->SetFillColor(0); + legYield->AddEntry(gHydrogen, "Hydrogen", "lp"); + legYield->AddEntry(gCarbon, "Carbon", "lp"); + //legYield->AddEntry(gDummy, "Dummy", "lp"); + legYield->Draw(); + + + // ============================================= + // LIVE TIME + pad = c->cd(2); + + Y->Draw("run:roc2PS6liveTime","","goff"); + TGraph* gPLive = new TGraph(Y->GetEntries(), Y->GetV1(), Y->GetV2()); + + gPLive->SetTitle("ROC2 PS6 Live Time"); + + gPLive->SetMarkerStyle(22); + gPLive->SetMarkerColor(30); + gPLive->SetMinimum(48); + gPLive->SetMaximum(102); + gPLive->Draw("AP"); + + gPLive->GetXaxis()->SetLimits(runMin, runMax); + gPLive->GetXaxis()->SetTitle("Run Number"); + gPLive->GetYaxis()->SetTitle("Live time"); + + // ============================================= + // 3 of 4 efficiency + pad = c->cd(3); + + Y->Draw("run:p3of4Eff","","goff"); + TGraph* gP3of4 = new TGraph(Y->GetEntries(), Y->GetV1(), Y->GetV2()); + + Y->Draw("run:h3of4Eff","","goff"); + TGraph* gH3of4 = new TGraph(Y->GetEntries(), Y->GetV1(), Y->GetV2()); + + gP3of4->SetMarkerColor(46); + gP3of4->SetMarkerStyle(26); + gH3of4->SetMarkerColor(30); + gH3of4->SetMarkerStyle(32); + + TMultiGraph *mg3of4 = new TMultiGraph("mg3of4", "3 of 4 Efficiency"); + + mg3of4->Add(gP3of4); + mg3of4->Add(gH3of4); + + mg3of4->Draw("AP"); + mg3of4->SetMinimum(0.48); + mg3of4->SetMaximum(1.02); + mg3of4->GetXaxis()->SetLimits(runMin, runMax); + mg3of4->GetXaxis()->SetTitle("Run Number"); + mg3of4->GetYaxis()->SetTitle("3/4 Efficiency"); + + TLegend *leg3of4 = new TLegend(0.15, 0.3, 0.35, 0.2); + leg3of4->SetFillColor(0); + leg3of4->AddEntry(gP3of4, "SHMS 3/4", "p"); + leg3of4->AddEntry(gH3of4, "HMS 3/4", "p"); + leg3of4->Draw(); + + // ============================================= + // PID track efficiency + pad = c->cd(4); + + Y->Draw("run:pHadTrackEff:pHadTrackEffErr","","goff"); + TGraphErrors* gPTrack = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3()); + + Y->Draw("run:hElecTrackEff:hElecTrackEffErr","","goff"); + TGraphErrors* gHTrack = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3()); + + gPTrack->SetMarkerColor(46); + gPTrack->SetLineColor(46); + gPTrack->SetMarkerStyle(26); + gHTrack->SetMarkerColor(30); + gHTrack->SetLineColor(30); + gHTrack->SetMarkerStyle(32); + + TMultiGraph *mgTrack = new TMultiGraph("mgTrack", "PID Tracking Efficiency"); + mgTrack->Add(gPTrack); + mgTrack->Add(gHTrack); + + mgTrack->Draw("AP"); + mgTrack->SetMinimum(0.48); + mgTrack->SetMaximum(1.02); + mgTrack->GetXaxis()->SetLimits(runMin, runMax); + mgTrack->GetXaxis()->SetTitle("Run Number"); + mgTrack->GetYaxis()->SetTitle("PID Tracking Efficiency"); + + TLegend *legTrack = new TLegend(0.15, 0.3, 0.35, 0.2); + legTrack->SetFillColor(0); + legTrack->AddEntry(gPTrack, "SHMS Hadron", "p"); + legTrack->AddEntry(gHTrack, "HMS Electron", "p"); + legTrack->Draw(); + +} diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor_init.C b/SCRIPTS/COIN/MONITOR/coin_monitor_init.C new file mode 100644 index 00000000..5c84adff --- /dev/null +++ b/SCRIPTS/COIN/MONITOR/coin_monitor_init.C @@ -0,0 +1,26 @@ +{ + TFile* newYieldF = new TFile("SCRIPTS/COIN/MONITOR/coin_monitor.root", "RECREATE"); + TTree* TY_new = new TTree("Y","SCRIPTS/COIN/MONITOR/coin_monitor tree"); + int run_new, tgt_new, kin_new, pN_trig_new, hN_trig_new; + double pYpc_new, hYpc_new, pQ_new, hQ_new; + double pHadTrackEff_new, pHadTrackEffErr_new, hElecTrackEff_new, hElecTrackEffErr_new; + double p3of4Eff_new, h3of4Eff_new, roc2PS6liveTime_new; + TY_new->Branch("run",&run_new); + TY_new->Branch("tgt",&tgt_new); + TY_new->Branch("kin",&kin_new); + TY_new->Branch("pYpc",&pYpc_new); + TY_new->Branch("hYpc",&hYpc_new); + TY_new->Branch("pN_trig",&pN_trig_new); + TY_new->Branch("hN_trig",&hN_trig_new); + TY_new->Branch("pQ",&pQ_new); + TY_new->Branch("hQ",&hQ_new); + TY_new->Branch("pHadTrackEff",&pHadTrackEff_new); + TY_new->Branch("pHadTrackEffErr",&pHadTrackEffErr_new); + TY_new->Branch("hElecTrackEff",&hElecTrackEff_new); + TY_new->Branch("hElecTrackEffErr",&hElecTrackEffErr_new); + TY_new->Branch("p3of4Eff",&p3of4Eff_new); + TY_new->Branch("h3of4Eff",&h3of4Eff_new); + TY_new->Branch("roc2PS6liveTime",&roc2PS6liveTime_new); + newYieldF->Write(); + newYieldF->Close(); +} diff --git a/SCRIPTS/COIN/MONITOR/coin_yield.root b/SCRIPTS/COIN/MONITOR/coin_yield.root deleted file mode 100644 index a95e65fcc1d0ca6cfb100fe174b6ab654dfa0dd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6904 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 diff --git a/SCRIPTS/COIN/MONITOR/temp.sh b/SCRIPTS/COIN/MONITOR/temp.sh deleted file mode 100755 index d0e2c2ef..00000000 --- a/SCRIPTS/COIN/MONITOR/temp.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -../../../hcana -q "yield_calc.C(2023,1,1)" -../../../hcana -q "yield_calc.C(2046,1,1)" -../../../hcana -q "yield_calc.C(2047,1,1)" -../../../hcana -q "yield_calc.C(2048,1,1)" -../../../hcana -q "yield_calc.C(2049,1,1)" -../../../hcana -q "yield_calc.C(2050,1,1)" -../../../hcana -q "yield_calc.C(2051,1,1)" -../../../hcana -q "yield_calc.C(2052,1,1)" -../../../hcana -q "yield_calc.C(2053,1,1)" -../../../hcana -q "yield_calc.C(2054,1,1)" -../../../hcana -q "yield_calc.C(2055,3,1)" -../../../hcana -q "yield_calc.C(2056,2,1)" diff --git a/SCRIPTS/COIN/MONITOR/yield.README b/SCRIPTS/COIN/MONITOR/yield.README deleted file mode 100644 index 530f1cd0..00000000 --- a/SCRIPTS/COIN/MONITOR/yield.README +++ /dev/null @@ -1,11 +0,0 @@ -1) Calculate yield - 1) ../hcana yield_calc.C - 2) Enter run number - 3) Enter index specifying target - - It will warn you if you're overwriting a run already in coin_yield.root, - but this might be what you want to do! - -2) Plot yield per run - 1) ../hcana yield_graph.C - 2) Make sure yield hasn't fluctuated diff --git a/SCRIPTS/COIN/MONITOR/yield_calc.C b/SCRIPTS/COIN/MONITOR/yield_calc.C deleted file mode 100644 index adf9043d..00000000 --- a/SCRIPTS/COIN/MONITOR/yield_calc.C +++ /dev/null @@ -1,125 +0,0 @@ -void yield_calc(Int_t RunNumber = 0, Int_t TargetType = 0, Int_t KinematicsType = 0) -{ - - // Get RunNumber if not provided. - if(RunNumber == 0) { - cout << "Enter a Run Number (-1 to exit): "; - cin >> RunNumber; - if( RunNumber<=0 ) return; - } - - // Get if not provided. - if(TargetType == 0) { - cout << "Enter a target (1=LH2, 2=6% Carbon, 3=dummy, -1 to exit): "; - cin >> TargetType; - if( TargetType<=0 ) return; - } - - // Get KinematicsType if not provided. - //if(KinematicsType == 0) { - // cout << "Enter a kinematics index (see yield.README; -1 to exit): "; - // cin >> KinematicsType; - // if( KinematicsType<=0 ) return; - //} - - // Open root file - char* ROOTFileNamePattern = "../../../ROOTfiles/coin_replay_production_%d_-1.root"; - TString ROOTFileName = Form(ROOTFileNamePattern, RunNumber); - TFile* hcanaF = new TFile(ROOTFileName); - TTree* tsp = (TTree*)hcanaF->Get("TSP"); - TTree* tsh = (TTree*)hcanaF->Get("TSH"); - - // Set up tree variables - double pQ_BCM1, pQ_BCM2, pN_trig, pQ_avg; - tsp->SetBranchAddress("P.BCM1.scalerChargeCut",&pQ_BCM1); - tsp->SetBranchAddress("P.BCM2.scalerChargeCut",&pQ_BCM2); - tsp->SetBranchAddress("P.pTRIG6.scalerCut",&pN_trig); - - double hQ_BCM1, hQ_BCM2, hN_trig, hQ_avg; - tsh->SetBranchAddress("H.BCM1.scalerChargeCut",&hQ_BCM1); - tsh->SetBranchAddress("H.BCM2.scalerChargeCut",&hQ_BCM2); - tsh->SetBranchAddress("H.hTRIG6.scalerCut",&hN_trig); - - // correct value is last in the scaler tree? - int pN=tsp->GetEntries()-1; - int hN=tsp->GetEntries()-1; - tsp->GetEntry(pN); - tsh->GetEntry(hN); - - // Yield per mC - double pYield = 1000 * pN_trig / ((pQ_BCM1 + pQ_BCM2)/2.0); - double hYield = 1000 * hN_trig / ((hQ_BCM1 + hQ_BCM2)/2.0); - - delete hcanaF; - - // Open old data, copy to new tree. - // We skip if an old datum's run number matches the one the user specified. - TFile* newYieldF = new TFile("coin_yield_new.root", "RECREATE"); - TTree* TY_new = new TTree("Y","coin_yield tree"); - int run_new, tgt_new, kin_new, pN_trig_new, hN_trig_new; - double pYpc_new, hYpc_new, pQ_new, hQ_new; - TY_new->Branch("run",&run_new); - TY_new->Branch("tgt",&tgt_new); - TY_new->Branch("kin",&kin_new); - TY_new->Branch("pYpc",&pYpc_new); - TY_new->Branch("hYpc",&hYpc_new); - TY_new->Branch("pN_trig",&pN_trig_new); - TY_new->Branch("hN_trig",&hN_trig_new); - TY_new->Branch("pQ",&pQ_new); - TY_new->Branch("hQ",&hQ_new); - - TFile* yieldF = new TFile("coin_yield.root","READ"); - TTree* TY_old = (TTree*)yieldF->Get("Y"); - - int run_old, tgt_old, kin_old, pN_trig_old, hN_trig_old; - double pYpc_old, hYpc_old, pQ_old, hQ_old; - TY_old->SetBranchAddress("run",&run_old); - TY_old->SetBranchAddress("tgt",&tgt_old); - TY_old->SetBranchAddress("kin",&kin_old); - TY_old->SetBranchAddress("pYpc",&pYpc_old); - TY_old->SetBranchAddress("hYpc",&hYpc_old); - TY_old->SetBranchAddress("pN_trig",&pN_trig_old); - TY_old->SetBranchAddress("hN_trig",&hN_trig_old); - TY_old->SetBranchAddress("pQ",&pQ_old); - TY_old->SetBranchAddress("hQ",&hQ_old); - - newYieldF->cd(); - for (int i=0; i<TY_old->GetEntries(); i++) { - TY_old->GetEntry(i); - - // Skip if matches user specified run - if (run_old == RunNumber) { - cout << "WARNING: Overwriting run " << RunNumber << endl; - continue; - } - - run_new = run_old; - tgt_new = tgt_old; - kin_new = kin_old; - pYpc_new = pYpc_old; - hYpc_new = hYpc_old; - pN_trig_new = pN_trig_old; - hN_trig_new = pN_trig_old; - pQ_new = pQ_old; - hQ_new = hQ_old; - - TY_new->Fill(); - } - - // Add user specified run - run_new = RunNumber; - tgt_new = TargetType; - kin_new = KinematicsType; - pYpc_new = pYield; - hYpc_new = hYield; - pN_trig_new = pN_trig; - hN_trig_new = hN_trig; - pQ_new = ((pQ_BCM1 + pQ_BCM2)/2.0) / 1000.0; - hQ_new = ((hQ_BCM1 + hQ_BCM2)/2.0) / 1000.0; - TY_new->Fill(); - - // Rename new root file to old one - newYieldF->Write(); - newYieldF->Close(); - gSystem->Exec("mv coin_yield_new.root coin_yield.root"); -} diff --git a/SCRIPTS/COIN/MONITOR/yield_graph.C b/SCRIPTS/COIN/MONITOR/yield_graph.C deleted file mode 100644 index 9024e411..00000000 --- a/SCRIPTS/COIN/MONITOR/yield_graph.C +++ /dev/null @@ -1,50 +0,0 @@ -void yield_graph() { - TFile* yieldF = new TFile("coin_yield.root","READ"); - TTree* TY=(TTree*)yieldF->Get("Y"); - - gStyle->SetOptTitle(kFALSE); - gStyle->SetPalette(1); - - TCut hCut = "tgt==1"; - Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",hCut,"goff"); - TGraphErrors* gHydrogen = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3()); - - TCut cCut = "tgt==2"; - Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",cCut,"goff"); - TGraphErrors* gCarbon = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3()); - - TCut dCut = "tgt==3"; - Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",dCut,"goff"); - TGraphErrors* gDummy = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3()); - - gHydrogen->SetLineColor(kRed); - gCarbon->SetLineColor(kGreen); - gDummy->SetLineColor(kBlack); - - // Get min and max run number - Y->Draw("run>>htemp","","goff"); - int runMin = htemp->GetXaxis()->GetXmin() - 5; - int runMax = htemp->GetXaxis()->GetXmax() + 5; - - TCanvas* c = new TCanvas("c", "Coincidence yield per run", 800, 600); - int maxYield = 20; - c->DrawFrame(runMin,0,runMax,maxYield); - - TMultiGraph *mg = new TMultiGraph("mg", "Coincidence yield per run"); - mg->Add(gHydrogen); - mg->Add(gCarbon); - //mg->Add(gDummy); - mg->SetTitle("Coincidence yield per run"); //doesn't work?? - mg->GetXaxis()->SetTitle("Run Number"); - mg->GetYaxis()->SetTitle("Yield per mC"); - - mg->Draw("P"); - - TLegend *leg = new TLegend(0.15, 0.7, 0.25, 0.8); - leg->SetFillColor(0); - leg->AddEntry(gHydrogen, "Hydrogen", "lp"); - leg->AddEntry(gCarbon, "Carbon", "lp"); - //leg->AddEntry(gDummy, "Dummy", "lp"); - leg->Draw(); - -} diff --git a/SCRIPTS/HMS/PRODUCTION/replay_production_hms_coin.C b/SCRIPTS/HMS/PRODUCTION/replay_production_hms_coin.C index b3e0d622..d13be663 100644 --- a/SCRIPTS/HMS/PRODUCTION/replay_production_hms_coin.C +++ b/SCRIPTS/HMS/PRODUCTION/replay_production_hms_coin.C @@ -103,6 +103,10 @@ void replay_production_hms_coin(Int_t RunNumber=0, Int_t MaxEvent=0) { // Add handler for scaler events THcScalerEvtHandler *hscaler = new THcScalerEvtHandler("H", "Hall C scaler event type 2"); hscaler->AddEvtType(2); + hscaler->AddEvtType(4); + hscaler->AddEvtType(5); + hscaler->AddEvtType(6); + hscaler->AddEvtType(7); hscaler->AddEvtType(129); hscaler->SetDelayedType(129); hscaler->SetUseFirstEvent(kTRUE); diff --git a/SCRIPTS/SHMS/PRODUCTION/replay_production_shms_coin.C b/SCRIPTS/SHMS/PRODUCTION/replay_production_shms_coin.C index 93b7a2ee..c2b6275b 100644 --- a/SCRIPTS/SHMS/PRODUCTION/replay_production_shms_coin.C +++ b/SCRIPTS/SHMS/PRODUCTION/replay_production_shms_coin.C @@ -107,6 +107,10 @@ void replay_production_shms_coin (Int_t RunNumber = 0, Int_t MaxEvent = 0) { // Add event handler for scaler events THcScalerEvtHandler* pscaler = new THcScalerEvtHandler("P", "Hall C scaler event type 1"); pscaler->AddEvtType(1); + pscaler->AddEvtType(4); + pscaler->AddEvtType(5); + pscaler->AddEvtType(6); + pscaler->AddEvtType(7); pscaler->AddEvtType(129); pscaler->SetDelayedType(129); pscaler->SetUseFirstEvent(kTRUE); -- GitLab