00001
00020 #include "StEEmcPair.h"
00021 #include <iostream>
00022
00023 #include "StMessMgr.h"
00024
00025 ClassImp(StEEmcPair);
00026
00027
00028
00029 StEEmcPair::StEEmcPair()
00030 : TObject()
00031 {
00032 mMass=-1.;
00033 mEnergy=-1;
00034 mZgg=-1;
00035 mPhigg=-1;
00036 mMomentum=TVector3(0,0,0);
00037 mVertex1=mMomentum;
00038 mVertex2=mMomentum;
00039 }
00040
00041
00042 StEEmcPair::StEEmcPair(const StEEmcPoint &p1, const StEEmcPoint &p2)
00043 {
00044 StEEmcPair(p1,p2,TVector3(0,0,0),TVector3(0,0,0));
00045 }
00046
00047 StEEmcPair::StEEmcPair(const StEEmcPoint &p1, const StEEmcPoint &p2, const TVector3 &v)
00048 {
00049 StEEmcPair(p1,p2,v, v);
00050 }
00051
00052 StEEmcPair::StEEmcPair(const StEEmcPoint &p1, const StEEmcPoint &p2, const TVector3 &v1, const TVector3 &v2)
00053 : TObject()
00054 {
00055 mPoint[0]=p1;
00056 mPoint[1]=p2;
00057 mVertex1=v1;
00058 mVertex2=v2;
00059
00061 mMass=0.;
00062 mEnergy=0.;
00063 mZgg=0.;
00064 mPhigg=0.;
00065 mMomentum=TVector3(0,0,0);
00066
00068 Kinematics();
00069 }
00070
00071 void StEEmcPair::Kinematics()
00072 {
00073
00075 mEnergy=mPoint[0].energy() + mPoint[1].energy();
00076
00077 gMessMgr->Debug()<<"StEEmcPair -I- energy=" << mEnergy << endm;
00078
00079 if ( mEnergy <= 0. ) {
00080 mMass=-1.0;
00081 return;
00082 }
00083
00085 mZgg=TMath::Abs( mPoint[0].energy()-mPoint[1].energy() ) / mEnergy;
00086
00087 gMessMgr->Debug()<<"StEEmcPair -I- zgg=" << mZgg << endm;
00088
00090 TVector3 momentum1=( mPoint[0].position() - mVertex1 ).Unit();
00091 momentum1 *= mPoint[0].energy();
00092 TVector3 momentum2=( mPoint[1].position() - mVertex2 ).Unit();
00093 momentum2 *= mPoint[1].energy();
00095 mPhigg=momentum1.Angle(momentum2);
00097 mMomentum=momentum1+momentum2;
00098
00100 mVertex = ( mPoint[0].energy() * mVertex1 + mPoint[1].energy() * mVertex2 );
00101 mVertex *= 1./mEnergy;
00102
00104 mMass = mEnergy * TMath::Sin(mPhigg/2.0) * TMath::Sqrt( 1.0 - mZgg*mZgg );
00105
00106 gMessMgr->Debug()<<"StEEmcPair -I- mass=" << mMass << endm;
00107
00108 }
00109
00110
00111 StEEmcPair::StEEmcPair( const StEEmcPair &old )
00112 : TObject(old)
00113 {
00114 mVertex1=old.mVertex1;
00115 mVertex2=old.mVertex2;
00116 mVertex=old.mVertex;
00117 mPoint[0]=old.mPoint[0];
00118 mPoint[1]=old.mPoint[1];
00120 mMass=old.mMass;
00121 mEnergy=old.mEnergy;
00122 mZgg=old.mZgg;
00123 mPhigg=old.mPhigg;
00124 mMomentum=old.mMomentum;
00125 }
00126
00127
00128 void StEEmcPair::print() const
00129 {
00130 std::cout << "pair mass=" << mass()
00131 << " e1=" << mPoint[0].energy()
00132 << " e2=" << mPoint[1].energy()
00133 << " zgg=" << zgg()
00134 << " tow1=" << mPoint[0].tower(0).name()
00135 << " zvert=" << mVertex.Z()
00136 << std::endl;
00137 }