Go to the documentation of this file.00001 #ifndef DataFormats_TauReco_PFTauDecayMode_h
00002 #define DataFormats_TauReco_PFTauDecayMode_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "DataFormats/Candidate/interface/CompositeCandidate.h"
00020 #include "DataFormats/Candidate/interface/VertexCompositeCandidate.h"
00021 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
00022 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
00023 #include "DataFormats/TauReco/interface/PFTau.h"
00024 #include "DataFormats/TauReco/interface/PFTauDecayModeFwd.h"
00025 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00026
00027 namespace reco {
00028 class PFTauDecayMode : public CompositeCandidate {
00029 public:
00030
00031 const static unsigned char maxNumberOfPiZeroCandidatesAllowed = 4;
00032
00033 enum hadronicTauDecayModes
00034 {
00035 tauDecay1ChargedPion0PiZero,
00036 tauDecay1ChargedPion1PiZero,
00037 tauDecay1ChargedPion2PiZero,
00038 tauDecay1ChargedPion3PiZero,
00039 tauDecay1ChargedPion4PiZero,
00040 tauDecay2ChargedPion0PiZero,
00041 tauDecay2ChargedPion1PiZero,
00042 tauDecay2ChargedPion2PiZero,
00043 tauDecay2ChargedPion3PiZero,
00044 tauDecay2ChargedPion4PiZero,
00045 tauDecay3ChargedPion0PiZero,
00046 tauDecay3ChargedPion1PiZero,
00047 tauDecay3ChargedPion2PiZero,
00048 tauDecay3ChargedPion3PiZero,
00049 tauDecay3ChargedPion4PiZero,
00050 tauDecaysElectron,
00051 tauDecayMuon,
00052 tauDecayOther
00053 };
00054
00055 PFTauDecayMode(){}
00057 PFTauDecayMode( Charge q,const LorentzVector& p4,const Point & vtx = Point( 0, 0, 0 ),
00058 int pdgId = 12, int status = 2, bool integerCharge = true):CompositeCandidate(q, p4, vtx, pdgId, status, integerCharge){}
00059
00061 PFTauDecayMode(const VertexCompositeCandidate& chargedPions,
00062 const CompositeCandidate& piZeroes,
00063 const CompositeCandidate& filteredObjects);
00064
00065 virtual ~PFTauDecayMode(){}
00066 PFTauDecayMode* clone() const;
00067
00069 const PFTauRef& pfTauRef() const { return pfTauRef_; }
00070 void setPFTauRef(const PFTauRef& theTau) { pfTauRef_ = theTau;}
00071
00072 hadronicTauDecayModes getDecayMode() const { return theDecayMode_; }
00073 void setDecayMode(hadronicTauDecayModes theDecayMode) { theDecayMode_ = theDecayMode; }
00074
00076 const VertexCompositeCandidate& chargedPions() const;
00078 const CompositeCandidate& neutralPions() const;
00080 const CompositeCandidate& filteredObjects() const;
00081
00083 std::vector<const Candidate*> chargedPionCandidates() const;
00085 std::vector<const Candidate*> neutralPionCandidates() const;
00087 std::vector<const Candidate*> decayProductCandidates() const;
00089 std::vector<const Candidate*> filteredObjectCandidates(int absCharge = -2) const;
00091 std::vector<const Candidate*> neutralFilteredObjectCandidates() const;
00093 std::vector<const Candidate*> chargedFilteredObjectCandidates() const;
00094
00096 void pfMasterClones(const Candidate* input, PFCandidateRefVector& toFill) const;
00097
00099 PFCandidateRefVector associatedChargedPFCandidates() const;
00101 PFCandidateRefVector associatedNeutralPFCandidates() const;
00103 PFCandidateRefVector filteredPFCandidates() const;
00104
00105 protected:
00106 PFTauRef pfTauRef_;
00107 VertexCompositeCandidate chargedPions_;
00108 CompositeCandidate piZeroes_;
00109 CompositeCandidate filteredObjects_;
00110 hadronicTauDecayModes theDecayMode_;
00111 };
00112 }
00113
00114 #endif