TMBTrackCalJet.hpp

Go to the documentation of this file.
00001 #ifndef TMBTrackCalJet_H
00002 #define TMBTrackCalJet_H
00003 
00004 #include "tmb_tree/TMBLorentzVector.hpp"
00005 
00006 #include "tmb_tree/TMBTrackCal.hpp"
00007 #include "tmb_tree/TMBTrack.hpp"
00008 #include "tmb_tree/TMBJet.hpp"
00009 #include "kinem_util/AnglesUtil.hpp"
00010 
00011 #ifndef ROOT_TRef
00012 #include "TRef.h"
00013 #endif
00014 
00015 #ifndef ROOT_TRefArray
00016 #include "TRefArray.h"
00017 #endif
00018 
00019 #ifndef ROOT_TLorentzVector
00020 #include "TLorentzVector.h"
00021 #endif
00022 
00023 #include <vector>
00024 #include <iostream>
00025 
00026 
00027 
00033 class TMBTrackCalJet : public TMBLorentzVector {
00034 
00035  private:
00036 
00037   float _q;
00038   
00039   float _Corr, _Cin, _Cout, _Csub;
00040   std::vector<float> _Efraction;
00041   std::vector<int>   _Ncells;
00042 
00043   TRef _jet;
00044   TRefArray _trackCalList;
00045   
00046 
00047  public:
00048 
00049   TMBTrackCalJet();
00050   TMBTrackCalJet(TRef jet, TRefArray* trackCalList, 
00051                  Float_t C, Float_t Cin, Float_t Cout, Float_t Csub, 
00052                  std::vector<Float_t> Efraction, std::vector<Int_t> Ncells);
00053   virtual ~TMBTrackCalJet();
00054   
00055   
00056   TMBJet* GetJet() const {
00057     return _jet.IsValid() ? (TMBJet*)_jet.GetObject() : 0;
00058   }
00059 
00060   TMBTrackCal* GetTrackCal(Int_t itrack) const {
00061     return (TMBTrackCal*)_trackCalList.At(itrack);
00062   }
00063   
00064 
00065   Float_t GetC() const { return _Corr; }
00066   Float_t GetCin() const { return _Cin; }
00067   Float_t GetCout() const { return _Cout; }
00068   Float_t GetCsub() const { return _Csub; }
00069 
00070   Float_t GetEfraction(Int_t itrack) const {
00071     return _Efraction[itrack];
00072   }
00073   Int_t GetNcells(Int_t itrack) const {
00074     return _Ncells[itrack];
00075   }
00076  
00077   Int_t GetTrackMultiplicity() const {
00078     return _trackCalList.GetLast()+1;
00079   }
00080 
00081 
00082   // Methods
00083   //----------------------------------------
00084   Float_t GetDR(Int_t itrack) const {
00085 
00086     TMBTrackCal* trkcal = (TMBTrackCal*) _trackCalList.At(itrack);
00087     TMBTrack* trk = (TMBTrack*) trkcal->GetChargedTrack();
00088     TMBJet* jet = _jet.IsValid() ? (TMBJet*) _jet.GetObject() : 0;
00089     return jet->DeltaR(*trk);
00090   }
00091 
00092   Float_t GetDR(Int_t itrack, Int_t layer) const {
00093     
00094     if(layer>17 || layer<1) return -1.0;
00095 
00096     TMBJet* jet = _jet.IsValid() ? (TMBJet*) _jet.GetObject() : 0;
00097     float jdeta = 0.1 * jet->detEta();
00098     float jdphi = (jet->detPhi() + 0.05) / 64.0 * 2.0 * kinem::PI;
00099 
00100     TMBTrackCal* trkcal = (TMBTrackCal*) _trackCalList.At(itrack);
00101     Float_t trk_eta, trk_phi;
00102     trkcal->getCalEtaPhi(layer, trk_eta, trk_phi);
00103     
00104     double deta = jdeta-trk_eta;
00105     double dphi = kinem::delta_phi(jdphi,trk_phi);
00106     double dr = sqrt(deta*deta + dphi*dphi);
00107 
00108     return dr;
00109   }
00110 
00111   /*
00112   void MatchTracks(float& Ein, int& ntrkin, 
00113                    float& Eout, int& ntrkout, 
00114                    float track_cone_size = 0.7,
00115                    float ptMin = 0.5, float ptMax = 25, 
00116                    float dcaRmax = 0.25, float dcaZmax = 0.5,
00117                    int cftMin = 7, int smtMin = 0);
00118   */
00119 
00120 
00121   Float_t        charge()      const     {return _q;}
00122  
00123   void print(std::ostream& os) const;
00124 
00125     
00126   ClassDef(TMBTrackCalJet, 3);   //TMBTrackCalJet
00127 };
00128 
00129 #endif // TMBTrackCalJet

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