00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "StHbtMaker/ThCorrFctn/StHbtThCFGaussSize.h"
00017 #include "StHbtMaker/ThCorrFctn/StHbtThCorrFctnCollection.hh"
00018 #include "StHbtMaker/Base/StHbtThCorrFctn.hh"
00019 #include "StHbtMaker/Base/StHbtThPair.hh"
00020 #include "StHbtMaker/Base/StHbtRoot1DCF.hh"
00021
00022 #include <string.h>
00023 #include <Stsstream.h>
00024
00025 StHbtThCFGaussSize::StHbtThCFGaussSize()
00026 {cout << "default constructor - must not be called "<<endl ; exit(0);}
00027
00028 StHbtThCFGaussSize::StHbtThCFGaussSize( const char* aName, double aX, double aY,double aZ, double aT) : mSizeX(aX), mSizeY(aY), mSizeZ(aZ), mTime(aT) {
00029 mName=new char[strlen(aName)+1];
00030 strcpy(mName,aName);
00031 }
00032
00033 StHbtThCFGaussSize::~StHbtThCFGaussSize()
00034 { delete mName;};
00035
00036 StHbtThCFGaussSize* StHbtThCFGaussSize::Copy( const char* aName, double aX, double aY,double aZ, double aT) {
00037 StHbtThCFGaussSize* NewSize=new StHbtThCFGaussSize(aName,aX,aY,aZ,aT);
00038 if (mThCorrFctnColl.size()>0) {
00039 StHbtThCorrFctnIterator iter;
00040 for (iter=mThCorrFctnColl.begin(); iter!=mThCorrFctnColl.end();iter++){
00041 int tBaseNameLen=strlen((*iter)->GetName())-strlen(mName);
00042 char* tCFName=new char[tBaseNameLen+strlen(aName)+1];
00043 memcpy(tCFName,(*iter)->GetName(),tBaseNameLen);
00044 strcpy(tCFName+tBaseNameLen,aName);
00045 StHbtThCorrFctn *NewCF=(*iter)->ThClone();
00046 NewCF->SetName(tCFName);
00047 delete [] tCFName;
00048 NewSize->mThCorrFctnColl.push_back(NewCF);
00049 };
00050 };
00051 return NewSize;
00052 };
00053
00054 void StHbtThCFGaussSize::AddCorrFctn(const StHbtThCorrFctn* aCF){
00055
00056 StHbtThCorrFctn* NewCF=aCF->ThClone();
00057 char* tName=new char[strlen(aCF->GetName())+strlen(mName)+1];
00058 strcpy(tName, aCF->GetName());
00059 strcat(tName,mName);
00060 NewCF->SetName(tName);
00061 delete [] tName;
00062 mThCorrFctnColl.push_back(NewCF);
00063 }
00064
00065 void StHbtThCFGaussSize::FillPair(StHbtThPair* aThPair ){
00066 StHbtThCorrFctnIterator iter;
00067 for (iter=mThCorrFctnColl.begin(); iter!=mThCorrFctnColl.end();iter++){
00068 (*iter)->AddNum(aThPair);
00069 (*iter)->AddDen(aThPair);
00070 };
00071 }
00072
00073 void StHbtThCFGaussSize::Finish() {
00074 if (mThCorrFctnColl.size()>0) {
00075 StHbtThCorrFctnIterator iter;
00076 for (iter=mThCorrFctnColl.begin(); iter!=mThCorrFctnColl.end();iter++){
00077 (*iter)->Finish();
00078 }
00079 }
00080 }
00081
00082 StHbtString StHbtThCFGaussSize::Report() {
00083 ostrstream tStr;
00084 tStr << "Gaussian Size Report - Size=(X="<< mSizeX <<"Y="<< mSizeY
00085 <<"Z="<< mSizeZ<< "T="<< mTime << ")" << endl;
00086 tStr << mThCorrFctnColl.size() << " Correlation Function Plugged " << endl;
00087 if (mThCorrFctnColl.size()>0) {
00088 StHbtThCorrFctnIterator iter;
00089 for (iter=mThCorrFctnColl.begin(); iter!=mThCorrFctnColl.end();iter++){
00090 tStr << (*iter)->Report() << endl;
00091 }
00092 }
00093 StHbtString returnThis = tStr.str();
00094 return returnThis;
00095 }
00096
00097 inline double StHbtThCFGaussSize::GetSizeX() const {return mSizeX;};
00098 inline double StHbtThCFGaussSize::GetSizeY() const {return mSizeY;};
00099 inline double StHbtThCFGaussSize::GetSizeZ() const {return mSizeZ;};
00100 inline double StHbtThCFGaussSize::GetTime() const {return mTime;};
00101