00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include "TClass.h"
00037 #include "StRichPidTraits.h"
00038
00039 static const char rcsid[] = "$Id: StRichPidTraits.cxx,v 2.7 2002/02/19 23:21:30 ullrich Exp $";
00040
00041 ClassImp(StRichPidTraits)
00042
00043 StRichPidTraits::StRichPidTraits()
00044 : StTrackPidTraits(kRichId), mId(0), mProbability(0) {
00045 mThePids.clear();
00046 mThePids.resize(0);
00047 mRichSpectra = 0;
00048 }
00049
00050 StRichPidTraits::~StRichPidTraits() {delete mRichSpectra;}
00051
00052 StRichPidTraits::StRichPidTraits(const StRichPidTraits& t)
00053 {
00054 mRichSpectra = 0;
00055 *this = t;
00056 }
00057
00058 StRichPidTraits&
00059 StRichPidTraits::operator=(const StRichPidTraits& t)
00060 {
00061 if (this != &t) {
00062 mThePids = t.mThePids;
00063 mProductionVersion = t.mProductionVersion;
00064 mId = t.mId;
00065 mProbability = t.mProbability;
00066 mAssociatedMip = t.mAssociatedMip;
00067 mMipResidual = t.mMipResidual;
00068 mRefitResidual = t.mRefitResidual;
00069 mSigned3dDca = t.mSigned3dDca;
00070 mSigned2dDca = t.mSigned2dDca;
00071 if (mRichSpectra) delete mRichSpectra;
00072 if (t.mRichSpectra)
00073 mRichSpectra = new StRichSpectra(*t.mRichSpectra);
00074 else
00075 mRichSpectra = 0;
00076 }
00077 return *this;
00078 }
00079
00080
00081 StRichPid*
00082 StRichPidTraits::getPid(StParticleDefinition* part) {
00083
00084 for (size_t index=0;index<mThePids.size();index++) {
00085
00086 if ( (mThePids[index]->getRingType()==part) ||
00087 (mThePids[index]->getParticleNumber() == part->pdgEncoding()) ) {
00088 return mThePids[index];
00089 }
00090
00091 }
00092 return 0;
00093 }
00094
00095
00096 const StRichPid*
00097 StRichPidTraits::getPid(StParticleDefinition* part) const {
00098
00099 for (size_t index=0;index<mThePids.size();index++) {
00100
00101 if ( (mThePids[index]->getRingType()==part) ||
00102 (mThePids[index]->getParticleNumber() == part->pdgEncoding()) ) {
00103 return mThePids[index];
00104 }
00105
00106 }
00107 return 0;
00108 }
00109
00110 ostream&
00111 operator<<(ostream& os, const StRichPidTraits& t)
00112 {
00113 return (os << "StrichPidTraits::> #Pids= " << t.getAllPids().size()
00114 << "\n\tProduction Version: " << t.productionVersion()
00115 << "\n\tAssociated Mip: " << t.associatedMip()
00116 << "\n\tMip Residual: " << t.mipResidual()
00117 << "\n\tRefit Residual: " << t.refitResidual()
00118 << "\n\tid " << t.id()
00119 << "\n\tprobability " << t.probability());
00120 }
00121
00122 void
00123 StRichPidTraits::Streamer(TBuffer &R__b)
00124 {
00125
00126
00127 if (R__b.IsReading()) {
00128 UInt_t R__s, R__c;
00129 Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
00130 if (R__v > 1) {
00131 Class()->ReadBuffer(R__b, this, R__v, R__s, R__c);
00132 return;
00133 }
00134
00135 StTrackPidTraits::Streamer(R__b);
00136 mThePids.Streamer(R__b);
00137 R__b >> mProductionVersion;
00138 R__b >> mId;
00139 R__b >> mProbability;
00140
00141
00142 R__b >> (StRichHit*&)mAssociatedMip;
00143
00144 mMipResidual.Streamer(R__b);
00145 mRefitResidual.Streamer(R__b);
00146 R__b >> mSigned3dDca;
00147 R__b >> mSigned2dDca;
00148
00149
00150 R__b.CheckByteCount(R__s, R__c, Class());
00151
00152
00153 } else {
00154 Class()->WriteBuffer(R__b,this);
00155 }
00156 }
00157