Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:18:45

0001 /// ===========================================================================
0002 /*! \file   TrksInJetQATrkManager.cc
0003  *  \author Derek Anderson
0004  *  \date   03.25.2024
0005  *
0006  *  A submodule for the TrksInJetQA module to generate
0007  *  QA plots for tracks
0008  */
0009 /// ===========================================================================
0010 
0011 #define TRKSINJETQATRKMANAGER_CC
0012 
0013 // submodule definition
0014 #include "TrksInJetQATrkManager.h"
0015 
0016 // root libraries
0017 #include <TVector3.h>
0018 
0019 // public methods =============================================================
0020 
0021 // ----------------------------------------------------------------------------
0022 //! Get information from a track
0023 // ----------------------------------------------------------------------------
0024 void TrksInJetQATrkManager::GetInfo(SvtxTrack* track,
0025                                     std::optional<Jet*> jet)
0026 {
0027   // collect track-only info
0028   TrackQAContent content = {
0029       .eta = track->get_eta(),
0030       .phi = track->get_phi(),
0031       .pt = track->get_pt(),
0032       .qual = track->get_quality()};
0033 
0034   // if a jet was provided, calculate z and jt
0035   if (jet.has_value())
0036   {
0037     // grab track & jet momenta
0038     TVector3 pTrk(track->get_px(), track->get_py(), track->get_pz());
0039     TVector3 pJet(jet.value()->get_px(), jet.value()->get_py(), jet.value()->get_pz());
0040 
0041     // now calculate z & jt
0042     content.z = pJet.Dot(pTrk) / pJet.Mag2();
0043     content.jt = pJet.Cross(pTrk).Mag() / pJet.Mag2();
0044   }
0045 
0046   // fill histograms
0047   FillHistograms(Type::All, content);
0048 }  // end 'GetInfo(SvtxTrack*, std::optional<Jet*>)'
0049 
0050 // private methods ============================================================
0051 
0052 // ----------------------------------------------------------------------------
0053 //! Fill track histograms
0054 // ---------------------------------------------------------------------------- 
0055 void TrksInJetQATrkManager::FillHistograms(const int type, TrackQAContent& content)
0056 {
0057   // fill 1d histograms
0058   m_mapHist1D[Index(type, H1D::Eta)]->Fill(content.eta);
0059   m_mapHist1D[Index(type, H1D::Phi)]->Fill(content.phi);
0060   m_mapHist1D[Index(type, H1D::Pt)]->Fill(content.pt);
0061   m_mapHist1D[Index(type, H1D::Z)]->Fill(content.z);
0062   m_mapHist1D[Index(type, H1D::Jt)]->Fill(content.jt);
0063   m_mapHist1D[Index(type, H1D::Qual)]->Fill(content.qual);
0064 
0065   // fill 2d histograms
0066   m_mapHist2D[Index(type, H2D::EtaVsPhi)]->Fill(content.phi, content.eta);
0067   m_mapHist2D[Index(type, H2D::PtVsQual)]->Fill(content.qual, content.pt);
0068 }  //  end 'FillHistograms(Type, TrackQAContent&)'
0069 
0070 // ----------------------------------------------------------------------------
0071 //! Define track histograms
0072 // ----------------------------------------------------------------------------
0073 void TrksInJetQATrkManager::DefineHistograms()
0074 {
0075   // grab binning schemes
0076   std::vector<TrksInJetQADefs::BinDef> vecBins = m_hist.GetVecHistBins();
0077 
0078   // set histogram types
0079   m_mapHistTypes[Type::All] = "All";
0080 
0081   // define 1d histograms
0082   m_mapHistDef1D[H1D::Eta] = std::tuple("TrackEta", vecBins.at(TrksInJetQAHist::Var::Eta));
0083   m_mapHistDef1D[H1D::Phi] = std::tuple("TrackPhi", vecBins.at(TrksInJetQAHist::Var::Phi));
0084   m_mapHistDef1D[H1D::Pt] = std::tuple("TrackPt", vecBins.at(TrksInJetQAHist::Var::Ene));
0085   m_mapHistDef1D[H1D::Z] = std::tuple("TrackZ", vecBins.at(TrksInJetQAHist::Var::Frac));
0086   m_mapHistDef1D[H1D::Jt] = std::tuple("TrackJt", vecBins.at(TrksInJetQAHist::Var::Frac));
0087   m_mapHistDef1D[H1D::Qual] = std::tuple("TrackQual", vecBins.at(TrksInJetQAHist::Var::Qual));
0088 
0089   // define 2d histograms
0090   m_mapHistDef2D[H2D::EtaVsPhi] = std::tuple("TrackEtaVsPhi",
0091                                              vecBins.at(TrksInJetQAHist::Var::Phi),
0092                                              vecBins.at(TrksInJetQAHist::Var::Eta));
0093   m_mapHistDef2D[H2D::PtVsQual] = std::tuple("TrackPtVsQual",
0094                                              vecBins.at(TrksInJetQAHist::Var::Qual),
0095                                              vecBins.at(TrksInJetQAHist::Var::Ene));
0096 }  // end 'DefineHistograms()'
0097 
0098 // end ========================================================================