00001 #ifndef TMBMuon_H
00002 #define TMBMuon_H
00003
00005
00006
00007
00009
00010
00011 #define I_par_A_TMBMuon 0
00012 #define I_par_B_TMBMuon 4
00013 #define I_par_Bpt_TMBMuon 8
00014 #define I_scale_TMBMuon 12
00015 #define I_smt_ncft_cut_TMBMuon 16
00016 #define I_smt_eta_cut_TMBMuon 17
00017 #define I_smt_eta_cft_cut_TMBMuon 18
00018 #define I_nosmt_ncft_cut_TMBMuon 19
00019 #define I_nosmt_eta_cut_TMBMuon 20
00020 #define I_nosmt_eta_cft_cut_TMBMuon 21
00021 #define npar_TMBMuon 22
00022
00023 #include "tmb_tree/TMBLorentzVector.hpp"
00024 #include "tmb_tree/TMBMuonType.hpp"
00025 #include "tmb_tree/TMBTrack.hpp"
00026 #include <string>
00027
00028 #ifndef ROOT_TRef
00029 #include "TRef.h"
00030 #endif
00031 #ifndef ROOT_TRefArray
00032 #include "TRefArray.h"
00033 #endif
00034
00035 class TMBTrack;
00036 class TMBVertex;
00037
00042 class TMBMuon : public TMBLorentzVector {
00043
00044 public:
00045
00047 enum Type {
00048 kLocalCorr = 0,
00049 kCentralCorr = 1,
00050 kSmearedMC = 2
00051 };
00052
00053 private:
00054
00055
00056 TMBMuonType _local;
00057 TMBMuonType _localcorr;
00058 TMBMuonType _central;
00059 TMBMuonType _centralcorr;
00060 TMBMuonType _global;
00061 TMBMuonType _smearedMC;
00062 Type _best;
00063
00064
00065 Int_t _nhit;
00066 Int_t _ndeck;
00067 Int_t _region;
00068 Int_t _octant;
00069 Float_t _chisqloc;
00070 Float_t _sctimeA;
00071 Float_t _sctimeB;
00072 Float_t _sctimeC;
00073 Float_t _xA;
00074 Float_t _yA;
00075 Float_t _zA;
00076 Float_t _bdl;
00077
00078
00079 Int_t _nseg;
00080 Int_t _ndof;
00081 Float_t _deltaPhi;
00082 Float_t _deltaEta;
00083 Float_t _deltaDrift;
00084 Float_t _chisq;
00085 Float_t _zAtPca;
00086 Float_t _impPar;
00087 Float_t _impParSig;
00088 Float_t _err_impPar;
00089 Float_t _err_zAtPca;
00090 Float_t _dca;
00091 Float_t _deteta;
00092 TRef _chptr;
00093 TRef _vtxref;
00094
00095
00096 Int_t _calnLayer;
00097 Int_t _nmtc;
00098 Float_t _etrack_best;
00099 Float_t _caleSig;
00100 Float_t _calEta;
00101 Float_t _calPhi;
00102 Float_t _eloss;
00103
00104
00105 Int_t _nTrk5;
00106 Float_t _EInCone1;
00107 Float_t _EInCone15;
00108 Float_t _EInCone2;
00109 Float_t _EInCone4;
00110 Float_t _EInCone6;
00111 Float_t _drJet5;
00112 Float_t _etTrkCone5;
00113 Float_t _etHalo;
00114
00115
00116 Int_t _isLoose;
00117 Int_t _isMedium;
00118 Int_t _isTight;
00119 Int_t _hasLocal;
00120 Int_t _hasCentral;
00121 Int_t _hasCal;
00122 Int_t _isMuonEventOK;
00123 Int_t _isCosmic;
00124 Int_t _isCosmicT;
00125
00126
00127 Int_t _expWhitsA;
00128 Int_t _expWhitsBC;
00129 Int_t _expShitsA;
00130 Int_t _expShitsBC;
00131
00132 Float_t _rand;
00133
00134 public:
00135
00137 TMBMuon();
00138
00140 TMBMuon(Double_t pT, Double_t eta, Double_t phi, Type best,
00141 const TMBMuonType& local, const TMBMuonType& localcorr,
00142 const TMBMuonType& central, const TMBMuonType& centralcorr,
00143 const TMBMuonType& global, const TMBMuonType& smearedMC);
00144
00146 void SetLocalInfo(Int_t nhit, Int_t ndeck, Int_t region, Int_t octant,
00147 Float_t chisqloc, Float_t sctimeA, Float_t sctimeB, Float_t sctimeC,
00148 Float_t xA, Float_t yA, Float_t zA, Float_t bdl);
00149
00151 void SetMatchingInfo(Int_t nseg, Int_t ndof,
00152 Float_t deltaPhi, Float_t deltaEta, Float_t deltaDrift,
00153 Float_t chisq, Float_t zAtPca, Float_t impPar, Float_t impParSig,
00154 Float_t err_zAtPca, Float_t err_impPar, Float_t dca,
00155 TRef chptr, TRef vtxref);
00156
00158 void SetDetEta(Float_t deteta);
00159
00161 void SetMTCInfo(Int_t nmtc, Int_t calnLayer, Float_t etrack_best,
00162 Float_t caleSig, Float_t calEta, Float_t calPhi, Float_t eloss);
00163
00165 void SetIsolationInfo(Int_t nTrk5, Float_t EInCone1, Float_t EInCone15, Float_t EInCone2,
00166 Float_t EInCone4, Float_t EInCone6,
00167 Float_t drJet5, Float_t etTrkCone5, Float_t etHalo);
00168
00170 void SetFlags(Int_t isLoose, Int_t isMedium, Int_t isTight,
00171 Int_t hasLocal, Int_t hasCentral, Int_t hasCal,
00172 Int_t isMuonEventOK, Int_t isCosmic, Int_t isCosmicT);
00173
00175 void SetExpectedHits(Int_t expWhitsA, Int_t expWhitsBC, Int_t expShitsA, Int_t expShitsBC);
00176
00178 void SetMCsmearingRand(Float_t rand);
00179
00181 void CorrectPt(double dca);
00185
00260
00261 void ActAsSmeared(Float_t * par, bool zjpsiparams=1);
00262
00264 void ActAsSmeared_pre();
00266 void ActAsSmeared_post();
00269 ~TMBMuon() {;}
00270
00271
00273 const TMBMuonType& Local() const{return _local;}
00275 const TMBMuonType& LocalCorr() const{return _localcorr;}
00277 const TMBMuonType& Central() const{return _central;}
00279 const TMBMuonType& CentralCorr() const{return _centralcorr;}
00281 const TMBMuonType& Global() const{return _global;}
00283 const TMBMuonType& SmearedMC() const{return _smearedMC;}
00284
00285
00287 Int_t charge() const;
00289 Double_t tlm() const;
00291 Double_t err_phi() const;
00293 Double_t err_eta() const;
00295 Double_t err_pT() const;
00296
00297
00299 Int_t nhit() const {return _nhit;}
00301 Int_t ndeck() const {return _ndeck;}
00303 Int_t region() const {return _region;}
00305 Int_t octant() const {return _octant;}
00307 Float_t chisqloc() const {return _chisqloc ;}
00309 Float_t sctimeA() const {return _sctimeA ;}
00311 Float_t sctimeB() const {return _sctimeB ;}
00313 Float_t sctimeC() const {return _sctimeC ;}
00315 Float_t xA() const {return _xA ;}
00317 Float_t yA() const {return _yA ;}
00319 Float_t zA() const {return _zA;}
00321 Float_t bdl() const {return _bdl;}
00322
00324 Int_t wireHitsA() const;
00326 Int_t wireHitsB() const;
00328 Int_t wireHitsC() const;
00330 Int_t wireHitsBC() const;
00332 Int_t scintHitsA() const;
00334 Int_t scintHitsB() const;
00336 Int_t scintHitsC() const;
00338 Int_t scintHitsBC() const;
00339
00340 Double_t GetEtaDetector(Double_t eta, Double_t z, Double_t rdet) const;
00343 Double_t GetEtaDetector(Int_t solpol=0) const;
00344
00346 bool isInHole(Int_t solpol=0) const;
00348 Double_t det_eta(double theta, double phi, double z0) const;
00349
00350
00352 Int_t nseg() const {return _nseg;}
00354 Int_t ndof() const {return _ndof;}
00356 Float_t deltaPhi() const {return _deltaPhi;}
00358 Float_t deltaEta() const {return _deltaEta;}
00360 Float_t deltaDrift() const {return _deltaDrift;}
00362 Float_t chisq() const {return _chisq;}
00364 Float_t zAtPca() const {return _zAtPca ;}
00366 Float_t impPar() const {return _impPar ;}
00368 Float_t impParSig() const {return _impParSig ;}
00370 Float_t err_impPar() const {return _err_impPar;}
00372 Float_t err_zAtPca() const {return _err_zAtPca ;}
00374 Float_t dca() const {return _dca;}
00376 Float_t detectorEta() const {return _deteta;}
00378 TMBTrack* GetChargedTrack() const {return _chptr.IsValid() ? (TMBTrack*)_chptr.GetObject() : 0;}
00380 const TRef& GetChargedTrackRef() const {return _chptr;}
00382 TMBVertex* GetVertex() const {return _vtxref.IsValid() ? (TMBVertex*)_vtxref.GetObject() : 0;}
00384 const TRef& GetVertexRef() const {return _vtxref;}
00386 Double_t chisqProb() const;
00387
00388
00390 Int_t calnLayer() const {return _calnLayer;}
00392 Int_t nmtc() const {return _nmtc;}
00394 Float_t etrack_best() const {return _etrack_best;}
00396 Float_t caleSig() const {return _caleSig;}
00398 Float_t calEta() const {return _calEta;}
00400 Float_t calPhi() const {return _calPhi;}
00402 Float_t eloss() const {return _eloss;}
00403
00404
00406 Int_t nTrk5() const {return _nTrk5;}
00408 Float_t EInCone1() const {return _EInCone1;}
00410 Float_t EInCone15() const {return _EInCone15;}
00412 Float_t EInCone2() const {return _EInCone2;}
00414 Float_t EInCone4() const {return _EInCone4;}
00416 Float_t EInCone6() const {return _EInCone6;}
00418 Float_t drJet5() const {return _drJet5;}
00420 Float_t etTrkCone5() const {return _etTrkCone5;}
00422 Float_t etHalo() const {return _etHalo;}
00423
00424
00426 Int_t isLoose() const { return _isLoose;}
00428 Int_t isMedium() const { return _isMedium;}
00430 Int_t isTight() const {return _isTight;}
00432 Int_t hasLocal() const {return _hasLocal;}
00434 Int_t hasCentral() const {return _hasCentral;}
00436 Int_t hasCal() const {return _hasCal;}
00438 Int_t isMuonEventOK() const {return _isMuonEventOK;}
00440 Int_t isCosmic() const {return _isCosmic;}
00442 Int_t isCosmicT() const {return _isCosmicT;}
00443
00444
00446 Int_t expWhitsA() const {return _expWhitsA;}
00448 Int_t expWhitsBC() const {return _expWhitsBC;}
00450 Int_t expShitsA() const { return _expShitsA;}
00452 Int_t expShitsBC() const { return _expShitsBC;}
00453
00455 Float_t MCsmearingRand() const { return _rand;}
00456
00459 void FixMuonPt();
00460
00461 ClassDef(TMBMuon, 5)
00462 };
00463
00464 #endif