Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-08-21 04:46:45

0001 /*
0002 TICL plugin for electron superclustering in HGCAL with Mustache algorithm
0003 Authors : Theo Cuisset <theo.cuisset@cern.ch>, Shamik Ghosh <shamik.ghosh@cern.ch>
0004 Date : 06/2024
0005 */
0006 
0007 #ifndef RecoHGCal_TICL_TracksterLinkingSuperClusteringMustache_H
0008 #define RecoHGCal_TICL_TracksterLinkingSuperClusteringMustache_H
0009 
0010 #include <vector>
0011 
0012 namespace cms {
0013   namespace Ort {
0014     class ONNXRuntime;
0015   }
0016 }  // namespace cms
0017 
0018 #include "RecoHGCal/TICL/interface/TracksterLinkingAlgoBase.h"
0019 #include "RecoHGCal/TICL/interface/SuperclusteringDNNInputs.h"
0020 
0021 #include "CondFormats/EcalObjects/interface/EcalMustacheSCParameters.h"
0022 #include "CondFormats/DataRecord/interface/EcalMustacheSCParametersRcd.h"
0023 #include "CondFormats/EcalObjects/interface/EcalSCDynamicDPhiParameters.h"
0024 #include "CondFormats/DataRecord/interface/EcalSCDynamicDPhiParametersRcd.h"
0025 
0026 namespace ticl {
0027   class Trackster;
0028 
0029   class TracksterLinkingbySuperClusteringMustache : public TracksterLinkingAlgoBase {
0030   public:
0031     TracksterLinkingbySuperClusteringMustache(const edm::ParameterSet& ps,
0032                                               edm::ConsumesCollector iC,
0033                                               cms::Ort::ONNXRuntime const* onnxRuntime = nullptr);
0034     /* virtual */ ~TracksterLinkingbySuperClusteringMustache() override {}
0035     static void fillPSetDescription(edm::ParameterSetDescription& iDesc);
0036 
0037     void linkTracksters(const Inputs& input,
0038                         std::vector<Trackster>& resultTracksters,
0039                         std::vector<std::vector<unsigned int>>& linkedResultTracksters,
0040                         std::vector<std::vector<unsigned int>>& linkedTracksterIdToInputTracksterId) override;
0041     void initialize(const HGCalDDDConstants* hgcons,
0042                     const hgcal::RecHitTools rhtools,
0043                     const edm::ESHandle<MagneticField> bfieldH,
0044                     const edm::ESHandle<Propagator> propH) override;
0045 
0046     virtual void setEvent(edm::Event& iEvent, edm::EventSetup const& iEventSetup) override;
0047 
0048   private:
0049     bool trackstersPassesPIDCut(const Trackster& ts) const;
0050 
0051     edm::ESGetToken<EcalMustacheSCParameters, EcalMustacheSCParametersRcd> ecalMustacheSCParametersToken_;
0052     edm::ESGetToken<EcalSCDynamicDPhiParameters, EcalSCDynamicDPhiParametersRcd> ecalSCDynamicDPhiParametersToken_;
0053     const EcalMustacheSCParameters* mustacheSCParams_;
0054     const EcalSCDynamicDPhiParameters* scDynamicDPhiParams_;
0055 
0056     float seedThresholdPt_;
0057     float candidateEnergyThreshold_;
0058     bool filterByTracksterPID_;
0059     std::vector<int> tracksterPIDCategoriesToFilter_;
0060     float PIDThreshold_;
0061   };
0062 
0063 }  // namespace ticl
0064 
0065 #endif