File indexing completed on 2024-04-06 12:05:17
0001 #ifndef DataFormats_TauReco_PFTauDecayMode_h
0002 #define DataFormats_TauReco_PFTauDecayMode_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 #include "DataFormats/Candidate/interface/CompositeCandidate.h"
0020 #include "DataFormats/Candidate/interface/VertexCompositeCandidate.h"
0021 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
0022 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
0023 #include "DataFormats/TauReco/interface/PFTau.h"
0024 #include "DataFormats/TauReco/interface/PFTauDecayModeFwd.h"
0025
0026 namespace reco {
0027 class PFTauDecayMode : public CompositeCandidate {
0028 public:
0029
0030 const static unsigned char maxNumberOfPiZeroCandidatesAllowed = 4;
0031
0032 enum hadronicTauDecayModes {
0033 tauDecay1ChargedPion0PiZero,
0034 tauDecay1ChargedPion1PiZero,
0035 tauDecay1ChargedPion2PiZero,
0036 tauDecay1ChargedPion3PiZero,
0037 tauDecay1ChargedPion4PiZero,
0038 tauDecay2ChargedPion0PiZero,
0039 tauDecay2ChargedPion1PiZero,
0040 tauDecay2ChargedPion2PiZero,
0041 tauDecay2ChargedPion3PiZero,
0042 tauDecay2ChargedPion4PiZero,
0043 tauDecay3ChargedPion0PiZero,
0044 tauDecay3ChargedPion1PiZero,
0045 tauDecay3ChargedPion2PiZero,
0046 tauDecay3ChargedPion3PiZero,
0047 tauDecay3ChargedPion4PiZero,
0048 tauDecaysElectron,
0049 tauDecayMuon,
0050 tauDecayOther
0051 };
0052
0053 PFTauDecayMode() {}
0054
0055 PFTauDecayMode(Charge q,
0056 const LorentzVector& p4,
0057 const Point& vtx = Point(0, 0, 0),
0058 int pdgId = 12,
0059 int status = 2,
0060 bool integerCharge = true)
0061 : CompositeCandidate(q, p4, vtx, pdgId, status, integerCharge) {}
0062
0063
0064 PFTauDecayMode(const VertexCompositeCandidate& chargedPions,
0065 const CompositeCandidate& piZeroes,
0066 const CompositeCandidate& filteredObjects);
0067
0068 ~PFTauDecayMode() override {}
0069 PFTauDecayMode* clone() const override;
0070
0071
0072 const PFTauRef& pfTauRef() const { return pfTauRef_; }
0073 void setPFTauRef(const PFTauRef& theTau) { pfTauRef_ = theTau; }
0074
0075 hadronicTauDecayModes getDecayMode() const { return theDecayMode_; }
0076 void setDecayMode(hadronicTauDecayModes theDecayMode) { theDecayMode_ = theDecayMode; }
0077
0078
0079 const VertexCompositeCandidate& chargedPions() const;
0080
0081 const CompositeCandidate& neutralPions() const;
0082
0083 const CompositeCandidate& filteredObjects() const;
0084
0085
0086 std::vector<const Candidate*> chargedPionCandidates() const;
0087
0088 std::vector<const Candidate*> neutralPionCandidates() const;
0089
0090 std::vector<const Candidate*> decayProductCandidates() const;
0091
0092 std::vector<const Candidate*> filteredObjectCandidates(int absCharge = -2) const;
0093
0094 std::vector<const Candidate*> neutralFilteredObjectCandidates() const;
0095
0096 std::vector<const Candidate*> chargedFilteredObjectCandidates() const;
0097
0098
0099 void pfMasterClones(const Candidate* input, PFCandidateRefVector& toFill) const;
0100
0101
0102 PFCandidateRefVector associatedChargedPFCandidates() const;
0103
0104 PFCandidateRefVector associatedNeutralPFCandidates() const;
0105
0106 PFCandidateRefVector filteredPFCandidates() const;
0107
0108 protected:
0109 PFTauRef pfTauRef_;
0110 VertexCompositeCandidate chargedPions_;
0111 CompositeCandidate piZeroes_;
0112 CompositeCandidate filteredObjects_;
0113 hadronicTauDecayModes theDecayMode_;
0114 };
0115 }
0116
0117 #endif