Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-08-21 04:02:45

0001 #ifndef RecoPixelVertexing_PixelTriplets_src_CellularAutomaton_h
0002 #define RecoPixelVertexing_PixelTriplets_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 "RecoPixelVertexing/PixelTriplets/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  // RecoPixelVertexing_PixelTriplets_src_CellularAutomaton_h