From d8534e4c331620f4d767b6ddac0a3b9024617167 Mon Sep 17 00:00:00 2001
From: "Stephen A. Wood" <saw@jlab.org>
Date: Wed, 3 Dec 2014 14:54:02 -0500
Subject: [PATCH] Move THcShowerCluster.h and THcShowerHit.h into THcShower.h  
 This is because the classes in these header files are only   used by
 THcShower.

---
 src/THcShower.cxx      |   2 +-
 src/THcShower.h        | 337 ++++++++++++++++++++++++++++++++++++++++-
 src/THcShowerCluster.h | 244 -----------------------------
 src/THcShowerHit.h     | 100 ------------
 4 files changed, 337 insertions(+), 346 deletions(-)
 delete mode 100644 src/THcShowerCluster.h
 delete mode 100644 src/THcShowerHit.h

diff --git a/src/THcShower.cxx b/src/THcShower.cxx
index 1fe031c..4a7b2a4 100644
--- a/src/THcShower.cxx
+++ b/src/THcShower.cxx
@@ -10,7 +10,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "THcShower.h"
-#include "THcShowerCluster.h"
+//#include "THcShowerCluster.h"
 #include "THaEvData.h"
 #include "THaDetMap.h"
 #include "THcDetectorMap.h"
diff --git a/src/THcShower.h b/src/THcShower.h
index e6a8391..4581287 100644
--- a/src/THcShower.h
+++ b/src/THcShower.h
@@ -11,9 +11,344 @@
 #include "THaNonTrackingDetector.h"
 #include "THcHitList.h"
 #include "THcShowerPlane.h"
-#include "THcShowerCluster.h"
 #include "TMath.h"
 
