00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "StMuPrimaryVertex.h"
00010 #include "StEvent/StPrimaryVertex.h"
00011 #include "StEventUtilities/StuRefMult.hh"
00012 #include "StEventUtilities/StuFtpcRefMult.hh"
00013 #include "TString.h"
00014 ClassImp(StMuPrimaryVertex)
00015
00016 StMuPrimaryVertex::StMuPrimaryVertex(const StPrimaryVertex*& vertex) {
00017 mFlag = vertex->flag();
00018 mPosition = vertex->position();
00019 mPosError = vertex->positionError();
00020 mVertexFinderId = vertex->vertexFinderId();
00021 mRanking = vertex->ranking();
00022 mNTracksUsed = vertex->numTracksUsedInFinder();
00023 mNBTOFMatch = vertex->numMatchesWithBTOF();
00024 mNCTBMatch = vertex->numMatchesWithCTB();
00025 mNBEMCMatch = vertex->numMatchesWithBEMC();
00026 mNEEMCMatch = vertex->numMatchesWithEEMC();
00027
00028 mNBTOFNotMatch = vertex->numNotMatchesWithBTOF();
00029 mNCTBNotMatch = vertex->numNotMatchesWithCTB();
00030 mNBEMCNotMatch = vertex->numNotMatchesWithBEMC();
00031 mNEEMCNotMatch = vertex->numNotMatchesWithEEMC();
00032
00033 mNCrossCentralMembrane = vertex->numTracksCrossingCentralMembrane();
00034 mNTracksWithPromptHit = vertex->numTracksWithPromptHit();
00035 mNPostXTracks = vertex->numPostXTracks();
00036 mSumTrackPt = vertex->sumOfTrackPt();
00037 mMeanDip = vertex->meanDip();
00038 mChiSquared = vertex->chiSquared();
00039 mNTracks = vertex->numberOfDaughters();
00040 mRefMultPos = uncorrectedNumberOfPositivePrimaries(vertex);
00041 mRefMultNeg = uncorrectedNumberOfNegativePrimaries(vertex);
00042 mRefMultFtpcEast = uncorrectedNumberOfFtpcEastPrimaries(vertex);
00043 mRefMultFtpcWest = uncorrectedNumberOfFtpcWestPrimaries(vertex);
00044
00045 mIdTruth = vertex->idTruth();
00046 mQuality = vertex->qaTruth();
00047 mIdParent = vertex->idParent();
00048 }
00049 #if 0
00050 void StMuPrimaryVertex::Print(Option_t *option) const {
00051 cout << "Vertex position " << mPosition << endl;
00052 cout << " errors " << mPosError << endl;
00053 cout << "Rank " << mRanking << endl;
00054 cout << "Chisquared " << mChiSquared << endl;
00055 cout << "RefMult " << refMult() << " ( pos " << mRefMultPos << ", neg "
00056 << mRefMultNeg << " )" << endl;
00057 cout << "Tracks used " << mNTracksUsed << endl;
00058 cout << "Mean dip " << mMeanDip << endl;
00059 }
00060 #endif
00061
00062 ostream& operator<<(ostream& os, const StMuPrimaryVertex& v) {
00063 const Char_t *beam = (v.isBeamConstrained()) ? "B" : " ";
00064 os << Form("%1s:",beam);
00065 if (v.nPostXtracks() < 10) os << Form("%i/",v.nPostXtracks());
00066 else os << "*/";
00067 if (v.nPromptTracks() < 10) os << Form("%i/",v.nPromptTracks());
00068 else os << "*/";
00069 if (v.nCrossCentralMembrane() < 10) os << Form("%i/",v.nCrossCentralMembrane());
00070 else os << "*/";
00071 if ((v.nBEMCMatch()+v.nBTOFMatch()) < 10) os << Form("%i/",(v.nBEMCMatch()+v.nBTOFMatch()));
00072 else os << "*/";
00073 if ((v.nBEMCMatch()+v.nEEMCMatch()) < 10) os << Form("%i",(v.nBEMCMatch()+v.nEEMCMatch()));
00074 else os << "*";
00075 os << Form(" %8.3f+/-%6.3f %8.3f+/-%6.3f %8.3f+/-%6.3f",
00076 v.position().x(),v.posError().x(),
00077 v.position().y(),v.posError().y(),
00078 v.position().z(),v.posError().z());
00079 os << Form(" Rank:%6.0f",v.ranking());
00080 os << Form(" M:%4i:R%4i",v.noTracks(),v.refMult());
00081
00082 os << Form(" U:%4i ",v.nTracksUsed());
00083 os << Form(" QA:%3i",v.qaTruth());
00084 return os;
00085 }
00086
00087 void StMuPrimaryVertex::Print(Option_t *option) const {cout << *this << endl;}
00088
00089
00090
00091
00092
00093
00094
00095