From 118c5e2678a71dc5588855d20a36d482080d02e4 Mon Sep 17 00:00:00 2001
From: hallc-online <hallc-online@jlab.org>
Date: Tue, 21 Mar 2017 09:37:58 -0400
Subject: [PATCH] Add E(Tail)%E(PR) 2-dim. plot for the HMS calorimeter.

---
 CALIBRATION/hms_cal_calib/THcShTrack.h     | 41 ++++++++++++++++++++++
 CALIBRATION/hms_cal_calib/THcShowerCalib.h |  6 +++-
 CALIBRATION/hms_cal_calib/hcal_calib.cpp   |  5 +++
 3 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/CALIBRATION/hms_cal_calib/THcShTrack.h b/CALIBRATION/hms_cal_calib/THcShTrack.h
index ffd11b71..f5c6d20d 100644
--- a/CALIBRATION/hms_cal_calib/THcShTrack.h
+++ b/CALIBRATION/hms_cal_calib/THcShTrack.h
@@ -50,6 +50,8 @@ class THcShTrack {
   void SetEs(Double_t* alpha);
 
   Double_t Enorm();
+  Double_t EPRnorm();
+  Double_t ETAnorm();
 
   Double_t GetP() {return P*1000.;}      //MeV
 
@@ -210,6 +212,45 @@ Double_t THcShTrack::Enorm() {
 
 //------------------------------------------------------------------------------
 
+Double_t THcShTrack::EPRnorm() {
+
+  // Normalized to the track momentum energy depostion in Preshower.
+
+  Double_t sum = 0;
+
+  for (THcShHitIt iter = Hits.begin(); iter != Hits.end(); iter++) {
+    UInt_t nblk = (*iter)->GetBlkNumber();
+    Int_t ncol=(nblk-1)/fNrows+1;
+    if (ncol==1) {
+      sum += (*iter)->GetEpos();
+      sum += (*iter)->GetEneg();
+    }
+  }
+
+  return sum/P/1000.;         //Momentum in MeV.
+}
+//------------------------------------------------------------------------------
+
+Double_t THcShTrack::ETAnorm() {
+
+  // Normalized to the track momentum energy depostion in Preshower.
+
+  Double_t sum = 0;
+
+  for (THcShHitIt iter = Hits.begin(); iter != Hits.end(); iter++) {
+    UInt_t nblk = (*iter)->GetBlkNumber();
+    Int_t ncol=(nblk-1)/fNrows+1;
+    if (ncol!=1) {
+      sum += (*iter)->GetEpos();
+      sum += (*iter)->GetEneg();
+    }
+  }
+
+  return sum/P/1000.;         //Momentum in MeV.
+}
+
+//------------------------------------------------------------------------------
+
 //Coordinate correction for single PMT modules.
 //PMT attached at right (positive) side.
 
diff --git a/CALIBRATION/hms_cal_calib/THcShowerCalib.h b/CALIBRATION/hms_cal_calib/THcShowerCalib.h
index 654f0c49..b9606624 100644
--- a/CALIBRATION/hms_cal_calib/THcShowerCalib.h
+++ b/CALIBRATION/hms_cal_calib/THcShowerCalib.h
@@ -60,6 +60,7 @@ class THcShowerCalib {
   TH1F* hEuncSel;
   TH1F* hEcal;
   TH2F* hDPvsEcal;
+  TH2F* hETAvsEPR;
 
  private:
   ////  Int_t fRunNumber;
@@ -155,6 +156,9 @@ void THcShowerCalib::Init() {
   hEcal = new TH1F("hEcal", "Edep/P calibrated", 150, 0., 1.5);
   hDPvsEcal = new TH2F("hDPvsEcal", "#DeltaP versus Edep/P ",
 		       150,0.,1.5, 250,-12.5,12.5);
+  hETAvsEPR = new TH2F("hETAvsEPR", "E_{TA} versus E_{PR}",
+		       300,0.,1.5, 300,0.,1.5);
+
 
   // Initialize qumulative quantities.
   
@@ -689,7 +693,7 @@ void THcShowerCalib::FillHEcal() {
       ////      fTree->SetBranchAddress("H.tr.tg_dp",&delta);
       hDPvsEcal->Fill(Enorm,delta,1.);
 
-      //      hESHvsEPR->Fill(trk.EPRnorm(), trk.ESHnorm());
+      hETAvsEPR->Fill(trk.EPRnorm(), trk.ETAnorm());
 
       output << Enorm*P/1000. << " " << P/1000. << " " << delta << " "
       	     << trk.GetX() << " " << trk.GetY() << endl;
diff --git a/CALIBRATION/hms_cal_calib/hcal_calib.cpp b/CALIBRATION/hms_cal_calib/hcal_calib.cpp
index b0747461..f789bae4 100644
--- a/CALIBRATION/hms_cal_calib/hcal_calib.cpp
+++ b/CALIBRATION/hms_cal_calib/hcal_calib.cpp
@@ -40,6 +40,11 @@ void hcal_calib(string RunNumber) {
  theShowerCalib.hEuncSel->SetFillColor(kGreen);
  theShowerCalib.hEuncSel->DrawCopy("same");
 
+ // E(Tail)%E(Preshower).
+
+ Canvas->cd(2);
+ theShowerCalib.hETAvsEPR->Draw();
+
  // Normalized energy deposition after calibration.
 
  Canvas->cd(3);
-- 
GitLab