+
+// HMS calorimeter hits, version 2
+
+#include <vector>
+#include <iterator>
+#include <iostream>
+#include <memory>
+
+using namespace std;
+
+class THcShowerHit {       //HMS calorimeter hit class
+
+private:
+  Int_t fCol, fRow;        //hit colomn and row
+  Double_t fX, fZ;         //hit X (vert.) and Z (along spect.axis) coordinates
+  Double_t fE;             //hit mean energy deposition
+  Double_t fEpos;          //hit energy deposition from positive PMT
+  Double_t fEneg;          //hit energy deposition from negative PMT
+  
+public:
+
+  THcShowerHit() {         //default constructor
+    fCol=fRow=0;
+    fX=fZ=0.;
+    fE=0.;
+    fEpos=0.;
+    fEneg=0.;
+  }
+
+  THcShowerHit(Int_t hRow, Int_t hCol, Double_t hX, Double_t hZ,
+	       Double_t hE, Double_t hEpos, Double_t hEneg) {
+    fRow=hRow;
+    fCol=hCol;
+    fX=hX;
+    fZ=hZ;
+    fE=hE;
+    fEpos=hEpos;
+    fEneg=hEneg;
+  }
+
+  ~THcShowerHit() {
+    //    cout << " hit destructed" << endl;
+  }
+
+  Int_t hitColumn() {
+    return fCol;
+  }
+
+  Int_t hitRow() {
+    return fRow;
+  }
+
+  Double_t hitX() {
+    return fX;
+  }
+
+  Double_t hitZ() {
+    return fZ;
+  }
+
+  Double_t hitE() {
+    return fE;
+  }
+
+  Double_t hitEpos() {
+    return fEpos;
+  }
+
+  Double_t hitEneg() {
+    return fEneg;
+  }
+
+  // Decide if a hit is neighbouring the current hit.
+  // Two hits are neighbours if share a side or a corner.
+  //
+  bool isNeighbour(THcShowerHit* hit1) {      //Is hit1 neighbouring this hit?
+    Int_t dRow = fRow-(*hit1).fRow;
+    Int_t dCol = fCol-(*hit1).fCol;
+    return TMath::Abs(dRow)<2 && TMath::Abs(dCol)<2;
+  }
+
+  //Print out hit information
+  //
+  void show() {
+    cout << "row=" << fRow << "  column=" << fCol 
+	 << "  x=" << fX << "  z=" << fZ 
+	 << "  E=" << fE << "  Epos=" << fEpos << "  Eneg=" << fEneg << endl;
+  }
+
+};
+
+
+// Container (collection) of hits and its iterator.
+//
+typedef vector<THcShowerHit*> THcShowerHitList;
+typedef THcShowerHitList::iterator THcShowerHitIt;
+
+
+
+//HMS calorimeter hit cluster
+//
+class THcShowerCluster : THcShowerHitList {
+
+ public:
+
+  THcShowerCluster() {
+    //    cout << "Dummy THcShowerCluster object created" << endl;
+  }
+
+  ~THcShowerCluster() {
+    for (THcShowerHitIt i = THcShowerHitList::begin();
+    	 i != THcShowerHitList::end(); ++i) {
+      delete *i;
+      *i = 0;
+    }
+  }
+
+  // Add a hit to the cluster hit list
+  //
+  void grow(THcShowerHit* hit) {
+    THcShowerHitList::push_back(hit);
+  }
+
+  //Pointer to the hit #i in the cluster hit list
+  //
+  THcShowerHit* ClusteredHit(UInt_t i) {
+    return * (THcShowerHitList::begin()+i);
+  }
+
+  //Print out a hit in the cluster
+  //
+  void showHit(UInt_t num) {
+    (*(THcShowerHitList::begin()+num))->show();
+  }
+
+  // X coordinate of center of gravity of cluster,
+  // calculated as hit energy weighted average.
+  // Put X out of the calorimeter (-75 cm), if there is no energy deposition
+  // in the cluster.
+  //
+  Double_t clX() {
+    Double_t x_sum=0.;
+    Double_t Etot=0.;
+    for (THcShowerHitIt it=THcShowerHitList::begin();
+	 it!=THcShowerHitList::end(); ++it) {
+      x_sum += (*it)->hitX() * (*it)->hitE();
+      Etot += (*it)->hitE();
+    }
+    //    cout << "x_sum=" << x_sum << "  Etot=" << Etot << endl;
+    return (Etot != 0. ? x_sum/Etot : -75.);
+  }
+
+  // Z coordinate of center of gravity of cluster,
+  // calculated as a hit energy weighted average.
+  // Put Z out of the calorimeter (0 cm), if there is no energy deposition
+  // in the cluster.
+  //
+  Double_t clZ() {
+    Double_t z_sum=0.;
+    Double_t Etot=0.;
+    for (THcShowerHitIt it=THcShowerHitList::begin();
+	 it!=THcShowerHitList::end(); ++it) {
+      z_sum += (*it)->hitZ() * (*it)->hitE();
+      Etot += (*it)->hitE();
+    }
+    //    cout << "z_sum=" << z_sum << "  Etot=" << Etot << endl;
+    return (Etot != 0. ? z_sum/Etot : 0.);
+  }
+
+  //Energy depostion in a cluster
+  //
+  Double_t clE() {
+    //    cout << "In ECl:" << endl;
+    Double_t Etot=0.;
+    for (THcShowerHitIt it=THcShowerHitList::begin();
+	 it!=THcShowerHitList::end(); ++it) {
+      Etot += (*it)->hitE();
+    }
+    return Etot;
+  }
+
+  //Energy deposition in the Preshower (1st plane) for a cluster
+  //
+  Double_t clEpr() {
+    Double_t Epr=0.;
+    for (THcShowerHitIt it=THcShowerHitList::begin();
+	 it!=THcShowerHitList::end(); ++it) {
+      if ((*it)->hitColumn() == 0) {
+	Epr += (*it)->hitE();
+      }
+    }
+    return Epr;
+  }
+
+  //Cluster energy deposition in plane iplane=0,..,3:
+  // side=0 -- from positive PMTs only;
+  // side=1 -- from negative PMTs only;
+  // side=2 -- from postive and negative PMTs.
+  //
+
+  Double_t clEplane(Int_t iplane, Int_t side) {
+
+    if (side!=0&&side!=1&&side!=2) {
+      cout << "*** Wrong Side in clEplane:" << side << " ***" << endl;
+      return -1;
+    }
+
+    Double_t Eplane=0.;
+    for (THcShowerHitIt it=THcShowerHitList::begin();
+	 it!=THcShowerHitList::end(); ++it) {
+
+      if ((*it)->hitColumn() == iplane) 
+
+	switch (side) {
+	case 0 : Eplane += (*it)->hitEpos();
+	  break;
+	case 1 : Eplane += (*it)->hitEneg();
+	  break;
+	case 2 : Eplane += (*it)->hitE();
+	  break;
+	default : ;
+	}
+
+    }
+
+    return Eplane;
+  }
+
+
+  //Cluster size (number of hits in the cluster).
+  //
+  UInt_t clSize() {
+    return THcShowerHitList::size();
+  }
+
+};
+
+//-----------------------------------------------------------------------------
+
+//Alias for container of clusters and for its iterator
+//
+typedef vector<THcShowerCluster*> THcShClusterList;
+typedef THcShClusterList::iterator THcShClusterIt;
+
+//List of clusters
+//
+class THcShowerClusterList : private THcShClusterList {
+
+ public:
+
+  THcShowerClusterList() {
+    //    cout << "Dummy THcShowerClusterList object created" << endl;
+  }
+
+  ~THcShowerClusterList() {
+    purge();
+  }
+
+  // Purge cluster list
+  //
+  void purge() {
+    for (THcShClusterIt i = THcShClusterList::begin();
+	 i != THcShClusterList::end(); ++i) {
+      delete *i;
+      *i = 0;
+    }
+    THcShClusterList::clear();
+  }
+
+  //Put a cluster in the cluster list
+  //
+  void grow(THcShowerCluster* cluster) {
+    THcShClusterList::push_back(cluster);
+  }
+
+  //Pointer to the cluster #i in the cluster list
+  //
+  THcShowerCluster* ListedCluster(UInt_t i) {
+    return *(THcShClusterList::begin()+i);
+  }
+
+  //Cluster list size.
+  //
+  UInt_t NbClusters() {
+    return THcShClusterList::size();
+  }
+
+  //____________________________________________________________________________
+
+  void ClusterHits(THcShowerHitList HitList) {
+
+    // Collect hits from the HitList into the clusters. The resultant clusters
+    // of hits are saved in the ClusterList.
+
+    while (HitList.size() != 0) {
+
+      THcShowerCluster* cluster = new THcShowerCluster;
+
+      (*cluster).grow(*(HitList.end()-1)); //Move the last hit from the hit list
+      HitList.erase(HitList.end()-1);      //into the 1st cluster
+      bool clustered = true;
+
+      while (clustered) {                   //Proceed while a hit is clustered
+
+	clustered = false;
+
+	for (THcShowerHitIt i=HitList.begin(); i!=HitList.end(); ++i) {
+
+	  for (UInt_t k=0; k!=(*cluster).clSize(); k++) {
+
+	    if ((**i).isNeighbour((*cluster).ClusteredHit(k))) {
+
+	      (*cluster).grow(*i);        //If the hit #i is neighbouring a hit
+	      HitList.erase(i);           //in the cluster, then move it
+	                                  //into the cluster.
+	      clustered = true;
+	    }
+
+	    if (clustered) break;
+	  }                               //k
+
+	  if (clustered) break;
+	}                                 //i
+
+      }                                   //while clustered
+
+      grow(cluster);                      //Put the cluster in the cluster list
+
+    }                                     //While hit_list not exhausted
+
+  }
+
+};
+
+
+
 class THcShower : public THaNonTrackingDetector, public THcHitList {
 
 public:
diff --git a/src/THcShowerCluster.h b/src/THcShowerCluster.h
deleted file mode 100644
index cc716b5..0000000
--- a/src/THcShowerCluster.h
+++ /dev/null
@@ -1,244 +0,0 @@
-#ifndef ROOT_THcShowerCluster
-#define ROOT_THcShowerCluster
-
-//HMS calorimeter hit cluster, version 3.
-
-//#include "THcShower.h"
-#include "THcShowerHit.h"
-
-//HMS calorimeter hit cluster
-//
-class THcShowerCluster : THcShowerHitList {
-
- public:
-
-  THcShowerCluster() {
-    //    cout << "Dummy THcShowerCluster object created" << endl;
-  }
-
-  ~THcShowerCluster() {
-    for (THcShowerHitIt i = THcShowerHitList::begin();
-    	 i != THcShowerHitList::end(); ++i) {
-      delete *i;
-      *i = 0;
-    }
-  }
-
-  // Add a hit to the cluster hit list
-  //
-  void grow(THcShowerHit* hit) {
-    THcShowerHitList::push_back(hit);
-  }
-
-  //Pointer to the hit #i in the cluster hit list
-  //
-  THcShowerHit* ClusteredHit(UInt_t i) {
-    return * (THcShowerHitList::begin()+i);
-  }
-
-  //Print out a hit in the cluster
-  //
-  void showHit(UInt_t num) {
-    (*(THcShowerHitList::begin()+num))->show();
-  }
-
-  // X coordinate of center of gravity of cluster,
-  // calculated as hit energy weighted average.
-  // Put X out of the calorimeter (-75 cm), if there is no energy deposition
-  // in the cluster.
-  //
-  Double_t clX() {
-    Double_t x_sum=0.;
-    Double_t Etot=0.;
-    for (THcShowerHitIt it=THcShowerHitList::begin();
-	 it!=THcShowerHitList::end(); ++it) {
-      x_sum += (*it)->hitX() * (*it)->hitE();
-      Etot += (*it)->hitE();
-    }
-    //    cout << "x_sum=" << x_sum << "  Etot=" << Etot << endl;
-    return (Etot != 0. ? x_sum/Etot : -75.);
-  }
-
-  // Z coordinate of center of gravity of cluster,
-  // calculated as a hit energy weighted average.
-  // Put Z out of the calorimeter (0 cm), if there is no energy deposition
-  // in the cluster.
-  //
-  Double_t clZ() {
-    Double_t z_sum=0.;
-    Double_t Etot=0.;
-    for (THcShowerHitIt it=THcShowerHitList::begin();
-	 it!=THcShowerHitList::end(); ++it) {
-      z_sum += (*it)->hitZ() * (*it)->hitE();
-      Etot += (*it)->hitE();
-    }
-    //    cout << "z_sum=" << z_sum << "  Etot=" << Etot << endl;
-    return (Etot != 0. ? z_sum/Etot : 0.);
-  }
-
-  //Energy depostion in a cluster
-  //
-  Double_t clE() {
-    //    cout << "In ECl:" << endl;
-    Double_t Etot=0.;
-    for (THcShowerHitIt it=THcShowerHitList::begin();
-	 it!=THcShowerHitList::end(); ++it) {
-      Etot += (*it)->hitE();
-    }
-    return Etot;
-  }
-
-  //Energy deposition in the Preshower (1st plane) for a cluster
-  //
-  Double_t clEpr() {
-    Double_t Epr=0.;
-    for (THcShowerHitIt it=THcShowerHitList::begin();
-	 it!=THcShowerHitList::end(); ++it) {
-      if ((*it)->hitColumn() == 0) {
-	Epr += (*it)->hitE();
-      }
-    }
-    return Epr;
-  }
-
-  //Cluster energy deposition in plane iplane=0,..,3:
-  // side=0 -- from positive PMTs only;
-  // side=1 -- from negative PMTs only;
-  // side=2 -- from postive and negative PMTs.
-  //
-
-  Double_t clEplane(Int_t iplane, Int_t side) {
-
-    if (side!=0&&side!=1&&side!=2) {
-      cout << "*** Wrong Side in clEplane:" << side << " ***" << endl;
-      return -1;
-    }
-
-    Double_t Eplane=0.;
-    for (THcShowerHitIt it=THcShowerHitList::begin();
-	 it!=THcShowerHitList::end(); ++it) {
-
-      if ((*it)->hitColumn() == iplane) 
-
-	switch (side) {
-	case 0 : Eplane += (*it)->hitEpos();
-	  break;
-	case 1 : Eplane += (*it)->hitEneg();
-	  break;
-	case 2 : Eplane += (*it)->hitE();
-	  break;
-	default : ;
-	}
-
-    }
-
-    return Eplane;
-  }
-
-
-  //Cluster size (number of hits in the cluster).
-  //
-  UInt_t clSize() {
-    return THcShowerHitList::size();
-  }
-
-};
-
-//-----------------------------------------------------------------------------
-
-//Alias for container of clusters and for its iterator
-//
-typedef vector<THcShowerCluster*> THcShClusterList;
-typedef THcShClusterList::iterator THcShClusterIt;
-
-//List of clusters
-//
-class THcShowerClusterList : private THcShClusterList {
-
- public:
-
-  THcShowerClusterList() {
-    //    cout << "Dummy THcShowerClusterList object created" << endl;
-  }
-
-  ~THcShowerClusterList() {
-    purge();
-  }
-
-  // Purge cluster list
-  //
-  void purge() {
-    for (THcShClusterIt i = THcShClusterList::begin();
-	 i != THcShClusterList::end(); ++i) {
-      delete *i;
-      *i = 0;
-    }
-    THcShClusterList::clear();
-  }
-
-  //Put a cluster in the cluster list
-  //
-  void grow(THcShowerCluster* cluster) {
-    THcShClusterList::push_back(cluster);
-  }
-
-  //Pointer to the cluster #i in the cluster list
-  //
-  THcShowerCluster* ListedCluster(UInt_t i) {
-    return *(THcShClusterList::begin()+i);
-  }
-
-  //Cluster list size.
-  //
-  UInt_t NbClusters() {
-    return THcShClusterList::size();
-  }
-
-  //____________________________________________________________________________
-
-  void ClusterHits(THcShowerHitList HitList) {
-
-    // Collect hits from the HitList into the clusters. The resultant clusters
-    // of hits are saved in the ClusterList.
-
-    while (HitList.size() != 0) {
-
-      THcShowerCluster* cluster = new THcShowerCluster;
-
-      (*cluster).grow(*(HitList.end()-1)); //Move the last hit from the hit list
-      HitList.erase(HitList.end()-1);      //into the 1st cluster
-      bool clustered = true;
-
-      while (clustered) {                   //Proceed while a hit is clustered
-
-	clustered = false;
-
-	for (THcShowerHitIt i=HitList.begin(); i!=HitList.end(); ++i) {
-
-	  for (UInt_t k=0; k!=(*cluster).clSize(); k++) {
-
-	    if ((**i).isNeighbour((*cluster).ClusteredHit(k))) {
-
-	      (*cluster).grow(*i);        //If the hit #i is neighbouring a hit
-	      HitList.erase(i);           //in the cluster, then move it
-	                                  //into the cluster.
-	      clustered = true;
-	    }
-
-	    if (clustered) break;
-	  }                               //k
-
-	  if (clustered) break;
-	}                                 //i
-
-      }                                   //while clustered
-
-      grow(cluster);                      //Put the cluster in the cluster list
-
-    }                                     //While hit_list not exhausted
-
-  }
-
-};
-
-#endif
diff --git a/src/THcShowerHit.h b/src/THcShowerHit.h
deleted file mode 100644
index 7b97c51..0000000
--- a/src/THcShowerHit.h
+++ /dev/null
@@ -1,100 +0,0 @@
-#ifndef ROOT_THcShowerHit
-#define ROOT_THcShowerHit
-
-// HMS calorimeter hits, version 2
-
-#include <vector>
-#include <iterator>
-#include <iostream>
-#include <memory>
-
-using namespace std;
-
-class THcShowerHit {       //HMS calorimeter hit class
-
-private:
-  Int_t fCol, fRow;        //hit colomn and row
-  Double_t fX, fZ;         //hit X (vert.) and Z (along spect.axis) coordinates
-  Double_t fE;             //hit mean energy deposition
-  Double_t fEpos;          //hit energy deposition from positive PMT
-  Double_t fEneg;          //hit energy deposition from negative PMT
-  
-public:
-
-  THcShowerHit() {         //default constructor
-    fCol=fRow=0;
-    fX=fZ=0.;
-    fE=0.;
-    fEpos=0.;
-    fEneg=0.;
-  }
-
-  THcShowerHit(Int_t hRow, Int_t hCol, Double_t hX, Double_t hZ,
-	       Double_t hE, Double_t hEpos, Double_t hEneg) {
-    fRow=hRow;
-    fCol=hCol;
-    fX=hX;
-    fZ=hZ;
-    fE=hE;
-    fEpos=hEpos;
-    fEneg=hEneg;
-  }
-
-  ~THcShowerHit() {
-    //    cout << " hit destructed" << endl;
-  }
-
-  Int_t hitColumn() {
-    return fCol;
-  }
-
-  Int_t hitRow() {
-    return fRow;
-  }
-
-  Double_t hitX() {
-    return fX;
-  }
-
-  Double_t hitZ() {
-    return fZ;
-  }
-
-  Double_t hitE() {
-    return fE;
-  }
-
-  Double_t hitEpos() {
-    return fEpos;
-  }
-
-  Double_t hitEneg() {
-    return fEneg;
-  }
-
-  // Decide if a hit is neighbouring the current hit.
-  // Two hits are neighbours if share a side or a corner.
-  //
-  bool isNeighbour(THcShowerHit* hit1) {      //Is hit1 neighbouring this hit?
-    Int_t dRow = fRow-(*hit1).fRow;
-    Int_t dCol = fCol-(*hit1).fCol;
-    return TMath::Abs(dRow)<2 && TMath::Abs(dCol)<2;
-  }
-
-  //Print out hit information
-  //
-  void show() {
-    cout << "row=" << fRow << "  column=" << fCol 
-	 << "  x=" << fX << "  z=" << fZ 
-	 << "  E=" << fE << "  Epos=" << fEpos << "  Eneg=" << fEneg << endl;
-  }
-
-};
-
-
-// Container (collection) of hits and its iterator.
-//
-typedef vector<THcShowerHit*> THcShowerHitList;
-typedef THcShowerHitList::iterator THcShowerHitIt;
-
-#endif
-- 
GitLab