00001 #include "StHbtMaker/CorrFctn/ParityTwistCorrFctn.h"
00002 #include <cstdio>
00003
00004 #ifdef __ROOT__
00005 ClassImp(ParityTwistCorrFctn)
00006 #endif
00007
00008
00009 ParityTwistCorrFctn::ParityTwistCorrFctn(){
00010 mTagWriter = StHbtTagWriter::Instance();
00011
00012
00013 mSameTzz = new StHbt1DHisto("SameTzz","Parity Same Twist zz",100,-0.0010,0.0010);
00014 mMixedTzz = new StHbt1DHisto("MixedTzz","Parity Mixed Twist zz",100,-0.0010,0.0010);
00015
00016
00017
00018
00019
00020 mSameTzz->SetDirectory(0);
00021 mMixedTzz->SetDirectory(0);
00022
00023 mSameTzz->Sumw2();
00024 mMixedTzz->Sumw2();
00025
00026 }
00027
00028
00029 ParityTwistCorrFctn::~ParityTwistCorrFctn(){
00030
00031 delete mSameTzz;
00032 delete mMixedTzz ;
00033
00034
00035 }
00036
00037 void ParityTwistCorrFctn::Finish(){
00038 cout << " alive in finish " << endl;
00039
00040 }
00041
00042 StHbtString ParityTwistCorrFctn::Report(){
00043 string stemp = "Parity Correlation Function Report:\n";
00044 StHbtString returnThis = stemp;
00045 return returnThis;
00046 }
00047
00048 inline void ParityTwistCorrFctn::AddRealPair(const StHbtPair* pair){
00049 cout << "WARNING ParityTwistCorrFctn::AddRealPair shouldn't be called" << endl;
00050 }
00051
00052
00053
00054
00055 inline void ParityTwistCorrFctn::AddMixedPair(const StHbtPair* pair){
00056 cout << "WARNING ParityTwistCorrFctn::AddMixedPair shouldn't be called" << endl;
00057 }
00058
00059
00060 inline void ParityTwistCorrFctn::ParityCompute(ParityBuff *Plus, ParityBuff *Minus, int mxd){
00061
00062
00063 StHbtLorentzVector PlusTrack;
00064 StHbtLorentzVector MinusTrack;
00065
00066 double Tzz =0;
00067 double sumXpos = 0;
00068 double sumYpos = 0;
00069 double sumZpos = 0;
00070 double sumXXpos = 0;
00071 double sumYYpos = 0;
00072 double sumZZpos = 0;
00073 double sumXYpos = 0;
00074 double sumXZpos = 0;
00075 double sumYZpos = 0;
00076
00077 double sumXneg = 0;
00078 double sumYneg = 0;
00079 double sumZneg = 0;
00080 double sumXXneg = 0;
00081 double sumYYneg = 0;
00082 double sumZZneg = 0;
00083 double sumXYneg = 0;
00084 double sumXZneg = 0;
00085 double sumYZneg = 0;
00086
00087 if (mxd == SAME) {
00088 cout << "******** we got to the ParityComputeII for SAME event" << endl;
00089 }
00090 if (mxd == MIXED) {
00091 cout << "******** we got to the ParityComputeII for MIXED event" << endl;
00092 }
00093
00094 int plusSize = Plus->size();
00095 int minusSize = Minus->size();
00096
00097 {for (int jjj = 0; jjj < plusSize; jjj++){
00098 StHbtThreeVector TempV = (*Plus)[jjj].vect();
00099 sumXpos += TempV.x();
00100 sumYpos += TempV.y();
00101 sumZpos += TempV.z();
00102 sumXXpos += TempV.x()*TempV.x();
00103 sumYYpos += TempV.y()*TempV.y();
00104 sumZZpos += TempV.z()*TempV.z();
00105 sumXYpos += TempV.x()*TempV.y();
00106 sumXZpos += TempV.x()*TempV.z();
00107 sumYZpos += TempV.y()*TempV.z();
00108 }}
00109
00110 {for (int jjj = 0; jjj < minusSize; jjj++){
00111 StHbtThreeVector TempV = (*Minus)[jjj].vect();
00112 sumXneg += TempV.x();
00113 sumYneg += TempV.y();
00114 sumZneg += TempV.z();
00115 sumXXneg += TempV.x()*TempV.x();
00116 sumYYneg += TempV.y()*TempV.y();
00117 sumZZneg += TempV.z()*TempV.z();
00118 sumXYneg += TempV.x()*TempV.y();
00119 sumXZneg += TempV.x()*TempV.z();
00120 sumYZneg += TempV.y()*TempV.z();
00121 }}
00122
00123 Tzz = ( (sumXZpos * sumYneg ) + (sumYpos * sumXZneg)
00124 - (sumXpos * sumYZneg) - (sumYZpos * sumXneg ) ) / (plusSize*minusSize);
00125
00126 cout << "Tzz is ..................."<< Tzz <<endl;
00127
00128 if (mxd == SAME) {
00129 mSameTzz->Fill(Tzz);
00130 }
00131 if (mxd == MIXED) {
00132 mMixedTzz->Fill(Tzz);
00133 }
00134
00135 }
00136