From 8e830bc9c32f33937003d524be60127eb31a52f4 Mon Sep 17 00:00:00 2001
From: Nicolas de Sereville <deserevi@ipno.in2p3.fr>
Date: Wed, 25 Nov 2015 11:30:27 +0100
Subject: [PATCH] + Add TSplitPoleSpectra support to TSplitPolePhysics

---
 NPAnalysis/SPcoincW1/Analysis.cxx     |  2 +-
 NPLib/SplitPole/CMakeLists.txt        |  4 +--
 NPLib/SplitPole/TSplitPolePhysics.cxx | 38 ++++++++++++++++++++-------
 NPLib/SplitPole/TSplitPolePhysics.h   | 12 +++++++++
 NPLib/W1/TW1Physics.h                 |  2 +-
 5 files changed, 44 insertions(+), 14 deletions(-)

diff --git a/NPAnalysis/SPcoincW1/Analysis.cxx b/NPAnalysis/SPcoincW1/Analysis.cxx
index a1b0f3fe2..d5a927dcc 100644
--- a/NPAnalysis/SPcoincW1/Analysis.cxx
+++ b/NPAnalysis/SPcoincW1/Analysis.cxx
@@ -49,7 +49,7 @@ Analysis::~Analysis()
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::Init()
 {
-   m_W1 = (TW1Physics*)        m_DetectorManager->GetDetector("W1");
+//   m_W1 = (TW1Physics*)        m_DetectorManager->GetDetector("W1");
    m_SP = (TSplitPolePhysics*) m_DetectorManager->GetDetector("SplitPole");
 }
 
diff --git a/NPLib/SplitPole/CMakeLists.txt b/NPLib/SplitPole/CMakeLists.txt
index 62d9d8e7f..796cbb1cd 100644
--- a/NPLib/SplitPole/CMakeLists.txt
+++ b/NPLib/SplitPole/CMakeLists.txt
@@ -1,6 +1,6 @@
 add_custom_command(OUTPUT TSplitPolePhysicsDict.cxx COMMAND ../scripts/build_dict.sh TSplitPolePhysics.h TSplitPolePhysicsDict.cxx TSplitPolePhysics.rootmap libNPSplitPole.dylib DEPENDS TSplitPolePhysics.h)
 add_custom_command(OUTPUT TSplitPoleDataDict.cxx COMMAND ../scripts/build_dict.sh TSplitPoleData.h TSplitPoleDataDict.cxx TSplitPoleData.rootmap libNPSplitPole.dylib DEPENDS TSplitPoleData.h)
-add_library(NPSplitPole SHARED TSplitPoleData.cxx TSplitPolePhysics.cxx TSplitPoleDataDict.cxx TSplitPolePhysicsDict.cxx )
+add_library(NPSplitPole SHARED TSplitPoleSpectra.cxx TSplitPoleData.cxx TSplitPolePhysics.cxx TSplitPoleDataDict.cxx TSplitPolePhysicsDict.cxx )
 target_link_libraries(NPSplitPole ${ROOT_LIBRARIES} NPCore) 
-install(FILES TSplitPoleData.h TSplitPolePhysics.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY})
+install(FILES TSplitPoleData.h TSplitPolePhysics.h TSplitPoleSpectra.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY})
 
diff --git a/NPLib/SplitPole/TSplitPolePhysics.cxx b/NPLib/SplitPole/TSplitPolePhysics.cxx
index 14c462716..6b4250ebe 100644
--- a/NPLib/SplitPole/TSplitPolePhysics.cxx
+++ b/NPLib/SplitPole/TSplitPolePhysics.cxx
@@ -39,8 +39,8 @@ using namespace std;
 //  ROOT
 #include "TChain.h"
 
-ClassImp(TSplitPolePhysics)
 
+ClassImp(TSplitPolePhysics)
 
 
 ///////////////////////////////////////////////////////////////////////////
