Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef RecoHGCal_TICL_GeneralInterpretationAlgo_H_
0002 #define RecoHGCal_TICL_GeneralInterpretationAlgo_H_
0003 
0004 #include "FWCore/Framework/interface/Frameworkfwd.h"
0005 #include "FWCore/Framework/interface/ESHandle.h"
0006 #include "FWCore/Framework/interface/MakerMacros.h"
0007 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0008 #include "RecoHGCal/TICL/interface/TICLInterpretationAlgoBase.h"
0009 #include "DataFormats/TrackReco/interface/Track.h"
0010 #include "DataFormats/GeometrySurface/interface/BoundDisk.h"
0011 
0012 namespace ticl {
0013 
0014   class GeneralInterpretationAlgo : public TICLInterpretationAlgoBase<reco::Track> {
0015   public:
0016     GeneralInterpretationAlgo(const edm::ParameterSet &conf, edm::ConsumesCollector iC);
0017 
0018     ~GeneralInterpretationAlgo() override;
0019 
0020     void makeCandidates(const Inputs &input,
0021                         edm::Handle<MtdHostCollection> inputTiming_h,
0022                         std::vector<Trackster> &resultTracksters,
0023                         std::vector<int> &resultCandidate) override;
0024 
0025     void initialize(const HGCalDDDConstants *hgcons,
0026                     const hgcal::RecHitTools rhtools,
0027                     const edm::ESHandle<MagneticField> bfieldH,
0028                     const edm::ESHandle<Propagator> propH) override;
0029 
0030     static void fillPSetDescription(edm::ParameterSetDescription &iDesc);
0031 
0032   private:
0033     void buildLayers();
0034 
0035     Vector propagateTrackster(const Trackster &t,
0036                               const unsigned idx,
0037                               float zVal,
0038                               std::array<TICLLayerTile, 2> &tracksterTiles);
0039 
0040     void findTrackstersInWindow(const MultiVectorManager<Trackster> &tracksters,
0041                                 const std::vector<std::pair<Vector, unsigned>> &seedingCollection,
0042                                 const std::array<TICLLayerTile, 2> &tracksterTiles,
0043                                 const std::vector<Vector> &tracksterPropPoints,
0044                                 float delta,
0045                                 unsigned trackstersSize,
0046                                 std::vector<std::vector<unsigned>> &resultCollection,
0047                                 bool useMask);
0048 
0049     bool timeAndEnergyCompatible(float &total_raw_energy,
0050                                  const reco::Track &track,
0051                                  const Trackster &trackster,
0052                                  const float &tkTime,
0053                                  const float &tkTimeErr,
0054                                  const float &tkQual,
0055                                  const float &tkBeta,
0056                                  const GlobalPoint &tkMtdPos,
0057                                  bool useMTDTiming);
0058 
0059     const float tkEnergyCut_ = 2.0f;
0060     const float maxDeltaT_ = 3.0f;
0061     const float del_tk_ts_layer1_;
0062     const float del_tk_ts_int_;
0063     const float timing_quality_threshold_;
0064 
0065     const HGCalDDDConstants *hgcons_;
0066 
0067     std::unique_ptr<GeomDet> firstDisk_[2];
0068     std::unique_ptr<GeomDet> interfaceDisk_[2];
0069 
0070     hgcal::RecHitTools rhtools_;
0071 
0072     edm::ESHandle<MagneticField> bfield_;
0073     edm::ESHandle<Propagator> propagator_;
0074   };
0075 
0076 }  // namespace ticl
0077 
0078 #endif