From dee3e528209e92aa89613ebee9bbba34bdcfc55d Mon Sep 17 00:00:00 2001
From: Yero1990 <cyero002@fiu.edu>
Date: Thu, 28 Jun 2018 17:56:31 -0400
Subject: [PATCH] added multiplicity variable to THcShowerPlane.cxx/.h, and
 fixed multiplicity defined in THcCherenkov.cxx (#372)

---
 src/THcCherenkov.cxx   |  7 ++++++-
 src/THcShowerPlane.cxx | 21 +++++++++++++++++++--
 src/THcShowerPlane.h   |  3 +++
 3 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/src/THcCherenkov.cxx b/src/THcCherenkov.cxx
index 9bfe107..b1042b4 100644
--- a/src/THcCherenkov.cxx
+++ b/src/THcCherenkov.cxx
@@ -450,11 +450,16 @@ Int_t THcCherenkov::CoarseProcess( TClonesArray&  )
      Bool_t   errorFlag    = ((THcSignalHit*) fAdcErrorFlag->ConstructedAt(ielem))->GetData();
     Bool_t   pulseTimeCut = adctdcdiffTime > fAdcTimeWindowMin[npmt] && adctdcdiffTime < fAdcTimeWindowMax[npmt];
 
+    
+    if (!errorFlag)
+      {
+	fGoodAdcMult.at(npmt) += 1;
+      }
+
     // By default, the last hit within the timing cut will be considered "good"
     if (!errorFlag && pulseTimeCut) {
       fGoodAdcPed.at(npmt)         = pulsePed;
       fGoodAdcHitUsed.at(npmt)         = ielem+1;
-      fGoodAdcMult.at(npmt)         =frAdcPulseInt->GetEntries() ;
       fGoodAdcPulseInt.at(npmt)    = pulseInt;
       fGoodAdcPulseIntRaw.at(npmt) = pulseIntRaw;
       fGoodAdcPulseAmp.at(npmt)    = pulseAmp;
diff --git a/src/THcShowerPlane.cxx b/src/THcShowerPlane.cxx
index 568a7f3..972f55b 100644
--- a/src/THcShowerPlane.cxx
+++ b/src/THcShowerPlane.cxx
@@ -267,6 +267,9 @@ Int_t THcShowerPlane::ReadDatabase( const TDatime& date )
   fGoodNegAdcPulseAmp         = vector<Double_t> (fNelem, 0.0);
   fGoodNegAdcPulseTime        = vector<Double_t> (fNelem, 0.0);
   fGoodNegAdcTdcDiffTime        = vector<Double_t> (fNelem, 0.0);
+  
+  fGoodPosAdcMult         = vector<Double_t> (fNelem, 0.0);
+  fGoodNegAdcMult         = vector<Double_t> (fNelem, 0.0);
 
   // Energy depositions per block (not corrected for track coordinate)
 
@@ -390,8 +393,9 @@ Int_t THcShowerPlane::DefineVariables( EMode mode )
     {"goodNegAdcPulseInt", "Good Negative ADC integrals",           "fGoodNegAdcPulseInt"},
     {"goodNegAdcPulseAmp", "Good Negative ADC amplitudes",          "fGoodNegAdcPulseAmp"},
     {"goodNegAdcPulseTime","Good Negative ADC times",               "fGoodNegAdcPulseTime"},
-   {"goodNegAdcTdcDiffTime","Good Negative Hodo Start time-ADC times",               "fGoodNegAdcTdcDiffTime"},
-
+    {"goodNegAdcTdcDiffTime","Good Negative Hodo Start time-ADC times",               "fGoodNegAdcTdcDiffTime"},
+    {"goodPosAdcMult",          "Good Positive ADC Multiplicity",           "fGoodPosAdcMult"},
+    {"goodNegAdcMult",          "Good Negative ADC Multiplicity",           "fGoodNegAdcMult"},
     {"epos",       "Energy Depositions from Positive Side PMTs",    "fEpos"},
     {"eneg",       "Energy Depositions from Negative Side PMTs",    "fEneg"},
     {"emean",      "Mean Energy Depositions",                       "fEmean"},
@@ -443,6 +447,7 @@ void THcShowerPlane::Clear( Option_t* )
     fGoodPosAdcPulseAmp.at(ielem)         = 0.0;
     fGoodPosAdcPulseTime.at(ielem)        = kBig;
     fGoodPosAdcTdcDiffTime.at(ielem)        = kBig;
+    fGoodPosAdcMult.at(ielem)               = 0.0;
     fEpos.at(ielem)                       = 0.0;
     fNumGoodPosAdcHits.at(ielem)          = 0.0;
   }
@@ -454,6 +459,7 @@ void THcShowerPlane::Clear( Option_t* )
     fGoodNegAdcPulseAmp.at(ielem)         = 0.0;
     fGoodNegAdcPulseTime.at(ielem)        = kBig;
     fGoodNegAdcTdcDiffTime.at(ielem)        = kBig;
+    fGoodNegAdcMult.at(ielem)               = 0.0;
     fEneg.at(ielem)                       = 0.0;
     fNumGoodNegAdcHits.at(ielem)          = 0.0;
   }
@@ -754,6 +760,11 @@ void THcShowerPlane::FillADC_DynamicPedestal()
     Double_t threshold    = ((THcSignalHit*) frNegAdcThreshold->ConstructedAt(ielem))->GetData();
     Bool_t   errorflag    = ((THcSignalHit*) frNegAdcErrorFlag->ConstructedAt(ielem))->GetData();
     Bool_t   pulseTimeCut = (adctdcdiffTime > NegAdcTimeWindowMin[nblock]) && (adctdcdiffTime < NegAdcTimeWindowMax[nblock]);
+    
+    if (!errorflag)
+      {
+	fGoodNegAdcMult.at(npad) += 1;
+      }
     if (!errorflag && pulseTimeCut) {
       fGoodNegAdcPulseIntRaw.at(npad) =pulseIntRaw;
 
@@ -789,6 +800,12 @@ void THcShowerPlane::FillADC_DynamicPedestal()
      Double_t adctdcdiffTime = StartTime-pulseTime;
    Bool_t   errorflag    = ((THcSignalHit*) frPosAdcErrorFlag->ConstructedAt(ielem))->GetData();
     Bool_t   pulseTimeCut = (adctdcdiffTime > PosAdcTimeWindowMin[nblock]) &&  (adctdcdiffTime < PosAdcTimeWindowMax[nblock]);
+       
+    if (!errorflag)
+      {
+	fGoodPosAdcMult.at(npad) += 1;
+      }
+    
     if (!errorflag && pulseTimeCut) {
       fGoodPosAdcPulseIntRaw.at(npad) = pulseIntRaw;
 
diff --git a/src/THcShowerPlane.h b/src/THcShowerPlane.h
index 29a06e6..e4b1bb1 100644
--- a/src/THcShowerPlane.h
+++ b/src/THcShowerPlane.h
@@ -164,6 +164,9 @@ protected:
 
   vector<Double_t>      fGoodPosAdcPulseIntRaw;
   vector<Double_t>      fGoodNegAdcPulseIntRaw;
+  
+  vector<Double_t> fGoodPosAdcMult;
+  vector<Double_t> fGoodNegAdcMult;
 
 
   vector<Double_t>      fEpos;        // [fNelem] energy depositions seen by positive PMTs
-- 
GitLab