File indexing completed on 2025-08-06 08:17:47
0001 #ifndef KFPARTICLESPHENIX_KFPARTICLEDST_H
0002 #define KFPARTICLESPHENIX_KFPARTICLEDST_H
0003
0004 #include <KFParticle.h>
0005
0006 #include <string>
0007 #include <vector>
0008
0009 class KFParticle_Container;
0010 class PHCompositeNode;
0011 class SvtxTrack;
0012 class SvtxTrackMap;
0013
0014 class KFParticle_DST
0015 {
0016 public:
0017
0018 KFParticle_DST() = default;
0019
0020
0021 virtual ~KFParticle_DST() = default;
0022
0023
0024 int createParticleNode(PHCompositeNode* topNode);
0025
0026
0027 void fillParticleNode(PHCompositeNode* topNode, KFParticle& motherParticle,
0028 KFParticle& PV,
0029 const std::vector<KFParticle>& daughters,
0030 const std::vector<KFParticle>& intermediates);
0031
0032
0033 void fillParticleNode_Track(PHCompositeNode* topNode, KFParticle& motherParticle,
0034 std::vector<KFParticle> daughters,
0035 std::vector<KFParticle> intermediates);
0036
0037
0038 void fillParticleNode_Particle(PHCompositeNode* topNode, KFParticle& motherParticle,
0039 KFParticle& PV,
0040 std::vector<KFParticle> daughters,
0041 std::vector<KFParticle> intermediates);
0042
0043
0044 void printNode(PHCompositeNode* topNode);
0045
0046 protected:
0047 bool m_has_intermediates_DST = false;
0048 bool m_write_track_container = true;
0049 bool m_write_particle_container = true;
0050 std::string m_container_name;
0051 std::string m_origin_track_map_node_name = "SvtxTrackMap";
0052
0053 private:
0054 SvtxTrackMap* m_recoTrackMap = nullptr;
0055 KFParticle_Container* m_recoParticleMap = nullptr;
0056 SvtxTrack* buildSvtxTrack(const KFParticle& particle);
0057 };
0058
0059 #endif