00001
00002
00003 #ifndef TRACKTOJETINDEX_H
00004 #define TRACKTOJETINDEX_H
00005
00006 class StJet;
00007
00008 #include "TLorentzVector.h"
00009 #include "TRef.h"
00010
00011 #include <ostream>
00012 #include <string>
00013
00014 #ifndef StEnumerations_hh
00015 #define StEnumerations_hh
00016
00017 #define kUnknownIdentifier 0
00018 #define kTpcIdentifier 1
00019 #define kBarrelEmcTowerIdentifier 9
00020 #define kEndcapEmcTowerIdentifier 13
00021
00022 enum StDetectorId {
00023 kUnknownId = kUnknownIdentifier,
00024 kTpcId = kTpcIdentifier,
00025 kBarrelEmcTowerId = kBarrelEmcTowerIdentifier,
00026 kEndcapEmcTowerId = kEndcapEmcTowerIdentifier,
00027 };
00028
00029 #endif // StEnumerations_hh
00030
00031 class TrackToJetIndex : public TLorentzVector
00032 {
00033 public:
00034 TrackToJetIndex(int jetIndex = -1, int trackIndex = -1, StDetectorId detId = kUnknownId, StJet* jet = 0);
00035
00036 int jetIndex() const { return mJetIndex; }
00037 int trackIndex() const {return mTrackIndex; }
00038 StJet* jet() const { return (StJet*)mJet.GetObject(); }
00039
00040 short trackId() const { return mTrackId; }
00041 StDetectorId detectorId() const { return mDetId ; }
00042 short flag() const { return mFlag; }
00043 short charge() const { return mCharge; }
00044 unsigned short nHits() const { return mNhits; }
00045 unsigned short nHitsPoss() const { return mNhitsPoss; }
00046 unsigned short nHitsDedx() const { return mNhitsDedx; }
00047 unsigned short nHitsFit() const { return mNhitsFit; }
00048 double nSigmaPion() const { return mNsigmaPion; }
00049 double nSigmaElectron() const { return mNsigmaElectron; }
00050 double nSigmaKaon() const { return mNsigmaKaon; }
00051 double nSigmaProton() const { return mNsigmaProton; }
00052 double Tdca() const { return mTdca; }
00053 double Tdcaz() const { return mTdcaz; }
00054 double Tdcaxy() const { return mTdcaxy; }
00055 double etaext() const { return metaext; }
00056 double phiext() const { return mphiext; }
00057 double dEdx() const { return mdEdx; }
00058 double jt() const { return localMomentum().Perp(); }
00059 double ps() const { return localMomentum().Px (); }
00060 double pn() const { return localMomentum().Py (); }
00061 double pl() const { return localMomentum().Pz (); }
00062 double frag() const;
00063
00064 TVector3 momentum() const { return Vect(); }
00065 TVector3 localMomentum() const;
00066
00067
00068 short id () const { return trackIndex(); }
00069 short pdg () const { return trackId(); }
00070 short status() const { return flag(); }
00071
00072 void setJetIndex(int n) { mJetIndex = n; }
00073 void setTrackIndex(int n) { mTrackIndex = n; }
00074 void setDetectorId(StDetectorId v) { mDetId = v; }
00075 void setFlag(short v) { mFlag = v; }
00076 void setCharge(short v) { mCharge = v; }
00077 void setNhits(unsigned short v) { mNhits = v; }
00078 void setNhitsPoss(unsigned short v) { mNhitsPoss = v; }
00079 void setNhitsDedx(unsigned short v) { mNhitsDedx = v; }
00080 void setNhitsFit(unsigned short v) { mNhitsFit = v; }
00081 void setNsigmaPion(double v) { mNsigmaPion = v; }
00082 void setNsigmaElectron(double v) { mNsigmaElectron = v; }
00083 void setNsigmaKaon(double v) { mNsigmaKaon = v; }
00084 void setNsigmaProton(double v) { mNsigmaProton = v; }
00085 void setTdca(double v) { mTdca = v; }
00086 void setTdcaz(double v) { mTdcaz = v; }
00087 void setTdcaxy(double v) { mTdcaxy = v; }
00088 void setetaext(double v) { metaext = v; }
00089 void setphiext(double v) { mphiext = v; }
00090 void setdEdx(double v) { mdEdx = v; }
00091 void setTrackId(int v) { mTrackId = v; }
00092
00093
00094 void setId(short v) { setTrackIndex(v); }
00095 void setPdg(short v) { setTrackId(v); }
00096 void setStatus(short v) { setFlag(v); }
00097
00098 private:
00099 int mJetIndex;
00100 int mTrackIndex;
00101 StDetectorId mDetId;
00102 short mFlag;
00103 short mCharge;
00104 unsigned short mNhits;
00105 unsigned short mNhitsPoss;
00106 unsigned short mNhitsDedx;
00107 unsigned short mNhitsFit;
00108 double mNsigmaPion;
00109 double mNsigmaElectron;
00110 double mNsigmaKaon;
00111 double mNsigmaProton;
00112 double mTdca;
00113 double mTdcaz;
00114 double mTdcaxy;
00115 double metaext;
00116 double mphiext;
00117 double mdEdx;
00118 short mTrackId;
00119 TRef mJet;
00120
00121 ClassDef(TrackToJetIndex, 6);
00122 };
00123
00124 inline ostream& operator<<(ostream& os, const TrackToJetIndex& t)
00125 {
00126 std::string idstring;
00127 StDetectorId mDetId = t.detectorId();
00128 if (mDetId==kTpcId) {
00129 idstring = "kTpcId";
00130 }
00131 else if (mDetId==kBarrelEmcTowerId) {
00132 idstring = "kBarrelEmcTowerId";
00133 }
00134 else if (mDetId==kEndcapEmcTowerId) {
00135 idstring = "kEndcapEmcTowerId";
00136 }
00137 else {
00138 idstring = "kUnknown";
00139 }
00140
00141 return os <<"jetIndex:\t"<<t.jetIndex()<<"\ttrackIndex:\t"<<t.trackIndex()<<"\tdetId:\t"<<t.detectorId()<<"\t"<<idstring;
00142 }
00143
00144 #endif // TRACKTOJETINDEX_H