File indexing completed on 2024-04-06 12:28:36
0001 #ifndef RecoTracker_PixelSeeding_src_CellularAutomaton_h
0002 #define RecoTracker_PixelSeeding_src_CellularAutomaton_h
0003
0004 #include <array>
0005
0006 #include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h"
0007 #include "TrackingTools/TransientTrackingRecHit/interface/SeedingLayerSetsHits.h"
0008
0009 #include "CACell.h"
0010 #include "RecoTracker/PixelSeeding/interface/CAGraph.h"
0011
0012 class CellularAutomaton {
0013 public:
0014 CellularAutomaton(CAGraph& graph) : theLayerGraph(graph) {}
0015
0016 std::vector<CACell>& getAllCells() { return allCells; }
0017
0018 void createAndConnectCells(
0019 const std::vector<const HitDoublets*>&, const TrackingRegion&, const CACut&, const CACut&, const float);
0020
0021 void evolve(const unsigned int);
0022 void findNtuplets(std::vector<CACell::CAntuplet>&, const unsigned int);
0023 void findTriplets(const std::vector<const HitDoublets*>& hitDoublets,
0024 std::vector<CACell::CAntuplet>& foundTriplets,
0025 const TrackingRegion& region,
0026 const CACut& thetaCut,
0027 const CACut& phiCut,
0028 const float hardPtCut);
0029
0030 private:
0031 CAGraph& theLayerGraph;
0032
0033 std::vector<CACell> allCells;
0034 std::vector<CACellStatus> allStatus;
0035
0036 std::vector<unsigned int> theRootCells;
0037 std::vector<std::vector<CACell*> > theNtuplets;
0038 };
0039
0040 #endif