Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-17 09:21:20

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