From 6ca2daacf3ba34fa8828c0d196ec48b22fb2da57 Mon Sep 17 00:00:00 2001
From: Vardan Tadevosyan <tadevosn@jlab.org>
Date: Tue, 24 Nov 2015 17:17:37 +0400
Subject: [PATCH] Correct THcShowerArray pedestal calculations.

---
 src/THcShowerArray.cxx | 33 +++++++++++++++++++++++----------
 src/THcShowerArray.h   |  1 -
 2 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/src/THcShowerArray.cxx b/src/THcShowerArray.cxx
index fb2f1c3..5d5d9a9 100644
--- a/src/THcShowerArray.cxx
+++ b/src/THcShowerArray.cxx
@@ -101,7 +101,6 @@ Int_t THcShowerArray::ReadDatabase( const TDatime& date )
   // Here read the 2-D arrays of pedestals, gains, etc.
 
   // Pedestal limits per channel.
-
   fPedLimit = new Int_t [fNelem];
 
   THcShower* fParent;
@@ -136,6 +135,15 @@ Int_t THcShowerArray::ReadDatabase( const TDatime& date )
 
     cout << "  Layer #" << fLayerNum << ", number of elements " << fNelem
 	 << endl;
+    cout << "  Columns " << fNColumns << ", Rows " << fNRows << endl;
+
+    cout << "  Using FADC " << fUsingFADC << endl;
+    if (fUsingFADC) {
+      cout << "  FADC pedestal sample low = " << fPedSampLow << ",  high = "
+	   << fPedSampHigh << endl;
+      cout << "  FADC data sample low = " << fDataSampLow << ",  high = "
+	   << fDataSampHigh << endl;
+    }
 
     //    cout << "  Origin of Layer at  X = " << fOrigin.X()
     //	 << "  Y = " << fOrigin.Y() << "  Z = " << fOrigin.Z() << endl;
@@ -322,12 +330,17 @@ Int_t THcShowerArray::AccumulatePedestals(TClonesArray* rawhits, Int_t nexthit)
     THcRawShowerHit* hit = (THcRawShowerHit *) rawhits->At(ihit);
 
     // OK for hit list sorted by layer.
-    if(hit->fPlane > fLayerNum) {
-      break;
-    }
+    //    if(hit->fPlane > fLayerNum) {
+    //      break;
+    //    }
 
     Int_t element = hit->fCounter - 1; // Should check if in range
-    Int_t adc = hit->GetData(0);
+
+    Int_t adc = fUsingFADC ?
+      hit->GetData(0,fPedSampLow,fPedSampHigh,fDataSampLow,fDataSampHigh)
+      :
+      hit->GetData(0);
+
 
     if(adc <= fPedLimit[element]) {
       fPedSum[element] += adc;
@@ -355,15 +368,15 @@ Int_t THcShowerArray::AccumulatePedestals(TClonesArray* rawhits, Int_t nexthit)
 
       THcRawShowerHit* hit = (THcRawShowerHit *) rawhits->At(ih);
 
-      // OK for hit list sorted by layer.
-      if(hit->fPlane > fLayerNum) {
-	break;
-      }
+      Int_t adc = fUsingFADC ?
+	hit->GetData(0,fPedSampLow,fPedSampHigh,fDataSampLow,fDataSampHigh)
+	:
+	hit->GetData(0);
 
       cout << "  hit " << ih << ":"
 	   << "  plane =  " << hit->fPlane
 	   << "  counter = " << hit->fCounter
-	   << "  ADC = " << hit->GetData(0)
+	   << "  ADC = " << adc
 	   << endl;
     }
 
diff --git a/src/THcShowerArray.h b/src/THcShowerArray.h
index 372c770..d3ca918 100644
--- a/src/THcShowerArray.h
+++ b/src/THcShowerArray.h
@@ -97,7 +97,6 @@ protected:
 
   virtual Int_t  ReadDatabase( const TDatime& date );
   virtual Int_t  DefineVariables( EMode mode = kDefine );
-  //virtual void  InitializePedestals( );
   ClassDef(THcShowerArray,0); // Fly;s Eye calorimeter array
 };
 #endif
-- 
GitLab