Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:18:38

0001 #ifndef G4JET_TRUTHJETINPUT_H
0002 #define G4JET_TRUTHJETINPUT_H
0003 
0004 #include <jetbase/Jet.h>
0005 #include <jetbase/JetInput.h>
0006 
0007 #include <iostream>  // for cout, ostream
0008 #include <vector>
0009 
0010 class PHCompositeNode;
0011 
0012 class TruthJetInput : public JetInput
0013 {
0014  public:
0015   TruthJetInput(Jet::SRC input);
0016   ~TruthJetInput() override {}
0017 
0018   //! by default, TruthJetInput process all truth primary particle.
0019   //! However, it can be configured to read only one or more embedded stream via add_embedding_flag()
0020   //! It can be useful for reconstruct truth jet for embedded pythia jets only, etc.
0021   //! Call add_embedding_flag() multiple times to add multiple embed stream
0022   void add_embedding_flag(const int embed_stream_id)
0023   {
0024     m_EmbedID.push_back(embed_stream_id);
0025   }
0026 
0027   void identify(std::ostream& os = std::cout) override;
0028 
0029   Jet::SRC get_src() override { return m_Input; }
0030 
0031   std::vector<Jet*> get_input(PHCompositeNode* topNode) override;
0032 
0033   void set_eta_range(float eta_min, float eta_max)
0034   {
0035     m_EtaMin = eta_min;
0036     m_EtaMax = eta_max;
0037   }
0038 
0039  private:
0040   Jet::SRC m_Input = Jet::VOID;
0041   float m_EtaMin = -4.;
0042   float m_EtaMax = 4.;
0043 
0044   //! if empty: process all primary particles
0045   //! if non-empty: only process primary particles in the selected embed stream.
0046   std::vector<int> m_EmbedID;
0047 
0048   bool use_embed_stream() { return m_EmbedID.size() > 0; }
0049 };
0050 
0051 #endif