File indexing completed on 2024-04-06 12:21:34
0001 #ifndef L1Trigger_Phase2L1Taus_L1HPSPFTauBuilder_h
0002 #define L1Trigger_Phase2L1Taus_L1HPSPFTauBuilder_h
0003
0004 #include "FWCore/ParameterSet/interface/ParameterSet.h" // edm::ParameterSet
0005 #include "DataFormats/Provenance/interface/ProductID.h" // edm::ProductID
0006 #include "L1Trigger/Phase2L1Taus/interface/L1HPSPFTauQualityCut.h" // L1HPSPFTauQualityCut
0007 #include "DataFormats/L1TParticleFlow/interface/HPSPFTau.h" // l1t::HPSPFTau
0008 #include "DataFormats/L1TParticleFlow/interface/PFCandidate.h" // l1t::PFCandidate, l1t::PFCandidateCollection, l1t::PFCandidateRef
0009 #include "DataFormats/JetReco/interface/CaloJet.h"
0010 #include "DataFormats/L1Trigger/interface/VertexWord.h"
0011 #include "CommonTools/Utils/interface/FormulaEvaluator.h"
0012 #include <vector>
0013
0014 class L1HPSPFTauBuilder {
0015 public:
0016 L1HPSPFTauBuilder(const edm::ParameterSet& cfg);
0017 ~L1HPSPFTauBuilder() = default;
0018
0019 void reset();
0020 void setL1PFCandProductID(const edm::ProductID& l1PFCandProductID);
0021 void setVertex(const l1t::VertexWordRef& primaryVertex);
0022 void setL1PFTauSeed(const l1t::PFCandidateRef& l1PFCandSeed);
0023
0024 void setL1PFTauSeed(const reco::CaloJetRef& l1JetSeed, const std::vector<l1t::PFCandidateRef>& l1PFCands);
0025 void addL1PFCandidates(const std::vector<l1t::PFCandidateRef>& l1PFCands);
0026 void buildL1PFTau();
0027
0028 l1t::HPSPFTau getL1PFTau() const { return l1PFTau_; }
0029
0030 private:
0031 l1t::PFCandidateRefVector convertToRefVector(const std::vector<l1t::PFCandidateRef>& l1PFCands);
0032
0033 bool isWithinSignalCone(const l1t::PFCandidate& l1PFCand);
0034 bool isWithinStrip(const l1t::PFCandidate& l1PFCand);
0035 bool isWithinIsolationCone(const l1t::PFCandidate& l1PFCand);
0036
0037 reco::FormulaEvaluator signalConeSizeFormula_;
0038
0039 double signalConeSize_;
0040 double signalConeSize2_;
0041 double minSignalConeSize_;
0042 double maxSignalConeSize_;
0043
0044 bool useStrips_;
0045 double stripSizeEta_;
0046 double stripSizePhi_;
0047
0048 double isolationConeSize_;
0049 double isolationConeSize2_;
0050
0051 std::vector<L1HPSPFTauQualityCut> signalQualityCutsDzCutDisabled_;
0052 std::vector<L1HPSPFTauQualityCut> signalQualityCutsDzCutEnabledPrimary_;
0053 std::vector<L1HPSPFTauQualityCut> isolationQualityCutsDzCutDisabled_;
0054 std::vector<L1HPSPFTauQualityCut> isolationQualityCutsDzCutEnabledPrimary_;
0055 std::vector<L1HPSPFTauQualityCut> isolationQualityCutsDzCutEnabledPileup_;
0056 edm::ProductID l1PFCandProductID_;
0057 bool isPFCandSeeded_;
0058 l1t::PFCandidateRef l1PFCandSeed_;
0059 bool isJetSeeded_;
0060 reco::CaloJetRef l1JetSeed_;
0061 double l1PFTauSeedEta_;
0062 double l1PFTauSeedPhi_;
0063 double l1PFTauSeedZVtx_;
0064 double sumAllL1PFCandidatesPt_;
0065 l1t::VertexWordRef primaryVertex_;
0066 l1t::HPSPFTau l1PFTau_;
0067
0068 reco::Particle::LorentzVector stripP4_;
0069
0070 std::vector<l1t::PFCandidateRef> signalAllL1PFCandidates_;
0071 std::vector<l1t::PFCandidateRef> signalChargedHadrons_;
0072 std::vector<l1t::PFCandidateRef> signalElectrons_;
0073 std::vector<l1t::PFCandidateRef> signalNeutralHadrons_;
0074 std::vector<l1t::PFCandidateRef> signalPhotons_;
0075 std::vector<l1t::PFCandidateRef> signalMuons_;
0076
0077 std::vector<l1t::PFCandidateRef> stripAllL1PFCandidates_;
0078 std::vector<l1t::PFCandidateRef> stripElectrons_;
0079 std::vector<l1t::PFCandidateRef> stripPhotons_;
0080
0081 std::vector<l1t::PFCandidateRef> isoAllL1PFCandidates_;
0082 std::vector<l1t::PFCandidateRef> isoChargedHadrons_;
0083 std::vector<l1t::PFCandidateRef> isoElectrons_;
0084 std::vector<l1t::PFCandidateRef> isoNeutralHadrons_;
0085 std::vector<l1t::PFCandidateRef> isoPhotons_;
0086 std::vector<l1t::PFCandidateRef> isoMuons_;
0087
0088 std::vector<l1t::PFCandidateRef> sumAllL1PFCandidates_;
0089 std::vector<l1t::PFCandidateRef> sumChargedHadrons_;
0090 std::vector<l1t::PFCandidateRef> sumElectrons_;
0091 std::vector<l1t::PFCandidateRef> sumNeutralHadrons_;
0092 std::vector<l1t::PFCandidateRef> sumPhotons_;
0093 std::vector<l1t::PFCandidateRef> sumMuons_;
0094
0095 double sumChargedIsoPileup_;
0096
0097 bool debug_;
0098 };
0099
0100 #endif