00001 #ifndef _MANTREE_MMUON_H__
00002 #define _MANTREE_MMUON_H__
00003
00004 #include "manTree/MTrack.h"
00005
00006 #include <iosfwd>
00007 #include <string>
00008
00009 #ifdef _ATHENA_CLASSES__
00010
00011 namespace Analysis {
00012 class Muon;
00013 }
00014 class TrigMuonEF;
00015 #endif
00016
00017 namespace manchester {
00018
00019 class MInDetTrack;
00020
00022 class MMuon : public MTrack {
00023 public:
00024 MMuon();
00025
00027 MMuon(const MMuon& muon);
00028
00030 MMuon(const MInDetTrack& trk);
00031
00032 #ifdef _ATHENA_CLASSES__
00034 MMuon(const Analysis::Muon& muon, bool atlfast=false, bool debug=false);
00035 MMuon(const TrigMuonEF& muon);
00036 #endif
00037
00039 virtual ~MMuon();
00040
00042 inline Int_t PrimaryAuthor() const {return m_primaryAuthor;}
00043
00045 inline Bool_t IsStaco() const {return m_allAuthors & 2;}
00046
00048 inline Bool_t IsMuidSA() const {return m_allAuthors & 8;}
00049
00051 Bool_t HasInDetTrack() const;
00052
00054 Bool_t HasExtrapolatedTrack() const;
00055
00057 const MTrack* MuonSpecTrack() const {return m_muonspecTrack;}
00058
00060 const MInDetTrack* InDetTrack() const {return m_indetTrack;}
00061
00063 const MTrack* ExtrapolatedTrack() const {return m_extrapTrack;}
00064
00066 inline Bool_t BestMatch() const {return m_bestmatch;}
00067
00068 inline Bool_t Combined() const {return m_combined;}
00069
00070 inline Bool_t Loose() const {return m_loose;}
00071 inline Bool_t Medium() const {return m_medium;}
00072 inline Bool_t Tight() const {return m_tight;}
00073
00075 Double_t MatchChi2() const {return m_chi2Match;}
00076
00078 Int_t MatchNDoF() const {return m_dofMatch;}
00079
00081 Double_t MatchChi2NDoF() const;
00082
00084 Double_t Et01Cone() const {return m_etcone10;}
00085
00087 Double_t Et02Cone() const {return m_etcone20;}
00088
00090 Double_t Et03Cone() const {return m_etcone30;}
00091
00093 Double_t Et04Cone() const {return m_etcone40;}
00094
00096 Double_t Pt01Cone() const {return m_ptcone10;}
00097
00099 Double_t Pt02Cone() const {return m_ptcone20;}
00100
00102 Double_t Pt03Cone() const {return m_ptcone30;}
00103
00105 Double_t Pt04Cone() const {return m_ptcone40;}
00106
00108 Double_t ErrQoverP() const {return m_errqoverp;}
00109
00111 Short_t NMdtHits() const {return m_nMdtHits;}
00112
00114 Short_t NCscPhiHits() const {return m_nCscPhiHits;}
00115
00117 Short_t NCscEtaHits() const {return m_nCscEtaHits;}
00118
00120 Short_t NRpcPhiHits() const {return m_nRpcPhiHits;}
00121
00123 Short_t NRpcEtaHits() const {return m_nRpcEtaHits;}
00124
00126 Short_t NTgcPhiHits() const {return m_nTgcPhiHits;}
00127
00129 Short_t NTgcEtaHits() const {return m_nTgcEtaHits;}
00130
00132 Bool_t TopTriggerMatched() const;
00133
00135 void SetTopTriggerMatched(bool matched);
00136
00137
00138 std::vector<Bool_t> TriggerMatched() const;
00139
00140
00141 void SetMultiTriggerMatched(std::vector<bool> triggermatched);
00142
00144 Float_t METWpx() const {return m_met_weights[0];}
00145
00147 Float_t METWpy() const {return m_met_weights[1];}
00148
00150 Float_t METWet() const {return m_met_weights[2];}
00151
00153 Short_t METTrkType() const {return m_met_trktype;}
00154
00156 void SetMETWeights(const float wpx, const float wpy, const float wet);
00158 void SetMETWeights(const std::vector<double>& weights);
00160 void SetMETTrkType(const short type) {m_met_trktype=type;}
00161
00162
00163 virtual std::string Type() const;
00164
00165 virtual std::ostream& PrintContent(std::ostream& o) const;
00166
00167 MMuon& operator=(const MMuon& p);
00168
00170 void SetIDTrkVtxParams(const float d0, const float theta, const float phi, const float z0);
00171
00173 void SetIDTrkBSParams(const float d0, const float theta, const float phi, const float z0);
00174
00175 protected:
00176 virtual void Reset();
00177
00178 private:
00180 Int_t m_primaryAuthor;
00181
00183 UInt_t m_allAuthors;
00184
00186 MTrack* m_muonspecTrack;
00187
00189 MInDetTrack* m_indetTrack;
00190
00192 MTrack* m_extrapTrack;
00193
00195 Double_t m_chi2Match;
00196
00198 Int_t m_dofMatch;
00199
00201 Bool_t m_bestmatch;
00202
00203 Bool_t m_combined;
00204
00205 Bool_t m_loose;
00206 Bool_t m_medium;
00207 Bool_t m_tight;
00208
00210 Double_t m_etcone10;
00211 Double_t m_etcone20;
00212 Double_t m_etcone30;
00213 Double_t m_etcone40;
00214
00216 Double_t m_ptcone10;
00217 Double_t m_ptcone20;
00218 Double_t m_ptcone30;
00219 Double_t m_ptcone40;
00220
00222 Double_t m_errqoverp;
00223
00225 Short_t m_nMdtHits;
00226 Short_t m_nCscPhiHits;
00227 Short_t m_nCscEtaHits;
00228 Short_t m_nTgcPhiHits;
00229 Short_t m_nTgcEtaHits;
00230 Short_t m_nRpcPhiHits;
00231 Short_t m_nRpcEtaHits;
00232
00234 bool m_toptrigger_match;
00235
00236 std::vector<bool> m_matchedtriggers;
00237
00239 Float_t m_met_weights[3];
00241 Short_t m_met_trktype;
00242
00243 #ifndef DOXYGEN_IGNORE
00244 ClassDef(MMuon, 13)
00245 #endif
00246
00247 };
00248
00249 }
00250
00251 #endif