File indexing completed on 2026-05-23 08:10:33
0001
0002
0003 #ifndef LWTRACKNTUPLIZER_H
0004 #define LWTRACKNTUPLIZER_H
0005
0006 #include <fun4all/SubsysReco.h>
0007
0008 #include <string>
0009 #include <vector>
0010
0011 class ActsGeometry;
0012 class PHCompositeNode;
0013 class PHG4TpcGeomContainer;
0014 class SvtxTrack;
0015 class SvtxTrackMap;
0016 class SvtxVertexMap;
0017 class TFile;
0018 class TTree;
0019 class TrkrClusterContainer;
0020
0021 class lwtrackntuplizer : public SubsysReco
0022 {
0023 public:
0024 explicit lwtrackntuplizer(const std::string& name = "lwtrackntuplizer");
0025 ~lwtrackntuplizer() override;
0026
0027 int Init(PHCompositeNode* topNode) override;
0028 int InitRun(PHCompositeNode* topNode) override;
0029 int process_event(PHCompositeNode* topNode) override;
0030 int ResetEvent(PHCompositeNode* topNode) override;
0031 int EndRun(const int runnumber) override;
0032 int End(PHCompositeNode* topNode) override;
0033 int Reset(PHCompositeNode* topNode) override;
0034
0035 void Print(const std::string& what = "ALL") const override;
0036
0037 void setOutputName(const std::string& name) { m_outFileName = name; }
0038 void setTreeName(const std::string& name) { m_treeName = name; }
0039 void setClusterContainerName(const std::string& name) { m_clusterContainerName = name; }
0040 void setTrackMapName(const std::string& name) { m_trackMapName = name; }
0041 void setVertexMapName(const std::string& name) { m_vertexMapName = name; }
0042
0043 private:
0044 int GetNodes(PHCompositeNode* topNode);
0045 void SetupTree();
0046 void FillTrack(const SvtxTrack* track);
0047 void Cleanup();
0048
0049 TFile* m_outFile = nullptr;
0050 TTree* m_outTree = nullptr;
0051
0052 std::string m_outFileName = "lwtrackntuple.root";
0053 std::string m_treeName = "TrackTree";
0054
0055 std::string m_trackMapName = "SvtxTrackMap";
0056 std::string m_vertexMapName = "SvtxVertexMap";
0057 std::string m_clusterContainerName = "TRKR_CLUSTER_SEED";
0058 std::string m_geometryNodeName = "ActsGeometry";
0059 std::string m_tpcGeomNodeName = "TPCGEOMCONTAINER";
0060
0061 SvtxTrackMap* m_trackMap = nullptr;
0062 SvtxVertexMap* m_vertexMap = nullptr;
0063 TrkrClusterContainer* m_clusterMap = nullptr;
0064 ActsGeometry* m_tGeometry = nullptr;
0065 PHG4TpcGeomContainer* m_tpcGeomContainer = nullptr;
0066
0067 unsigned int m_event = 0;
0068 unsigned int m_nTracks = 0;
0069
0070 std::vector<int> m_trackID;
0071 std::vector<float> m_crossing;
0072 std::vector<float> m_px;
0073 std::vector<float> m_py;
0074 std::vector<float> m_pz;
0075 std::vector<float> m_pt;
0076 std::vector<float> m_eta;
0077 std::vector<float> m_phi;
0078 std::vector<float> m_deltapt;
0079 std::vector<float> m_deltaeta;
0080 std::vector<float> m_deltaphi;
0081 std::vector<int> m_charge;
0082 std::vector<float> m_quality;
0083 std::vector<float> m_chisq;
0084 std::vector<int> m_ndf;
0085 std::vector<int> m_nhits;
0086 std::vector<int> m_nmaps;
0087 std::vector<int> m_nintt;
0088 std::vector<int> m_ntpc;
0089 std::vector<int> m_nmms;
0090 std::vector<int> m_ntpc1;
0091 std::vector<int> m_ntpc11;
0092 std::vector<int> m_ntpc2;
0093 std::vector<int> m_ntpc3;
0094 std::vector<float> m_dedx;
0095 std::vector<float> m_pidedx;
0096 std::vector<float> m_kdedx;
0097 std::vector<float> m_prdedx;
0098 std::vector<int> m_vertexID;
0099 std::vector<float> m_vx;
0100 std::vector<float> m_vy;
0101 std::vector<float> m_vz;
0102 std::vector<float> m_dca2d;
0103 std::vector<float> m_dca2dsigma;
0104 std::vector<float> m_dca3dxy;
0105 std::vector<float> m_dca3dxysigma;
0106 std::vector<float> m_dca3dz;
0107 std::vector<float> m_dca3dzsigma;
0108 std::vector<float> m_pcax;
0109 std::vector<float> m_pcay;
0110 std::vector<float> m_pcaz;
0111 std::vector<float> m_hlxpt;
0112 std::vector<float> m_hlxeta;
0113 std::vector<float> m_hlxphi;
0114 std::vector<float> m_hlxX0;
0115 std::vector<float> m_hlxY0;
0116 std::vector<float> m_hlxZ0;
0117 std::vector<int> m_hlxcharge;
0118 };
0119
0120 #endif