From 8c2b7011f05fbfbfa134f95ac67657800ebce571 Mon Sep 17 00:00:00 2001
From: Nikola Dikic <nikola.dikic@cern.ch>
Date: Thu, 23 Apr 2020 02:44:44 +0200
Subject: [PATCH] Added ToF histograms - HitBarVsTrain

---
 .../Run3AFPMonitoring/AFPToFAlgorithm.h       | 10 ++++---
 .../python/Run3AFPExampleMonitorAlgorithm.py  |  9 +++++--
 .../Run3AFPMonitoring/src/AFPToFAlgorithm.cxx | 26 +++++++++++++++----
 3 files changed, 35 insertions(+), 10 deletions(-)

diff --git a/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPToFAlgorithm.h b/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPToFAlgorithm.h
index a9400de43779..81014def2219 100644
--- a/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPToFAlgorithm.h
+++ b/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPToFAlgorithm.h
@@ -21,12 +21,16 @@ public:
     virtual StatusCode fillHistograms( const EventContext& ctx ) const override;
 
 private:
+   //std::map<std::string,std::map<std::string,int>> m_HitmapGroupsToF;
+   //std::map<std::string, int> m_HitmapGroupsToF;
+   //std::vector<std::string> m_HitmapGroupsToF;
+   std::map<std::string,int> m_HitmapGroupsToF;
    SG::ReadHandleKey<xAOD::AFPToFHitContainer> m_afpToFHitContainerKey;
 
 protected:
-   std::vector<std::string> m_pixlayers = { "P0", "P1", "P2", "P3"};
-   std::vector<std::string> m_stationnames = { "farAside", "nearAside" , "nearCside" , "farCside"};
-
+   // Only 0 and 3 are ToF stations (farAside and farCside)
+   std::vector<std::string> m_stationNamesToF = { "farAside", "nearAside" , "nearCside" , "farCside" };
+   
 };
 #endif
 
diff --git a/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py b/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py
index fcd80a58fbc3..0c61a5fd36bf 100644
--- a/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py
+++ b/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py
@@ -31,6 +31,7 @@ def Run3AFPExampleMonitoringConfig(inputFlags):
 
     AFPToFGroup.defineHistogram('numberOfHit_S0', title='Number of hit per bar station 0;total number of Hits', path='ToF/',xbins=4,xmin=-0.5,xmax=3.5)
     AFPToFGroup.defineHistogram('numberOfHit_S3', title='Number of hit per bar station 3;total number of Hits', path='ToF/',xbins=4,xmin=-0.5,xmax=3.5)
+    #AFPToFGroup.defineHistogram('trainID,barInTrainID', title='ToF hit bar vs train side A;trainID;barInTrainID', type='TH2F', path='ToF/',xbins=4,xmin=-0.5,xmax=3.5,ybins=4,ymin=-0.5,ymax=3.5)
 
 
     # Using a map of groups
@@ -43,7 +44,11 @@ def Run3AFPExampleMonitoringConfig(inputFlags):
     array.defineHistogram('pixelColIDChip,pixelRowIDChip', title='hitmap for {0} Layer {1}', type='TH2F', path='pixelColRow2D', xbins=80, xmin=0.5, xmax=80.5, ybins=336, ymin=0.5, ymax=336.5)
     array.defineHistogram('timeOverThreshold', title='1D Time over threshold for {0} Layer {1}', path='SiTimeOverThreshold', xbins=60, xmin=0, xmax=20)
 
-    #array.defineHistogram('pixelColIDChip,pixelColIDChip', title='Correlation Row {0} Row {1}', type='TH2F', path='Correlation', xbins=80, xmin=0.5, xmax=80.5, ybins=336, ymin=0.5, ymax=336.5)
+    #tofStations = [ 'Aside', 'Cside' ]
+    arrayToF = helper.addArray([combinedList], afpToFAlgorithm, 'AFPToFTool', topPath='AFP/ToF/')
+    arrayToF.defineHistogram('trainID,barInTrainID', title='ToF hit bar vs train {0};trainID;barInTrainID', type='TH2F', path='HitBarvsTrain/',xbins=4,xmin=-0.5,xmax=3.5,ybins=4,ymin=-0.5,ymax=3.5)
+
+    #array.defineHistogram('pixelColIDChip,pixelColIDChip', title='Correlation Row {0} Row {1}', type='TH2F', path='Correlation', xbins=80, xmin=0.5, xmax=80.5, ybins=80, ymin=0.5, ymax=80.5)
     #array.defineHistogram('pixelRowIDChip,pixelRowIDChip', title='Correlation Col {0} Col {1}', type='TH2F', path='Correlation', xbins=80, xmin=0.5, xmax=80.5, ybins=336, ymin=0.5, ymax=336.5)
 
     # Finalize. The return value should be a tuple of the ComponentAccumulator
