00001
00002
00003
00004 #ifndef STJJETLIST_H
00005 #define STJJETLIST_H
00006
00007 #include <TObject.h>
00008
00009 #include "StjFourVecList.h"
00010
00011 #include <ostream>
00012 #include <vector>
00013 #include <cmath>
00014
00015 class StjJet : public TObject {
00016 public:
00017 int runNumber;
00018 int eventId;
00019 int jetId;
00020 double pt;
00021 double eta;
00022 double phi;
00023 double m;
00024 double neuRt;
00025 double vertexZ;
00026 double detectorEta;
00027 StjFourVecList fourVecList;
00028 ClassDef(StjJet, 1)
00029 };
00030
00031 typedef std::vector<StjJet> StjJetList;
00032
00033 inline bool operator==(const StjJet& v1, const StjJet& v2)
00034 {
00035 if(v1.runNumber != v2.runNumber) return false;
00036 if(v1.eventId != v2.eventId) return false;
00037 if(v1.jetId != v2.jetId) return false;
00038 if(fabs(v1.pt - v2.pt ) > 0.0001*fabs( v1.pt )) return false;
00039 if(fabs(v1.eta - v2.eta ) > 0.0001*fabs( v1.eta )) return false;
00040 if(fabs(v1.phi - v2.phi ) > 0.0001*fabs( v1.phi )) return false;
00041 if(fabs(v1.m - v2.m ) > 0.0001*fabs( v1.m )) return false;
00042 if(fabs(v1.neuRt - v2.neuRt ) > 0.0001*fabs( v1.neuRt )) return false;
00043 if(v1.fourVecList != v2.fourVecList) return false;
00044 return true;
00045 }
00046
00047 inline bool operator!=(const StjJet& v1, const StjJet& v2)
00048 {
00049 return(!(v1 == v2));
00050 }
00051
00052 inline bool operator==(const StjJetList& v1, const StjJetList& v2){
00053 if(v1.size() != v2.size()) return false;
00054 for(size_t i = 0; i < v1.size(); ++i) if(v1[i] != v2[i]) return false;
00055 return true;
00056 }
00057
00058 inline std::ostream& operator<<(std::ostream& out, const StjJet& v)
00059 {
00060 out << "jetId: " << v.jetId << ", pt: " << v.pt << ", .... ";
00061 return out;
00062 }
00063
00064 inline std::ostream& operator<<(std::ostream& out, const StjJetList& v)
00065 {
00066 out << "JetList size: " << v.size();
00067 return out;
00068 }
00069
00070 #endif // STJJETLIST_H
00071