Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-09-26 05:07:07

0001 // Author: Felice Pantaleo - felice.pantaleo@cern.ch
0002 // Date: 09/2018
0003 
0004 #ifndef RecoHGCal_TICL_PatternRecognitionAlgoBase_H__
0005 #define RecoHGCal_TICL_PatternRecognitionAlgoBase_H__
0006 
0007 #include <memory>
0008 #include <vector>
0009 #include <functional>
0010 #include <algorithm>
0011 #include "DataFormats/CaloRecHit/interface/CaloCluster.h"
0012 #include "DataFormats/HGCalReco/interface/Trackster.h"
0013 #include "DataFormats/HGCalReco/interface/TICLLayerTile.h"
0014 #include "DataFormats/HGCalReco/interface/TICLSeedingRegion.h"
0015 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0016 #include "DataFormats/Common/interface/ValueMap.h"
0017 #include "RecoHGCal/TICL/interface/GlobalCache.h"
0018 #include "DataFormats/HGCalReco/interface/Common.h"
0019 #include "FWCore/Framework/interface/ConsumesCollector.h"
0020 #include "PhysicsTools/TensorFlow/interface/TensorFlow.h"
0021 
0022 namespace edm {
0023   class Event;
0024   class EventSetup;
0025 }  // namespace edm
0026 
0027 namespace ticl {
0028   template <typename TILES>
0029   class PatternRecognitionAlgoBaseT {
0030   public:
0031     PatternRecognitionAlgoBaseT(const edm::ParameterSet& conf, edm::ConsumesCollector)
0032         : algo_verbosity_(conf.getParameter<int>("algo_verbosity")) {}
0033     virtual ~PatternRecognitionAlgoBaseT() {};
0034 
0035     struct Inputs {
0036       const edm::Event& ev;
0037       const edm::EventSetup& es;
0038       const std::vector<reco::CaloCluster>& layerClusters;
0039       const std::vector<float>& mask;
0040       const edm::ValueMap<std::pair<float, float>>& layerClustersTime;
0041       const TILES& tiles;
0042       const std::vector<TICLSeedingRegion>& regions;
0043       Inputs(const edm::Event& eV,
0044              const edm::EventSetup& eS,
0045              const std::vector<reco::CaloCluster>& lC,
0046              const std::vector<float>& mS,
0047              const edm::ValueMap<std::pair<float, float>>& lT,
0048              const TILES& tL,
0049              const std::vector<TICLSeedingRegion>& rG)
0050           : ev(eV), es(eS), layerClusters(lC), mask(mS), layerClustersTime(lT), tiles(tL), regions(rG) {}
0051     };
0052 
0053     virtual void makeTracksters(const Inputs& input,
0054                                 std::vector<Trackster>& result,
0055                                 std::unordered_map<int, std::vector<int>>& seedToTracksterAssociation) = 0;
0056 
0057     virtual void filter(std::vector<Trackster>& output,
0058                         const std::vector<Trackster>& inTracksters,
0059                         const Inputs& input,
0060                         std::unordered_map<int, std::vector<int>>& seedToTracksterAssociation) = 0;
0061 
0062   protected:
0063     int algo_verbosity_;
0064   };
0065 }  // namespace ticl
0066 
0067 #endif