Back to home page

Project CMSSW displayed by LXR

 
 

    


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   //void setL1PFTauSeed(const reco::CaloJetRef& l1Jet_seed);
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