TMBMuon.hpp

Go to the documentation of this file.
00001 #ifndef TMBMuon_H
00002 #define TMBMuon_H
00003 
00005 //                                                                      //
00006 // TMBTree Muon class                                                   //
00007 //                                                                      //
00009 
00010 // Constants for smearing
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   // different muon types
00056   TMBMuonType _local;      
00057   TMBMuonType _localcorr;  
00058   TMBMuonType _central;    
00059   TMBMuonType _centralcorr;
00060   TMBMuonType _global;     
00061   TMBMuonType _smearedMC;  
00062   Type _best; 
00063  
00064   // muon system info:
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   // matching info:
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   // MTC info:
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   // isolation variables
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   // Flags
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   // Expected number of hits
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   // different muon types
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   // general methods, those of TMBMuonType (additionnal those of TMBLorentzVector)
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   // muon system info:
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   // return muon detector eta at R=rdet (mainly for rdet = A, B or C layer)
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   // matching info:
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   // MTC info:
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   // Isolation info:
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   // Flags:
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   // Expected number of hits:
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)   // TMBTree Muon class
00462 };
00463 
00464 #endif

Generated on Thu Apr 3 04:14:24 2008 for CAF by doxygen 1.3.4