00001
00002
00003 #include "StChargedPionJet.h"
00004
00005 #include "TMath.h"
00006 #include "StChargedPionEvent.h"
00007 #include "StChargedPionJetParticle.h"
00008
00009 ClassImp(StChargedPionJet)
00010
00011 StChargedPionJet::StChargedPionJet() : TLorentzVector() { }
00012
00013 StChargedPionJet::StChargedPionJet(const StChargedPionJet& t) : TLorentzVector(t), mParticles(t.mParticles) {
00014 mCharge = t.mCharge;
00015 mTpcCount = t.mTpcCount;
00016 mBtowCount = t.mBtowCount;
00017 mEtowCount = t.mEtowCount;
00018 mTpcEtSum = t.mTpcEtSum;
00019 mBtowEtSum = t.mBtowEtSum;
00020 mEtowEtSum = t.mEtowEtSum;
00021 mVertexZ = t.mVertexZ;
00022 }
00023
00024 StChargedPionJet::~StChargedPionJet() {
00025 this->Clear();
00026 }
00027
00028 void StChargedPionJet::Clear(Option_t * o) {
00029 mParticles.clear();
00030 mGeomTriggers = 0;
00031 }
00032
00033 float StChargedPionJet::detectorEta() const {
00034 return this->detectorEta(mVertexZ);
00035 }
00036
00037 float StChargedPionJet::detectorEta(float vz, float r) const {
00038 float hold(0.),denom(0.);
00039 if (Theta()==TMath::PiOver2()) {
00040 if (vz==0) {hold = TMath::PiOver2();}
00041 else {hold = atan2(r,vz);}
00042 }
00043 else
00044 {
00045 denom = (r/tan(Theta()))+vz;
00046 if (denom==0.) {hold = TMath::PiOver2();}
00047 if (denom!=0.) {hold = atan2(r,denom);}
00048 }
00049 return -TMath::Log(TMath::Tan(hold/2));
00050 }
00051
00052 bool StChargedPionJet::isTrigger(unsigned int trigId) const {
00053 return mGeomTriggers & StChargedPionEvent::triggerBit(trigId);
00054 }
00055
00056 void StChargedPionJet::addTrigger(unsigned int trigId) {
00057 mGeomTriggers |= StChargedPionEvent::triggerBit(trigId);
00058 }
00059
00060 void StChargedPionJet::addParticle(StChargedPionJetParticle* p) {
00061 mParticles.push_back(*p);
00062 }
00063
00064 const StChargedPionJetParticle& StChargedPionJet::leadingParticle() const {
00065 const StChargedPionJetParticle *p = NULL;
00066 for(unsigned i=0; i< particles().size(); i++) {
00067 if(!p) p = &(particles()[i]);
00068 else {
00069 if(p->z(*this) < particles()[i].z(*this) )
00070 p = &(particles()[i]);
00071 }
00072 }
00073 return *p;
00074 }
00075
00076
00077
00078
00079
00080
00081