Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:18:28

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef PHCOSMICSEEDER_H
0004 #define PHCOSMICSEEDER_H
0005 
0006 #include <fun4all/SubsysReco.h>
0007 #include <trackbase/ActsGeometry.h>
0008 #include <trackbase/TrkrDefs.h>
0009 #include <trackbase/MvtxDefs.h>
0010 
0011 #include <map>
0012 #include <string>
0013 class PHCompositeNode;
0014 class ActsGeometry;
0015 class TrkrClusterContainer;
0016 class TrackSeedContainer;
0017 class TFile;
0018 class TNtuple;
0019 class PHCosmicSeeder : public SubsysReco
0020 {
0021  public:
0022   using PositionMap = std::map<TrkrDefs::cluskey, Acts::Vector3>;
0023   struct seed
0024   {
0025     float xyslope = std::numeric_limits<float>::quiet_NaN();
0026     float xyintercept = std::numeric_limits<float>::quiet_NaN();
0027     float xzslope = std::numeric_limits<float>::quiet_NaN();
0028     float xzintercept = std::numeric_limits<float>::quiet_NaN();
0029     float yzslope = std::numeric_limits<float>::quiet_NaN();
0030     float yzintercept = std::numeric_limits<float>::quiet_NaN();
0031     std::set<TrkrDefs::cluskey> ckeys;
0032   };
0033   using SeedVector = std::vector<seed>;
0034   PHCosmicSeeder(const std::string &name = "PHCosmicSeeder");
0035 
0036   ~PHCosmicSeeder() override = default;
0037   int Init(PHCompositeNode *topNode) override;
0038   int InitRun(PHCompositeNode *topNode) override;
0039   int process_event(PHCompositeNode *topNode) override;
0040   int End(PHCompositeNode *topNode) override;
0041   void adcCut(float cut) { m_adcCut = cut; }
0042   void xyTolerance(float tol) { m_xyTolerance = tol; }
0043   void seedAnalysis() { m_analysis = true; }
0044   void trackMapName(const std::string &name) { m_trackMapName = name; }
0045   void trackerId(TrkrDefs::TrkrId trackerId) { m_trackerId = trackerId; }
0046 
0047  private:
0048   int getNodes(PHCompositeNode *topNode);
0049   int createNodes(PHCompositeNode *topNode);
0050   SeedVector makeSeeds(PositionMap &clusterPositions);
0051   SeedVector combineSeeds(SeedVector &initialSeeds, PositionMap &clusterPositions);
0052   SeedVector findIntersections(SeedVector &initialSeeds);
0053   SeedVector chainSeeds(SeedVector &initialSeeds, PositionMap &clusterPositions);
0054   void recalculateSeedLineParameters(seed &seed, PositionMap &clusters, bool isXY);
0055 
0056   float m_xyTolerance = 2.;  //! cm
0057 //  float m_xzTolerance = 2.;  //! cm
0058   std::string m_trackMapName = "TpcTrackSeedContainer";
0059   TrkrDefs::TrkrId m_trackerId = TrkrDefs::TrkrId::tpcId;
0060   ActsGeometry *m_tGeometry = nullptr;
0061   float m_adcCut = 0;
0062   TrkrClusterContainer *m_clusterContainer = nullptr;
0063   TrackSeedContainer *m_seedContainer = nullptr;
0064   TFile *m_outfile = nullptr;
0065   TNtuple *m_tup = nullptr;
0066   bool m_analysis = false;
0067   float m_event = 0;
0068 };
0069 
0070 #endif  // PHCOSMICSEEDER_H