diff --git a/examples/PARAM/52949/hhodo.param.vt b/examples/PARAM/52949/hhodo.param.vt index 39dc74b856107ae518d7e4452fc3cc725488a9f6..bb261605b7f0960a872cd251401414aabd8462de 100644 --- a/examples/PARAM/52949/hhodo.param.vt +++ b/examples/PARAM/52949/hhodo.param.vt @@ -8,7 +8,7 @@ hscin_tdc_max = 4000 ; hscin_tdc_to_time scin tdc time per channel hscin_tdc_to_time = 0.0259 - new variable for picking good hits for tof fitting +; new variable for picking good hits for tof fitting ; this should not be set tight until you are ready to fit ; tof and you figured out good values htof_tolerance = 100.0 diff --git a/examples/comphh.C b/examples/comphh.C new file mode 100644 index 0000000000000000000000000000000000000000..f8a2ba7ea2f006488abed6f8e6727955df7f9ecd --- /dev/null +++ b/examples/comphh.C @@ -0,0 +1,45 @@ +void comphh(Int_t run, TH1F* h1, TH1F* h2) +{ + TFile* f = new TFile(Form("hodtest_%d.root",run)); + cout << "hcana root file " << Form("hodtest_%d.root",run) << endl; + + TCanvas *c1 = new TCanvas("c1", "h1 vs h2", 1000, 667); + + // gPad->SetLogy(); + + h1->SetFillColor(kGreen); + h1->SetLineColor(kGreen); + h1->Draw(); + + h2->SetLineColor(kBlue); + h2->SetFillStyle(0); + h2->SetLineWidth(2); + h2->Draw("same"); + + TLatex l; + l.SetTextSize(0.04); + Float_t maxy = h1->GetBinContent(h1->GetMaximumBin()); + Float_t xmin = h1->GetXaxis()->GetXmin(); + Float_t xmax = h1->GetXaxis()->GetXmax(); + Float_t xt = xmin + 0.75*(xmax-xmin); + + l.SetTextColor(kGreen); + l.DrawLatex(xt,0.65*maxy,"h1"); + l.SetTextColor(kBlue); + l.DrawLatex(xt,0.75*maxy,"h2"); + + // Difference between the histograms. + + TCanvas *c2 = new TCanvas("c2", "Epr differences", 1000, 667); + + TH1F* dif = h2->Clone(); + + dif->Add(h2,h1,1.,-1.); + + dif->SetTitle("Difference"); + dif->SetFillColor(kRed); + dif->SetLineColor(kRed); + dif->SetLineWidth(1); + dif->SetFillStyle(1111); + dif->Draw(); +} diff --git a/examples/comptrackedepcor.C b/examples/comptrackedepcor.C new file mode 100644 index 0000000000000000000000000000000000000000..fbed4f46857d78ca64dadf18c96dc0b8d9e179a2 --- /dev/null +++ b/examples/comptrackedepcor.C @@ -0,0 +1,61 @@ +void comptrackedepcor(Int_t run) +{ + TFile* f = new TFile(Form("hodtest_%d.root",run)); + cout << "hcana root file " << Form("hodtest_%d.root",run) << endl; + TH1F* h = trecor; + + TFile* f1 = new TFile(Form("%d_hbk.root",run)); + cout << "Engine root file " << Form("%d_hbk.root",run) << endl; + TH1F* h1; + switch (run) { + case 50017 : + // h1 = h212; //A+ + break; + default : + h1 = h422; //edep y corrected + } + + TCanvas *c1 = new TCanvas("c1", "Shower Track 1 Edep (Y-corr.)", 800, 1000); + + c1->Divide(1,2); + + // gPad->SetLogy(); + + c1->cd(1); + + h1->SetFillColor(kGreen); + h1->SetLineColor(kGreen); + h1->Draw(); + + h->SetLineColor(kBlue); + h->SetFillStyle(0); + h->SetLineWidth(2); + h->Draw("same"); + + TLatex l; + l.SetTextSize(0.04); + Float_t maxy = h1->GetBinContent(h1->GetMaximumBin()); + Float_t xmin = h1->GetXaxis()->GetXmin(); + Float_t xmax = h1->GetXaxis()->GetXmax(); + Float_t xt = xmin + 0.75*(xmax-xmin); + + l.SetTextColor(kGreen); + l.DrawLatex(xt,0.65*maxy,"Engine"); + l.SetTextColor(kBlue); + l.DrawLatex(xt,0.75*maxy,"hcana"); + + // Difference between the histograms. + + c1->cd(2); + + TH1F* dif = h->Clone(); + + dif->Add(h,h1,1.,-1.); + + dif->SetTitle("Edep cor. Difference"); + dif->SetFillColor(kRed); + dif->SetLineColor(kRed); + dif->SetLineWidth(1); + dif->SetFillStyle(1111); + dif->Draw(); +} diff --git a/examples/comptrackedepcor.pdf b/examples/comptrackedepcor.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f4427ce7cc8645b21b58f50daf418ba81de981de Binary files /dev/null and b/examples/comptrackedepcor.pdf differ diff --git a/examples/comptrackeprcor.C b/examples/comptrackeprcor.C new file mode 100644 index 0000000000000000000000000000000000000000..099541edbd33b793f2a17803625f0f80f3afd59a --- /dev/null +++ b/examples/comptrackeprcor.C @@ -0,0 +1,61 @@ +void comptrackeprcor(Int_t run) +{ + TFile* f = new TFile(Form("hodtest_%d.root",run)); + cout << "hcana root file " << Form("hodtest_%d.root",run) << endl; + TH1F* h = treprcor; + + TFile* f1 = new TFile(Form("%d_hbk.root",run)); + cout << "Engine root file " << Form("%d_hbk.root",run) << endl; + TH1F* h1; + switch (run) { + case 50017 : + // h1 = h212; //A+ + break; + default : + h1 = h423; //epr y corrected + } + + TCanvas *c1 = new TCanvas("c1", "Shower Track 1 Edep (Y-corr.)", 800, 1000); + + c1->Divide(1,2); + + // gPad->SetLogy(); + + c1->cd(1); + + h1->SetFillColor(kGreen); + h1->SetLineColor(kGreen); + h1->Draw(); + + h->SetLineColor(kBlue); + h->SetFillStyle(0); + h->SetLineWidth(2); + h->Draw("same"); + + TLatex l; + l.SetTextSize(0.04); + Float_t maxy = h1->GetBinContent(h1->GetMaximumBin()); + Float_t xmin = h1->GetXaxis()->GetXmin(); + Float_t xmax = h1->GetXaxis()->GetXmax(); + Float_t xt = xmin + 0.75*(xmax-xmin); + + l.SetTextColor(kGreen); + l.DrawLatex(xt,0.65*maxy,"Engine"); + l.SetTextColor(kBlue); + l.DrawLatex(xt,0.75*maxy,"hcana"); + + // Difference between the histograms. + + c1->cd(2); + + TH1F* dif = h->Clone(); + + dif->Add(h,h1,1.,-1.); + + dif->SetTitle("Epr cor. Difference"); + dif->SetFillColor(kRed); + dif->SetLineColor(kRed); + dif->SetLineWidth(1); + dif->SetFillStyle(1111); + dif->Draw(); +} diff --git a/examples/comptrackeprcor.pdf b/examples/comptrackeprcor.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c08f6fdb0fec904e12a262ce6c2e196a533e5119 Binary files /dev/null and b/examples/comptrackeprcor.pdf differ diff --git a/examples/output_52949.def b/examples/output_52949.def index 283b044a4bcd26a8b73cd4b04ed259ef8c1ffbe9..22c1ef534728789c195675e84653b84b42c206a7 100644 --- a/examples/output_52949.def +++ b/examples/output_52949.def @@ -74,89 +74,98 @@ TH1F tre 'HMS Cal Track Clust. Edep' H.cal.tre 200 -0.1 1.622 H.dc.ntrack==1 # Preshower Energy of the cluster associated to the main (currently 1st) track TH1F trepr 'HMS PrSh Track Clust. Edep' H.cal.trepr 100 -0.1 0.811 H.dc.ntrack==1 -#Calorimeter ADC channels -TH1F hcaladc_A1p 'HMS Cal ADC A1p - PED' H.cal.1pr.apos_p[0] 150 50 500 -TH1F hcaladc_A2p 'HMS Cal ADC A2p - PED' H.cal.1pr.apos_p[1] 150 50 500 -TH1F hcaladc_A3p 'HMS Cal ADC A3p - PED' H.cal.1pr.apos_p[2] 150 50 500 -TH1F hcaladc_A4p 'HMS Cal ADC A4p - PED' H.cal.1pr.apos_p[3] 150 50 500 -TH1F hcaladc_A5p 'HMS Cal ADC A5p - PED' H.cal.1pr.apos_p[4] 150 50 500 -TH1F hcaladc_A6p 'HMS Cal ADC A6p - PED' H.cal.1pr.apos_p[5] 150 50 500 -TH1F hcaladc_A7p 'HMS Cal ADC A7p - PED' H.cal.1pr.apos_p[6] 150 50 500 -TH1F hcaladc_A8p 'HMS Cal ADC A8p - PED' H.cal.1pr.apos_p[7] 150 50 500 -TH1F hcaladc_A9p 'HMS Cal ADC A9p - PED' H.cal.1pr.apos_p[8] 150 50 500 -TH1F hcaladc_A10p 'HMS Cal ADC A10p - PED' H.cal.1pr.apos_p[9] 150 50 500 -TH1F hcaladc_A11p 'HMS Cal ADC A11p - PED' H.cal.1pr.apos_p[10] 150 50 500 -TH1F hcaladc_A12p 'HMS Cal ADC A12p - PED' H.cal.1pr.apos_p[11] 150 50 500 -TH1F hcaladc_A13p 'HMS Cal ADC A13p - PED' H.cal.1pr.apos_p[12] 150 50 500 -TH1F hcaladc_B1p 'HMS Cal ADC B1p - PED' H.cal.2ta.apos_p[0] 150 50 500 -TH1F hcaladc_B2p 'HMS Cal ADC B2p - PED' H.cal.2ta.apos_p[1] 150 50 500 -TH1F hcaladc_B3p 'HMS Cal ADC B3p - PED' H.cal.2ta.apos_p[2] 150 50 500 -TH1F hcaladc_B4p 'HMS Cal ADC B4p - PED' H.cal.2ta.apos_p[3] 150 50 500 -TH1F hcaladc_B5p 'HMS Cal ADC B5p - PED' H.cal.2ta.apos_p[4] 150 50 500 -TH1F hcaladc_B6p 'HMS Cal ADC B6p - PED' H.cal.2ta.apos_p[5] 150 50 500 -TH1F hcaladc_B7p 'HMS Cal ADC B7p - PED' H.cal.2ta.apos_p[6] 150 50 500 -TH1F hcaladc_B8p 'HMS Cal ADC B8p - PED' H.cal.2ta.apos_p[7] 150 50 500 -TH1F hcaladc_B9p 'HMS Cal ADC B9p - PED' H.cal.2ta.apos_p[8] 150 50 500 -TH1F hcaladc_B10p 'HMS Cal ADC B10p - PED' H.cal.2ta.apos_p[9] 150 50 500 -TH1F hcaladc_B11p 'HMS Cal ADC B11p - PED' H.cal.2ta.apos_p[10] 150 50 500 -TH1F hcaladc_B12p 'HMS Cal ADC B12p - PED' H.cal.2ta.apos_p[11] 150 50 500 -TH1F hcaladc_B13p 'HMS Cal ADC B13p - PED' H.cal.2ta.apos_p[12] 150 50 500 - -TH1F hcaladc_C1p 'HMS Cal ADC C1p - PED' H.cal.3ta.apos_p[0] 150 50 500 -TH1F hcaladc_C2p 'HMS Cal ADC C2p - PED' H.cal.3ta.apos_p[1] 150 50 500 -TH1F hcaladc_C3p 'HMS Cal ADC C3p - PED' H.cal.3ta.apos_p[2] 150 50 500 -TH1F hcaladc_C4p 'HMS Cal ADC C4p - PED' H.cal.3ta.apos_p[3] 150 50 500 -TH1F hcaladc_C5p 'HMS Cal ADC C5p - PED' H.cal.3ta.apos_p[4] 150 50 500 -TH1F hcaladc_C6p 'HMS Cal ADC C6p - PED' H.cal.3ta.apos_p[5] 150 50 500 -TH1F hcaladc_C7p 'HMS Cal ADC C7p - PED' H.cal.3ta.apos_p[6] 150 50 500 -TH1F hcaladc_C8p 'HMS Cal ADC C8p - PED' H.cal.3ta.apos_p[7] 150 50 500 -TH1F hcaladc_C9p 'HMS Cal ADC C9p - PED' H.cal.3ta.apos_p[8] 150 50 500 -TH1F hcaladc_C10p 'HMS Cal ADC C10p - PED' H.cal.3ta.apos_p[9] 150 50 500 -TH1F hcaladc_C11p 'HMS Cal ADC C11p - PED' H.cal.3ta.apos_p[10] 150 50 500 -TH1F hcaladc_C12p 'HMS Cal ADC C12p - PED' H.cal.3ta.apos_p[11] 150 50 500 -TH1F hcaladc_C13p 'HMS Cal ADC C13p - PED' H.cal.3ta.apos_p[12] 150 50 500 - -TH1F hcaladc_D1p 'HMS Cal ADC D1p - PED' H.cal.4ta.apos_p[0] 150 50 500 -TH1F hcaladc_D2p 'HMS Cal ADC D2p - PED' H.cal.4ta.apos_p[1] 150 50 500 -TH1F hcaladc_D3p 'HMS Cal ADC D3p - PED' H.cal.4ta.apos_p[2] 150 50 500 -TH1F hcaladc_D4p 'HMS Cal ADC D4p - PED' H.cal.4ta.apos_p[3] 150 50 500 -TH1F hcaladc_D5p 'HMS Cal ADC D5p - PED' H.cal.4ta.apos_p[4] 150 50 500 -TH1F hcaladc_D6p 'HMS Cal ADC D6p - PED' H.cal.4ta.apos_p[5] 150 50 500 -TH1F hcaladc_D7p 'HMS Cal ADC D7p - PED' H.cal.4ta.apos_p[6] 150 50 500 -TH1F hcaladc_D8p 'HMS Cal ADC D8p - PED' H.cal.4ta.apos_p[7] 150 50 500 -TH1F hcaladc_D9p 'HMS Cal ADC D9p - PED' H.cal.4ta.apos_p[8] 150 50 500 -TH1F hcaladc_D10p 'HMS Cal ADC D10p - PED' H.cal.4ta.apos_p[9] 150 50 500 -TH1F hcaladc_D11p 'HMS Cal ADC D11p - PED' H.cal.4ta.apos_p[10] 150 50 500 -TH1F hcaladc_D12p 'HMS Cal ADC D12p - PED' H.cal.4ta.apos_p[11] 150 50 500 -TH1F hcaladc_D13p 'HMS Cal ADC D13p - PED' H.cal.4ta.apos_p[12] 150 50 500 - -TH1F hcaladc_A1n 'HMS Cal ADC A1n - PED' H.cal.1pr.aneg_p[0] 150 50 500 -TH1F hcaladc_A2n 'HMS Cal ADC A2n - PED' H.cal.1pr.aneg_p[1] 150 50 500 -TH1F hcaladc_A3n 'HMS Cal ADC A3n - PED' H.cal.1pr.aneg_p[2] 150 50 500 -TH1F hcaladc_A4n 'HMS Cal ADC A4n - PED' H.cal.1pr.aneg_p[3] 150 50 500 -TH1F hcaladc_A5n 'HMS Cal ADC A5n - PED' H.cal.1pr.aneg_p[4] 150 50 500 -TH1F hcaladc_A6n 'HMS Cal ADC A6n - PED' H.cal.1pr.aneg_p[5] 150 50 500 -TH1F hcaladc_A7n 'HMS Cal ADC A7n - PED' H.cal.1pr.aneg_p[6] 150 50 500 -TH1F hcaladc_A8n 'HMS Cal ADC A8n - PED' H.cal.1pr.aneg_p[7] 150 50 500 -TH1F hcaladc_A9n 'HMS Cal ADC A9n - PED' H.cal.1pr.aneg_p[8] 150 50 500 -TH1F hcaladc_A10n 'HMS Cal ADC A10n - PED' H.cal.1pr.aneg_p[9] 150 50 500 -TH1F hcaladc_A11n 'HMS Cal ADC A11n - PED' H.cal.1pr.aneg_p[10] 150 50 500 -TH1F hcaladc_A12n 'HMS Cal ADC A12n - PED' H.cal.1pr.aneg_p[11] 150 50 500 -TH1F hcaladc_A13n 'HMS Cal ADC A13n - PED' H.cal.1pr.aneg_p[12] 150 50 500 - -TH1F hcaladc_B1n 'HMS Cal ADC B1n - PED' H.cal.2ta.aneg_p[0] 150 50 500 -TH1F hcaladc_B2n 'HMS Cal ADC B2n - PED' H.cal.2ta.aneg_p[1] 150 50 500 -TH1F hcaladc_B3n 'HMS Cal ADC B3n - PED' H.cal.2ta.aneg_p[2] 150 50 500 -TH1F hcaladc_B4n 'HMS Cal ADC B4n - PED' H.cal.2ta.aneg_p[3] 150 50 500 -TH1F hcaladc_B5n 'HMS Cal ADC B5n - PED' H.cal.2ta.aneg_p[4] 150 50 500 -TH1F hcaladc_B6n 'HMS Cal ADC B6n - PED' H.cal.2ta.aneg_p[5] 150 50 500 -TH1F hcaladc_B7n 'HMS Cal ADC B7n - PED' H.cal.2ta.aneg_p[6] 150 50 500 -TH1F hcaladc_B8n 'HMS Cal ADC B8n - PED' H.cal.2ta.aneg_p[7] 150 50 500 -TH1F hcaladc_B9n 'HMS Cal ADC B9n - PED' H.cal.2ta.aneg_p[8] 150 50 500 -TH1F hcaladc_B10n 'HMS Cal ADC B10n - PED' H.cal.2ta.aneg_p[9] 150 50 500 -TH1F hcaladc_B11n 'HMS Cal ADC B11n - PED' H.cal.2ta.aneg_p[10] 150 50 500 -TH1F hcaladc_B12n 'HMS Cal ADC B12n - PED' H.cal.2ta.aneg_p[11] 150 50 500 -TH1F hcaladc_B13n 'HMS Cal ADC B13n - PED' H.cal.2ta.aneg_p[12] 150 50 500 +# Coordinate corrected energy deposition from the main track (currently first) +TH1F trecor 'HMS Cal Track Edep' H.cal.trecor 200 -0.1 1.622 H.dc.ntrack==1 + +# Coordinate corrected preshower energy from the main track (currently first) +TH1F treprcor 'HMS PrSh Track Edep' H.cal.treprcor 100 -0.1 0.811 H.dc.ntrack==1 +# Coordinate corrected energy deposition from the main track (currently first) +# in the planes. Currently works for the 1-st pnae only. +TH1F treplcor 'HMS Cal Track E1' H.cal.treplcor 100 -0.1 0.811 H.dc.ntrack==1 + +# Calorimeter ADC channels +#TH1F hcaladc_A1p 'HMS Cal ADC A1p - PED' H.cal.1pr.apos_p[0] 150 50 500 +#TH1F hcaladc_A2p 'HMS Cal ADC A2p - PED' H.cal.1pr.apos_p[1] 150 50 500 +#TH1F hcaladc_A3p 'HMS Cal ADC A3p - PED' H.cal.1pr.apos_p[2] 150 50 500 +#TH1F hcaladc_A4p 'HMS Cal ADC A4p - PED' H.cal.1pr.apos_p[3] 150 50 500 +#TH1F hcaladc_A5p 'HMS Cal ADC A5p - PED' H.cal.1pr.apos_p[4] 150 50 500 +#TH1F hcaladc_A6p 'HMS Cal ADC A6p - PED' H.cal.1pr.apos_p[5] 150 50 500 +#TH1F hcaladc_A7p 'HMS Cal ADC A7p - PED' H.cal.1pr.apos_p[6] 150 50 500 +#TH1F hcaladc_A8p 'HMS Cal ADC A8p - PED' H.cal.1pr.apos_p[7] 150 50 500 +#TH1F hcaladc_A9p 'HMS Cal ADC A9p - PED' H.cal.1pr.apos_p[8] 150 50 500 +#TH1F hcaladc_A10p 'HMS Cal ADC A10p - PED' H.cal.1pr.apos_p[9] 150 50 500 +#TH1F hcaladc_A11p 'HMS Cal ADC A11p - PED' H.cal.1pr.apos_p[10] 150 50 500 +#TH1F hcaladc_A12p 'HMS Cal ADC A12p - PED' H.cal.1pr.apos_p[11] 150 50 500 +#TH1F hcaladc_A13p 'HMS Cal ADC A13p - PED' H.cal.1pr.apos_p[12] 150 50 500 +#TH1F hcaladc_B1p 'HMS Cal ADC B1p - PED' H.cal.2ta.apos_p[0] 150 50 500 +#TH1F hcaladc_B2p 'HMS Cal ADC B2p - PED' H.cal.2ta.apos_p[1] 150 50 500 +#TH1F hcaladc_B3p 'HMS Cal ADC B3p - PED' H.cal.2ta.apos_p[2] 150 50 500 +#TH1F hcaladc_B4p 'HMS Cal ADC B4p - PED' H.cal.2ta.apos_p[3] 150 50 500 +#TH1F hcaladc_B5p 'HMS Cal ADC B5p - PED' H.cal.2ta.apos_p[4] 150 50 500 +#TH1F hcaladc_B6p 'HMS Cal ADC B6p - PED' H.cal.2ta.apos_p[5] 150 50 500 +#TH1F hcaladc_B7p 'HMS Cal ADC B7p - PED' H.cal.2ta.apos_p[6] 150 50 500 +#TH1F hcaladc_B8p 'HMS Cal ADC B8p - PED' H.cal.2ta.apos_p[7] 150 50 500 +#TH1F hcaladc_B9p 'HMS Cal ADC B9p - PED' H.cal.2ta.apos_p[8] 150 50 500 +#TH1F hcaladc_B10p 'HMS Cal ADC B10p - PED' H.cal.2ta.apos_p[9] 150 50 500 +#TH1F hcaladc_B11p 'HMS Cal ADC B11p - PED' H.cal.2ta.apos_p[10] 150 50 500 +#TH1F hcaladc_B12p 'HMS Cal ADC B12p - PED' H.cal.2ta.apos_p[11] 150 50 500 +#TH1F hcaladc_B13p 'HMS Cal ADC B13p - PED' H.cal.2ta.apos_p[12] 150 50 500 + +#TH1F hcaladc_C1p 'HMS Cal ADC C1p - PED' H.cal.3ta.apos_p[0] 150 50 500 +#TH1F hcaladc_C2p 'HMS Cal ADC C2p - PED' H.cal.3ta.apos_p[1] 150 50 500 +#TH1F hcaladc_C3p 'HMS Cal ADC C3p - PED' H.cal.3ta.apos_p[2] 150 50 500 +#TH1F hcaladc_C4p 'HMS Cal ADC C4p - PED' H.cal.3ta.apos_p[3] 150 50 500 +#TH1F hcaladc_C5p 'HMS Cal ADC C5p - PED' H.cal.3ta.apos_p[4] 150 50 500 +#TH1F hcaladc_C6p 'HMS Cal ADC C6p - PED' H.cal.3ta.apos_p[5] 150 50 500 +#TH1F hcaladc_C7p 'HMS Cal ADC C7p - PED' H.cal.3ta.apos_p[6] 150 50 500 +#TH1F hcaladc_C8p 'HMS Cal ADC C8p - PED' H.cal.3ta.apos_p[7] 150 50 500 +#TH1F hcaladc_C9p 'HMS Cal ADC C9p - PED' H.cal.3ta.apos_p[8] 150 50 500 +#TH1F hcaladc_C10p 'HMS Cal ADC C10p - PED' H.cal.3ta.apos_p[9] 150 50 500 +#TH1F hcaladc_C11p 'HMS Cal ADC C11p - PED' H.cal.3ta.apos_p[10] 150 50 500 +#TH1F hcaladc_C12p 'HMS Cal ADC C12p - PED' H.cal.3ta.apos_p[11] 150 50 500 +#TH1F hcaladc_C13p 'HMS Cal ADC C13p - PED' H.cal.3ta.apos_p[12] 150 50 500 + +#TH1F hcaladc_D1p 'HMS Cal ADC D1p - PED' H.cal.4ta.apos_p[0] 150 50 500 +#TH1F hcaladc_D2p 'HMS Cal ADC D2p - PED' H.cal.4ta.apos_p[1] 150 50 500 +#TH1F hcaladc_D3p 'HMS Cal ADC D3p - PED' H.cal.4ta.apos_p[2] 150 50 500 +#TH1F hcaladc_D4p 'HMS Cal ADC D4p - PED' H.cal.4ta.apos_p[3] 150 50 500 +#TH1F hcaladc_D5p 'HMS Cal ADC D5p - PED' H.cal.4ta.apos_p[4] 150 50 500 +#TH1F hcaladc_D6p 'HMS Cal ADC D6p - PED' H.cal.4ta.apos_p[5] 150 50 500 +#TH1F hcaladc_D7p 'HMS Cal ADC D7p - PED' H.cal.4ta.apos_p[6] 150 50 500 +#TH1F hcaladc_D8p 'HMS Cal ADC D8p - PED' H.cal.4ta.apos_p[7] 150 50 500 +#TH1F hcaladc_D9p 'HMS Cal ADC D9p - PED' H.cal.4ta.apos_p[8] 150 50 500 +#TH1F hcaladc_D10p 'HMS Cal ADC D10p - PED' H.cal.4ta.apos_p[9] 150 50 500 +#TH1F hcaladc_D11p 'HMS Cal ADC D11p - PED' H.cal.4ta.apos_p[10] 150 50 500 +#TH1F hcaladc_D12p 'HMS Cal ADC D12p - PED' H.cal.4ta.apos_p[11] 150 50 500 +#TH1F hcaladc_D13p 'HMS Cal ADC D13p - PED' H.cal.4ta.apos_p[12] 150 50 500 + +#TH1F hcaladc_A1n 'HMS Cal ADC A1n - PED' H.cal.1pr.aneg_p[0] 150 50 500 +#TH1F hcaladc_A2n 'HMS Cal ADC A2n - PED' H.cal.1pr.aneg_p[1] 150 50 500 +#TH1F hcaladc_A3n 'HMS Cal ADC A3n - PED' H.cal.1pr.aneg_p[2] 150 50 500 +#TH1F hcaladc_A4n 'HMS Cal ADC A4n - PED' H.cal.1pr.aneg_p[3] 150 50 500 +#TH1F hcaladc_A5n 'HMS Cal ADC A5n - PED' H.cal.1pr.aneg_p[4] 150 50 500 +#TH1F hcaladc_A6n 'HMS Cal ADC A6n - PED' H.cal.1pr.aneg_p[5] 150 50 500 +#TH1F hcaladc_A7n 'HMS Cal ADC A7n - PED' H.cal.1pr.aneg_p[6] 150 50 500 +#TH1F hcaladc_A8n 'HMS Cal ADC A8n - PED' H.cal.1pr.aneg_p[7] 150 50 500 +#TH1F hcaladc_A9n 'HMS Cal ADC A9n - PED' H.cal.1pr.aneg_p[8] 150 50 500 +#TH1F hcaladc_A10n 'HMS Cal ADC A10n - PED' H.cal.1pr.aneg_p[9] 150 50 500 +#TH1F hcaladc_A11n 'HMS Cal ADC A11n - PED' H.cal.1pr.aneg_p[10] 150 50 500 +#TH1F hcaladc_A12n 'HMS Cal ADC A12n - PED' H.cal.1pr.aneg_p[11] 150 50 500 +#TH1F hcaladc_A13n 'HMS Cal ADC A13n - PED' H.cal.1pr.aneg_p[12] 150 50 500 + +#TH1F hcaladc_B1n 'HMS Cal ADC B1n - PED' H.cal.2ta.aneg_p[0] 150 50 500 +#TH1F hcaladc_B2n 'HMS Cal ADC B2n - PED' H.cal.2ta.aneg_p[1] 150 50 500 +#TH1F hcaladc_B3n 'HMS Cal ADC B3n - PED' H.cal.2ta.aneg_p[2] 150 50 500 +#TH1F hcaladc_B4n 'HMS Cal ADC B4n - PED' H.cal.2ta.aneg_p[3] 150 50 500 +#TH1F hcaladc_B5n 'HMS Cal ADC B5n - PED' H.cal.2ta.aneg_p[4] 150 50 500 +#TH1F hcaladc_B6n 'HMS Cal ADC B6n - PED' H.cal.2ta.aneg_p[5] 150 50 500 +#TH1F hcaladc_B7n 'HMS Cal ADC B7n - PED' H.cal.2ta.aneg_p[6] 150 50 500 +#TH1F hcaladc_B8n 'HMS Cal ADC B8n - PED' H.cal.2ta.aneg_p[7] 150 50 500 +#TH1F hcaladc_B9n 'HMS Cal ADC B9n - PED' H.cal.2ta.aneg_p[8] 150 50 500 +#TH1F hcaladc_B10n 'HMS Cal ADC B10n - PED' H.cal.2ta.aneg_p[9] 150 50 500 +#TH1F hcaladc_B11n 'HMS Cal ADC B11n - PED' H.cal.2ta.aneg_p[10] 150 50 500 +#TH1F hcaladc_B12n 'HMS Cal ADC B12n - PED' H.cal.2ta.aneg_p[11] 150 50 500 +#TH1F hcaladc_B13n 'HMS Cal ADC B13n - PED' H.cal.2ta.aneg_p[12] 150 50 500 # Can we use variables for the constants. In CTP we used hdc_nwire(i) # diff --git a/src/THcShower.cxx b/src/THcShower.cxx index 36fc4a52fe7fd310cd1c6c1757abb049eaa09b35..167807d0d7cc0591afe463192b1830401cd1b39b 100644 --- a/src/THcShower.cxx +++ b/src/THcShower.cxx @@ -410,6 +410,12 @@ Int_t THcShower::ReadDatabase( const TDatime& date ) cout << endl; }; + // Corrdiante corrected track energies per plane + + fTREpl_cor = new Double_t [fNLayers]; + fTREpl_pos_cor = new Double_t [fNLayers]; + fTREpl_neg_cor = new Double_t [fNLayers]; + // Origin of the calorimeter, at tha middle of the face of the detector, // or at the middle of the front plane of the 1-st layer. // @@ -462,8 +468,8 @@ Int_t THcShower::DefineVariables( EMode mode ) // { "asum_p", "Sum of ped-subtracted ADCs", "fAsum_p" }, // { "asum_c", "Sum of calibrated ADCs", "fAsum_c" }, { "nclust", "Number of clusters", "fNclust" }, - { "emax", "Energy (MeV) of largest cluster", "fE" }, - { "eprmax", "Preshower Energy (MeV) of largest cluster", "fEpr" }, + { "emax", "Energy of largest cluster", "fE" }, + { "eprmax", "Preshower Energy of largest cluster", "fEpr" }, { "xmax", "x-position (cm) of largest cluster", "fX" }, // { "z", "z-position (cm) of largest cluster", "fZ" }, { "mult", "Multiplicity of largest cluster", "fMult" }, @@ -473,10 +479,28 @@ Int_t THcShower::DefineVariables( EMode mode ) { "try", "track y-position in det plane (1st track)", "fTRY" }, { "tre", "track energy in the calorimeter (1st track)", "fTRE" }, { "trepr", "track energy in the preshower (1st track)", "fTREpr" }, + { "trecor", "Y-corrected track Edep (1st track)", "fTRE_cor" }, + { "treprcor", "Y-corrected track Epr (1st track)", "fTREpr_cor" }, + { "treplcor", "Y-corrected track Edep for planes", "fTREpl_cor" }, { 0 } }; return DefineVarsFromList( vars, mode ); + /* + for (Int_t i=0; i<fNLayers; i++) { + RVarDef vars[] = { + { Form("treplcor%d",i+1), + Form("Y-corrected track Edep for plane %d",i+1), + Form("fTREpl_cor[%d]",i) }, + { 0 } + }; + return DefineVarsFromList( vars, mode ); + }; + */ + + //{ "treplposcor","Y-corrected track pos. Edep per plane", "fTREpl_pos_cor"}, + //{ "treplnegcor","Y-corrected track neg. Edep per plane", "fTREpl_neg_cor"}, + return kOK; } @@ -530,8 +554,15 @@ void THcShower::Clear(Option_t* opt) fX = -75.; //out of acceptance fTRX = -75.; //out of acceptance fTRY = -40.; //out of acceptance - fTRE = -1.; - fTREpr = -1.; + fTRE = -0.; + fTREpr = -0.; + fTRE_cor = -0.; + fTREpr_cor = -0.; + for(Int_t ip=0;ip<fNLayers;ip++) { + fTREpl_cor[ip] = -0.; + fTREpl_pos_cor[ip] = -0.; + fTREpl_neg_cor[ip] = -0.; + } } //_____________________________________________________________________________ @@ -738,12 +769,12 @@ Int_t THcShower::CoarseProcess( TClonesArray& tracks) cout << "Number of reconstructed tracks = " << Ntracks << endl; } - for (Int_t i=0; i<Ntracks; i++) { + for (Int_t itrk=0; itrk<Ntracks; itrk++) { - THaTrack* theTrack = static_cast<THaTrack*>( tracks[i] ); + THaTrack* theTrack = static_cast<THaTrack*>( tracks[itrk] ); if (fdbg_tracks_cal) { - cout << " Track " << i << ": " + cout << " Track " << itrk << ": " << " X = " << theTrack->GetX() << " Y = " << theTrack->GetY() << " Theta = " << theTrack->GetTheta() @@ -751,22 +782,67 @@ Int_t THcShower::CoarseProcess( TClonesArray& tracks) << endl; } - Double_t Xtr; - Double_t Ytr; + Double_t Xtr = -75.; + Double_t Ytr = -40.; Int_t mclust = MatchCluster(theTrack, ClusterList, Xtr, Ytr); - if (i==0) { + if (itrk==0) { + fTRX = Xtr; fTRY = Ytr; + if (mclust >= 0) { + THcShowerCluster* cluster = (*ClusterList).ListedCluster(mclust); fTRE = (*cluster).clE(); fTREpr = (*cluster).clEpr(); - } - } - } + fTRE_cor = 0.; + + for (Int_t ip=0; ip<fNLayers; ip++) { + + Float_t corpos = 1.; + Float_t corneg = 1.; + if (ip < fNegCols) { + corpos = Ycor(Ytr,0); + corneg = Ycor(Ytr,1); + } + else { + corpos = Ycor(Ytr); + corneg = 0.; + } + + if (fdbg_tracks_cal) { + cout << " Plane " << ip << " Ytr = " << Ytr + << " corpos = " << corpos + << " corneg = " << corneg << endl; + } + + fTREpl_pos_cor[ip] = (*cluster).clEplane(ip,0) * corpos; + fTREpl_neg_cor[ip] = (*cluster).clEplane(ip,1) * corneg;; + fTREpl_cor[ip] = fTREpl_pos_cor[ip] + fTREpl_neg_cor[ip]; + + if (fdbg_tracks_cal) { + cout << " fTREpl_pos_cor = " << fTREpl_pos_cor[ip] + << " fTREpl_neg_cor = " << fTREpl_neg_cor[ip] << endl; + } + + fTRE_cor += fTREpl_cor[ip]; + + } //over planes + + fTREpr_cor = fTREpl_cor[0]; + + if (fdbg_tracks_cal) + cout << " fTREpr = " << fTREpr + << " fTREpr_cor = " << fTREpr_cor << endl; + + } //mclust>=0 + + } //itrk==0 + + } //over tracks if (fdbg_tracks_cal) cout << "1st track cluster: fTRX = " << fTRX << " fTRY = " << fTRY diff --git a/src/THcShower.h b/src/THcShower.h index 28b710c43fe96aa5f28be7a8cf7d55e457f0fcb6..0452731cee3a76e65b4c7bf2034b8719b06b0164 100644 --- a/src/THcShower.h +++ b/src/THcShower.h @@ -12,6 +12,7 @@ #include "THcHitList.h" #include "THcShowerPlane.h" #include "THcShowerCluster.h" +#include "TMath.h" class THaScCalib; @@ -88,6 +89,27 @@ public: return fNLayers; } + //Coordinate correction for single PMT modules. + //PMT attached at right (negative) side. + + Float_t Ycor(Double_t y) { + return TMath::Exp(y/fAcor)/(1. + y*y/fBcor); + // return TMath::Exp(-y/fAcor)/(1. + y*y/fBcor); + } + + //Coordinate correction for double PMT modules. + // + + Float_t Ycor(Double_t y, Int_t side) { + if (side!=0&&side!=1) { + cout << "THcShower::Ycor : wrong side " << side << endl; + return 0.; + } + Int_t sign = 1 - 2*side; + // Int_t sign = 2*side - 1; + return (fCcor + sign*y)/(fCcor + sign*y/fDcor); + } + THcShower(); // for ROOT I/O protected: @@ -106,8 +128,8 @@ protected: Int_t fNhits; // Total number of hits Int_t fNclust; // Number of clusters - Double_t fE; // Energy (MeV) of the largest cluster - Double_t fEpr; // Preshower Energy (MeV) of the largest cluster + Double_t fE; // Energy of the largest cluster + Double_t fEpr; // Preshower Energy of the largest cluster Double_t fX; // x-position (cm) of the largest cluster Double_t fZ; // z-position (cm) of the largest cluster Int_t fMult; // # of hits in the largest cluster @@ -115,8 +137,13 @@ protected: // Double_t* fEblk; // Energies of blocks in main cluster Double_t fTRX; // track x-position in det plane (1st track) Double_t fTRY; // track y-position in det plane (1st track) - Double_t fTRE; // Energy (MeV) of the cluster associated to track - Double_t fTREpr; // Preshower Energy (MeV) of the track's cluster + Double_t fTRE; // Energy of the cluster associated to track + Double_t fTREpr; // Preshower Energy of the track's cluster + Double_t fTRE_cor; // Y-corrected track total energy + Double_t fTREpr_cor; // Y-corrected track Preshower energy + Double_t* fTREpl_cor; // Y-corrected track energy per plane + Double_t* fTREpl_pos_cor; // Y-corrected track positive energy per plane + Double_t* fTREpl_neg_cor; // Y-corrected track negative energy per plane // Potential Hall C parameters. Mostly here for demonstration diff --git a/src/THcShowerCluster.h b/src/THcShowerCluster.h index 9f0ff506d480946f2ddb22f4503f808740073a05..5705abbf024b602660f1ddeea88d81fec664cea5 100644 --- a/src/THcShowerCluster.h +++ b/src/THcShowerCluster.h @@ -109,7 +109,7 @@ class THcShowerCluster : THcShowerHitList { Double_t clEplane(Int_t iplane, Int_t side) { - if (side!=0&&side!=1||side!=2) { + if (side!=0&&side!=1&&side!=2) { cout << "*** Wrong Side in clEplane:" << side << " ***" << endl; return -1; } diff --git a/src/THcShowerPlane.cxx b/src/THcShowerPlane.cxx index b90f01d05e3aa9413d07273f9fa33120fb5339fb..bdca666c4e1d3478dbc6af4551430f6c56c217a9 100644 --- a/src/THcShowerPlane.cxx +++ b/src/THcShowerPlane.cxx @@ -207,7 +207,7 @@ Int_t THcShowerPlane::DefineVariables( EMode mode ) {"aneg_p", "Ped-subtracted Negative ADC Amplitudes", "fA_Neg_p"}, {"epos", "Energy Depositions from Positive Side PMTs", "fEpos"}, {"eneg", "Energy Depositions from Negative Side PMTs", "fEneg"}, - {"emean", "Mean Energy Depositions", "fEMean"}, + {"emean", "Mean Energy Depositions", "fEmean"}, {"eplane", "Energy Deposition per plane", "fEplane"}, {"eplane_pos", "Energy Deposition per plane from pos. PMTs","fEplane_pos"}, {"eplane_neg", "Energy Deposition per plane from neg. PMTs","fEplane_neg"},