Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:12:46

0001 /*!
0002  *  \file       BJetModule.h
0003  *  \brief      Gether information from Truth Jet and Tracks, DST -> NTuple
0004  *  \details    Gether information from Truth Jet and Tracks, DST -> NTuple
0005  *  \author     Dennis V. Perepelitsa
0006  */
0007 
0008 #ifndef __BJETMODULE_H__
0009 #define __BJETMODULE_H__
0010 
0011 // --- need to check all these includes...
0012 #include <fun4all/SubsysReco.h>
0013 #include <vector>
0014 
0015 #include "TMath.h"
0016 
0017 #include "TFile.h"
0018 #include "TTree.h"
0019 
0020 class PHCompositeNode;
0021 class SvtxVertexMap;
0022 class SvtxTrack;
0023 //class JetEvalStack;
0024 //class SvtxEvalStack;
0025 
0026 class BJetModule : public SubsysReco
0027 {
0028  public:
0029   BJetModule(const std::string& name = "BJetModule", const std::string& out = "HFtag.root");
0030 
0031   int Init(PHCompositeNode*);
0032   int reset_tree_vars();
0033   int process_event(PHCompositeNode*);
0034   int End(PHCompositeNode*);
0035 
0036   const std::string& get_trackmap_name() const
0037   {
0038     return _trackmap_name;
0039   }
0040 
0041   void set_trackmap_name(const std::string& trackmapName)
0042   {
0043     _trackmap_name = trackmapName;
0044   }
0045 
0046   const std::string& get_vertexmap_name() const
0047   {
0048     return _vertexmap_name;
0049   }
0050   void set_truthjetmap_name(const std::string& name)
0051   { _truthjetmap_name = name; }
0052   void set_recojetmap_name(const std::string& name)
0053   { _recojetmap_name = name; }
0054   void set_vertexmap_name(const std::string& vertexmapName)
0055   {
0056     _vertexmap_name = vertexmapName;
0057   }
0058 
0059  private:
0060   float dR(float eta1, float eta2, float phi1, float phi2)
0061   {
0062     float deta = eta1 - eta2;
0063     float dphi = phi1 - phi2;
0064     if (dphi > +3.14159)
0065       dphi -= 2 * 3.14159;
0066     if (dphi < -3.14159)
0067       dphi += 2 * 3.14159;
0068 
0069     return sqrt(pow(deta, 2) + pow(dphi, 2));
0070   }
0071  
0072   void calc3DDCA(SvtxTrack* track, SvtxVertexMap* vertexmap,
0073          float& dca3d_xy, float& dca3d_xy_error,
0074          float& dca3d_z, float& dca3d_z_error);
0075  
0076   void setBranches();
0077   std::string _foutname;
0078   
0079   std::string _truthjetmap_name;
0080   std::string _recojetmap_name;
0081 
0082   std::string _trackmap_name;
0083   std::string _vertexmap_name;
0084 
0085   int _ievent;
0086 
0087   TFile* _f;
0088   TTree* _tree;
0089 
0090   int _b_event;
0091 
0092   int _b_truth_vertex_n;
0093   float _b_truth_vertex_x[10];
0094   float _b_truth_vertex_y[10];
0095   float _b_truth_vertex_z[10];
0096 
0097   int _b_truthjet_n;
0098   int _b_truthjet_parton_flavor[10];
0099   int _b_truthjet_hadron_flavor[10];
0100 
0101   float _b_truthjet_pt[10];
0102   float _b_truthjet_eta[10];
0103   float _b_truthjet_phi[10];
0104 
0105   int _b_recojet_valid[10];
0106   float _b_recojet_pt[10];
0107   float _b_recojet_eta[10];
0108   float _b_recojet_phi[10];
0109 
0110   int _b_particle_n;
0111   float _b_particle_pt[1000];
0112   float _b_particle_eta[1000];
0113   float _b_particle_phi[1000];
0114   int _b_particle_pid[1000];
0115   unsigned int _b_particle_embed[1000];
0116 
0117   float _b_particle_vertex_x[1000];
0118   float _b_particle_vertex_y[1000];
0119   float _b_particle_vertex_z[1000];
0120   float _b_particle_dca_xy[1000];
0121   float _b_particle_dca_z[1000];
0122 
0123   int _b_track_n;
0124   float _b_track_pt[1000];
0125   float _b_track_eta[1000];
0126   float _b_track_phi[1000];
0127 
0128   float _b_track_dca2d[1000];
0129   float _b_track_dca2d_error[1000];
0130 
0131   float _b_track_dca3d_xy[1000];
0132   float _b_track_dca3d_xy_error[1000];
0133 
0134   float _b_track_dca3d_z[1000];
0135   float _b_track_dca3d_z_error[1000];
0136 
0137   float _b_track_dca2d_calc[1000];
0138   float _b_track_dca2d_calc_truth[1000];
0139   float _b_track_dca3d_calc[1000];
0140   float _b_track_dca3d_calc_truth[1000];
0141 
0142   float _b_track_pca_phi[1000];
0143   float _b_track_pca_x[1000];
0144   float _b_track_pca_y[1000];
0145   float _b_track_pca_z[1000];
0146 
0147   float _b_track_quality[1000];
0148   float _b_track_chisq[1000];
0149   int _b_track_ndf[1000];
0150 
0151   int _b_track_nmaps[1000];
0152 
0153   unsigned int _b_track_nclusters[1000];
0154   unsigned int _b_track_nclusters_by_layer[1000];
0155   unsigned int _b_track_best_nclusters[1000];
0156   unsigned int _b_track_best_nclusters_by_layer[1000];
0157 
0158   unsigned int _b_track_best_embed[1000];
0159   bool _b_track_best_primary[1000];
0160   int _b_track_best_pid[1000];
0161   float _b_track_best_pt[1000];
0162 
0163   int _b_track_best_in[1000];
0164   int _b_track_best_out[1000];
0165   int _b_track_best_parent_pid[1000];
0166 
0167   float _b_track_best_vertex_x[1000];
0168   float _b_track_best_vertex_y[1000];
0169   float _b_track_best_vertex_z[1000];
0170   float _b_track_best_dca_xy[1000];
0171   float _b_track_best_dca_z[1000];
0172 
0173   //! The embedding ID for the HepMC subevent to be analyzed.
0174   //! positive ID is the embedded event of interest, e.g. jetty event from pythia
0175   //! negative IDs are backgrounds, .e.g out of time pile up collisions
0176   //! Usually, ID = 0 means the primary Au+Au collision background
0177   int _embedding_id;
0178 };
0179 
0180 #endif  // __BJETMODULE_H__