00001 #ifndef TMBMuon_H
00002 #define TMBMuon_H
00003
00005
00006
00007
00009
00010 #include "tmb_tree/TMBLorentzVector.hpp"
00011 #include "tmb_tree/TMBMuonType.hpp"
00012
00013 #ifndef ROOT_TRef
00014 #include "TRef.h"
00015 #endif
00016 #ifndef ROOT_TRefArray
00017 #include "TRefArray.h"
00018 #endif
00019
00020 class TMBTrack;
00021 class TMBVertex;
00022
00027 class TMBMuon : public TMBLorentzVector {
00028
00029 public:
00030
00032 enum Type {
00033 kLocalCorr = 0,
00034 kCentralCorr = 1,
00035 kSmearedMC = 2
00036 };
00037
00038 private:
00039
00040
00041 TMBMuonType _local;
00042 TMBMuonType _localcorr;
00043 TMBMuonType _central;
00044 TMBMuonType _centralcorr;
00045 TMBMuonType _global;
00046 TMBMuonType _smearedMC;
00047 Type _best;
00048
00049
00050 Int_t _nhit;
00051 Int_t _ndeck;
00052 Int_t _region;
00053 Int_t _octant;
00054 Float_t _chisqloc;
00055 Float_t _sctimeA;
00056 Float_t _sctimeB;
00057 Float_t _sctimeC;
00058 Float_t _xA;
00059 Float_t _yA;
00060 Float_t _zA;
00061 Float_t _bdl;
00062
00063
00064 Int_t _nseg;
00065 Int_t _ndof;
00066 Float_t _deltaPhi;
00067 Float_t _deltaEta;
00068 Float_t _deltaDrift;
00069 Float_t _chisq;
00070 Float_t _zAtPca;
00071 Float_t _impPar;
00072 Float_t _impParSig;
00073 Float_t _err_impPar;
00074 Float_t _err_zAtPca;
00075 Float_t _dca;
00076 Float_t _deteta;
00077 TRef _chptr;
00078 TRef _vtxref;
00079
00080
00081 Int_t _calnLayer;
00082 Int_t _nmtc;
00083 Float_t _etrack_best;
00084 Float_t _caleSig;
00085 Float_t _calEta;
00086 Float_t _calPhi;
00087 Float_t _eloss;
00088
00089
00090 Int_t _nTrk5;
00091 Float_t _EInCone1;
00092 Float_t _EInCone15;
00093 Float_t _EInCone2;
00094 Float_t _EInCone4;
00095 Float_t _EInCone6;
00096 Float_t _drJet5;
00097 Float_t _etTrkCone5;
00098 Float_t _etHalo;
00099
00100
00101 Int_t _isLoose;
00102 Int_t _isMedium;
00103 Int_t _isTight;
00104 Int_t _hasLocal;
00105 Int_t _hasCentral;
00106 Int_t _hasCal;
00107 Int_t _isMuonEventOK;
00108 Int_t _isCosmic;
00109 Int_t _isCosmicT;
00110
00111
00112 Int_t _expWhitsA;
00113 Int_t _expWhitsBC;
00114 Int_t _expShitsA;
00115 Int_t _expShitsBC;
00116
00117 Float_t _rand;
00118
00119 public:
00120
00122 TMBMuon();
00123
00125 TMBMuon(Double_t pT, Double_t eta, Double_t phi, Type best,
00126 const TMBMuonType& local, const TMBMuonType& localcorr,
00127 const TMBMuonType& central, const TMBMuonType& centralcorr,
00128 const TMBMuonType& global, const TMBMuonType& smearedMC);
00129
00131 void SetLocalInfo(Int_t nhit, Int_t ndeck, Int_t region, Int_t octant,
00132 Float_t chisqloc, Float_t sctimeA, Float_t sctimeB, Float_t sctimeC,
00133 Float_t xA, Float_t yA, Float_t zA, Float_t bdl);
00134
00136 void SetMatchingInfo(Int_t nseg, Int_t ndof,
00137 Float_t deltaPhi, Float_t deltaEta, Float_t deltaDrift,
00138 Float_t chisq, Float_t zAtPca, Float_t impPar, Float_t impParSig,
00139 Float_t err_zAtPca, Float_t err_impPar, Float_t dca, Float_t deteta,
00140 TRef chptr, TRef vtxref);
00141
00143 void SetMTCInfo(Int_t nmtc, Int_t calnLayer, Float_t etrack_best,
00144 Float_t caleSig, Float_t calEta, Float_t calPhi, Float_t eloss);
00145
00147 void SetIsolationInfo(Int_t nTrk5, Float_t EInCone1, Float_t EInCone15, Float_t EInCone2,
00148 Float_t EInCone4, Float_t EInCone6,
00149 Float_t drJet5, Float_t etTrkCone5, Float_t etHalo);
00150
00152 void SetFlags(Int_t isLoose, Int_t isMedium, Int_t isTight,
00153 Int_t hasLocal, Int_t hasCentral, Int_t hasCal,
00154 Int_t isMuonEventOK, Int_t isCosmic, Int_t isCosmicT);
00155
00157 void SetExpectedHits(Int_t expWhitsA, Int_t expWhitsBC, Int_t expShitsA, Int_t expShitsBC);
00158
00160 void SetMCsmearingRand(Float_t rand);
00161
00163 void CorrectPt(double dca);
00164
00165 ~TMBMuon() {;}
00166
00167
00169 const TMBMuonType& Local() const{return _local;}
00171 const TMBMuonType& LocalCorr() const{return _localcorr;}
00173 const TMBMuonType& Central() const{return _central;}
00175 const TMBMuonType& CentralCorr() const{return _centralcorr;}
00177 const TMBMuonType& Global() const{return _global;}
00179 const TMBMuonType& SmearedMC() const{return _smearedMC;}
00180
00181
00183 Int_t charge() const;
00185 Double_t tlm() const;
00187 Double_t err_phi() const;
00189 Double_t err_eta() const;
00191 Double_t err_pT() const;
00192
00193
00195 Int_t nhit() const {return _nhit;}
00197 Int_t ndeck() const {return _ndeck;}
00199 Int_t region() const {return _region;}
00201 Int_t octant() const {return _octant;}
00203 Float_t chisqloc() const {return _chisqloc ;}
00205 Float_t sctimeA() const {return _sctimeA ;}
00207 Float_t sctimeB() const {return _sctimeB ;}
00209 Float_t sctimeC() const {return _sctimeC ;}
00211 Float_t xA() const {return _xA ;}
00213 Float_t yA() const {return _yA ;}
00215 Float_t zA() const {return _zA;}
00217 Float_t bdl() const {return _bdl;}
00218
00220 Int_t wireHitsA() const;
00222 Int_t wireHitsB() const;
00224 Int_t wireHitsC() const;
00226 Int_t wireHitsBC() const;
00228 Int_t scintHitsA() const;
00230 Int_t scintHitsB() const;
00232 Int_t scintHitsC() const;
00234 Int_t scintHitsBC() const;
00235
00236 Double_t GetEtaDetector(Double_t eta, Double_t z, Double_t rdet) const;
00237
00238
00240 Int_t nseg() const {return _nseg;}
00242 Int_t ndof() const {return _ndof;}
00244 Float_t deltaPhi() const {return _deltaPhi;}
00246 Float_t deltaEta() const {return _deltaEta;}
00248 Float_t deltaDrift() const {return _deltaDrift;}
00250 Float_t chisq() const {return _chisq;}
00252 Float_t zAtPca() const {return _zAtPca ;}
00254 Float_t impPar() const {return _impPar ;}
00256 Float_t impParSig() const {return _impParSig ;}
00258 Float_t err_impPar() const {return _err_impPar;}
00260 Float_t err_zAtPca() const {return _err_zAtPca ;}
00262 Float_t dca() const {return _dca;}
00264 Float_t detectorEta() const {return _deteta;}
00266 TMBTrack* GetChargedTrack() const {return _chptr.IsValid() ? (TMBTrack*)_chptr.GetObject() : 0;}
00268 const TRef& GetChargedTrackRef() const {return _chptr;}
00270 TMBVertex* GetVertex() const {return _vtxref.IsValid() ? (TMBVertex*)_vtxref.GetObject() : 0;}
00272 const TRef& GetVertexRef() const {return _vtxref;}
00274 Double_t chisqProb() const;
00275
00276
00278 Int_t calnLayer() const {return _calnLayer;}
00280 Int_t nmtc() const {return _nmtc;}
00282 Float_t etrack_best() const {return _etrack_best;}
00284 Float_t caleSig() const {return _caleSig;}
00286 Float_t calEta() const {return _calEta;}
00288 Float_t calPhi() const {return _calPhi;}
00290 Float_t eloss() const {return _eloss;}
00291
00292
00294 Int_t nTrk5() const {return _nTrk5;}
00296 Float_t EInCone1() const {return _EInCone1;}
00298 Float_t EInCone15() const {return _EInCone15;}
00300 Float_t EInCone2() const {return _EInCone2;}
00302 Float_t EInCone4() const {return _EInCone4;}
00304 Float_t EInCone6() const {return _EInCone6;}
00306 Float_t drJet5() const {return _drJet5;}
00308 Float_t etTrkCone5() const {return _etTrkCone5;}
00310 Float_t etHalo() const {return _etHalo;}
00311
00312
00314 Int_t isLoose() const { return _isLoose;}
00316 Int_t isMedium() const { return _isMedium;}
00318 Int_t isTight() const {return _isTight;}
00320 Int_t hasLocal() const {return _hasLocal;}
00322 Int_t hasCentral() const {return _hasCentral;}
00324 Int_t hasCal() const {return _hasCal;}
00326 Int_t isMuonEventOK() const {return _isMuonEventOK;}
00328 Int_t isCosmic() const {return _isCosmic;}
00330 Int_t isCosmicT() const {return _isCosmicT;}
00331
00332
00334 Int_t expWhitsA() const {return _expWhitsA;}
00336 Int_t expWhitsBC() const {return _expWhitsBC;}
00338 Int_t expShitsA() const { return _expShitsA;}
00340 Int_t expShitsBC() const { return _expShitsBC;}
00341
00343 Float_t MCsmearingRand() const { return _rand;}
00344
00345 ClassDef(TMBMuon, 5)
00346 };
00347
00348 #endif