Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-06-13 03:24:02

0001 // Author: Marco Rovere - marco.rovere@cern.ch
0002 // Date: 10/2021
0003 
0004 #ifndef __RecoHGCal_TICL_PRbyFASTJET_H__
0005 #define __RecoHGCal_TICL_PRbyFASTJET_H__
0006 #include <memory>  // unique_ptr
0007 #include "RecoHGCal/TICL/interface/PatternRecognitionAlgoBase.h"
0008 #include "RecoLocalCalo/HGCalRecAlgos/interface/RecHitTools.h"
0009 
0010 // fwd declaration
0011 
0012 namespace fastjet {
0013   class PseudoJet;
0014 };
0015 
0016 namespace ticl {
0017   template <typename TILES>
0018   class PatternRecognitionbyFastJet final : public PatternRecognitionAlgoBaseT<TILES> {
0019   public:
0020     PatternRecognitionbyFastJet(const edm::ParameterSet& conf, edm::ConsumesCollector);
0021     ~PatternRecognitionbyFastJet() override = default;
0022 
0023     void makeTracksters(const typename PatternRecognitionAlgoBaseT<TILES>::Inputs& input,
0024                         std::vector<Trackster>& result,
0025                         std::unordered_map<int, std::vector<int>>& seedToTracksterAssociation) override;
0026 
0027     void energyRegressionAndID(const std::vector<reco::CaloCluster>& layerClusters,
0028                                const tensorflow::Session*,
0029                                std::vector<Trackster>& result);
0030 
0031     static void fillPSetDescription(edm::ParameterSetDescription& iDesc);
0032 
0033   private:
0034     edm::ESGetToken<CaloGeometry, CaloGeometryRecord> caloGeomToken_;
0035     const double antikt_radius_;
0036     const int minNumLayerCluster_;
0037     const std::string eidInputName_;
0038     const std::string eidOutputNameEnergy_;
0039     const std::string eidOutputNameId_;
0040     const float eidMinClusterEnergy_;
0041     const int eidNLayers_;
0042     const int eidNClusters_;
0043     const bool computeLocalTime_;
0044 
0045     hgcal::RecHitTools rhtools_;
0046     tensorflow::Session* eidSession_;
0047 
0048     static const int eidNFeatures_ = 3;
0049 
0050     void buildJetAndTracksters(std::vector<fastjet::PseudoJet>&, std::vector<ticl::Trackster>&);
0051   };
0052 
0053 }  // namespace ticl
0054 #endif