Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:14:22

0001 // ----------------------------------------------------------------------------
0002 // 'TrksInJetQABaseFiller.cc'
0003 // Derek Anderson
0004 // 04.11.2024
0005 //
0006 // A submodule for the TrksInJetQA F4A module to produce
0007 // QA histograms for tracks and more in jets
0008 // ----------------------------------------------------------------------------
0009 
0010 #define TRKSINJETQABASEFILLER_CC
0011 
0012 #include "TrksInJetQABaseFiller.h"
0013 
0014 
0015 
0016 // ctor/dtor ------------------------------------------------------------------
0017 
0018 TrksInJetQABaseFiller::TrksInJetQABaseFiller(
0019   TrksInJetQAConfig& config,
0020   TrksInJetQAHist& hist
0021 ) {
0022 
0023   // grab utilities
0024   m_config = config;
0025   m_hist   = hist;
0026 
0027   // initialize managers
0028   if (m_config.doHitQA)   m_hitManager   = std::make_unique<TrksInJetQAHitManager>(m_config, m_hist);
0029   if (m_config.doClustQA) m_clustManager = std::make_unique<TrksInJetQAClustManager>(m_config, m_hist);
0030   if (m_config.doTrackQA) m_trackManager = std::make_unique<TrksInJetQATrkManager>(m_config, m_hist);
0031   if (m_config.doJetQA)   m_jetManager   = std::make_unique<TrksInJetQAJetManager>(m_config, m_hist);
0032 
0033 }  // end ctor()'
0034 
0035 
0036 
0037 TrksInJetQABaseFiller::~TrksInJetQABaseFiller() {
0038 
0039   /* nothing to do */
0040 
0041 }  // end dtor
0042 
0043 
0044 
0045 // public methods -------------------------------------------------------------
0046 
0047 void TrksInJetQABaseFiller::MakeHistograms(std::string label) {
0048 
0049   // initialize relevant submodules
0050   if (m_config.doHitQA)   m_hitManager   -> MakeHistograms(label);
0051   if (m_config.doClustQA) m_clustManager -> MakeHistograms(label);
0052   if (m_config.doTrackQA) m_trackManager -> MakeHistograms(label);
0053   if (m_config.doJetQA)   m_jetManager   -> MakeHistograms(label);
0054   return;
0055 
0056 }  // end 'MakeHistograms(std::string)'
0057 
0058 
0059 
0060 void TrksInJetQABaseFiller::SaveHistograms(TFile* outFile, std::string outDirName) {
0061 
0062   TDirectory* outDir = outFile -> mkdir(outDirName.data());
0063   if (!outDir) {
0064     std::cerr << PHWHERE << ": PANIC: unable to make output directory!" << std::endl;
0065     assert(outDir);
0066   }
0067 
0068   if (m_config.doHitQA)   m_hitManager   -> SaveHistograms(outDir, m_config.hitOutDir);
0069   if (m_config.doClustQA) m_clustManager -> SaveHistograms(outDir, m_config.clustOutDir);
0070   if (m_config.doTrackQA) m_trackManager -> SaveHistograms(outDir, m_config.trackOutDir);
0071   if (m_config.doJetQA)   m_jetManager   -> SaveHistograms(outDir, m_config.jetOutDir);
0072   return;
0073 
0074 }  // end 'SaveHistograms(TFile*, std::string)'
0075 
0076 
0077 
0078 void TrksInJetQABaseFiller::GrabHistograms(
0079   std::vector<TH1D*>& vecOutHist1D,
0080   std::vector<TH2D*>& vecOutHist2D
0081 ) {
0082 
0083   if (m_config.doHitQA)   m_hitManager   -> GrabHistograms(vecOutHist1D, vecOutHist2D);
0084   if (m_config.doClustQA) m_clustManager -> GrabHistograms(vecOutHist1D, vecOutHist2D);
0085   if (m_config.doTrackQA) m_trackManager -> GrabHistograms(vecOutHist1D, vecOutHist2D);
0086   if (m_config.doJetQA)   m_jetManager   -> GrabHistograms(vecOutHist1D, vecOutHist2D);
0087   return;
0088 
0089 }  // end 'GrabHistograms(std::vector<TH1D*>&, std::vector<TH2D*>&)'
0090 
0091 
0092 
0093 // private methods ------------------------------------------------------------
0094 
0095 void TrksInJetQABaseFiller::GetNodes(PHCompositeNode* topNode) {
0096 
0097   // grab necessary jet nodes
0098   if (m_config.doJetQA) {
0099     m_jetMap = findNode::getClass<JetContainer>(topNode, m_config.jetInNode.data());
0100     if (!m_jetMap) {
0101       std::cerr << PHWHERE << ": PANIC: couldn't grab jet map from node tree!" << std::endl;
0102       assert(m_jetMap);
0103     }
0104   }
0105 
0106   // grab necessary track nodes
0107   if (m_config.doTrackQA) {
0108     m_trkMap = findNode::getClass<SvtxTrackMap>(topNode, m_config.trkInNode.data());
0109     if (!m_trkMap) {
0110       std::cerr << PHWHERE << ": PANIC: couldn't grab track map from node tree!" << std::endl;
0111       assert(m_trkMap);
0112     }
0113   }
0114 
0115   // grab necessary cluster nodes
0116   if (m_config.doClustQA) {
0117 
0118     m_actsGeom = findNode::getClass<ActsGeometry>(topNode, "ActsGeometry");
0119     if (!m_actsGeom) {
0120       std::cerr << PHWHERE << ": PANIC: couldn't grab ACTS geometry from node tree!" << std::endl;
0121       assert(m_actsGeom);
0122     }
0123 
0124     m_clustMap = findNode::getClass<TrkrClusterContainer>(topNode, m_config.clustInNode.data());
0125     if (!m_clustMap) {
0126       std::cerr << PHWHERE << ": PANIC: couldn't grab cluster map from node tree!" << std::endl;
0127       assert(m_clustMap);
0128     }
0129   }
0130 
0131   // grab necessary hit nodes
0132   if (m_config.doHitQA) {
0133     m_hitMap = findNode::getClass<TrkrHitSetContainer>(topNode, m_config.hitInNode.data());
0134     if (!m_hitMap) {
0135       std::cerr << PHWHERE << ": PANIC: couldn't grab hit map from node tree!" << std::endl;
0136       assert(m_hitMap);
0137     }
0138   }
0139   return;
0140 
0141 }  // end 'GetNodes(PHCompositeNode*)'
0142 
0143 // end ------------------------------------------------------------------------