Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:13:11

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef CALOTREEGEN_H
0004 #define CALOTREEGEN_H
0005 
0006 #include <string>
0007 #include <vector>
0008 #include <limits>
0009 
0010 #include <TFile.h>
0011 #include <TTree.h> 
0012 
0013 #include <fun4all/SubsysReco.h>
0014 #include <calobase/TowerInfoContainer.h>
0015 #include <calobase/TowerInfoContainerv1.h>
0016 #include <calobase/TowerInfoContainerv2.h>
0017 #include <calobase/TowerInfoContainerv3.h>
0018 #include <calobase/TowerInfoContainerv4.h>
0019 #include <jetbase/Jetv1.h>
0020 #include <jetbase/Jetv2.h>
0021 
0022 class PHCompositeNode;
0023 
0024 class caloTreeGen : public SubsysReco
0025 {
0026  public:
0027   caloTreeGen(const std::string &name = "caloTreeGen", const std::string &outfilename = "output.root");
0028   ~caloTreeGen() override = default;
0029   int Init(PHCompositeNode *topNode) override;
0030   int process_event(PHCompositeNode *topNode) override;
0031   int ResetEvent(PHCompositeNode *topNode) override;
0032   int End(PHCompositeNode *topNode) override;
0033 
0034   // ********** Setters ********** //
0035   void SetVerbosity(int verbo) {verbosity = verbo;}
0036   void DoRecoJet_radius(std::vector<float> radius_vector) {doRecoJet_radius.clear(); doRecoJet_radius = radius_vector;}
0037 
0038   // ********** Functions ********** //
0039   void Initialize_z_vertex();
0040   void Initialize_jet(std::string jet_prefix , float radius);
0041   void Initialize_trigger_vector();
0042   void Fill_z_vertex(PHCompositeNode *topNode);
0043   void Fill_recojet(PHCompositeNode *topNode, std::string jet_prefix, std::string node_prefix, float radius);
0044   void Fill_trigger_vector(PHCompositeNode *topNode);
0045   void Reset_jet();
0046 
0047  private:
0048   // ********** General variables ********** //
0049   TFile *file{nullptr};
0050   TTree *tree{nullptr};
0051   std::string foutname{"output.root"};
0052   int verbosity{0};
0053   int ievent{0};
0054   // Operation flags.
0055   std::vector<float> doRecoJet_radius{0.4};
0056 
0057   // ********** Constants ********** //
0058   // Tower information.
0059   static const int n_trigger_vec = 64;
0060 
0061   // ********** Tree variables ********** //
0062   // Vertex information.
0063   float z_vertex{std::numeric_limits<float>::quiet_NaN()};
0064   // Jet general information.
0065   std::map<std::string, std::vector<float>> jet_e_map={};
0066   std::map<std::string, std::vector<float>> jet_et_map={};
0067   std::map<std::string, std::vector<float>> jet_pt_map={};
0068   std::map<std::string, std::vector<float>> jet_eta_map={};
0069   std::map<std::string, std::vector<float>> jet_phi_map={};
0070   // Jet specific information.
0071   std::map<std::string, std::vector<float>> jet_calo_e_map={};
0072   // Trigger vector information.
0073   uint64_t gl1_trigger_scalar_live[n_trigger_vec];
0074   uint64_t gl1_trigger_scalar_scaled[n_trigger_vec];
0075   int gl1_trigger_vector_live[n_trigger_vec];
0076   int gl1_trigger_vector_scaled[n_trigger_vec];
0077 };
0078 
0079 #endif