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 }
0077
0078 #endif