@@ -134,9 +134,14 @@ void TSplitPolePhysics::AddParameterToCalibrationManager()
 void  TSplitPolePhysics::InitializeRootInputRaw() 
 {
    TChain* inputChain = RootInput::getInstance()->GetChain();
-   inputChain->SetBranchStatus("SplitPole"   , true);
-   inputChain->SetBranchStatus("fSplitPole_*", true);
-   inputChain->SetBranchAddress("SplitPole"  , &m_EventData);
+   inputChain->SetBranchStatus("SplitPole",  true);
+   inputChain->SetBranchStatus("fPosition",  true);
+   inputChain->SetBranchStatus("fBrho",      true);
+   inputChain->SetBranchStatus("fDeltaE",    true);
+   inputChain->SetBranchStatus("fWire",      true);
+   inputChain->SetBranchStatus("fPlasticP",  true);
+   inputChain->SetBranchStatus("fPlasticG",  true);
+   inputChain->SetBranchAddress("SplitPole", &m_EventData);
 }
 
 
@@ -302,7 +307,7 @@ void TSplitPolePhysics::ReadAnalysisConfig()
 ///////////////////////////////////////////////////////////////////////////
 void TSplitPolePhysics::InitSpectra()
 {
-//   m_Spectra = new TSplitPoleSpectra(m_NumberOfDetectors);
+   m_Spectra = new TSplitPoleSpectra();
 }
 
 
@@ -310,9 +315,9 @@ void TSplitPolePhysics::InitSpectra()
 ///////////////////////////////////////////////////////////////////////////
 void TSplitPolePhysics::FillSpectra()
 {
-//   m_Spectra->FillRawSpectra(m_EventData);
-//   m_Spectra->FillPreTreatedSpectra(m_PreTreatedData);
-//   m_Spectra->FillPhysicsSpectra(m_EventPhysics);
+   m_Spectra->FillRawSpectra(m_EventData);
+   m_Spectra->FillPreTreatedSpectra(m_PreTreatedData);
+   m_Spectra->FillPhysicsSpectra(m_EventPhysics);
 }
 
 
@@ -320,7 +325,7 @@ void TSplitPolePhysics::FillSpectra()
 ///////////////////////////////////////////////////////////////////////////
 void TSplitPolePhysics::CheckSpectra()
 {
-//   m_Spectra->CheckSpectra();
+   m_Spectra->CheckSpectra();
 }
 
 
@@ -336,7 +341,20 @@ void TSplitPolePhysics::ClearSpectra()
 ///////////////////////////////////////////////////////////////////////////
 void TSplitPolePhysics::WriteSpectra()
 {
-//   m_Spectra->WriteSpectra();
+   m_Spectra->WriteSpectra();
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+map<string, TH1*> TSplitPolePhysics::GetSpectra()
+{
+   if (m_Spectra)
+      return m_Spectra->GetMapHisto();
+   else {
+      map< string , TH1*> empty;
+      return empty;
+   }
 }
 
 
diff --git a/NPLib/SplitPole/TSplitPolePhysics.h b/NPLib/SplitPole/TSplitPolePhysics.h
index cae3aae3e..66b86b3f3 100644
--- a/NPLib/SplitPole/TSplitPolePhysics.h
+++ b/NPLib/SplitPole/TSplitPolePhysics.h
@@ -23,16 +23,22 @@
  *****************************************************************************/
 //   STL
 #include <vector>
+#include <map>
 using namespace std;
 
 //   ROOT
 #include "TObject.h"
+#include "TH1.h"
 
 //   NPL
 #include "TSplitPoleData.h"
+#include "TSplitPoleSpectra.h"
 #include "NPVDetector.h"
 #include "NPCalibrationManager.h"
 
+// forward declaration
+class TSplitPoleSpectra;
+
 
 class TSplitPolePhysics : public TObject, public NPL::VDetector
 {
@@ -155,6 +161,12 @@ class TSplitPolePhysics : public TObject, public NPL::VDetector
       Double_t m_CalibP1;  //!
 
 
+   private: // Spectra Class
+      TSplitPoleSpectra* m_Spectra; // !
+
+   public: // Spectra Getter
+      map<string, TH1*> GetSpectra();
+
    public: // Static constructor to be passed to the Detector Factory
      static NPL::VDetector* Construct();
 
diff --git a/NPLib/W1/TW1Physics.h b/NPLib/W1/TW1Physics.h
index b86001c1b..1d32c919f 100644
--- a/NPLib/W1/TW1Physics.h
+++ b/NPLib/W1/TW1Physics.h
@@ -24,7 +24,7 @@
 // C++ headers 
 #include <vector>
 #include <map>
-using namespace std ;
+using namespace std;
 
 // ROOT headers
 #include "TObject.h"
-- 
GitLab