Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 
0002 // Tell emacs that this is a C++ source
0003 //  -*- C++ -*-.
0004 #ifndef JETKINEMATICCHECK_H
0005 #define JETKINEMATICCHECK_H
0006 
0007 #include "JetQADefs.h"
0008 
0009 #include <fun4all/Fun4AllHistoManager.h>
0010 #include <fun4all/SubsysReco.h>
0011 
0012 #include <qautils/QAHistManagerDef.h>
0013 
0014 #include <string>
0015 #include <vector>
0016 
0017 class TH1;
0018 class TH2;
0019 class TH3;
0020 class PHCompositeNode;
0021 class TriggerAnalyzer;
0022 
0023 class JetKinematicCheck : public SubsysReco
0024 {
0025  public:
0026   JetKinematicCheck(const std::string &moduleName = "JetKinematicCheck",
0027                     const std::string &recojetnameR02 = "AntiKt_Tower_r02",
0028                     const std::string &recojetnameR03 = "AntiKt_Tower_r03",
0029                     const std::string &recojetnameR04 = "AntiKt_Tower_r04",
0030                     const std::string &recojetnameR05 = "AntiKt_Tower_r05");
0031 
0032   ~JetKinematicCheck() override;
0033 
0034   // set eta range
0035   void setEtaRange(double low, double high)
0036   {
0037     m_etaRange.first = low;
0038     m_etaRange.second = high;
0039   }
0040 
0041   // set pt range
0042   void setPtRange(double low, double high)
0043   {
0044     m_ptRange.first = low;
0045     m_ptRange.second = high;
0046   }
0047 
0048   // set histogram tag
0049   void setHistTag(const std::string &tag)
0050   {
0051     m_histTag = tag;
0052   }
0053 
0054   // restrict eta range by rJet
0055   void setRestrictEtaRange(const bool restrictEtaRange = true)
0056   {
0057     m_restrictEtaRange = restrictEtaRange;
0058   }
0059 
0060   // specifies a trigger to require
0061   void setTrgToSelect(const uint32_t trig = JetQADefs::GL1::MBDNSJet1)
0062   {
0063     m_doTrgSelect = true;
0064     m_trgToSelect = trig;
0065   }
0066 
0067   /** Called during initialization.
0068       Typically this is where you can book histograms, and e.g.
0069       register them to Fun4AllServer (so they can be output to file
0070       using Fun4AllServer::dumpHistos() method).
0071    */
0072   int Init(PHCompositeNode *topNode) override;
0073 
0074   /** Called for first event when run number is known.
0075       Typically this is where you may want to fetch data from
0076       database, because you know the run number. A place
0077       to book histograms which have to know the run number.
0078    */
0079   int InitRun(PHCompositeNode *topNode) override;
0080 
0081   /** Called for each event.
0082       This is where you do the real work.
0083    */
0084   int process_event(PHCompositeNode *topNode) override;
0085 
0086   /// Called at the end of each run.
0087   int EndRun(const int runnumber) override;
0088 
0089   /// Called at the end of all processing.
0090   int End(PHCompositeNode *topNode) override;
0091 
0092  private:
0093   Fun4AllHistoManager *hm{nullptr};
0094   TriggerAnalyzer *m_analyzer{nullptr};
0095 
0096   std::string m_moduleName;
0097   std::string m_recoJetNameR02;
0098   std::string m_recoJetNameR03;
0099   std::string m_recoJetNameR04;
0100   std::string m_recoJetNameR05;
0101   std::string m_histTag {"AllTrig"};
0102 
0103   // cuts
0104   bool m_restrictEtaRange {true};
0105   std::pair<double, double> m_etaRange {-1.1,1.1};
0106   std::pair<double, double> m_ptRange {10,100};
0107 
0108   // trigger selection
0109   bool m_doTrgSelect {false};
0110   uint32_t m_trgToSelect{JetQADefs::GL1::MBDNSJet1};
0111 
0112   // reconstructed jets
0113   std::vector<float> m_eta;
0114   std::vector<float> m_phi;
0115   std::vector<float> m_pt;
0116   std::vector<float> m_radii;
0117 
0118   // output histograms
0119   TH1 *h_jet_pt_spectra_r02  {nullptr};
0120   TH1 *h_jet_pt_spectra_r03  {nullptr};
0121   TH1 *h_jet_pt_spectra_r04  {nullptr};
0122   TH1 *h_jet_pt_spectra_r05  {nullptr};
0123   TH2 *h_jet_eta_phi_r02  {nullptr};
0124   TH2 *h_jet_eta_phi_r03  {nullptr};
0125   TH2 *h_jet_eta_phi_r04  {nullptr};
0126   TH2 *h_jet_eta_phi_r05  {nullptr};
0127   TH2 *h_jet_mass_pt_r02  {nullptr};
0128   TH1 *h_jet_average_mass_pt_1D_r02  {nullptr};
0129   TH2 *h_jet_mass_pt_r03  {nullptr};
0130   TH1 *h_jet_average_mass_pt_1D_r03  {nullptr};
0131   TH2 *h_jet_mass_pt_r04  {nullptr};
0132   TH1 *h_jet_average_mass_pt_1D_r04  {nullptr};
0133   TH2 *h_jet_mass_pt_r05  {nullptr};
0134   TH1 *h_jet_average_mass_pt_1D_r05  {nullptr};
0135   TH2 *h_jet_mass_eta_r02  {nullptr};
0136   TH1 *h_jet_average_mass_eta_1D_r02  {nullptr};
0137   TH2 *h_jet_mass_eta_r03  {nullptr};
0138   TH1 *h_jet_average_mass_eta_1D_r03  {nullptr};
0139   TH2 *h_jet_mass_eta_r04  {nullptr};
0140   TH1 *h_jet_average_mass_eta_1D_r04  {nullptr};
0141   TH2 *h_jet_mass_eta_r05  {nullptr};
0142   TH1 *h_jet_average_mass_eta_1D_r05  {nullptr};
0143 };
0144 
0145 #endif  // JETKINEMATICCHECK_H