diff --git a/.gitignore b/.gitignore index bef65489cf440ab223f0e23227cb1379a9260b3d..fc9aaa797d8e539dc53e68a3cdd90477b6392a40 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,18 @@ *~ +ROOTfiles ROOTfiles/* +ROOTfiles.old/* +bck/* #* hcana raw .root_history -*/data_files/* -*/root_files/* +CALIBRATION/*/data_files/* +CALIBRATION/*/root_files/* HISTOGRAMS/* REPORT_OUTPUT/* log/* +full_hms.sh +full_shms.sh +onlineGUI/Config/kpp_* +run_* \ No newline at end of file diff --git a/CALIBRATION/.gitignore b/CALIBRATION/.gitignore deleted file mode 100644 index a9da3531dad97cca6e7b465e53f6663be3666fdb..0000000000000000000000000000000000000000 --- a/CALIBRATION/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -# -# Ignore file for calorimeter calibration code -# - -# Debug files -*.deb -# Monte Carlo results -*.r -*.pdf -*.cal_data -*.raw_data -*.root -# Parameter files generated by calibration -*.param -hms_dc_calib/data_files -*.d -hms_dc_calib/scripts/*.txt - diff --git a/SCRIPTS/HMS/hhodo_analysis.C b/SCRIPTS/HMS/MACROS/hhodo_analysis.C similarity index 100% rename from SCRIPTS/HMS/hhodo_analysis.C rename to SCRIPTS/HMS/MACROS/hhodo_analysis.C diff --git a/SCRIPTS/SHMS/MACROS/shw_pshw.C b/SCRIPTS/SHMS/MACROS/shw_pshw.C new file mode 100644 index 0000000000000000000000000000000000000000..83391c60de2f189d00bd2d4ecd9219df1b5216cb --- /dev/null +++ b/SCRIPTS/SHMS/MACROS/shw_pshw.C @@ -0,0 +1,152 @@ +void shw_pshw() { + cout << "Hello." << endl << endl; + + const Int_t nPreShowerBlocks = 14; + const Int_t nShowerBlocks = 224; + + Double_t preShowerNeg_adc2GeV[nPreShowerBlocks] = { + 1.0/466.2, 1.0/514.7, 1.0/325.5, 1.0/247.8, + 1.0/322.0, 1.0/176.2, 1.0/161.9, 1.0/197.7, + 1.0/269.9, 1.0/241.6, 1.0/193.7, 1.0/337.5, + 1.0/237.3, 1.0/82.0 + }; + Double_t preShowerPos_adc2GeV[nPreShowerBlocks] = { + 1.0/411.2, 1.0/378.6, 1.0/357.9, 1.0/254.8, + 1.0/315.6, 1.0/331.0, 1.0/264.6, 1.0/305.4, + 1.0/149.8, 1.0/380.6, 1.0/183.1, 1.0/206.5, + 1.0/139.8, 1.0/163.1 + }; + Double_t shower_adc2GeV = 0.0005; + + + TFile F("../ROOTfiles/shms_replay_488_-1.root"); + TTree* T = F.Get("T"); + + + Int_t nTracks; + Double_t track_x[1000]; + Double_t track_y[1000]; + Double_t track_xp[1000]; + Double_t track_yp[1000]; + + T->SetBranchAddress("Ndata.P.dc.x", &nTracks); + T->SetBranchAddress("P.dc.x", track_x); + T->SetBranchAddress("P.dc.y", track_y); + T->SetBranchAddress("P.dc.xp", track_xp); + T->SetBranchAddress("P.dc.yp", track_yp); + + Int_t nPreShower; + Double_t preShower_posAdcC[1000]; + Double_t preShower_posAdcPI[1000]; + + T->SetBranchAddress("Ndata.P.cal.pr.posAdcCounter", &nPreShower); + T->SetBranchAddress("P.cal.pr.posAdcCounter", preShower_posAdcC); + T->SetBranchAddress("P.cal.pr.posAdcPulseInt", preShower_posAdcPI); + + Int_t nShower; + Double_t shower_C[1000]; + Double_t shower_PI[1000]; + + T->SetBranchAddress("Ndata.P.cal.fly.adcCounter", &nShower); + T->SetBranchAddress("P.cal.fly.adcCounter", shower_C); + T->SetBranchAddress("P.cal.fly.adcPulseInt", shower_PI); + + Int_t nNGC; + Double_t NGC_C[1000]; + Double_t NGC_PI[1000]; + + T->SetBranchAddress("Ndata.P.ngcer.adcCounter", &nNGC); + T->SetBranchAddress("P.ngcer.adcCounter", NGC_C); + T->SetBranchAddress("P.ngcer.adcPulseInt", NGC_PI); + + + TH2D* s_ps = new TH2D("s_ps", "s_ps", 100, -1, 30, 100, -1, 20); + s_ps->SetTitle(""); + TH2D* s_ps_e = new TH2D("s_ps_e", "s_ps_e", 100, -1, 30, 100, -1, 20); + TH2D* s_ps_pi = new TH2D("s_ps_pi", "s_ps_pi", 100, -1, 30, 100, -1, 20); + + + Long64_t nEvents = T->GetEntries(); + //for (Long64_t iEvent; iEvent<100000; ++iEvent) { + for (Long64_t iEvent; iEvent<nEvents; ++iEvent) { + if ((iEvent+1)%1000 == 0) cout << "Event: " << iEvent+1 << endl; + T->GetEntry(iEvent); + + if (nTracks!=1 || fabs(track_x[0] + track_xp[0]*330 + 9)>9 || fabs(track_y[0] + track_yp[0]*330 - 9)>9) continue; + + bool electron=false; + for (Int_t iC=0; iC<nNGC; ++iC) { + if (NGC_PI[iC] > 4500) { + electron = true; + continue; + } + } + + bool pion=true; + for (Int_t iC=0; iC<nNGC; ++iC) { + if (NGC_PI[iC] > 3500) { + pion = false; + continue; + } + } + + Double_t preShower_energy = 0.0; + for (Int_t iPS=0; iPS<nPreShower; ++iPS) { + Int_t psc = preShower_posAdcC[iPS]; + if (psc==6 || psc==7) { + preShower_energy += preShower_posAdcPI[iPS] * preShowerPos_adc2GeV[psc-1]; + } + } + + Double_t shower_energy = 0.0; + for (Int_t iS=0; iS<nShower; ++iS) { + Int_t sc = shower_C[iS]; + if (sc==87 || sc==88 || sc==103 || sc==104) { + shower_energy += shower_PI[iS] * shower_adc2GeV; + } + } + + s_ps->Fill(preShower_energy, shower_energy); + if (electron) s_ps_e->Fill(preShower_energy, shower_energy); + if (pion) s_ps_pi->Fill(preShower_energy, shower_energy); + + } + + + gStyle->SetOptStat(0); + + s_ps->GetXaxis()->SetTitle("pre-shower energy"); + s_ps->GetYaxis()->SetTitle("shower energy"); + s_ps->SetMarkerColor(1); + + s_ps_e->GetXaxis()->SetTitle("pre-shower energy"); + s_ps_e->GetYaxis()->SetTitle("shower energy"); + s_ps_e->SetMarkerColor(2); + + s_ps_pi->GetXaxis()->SetTitle("pre-shower energy"); + s_ps_pi->GetYaxis()->SetTitle("shower energy"); + s_ps_pi->SetMarkerColor(3); + + + TCanvas* c1 = new TCanvas("c1", "c1", 800, 600); + c1->cd(); + + + s_ps->Draw(); + s_ps_e->Draw("same"); + //s_ps_pi->Draw("same"); + c1->Print("shw_pshw.png"); + + c1->SetLogz(); + + s_ps->Draw("colz"); + c1->Print("shw_pshw_all.png"); + + s_ps_e->Draw("colz"); + c1->Print("shw_pshw_e.png"); + + s_ps_pi->Draw("colz"); + c1->Print("shw_pshw_pi.png"); + + cout << endl << "Bye." << endl; +}