@@ -81,6 +86,6 @@ if __name__=='__main__':
     exampleMonitorAcc = Run3AFPExampleMonitoringConfig(ConfigFlags)
     cfg.merge(exampleMonitorAcc)
 
-    cfg.run(10000) #use cfg.run(20) to only run on first 20 events
+    cfg.run(1000) #use cfg.run(20) to only run on first 20 events
 
 
diff --git a/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPToFAlgorithm.cxx b/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPToFAlgorithm.cxx
index 54a652ab9d51..a9010103ace3 100644
--- a/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPToFAlgorithm.cxx
+++ b/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPToFAlgorithm.cxx
@@ -26,7 +26,11 @@ AFPToFAlgorithm::~AFPToFAlgorithm() {}
 
 StatusCode AFPToFAlgorithm::initialize() {
     using namespace Monitored;
- 
+
+    //m_HitmapGroupsToF = buildToolMap<std::map<std::string,int>>(m_tools,"AFPToFAlgorithm", m_stationNamesToF);
+    //m_HitmapGroupsToF = buildToolMap<std::map<std::string,int>>(m_tools,"AFPToFAlgorithm", m_stationNamesToF);
+    //m_HitmapGroupsToF = buildToolMap<std::vector<int>>(m_tools,"AFPToFTool", m_stationNamesToF);
+    m_HitmapGroupsToF = buildToolMap<int>(m_tools,"AFPToFTool", m_stationNamesToF);
     // We must declare to the framework in initialize what SG objects we are going to use
     SG::ReadHandleKey<xAOD::AFPToFHitContainer> afpToFHitContainerKey("AFPToFHits");
     ATH_CHECK(m_afpToFHitContainerKey.initialize());
@@ -43,7 +47,6 @@ StatusCode AFPToFAlgorithm::fillHistograms( const EventContext& ctx ) const {
     auto nTofHits = Monitored::Scalar<int>("nTofHits", 1);
     
     lb = GetEventInfo(ctx)->lumiBlock();
-
  
     SG::ReadHandle<xAOD::AFPToFHitContainer> afpToFHitContainer(m_afpToFHitContainerKey, ctx);
     if(! afpToFHitContainer.isValid())
@@ -73,14 +76,27 @@ StatusCode AFPToFAlgorithm::fillHistograms( const EventContext& ctx ) const {
 	{
 	    numberOfHit_S0 = hitsItr->trainID();
             fill("AFPToFTool", numberOfHit_S0);
-	    fill("AFPToFTool", trainID, barInTrainID);
+	    //std::cout << "\n\t" << hitsItr->stationID() << "\n";
+            
+            //fill(m_tools[m_HitmapGroupsToF.at("Aside")], trainID, barInTrainID);
+            //fill(m_tools[m_HitmapGroupsToF.at(m_stationNamesToF.at(0))], trainID, barInTrainID);
+            //fill(m_tools[m_HitmapGroupsToF[0]], trainID, barInTrainID);
+	    //fill("AFPToFTool", trainID, barInTrainID);
 	}
 	else if(hitsItr->isSideC())
 	{
 	    numberOfHit_S3 = hitsItr->trainID();
-            fill("AFPToFTool", numberOfHit_S3);	
-            fill("AFPToFTool", trainID, barInTrainID);    
+            fill("AFPToFTool", numberOfHit_S3);
+            //std::cout << "\n\t" << hitsItr->stationID() << "\n";
+	    //fill(m_tools[m_HitmapGroupsToF.at(m_stationnames.at(hitsItr->stationID()))], trainID, barInTrainID);
+            //fill(m_tools[m_HitmapGroupsToF.at("Cside")], trainID, barInTrainID);
+	    //fill(m_tools[m_HitmapGroupsToF[1]], trainID, barInTrainID);	
+            //fill("AFPToFTool", trainID, barInTrainID);    
 	}
+
+	if (hitsItr->stationID() == 0 || hitsItr->stationID() == 3)
+	    fill(m_tools[m_HitmapGroupsToF.at(m_stationNamesToF.at(hitsItr->stationID()))], trainID, barInTrainID);
+	
     }
 
     return StatusCode::SUCCESS;
-- 
GitLab