Back to home page

sPhenix code displayed by LXR

 
 

    


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   /// Constructor
0018   KFParticle_DST() = default;
0019 
0020   /// Destructor
0021   virtual ~KFParticle_DST() = default;
0022 
0023   /// Places a KFParticle_Container and SvtxTrackMap on the node tree if they don't exist
0024   int createParticleNode(PHCompositeNode* topNode);
0025 
0026   /// Simultaneously fills a KFParticle_Container and SvtxTrackMap if they are enabled
0027   void fillParticleNode(PHCompositeNode* topNode, KFParticle& motherParticle,
0028                         KFParticle& PV,
0029                         const std::vector<KFParticle>& daughters,
0030                         const std::vector<KFParticle>& intermediates);
0031 
0032   /// Called by fillParticleNode, fills an SvtxTrackMap
0033   void fillParticleNode_Track(PHCompositeNode* topNode, KFParticle& motherParticle,
0034                               std::vector<KFParticle> daughters,
0035                               std::vector<KFParticle> intermediates);
0036 
0037   /// Called by fillParticleNode, fills a KFParitcle_Container
0038   void fillParticleNode_Particle(PHCompositeNode* topNode, KFParticle& motherParticle,
0039                                  KFParticle& PV,
0040                                  std::vector<KFParticle> daughters,
0041                                  std::vector<KFParticle> intermediates);
0042 
0043   /// Prints contents of KFParticle_Containers and SvtxTrackMaps for an event if they are enabled
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  // KFPARTICLESPHENIX_KFPARTICLEDST_H