00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "StHbtMaker/ThCorrFctn/StHbtThCFGaussFit.h"
00017
00018 #include "StHbtMaker/ThCorrFctn/StHbtThCFGaussSizeCollection.hh"
00019 #include "StHbtMaker/ThCorrFctn/StHbtThCFGaussSize.h"
00020 #include "StHbtMaker/Base/StHbtThCorrFctn.hh"
00021 #include "StHbtMaker/Infrastructure/StHbtPair.hh"
00022 #include "StHbtMaker/Infrastructure/StHbtTypes.hh"
00023
00024 #include "TRandom.h"
00025 #include <Stsstream.h>
00026
00027 #ifdef __ROOT__
00028 ClassImp(StHbtThCFGaussFit)
00029 #endif
00030
00031 StHbtThCFGaussFit::StHbtThCFGaussFit():
00032 mMaxX(0), mMaxY(0), mMaxZ(0), mMaxT(0)
00033 { };
00034
00035 StHbtThCFGaussFit::~StHbtThCFGaussFit()
00036 { } ;
00037
00038 void StHbtThCFGaussFit::AddCorrFctn(const StHbtThCorrFctn *aCF){
00039 if (mSizeColl.size()<=0) {
00040 cout << "StHbtThCFGaussFit - At Least One Gaussian Size must be plugged before " << endl;
00041 cout << " StHbtThCFGaussFit - Warning - " << aCF->GetName() << " has NOT been added " << endl;
00042 }
00043 StHbtThCFGaussSizeIterator iter;
00044 for (iter=mSizeColl.begin(); iter!=mSizeColl.end();iter++){
00045 (*iter)->AddCorrFctn(aCF);
00046 }
00047 }
00048
00049 void StHbtThCFGaussFit::AddSize(const char* aName, double aX, double aY, double aZ, double aT){
00050 if (aX>mMaxX) { mMaxX=aX;mPair.SetSize(mMaxX,mMaxY,mMaxZ,mMaxT);};
00051 if (aY>mMaxY) { mMaxY=aY;mPair.SetSize(mMaxX,mMaxY,mMaxZ,mMaxT);};
00052 if (aZ>mMaxZ) { mMaxZ=aZ;mPair.SetSize(mMaxX,mMaxY,mMaxZ,mMaxT);};
00053 if (aT>mMaxT) { mMaxT=aT;mPair.SetSize(mMaxX,mMaxY,mMaxZ,mMaxT);};
00054 if (mSizeColl.size()>0) {
00055 StHbtThCFGaussSize* tFirstSize=(*(mSizeColl.begin()));
00056 mSizeColl.push_back(tFirstSize->Copy(aName,aX,aY,aZ,aT));
00057 } else {
00058 mSizeColl.push_back(new StHbtThCFGaussSize(aName,aX,aY,aZ,aT));
00059 };
00060 };
00061
00062 void StHbtThCFGaussFit::AddRealPair( const StHbtPair* aPair) {};
00063
00064 void StHbtThCFGaussFit::AddMixedPair( const StHbtPair* aPair) {
00065 if (mSizeColl.size()>0) {
00066 mPair.Set(aPair);
00067 double tProb=mRand.Rndm(); if(tProb){};
00068 StHbtThCFGaussSizeIterator iter;
00069 for (iter=mSizeColl.begin(); iter!=mSizeColl.end();iter++){
00070
00071
00072 (*iter)->FillPair(&mPair);
00073 }
00074 }
00075 }
00076
00077
00078 void StHbtThCFGaussFit::Finish() {
00079 if (mSizeColl.size()>0) {
00080 StHbtThCFGaussSizeIterator iter;
00081 for (iter=mSizeColl.begin(); iter!=mSizeColl.end();iter++){
00082 (*iter)->Finish();
00083 }
00084 }
00085 }
00086
00087 StHbtString StHbtThCFGaussFit::Report() {
00088 ostrstream tStr;
00089 tStr << "Correlation - Gaussian Fit Manager Report" << endl;
00090 tStr << mPair.Report() ;
00091
00092 tStr << mSizeColl.size() << " Sizes defined " << endl;
00093
00094 if (mSizeColl.size()>0) {
00095 StHbtThCFGaussSizeIterator iter;
00096 for (iter=mSizeColl.begin(); iter!=mSizeColl.end();iter++){
00097 tStr << (*iter)->Report() << endl;
00098 }
00099 }
00100 StHbtString returnThis = tStr.str();
00101 return returnThis;
00102 }
00103
00104 inline void StHbtThCFGaussFit::SetWeight(StHbtFsiWeight* aWeight) {mPair.SetWeight(aWeight);};
00105 inline void StHbtThCFGaussFit::UseHiddenMomentum() {mPair.UseHiddenMomentum();};
00106 inline void StHbtThCFGaussFit::UseParticleMomentum() {mPair.UseParticleMomentum();};
00107
00108 inline void StHbtThCFGaussFit::UseHiddenPid() {mPair.UseHiddenPid();};
00109 inline void StHbtThCFGaussFit::UseFixedPid( int const tPid1, double const tMass1)
00110 {mPair.UseFixedPid( tPid1, tMass1) ;};
00111 inline void StHbtThCFGaussFit::UseFixedPid( int const tPid1,double const tMass1, int const tPid2,double const tMass2 )
00112 {mPair.UseFixedPid(tPid1, tMass1, tPid2, tMass2 );};
00113
00114 inline void StHbtThCFGaussFit::SetBoostRCMS(double aPlab,double aMBeam, double aMTarget)
00115 {mPair.SetBoostRCMS(aPlab,aMBeam, aMTarget);};
00116 inline void StHbtThCFGaussFit::SetRCMS() {mPair.SetRCMS();};
00117 inline void StHbtThCFGaussFit::SetLCMS() {mPair.SetLCMS();};
00118 inline void StHbtThCFGaussFit::SetPRF() {mPair.SetPRF();};
00119
00120 inline void StHbtThCFGaussFit::AddSize(const char* aName, double aXYZ, double aT){
00121 AddSize(aName,aXYZ,aXYZ,aXYZ,aT);};
00122
00123 inline StHbtThCFGaussSizeCollection *StHbtThCFGaussFit::getCollection() { return &mSizeColl; }