00001 #include "StEEmcPair.h"
00002 #include "TMath.h"
00003 ClassImp(StEEmcPair);
00004
00005
00006
00007 StEEmcPair::StEEmcPair()
00008 {
00009 mMass=-1.;
00010 mEnergy=-1;
00011 mZgg=-1;
00012 mPhigg=-1;
00013 mMomentum=TVector3(0,0,0);
00014 mVertex1=mMomentum;
00015 mVertex2=mMomentum;
00016 }
00017
00018
00019 StEEmcPair::StEEmcPair( StEEmcPoint p1, StEEmcPoint p2 )
00020 {
00021 StEEmcPair(p1,p2,TVector3(0,0,0),TVector3(0,0,0));
00022 }
00023
00024 StEEmcPair::StEEmcPair( StEEmcPoint p1, StEEmcPoint p2, TVector3 v )
00025 {
00026 StEEmcPair(p1,p2,v, v);
00027 }
00028
00029 StEEmcPair::StEEmcPair( StEEmcPoint p1, StEEmcPoint p2, TVector3 v1, TVector3 v2 )
00030 {
00031 mPoint[0]=p1;
00032 mPoint[1]=p2;
00033 mVertex1=v1;
00034 mVertex2=v2;
00035
00037 mMass=0.;
00038 mEnergy=0.;
00039 mZgg=0.;
00040 mPhigg=0.;
00041 mMomentum=TVector3(0,0,0);
00042
00044 Kinematics();
00045 }
00046
00047 void StEEmcPair::Kinematics()
00048 {
00049
00051 mEnergy=mPoint[0].energy() + mPoint[1].energy();
00052 if ( mEnergy <= 0. ) {
00053 mMass=-1.0;
00054 return;
00055 }
00057 mZgg=TMath::Abs( mPoint[0].energy()-mPoint[1].energy() ) / mEnergy;
00059 TVector3 momentum1=( mPoint[0].position() - mVertex1 ).Unit();
00060 momentum1 *= mPoint[0].energy();
00061 TVector3 momentum2=( mPoint[1].position() - mVertex2 ).Unit();
00062 momentum2 *= mPoint[1].energy();
00064 mPhigg=momentum1.Angle(momentum2);
00066 mMomentum=momentum1+momentum2;
00067
00069 mVertex = ( mPoint[0].energy() * mVertex1 + mPoint[1].energy() * mVertex2 );
00070 mVertex *= 1./mEnergy;
00071
00073 mMass = mEnergy * TMath::Sin(mPhigg/2.0) * TMath::Sqrt( 1.0 - mZgg*mZgg );
00074
00075
00076 }
00077
00078
00079 StEEmcPair::StEEmcPair( const StEEmcPair &old )
00080 {
00081 mVertex1=old.mVertex1;
00082 mVertex2=old.mVertex2;
00083 mPoint[0]=old.mPoint[0];
00084 mPoint[1]=old.mPoint[1];
00086 mMass=0.;
00087 mEnergy=0.;
00088 mZgg=0.;
00089 mPhigg=0.;
00090 mMomentum=TVector3(0,0,0);
00092 Kinematics();
00093 }