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 #include "StHbtMaker/Reader/StHbtStrangeMuDstEventReader.h"
00032
00033 #include "StChain.h"
00034
00035 #include <math.h>
00036
00037
00038 #include "StHbtMaker/Reader/StHbtGstarTxtReader.h"
00039 #include "StHbtMaker/Base/StHbtEventCut.h"
00040 #include "StHbtMaker/Base/StHbtTrackCut.h"
00041 #include "StHbtMaker/Base/StHbtV0Cut.h"
00042 #include "StHbtMaker/Base/StHbtKinkCut.h"
00043
00044 #include "SystemOfUnits.h"
00045 #include "StHbtMaker/Infrastructure/StHbtV0Collection.hh"
00046 #include "StStrangeMuDstMaker/StStrangeMuDstMaker.h"
00047 #include "StStrangeMuDstMaker/StStrangeEvMuDst.hh"
00048 #include "StStrangeMuDstMaker/StV0MuDst.hh"
00049
00050 #ifdef __ROOT__
00051 ClassImp(StHbtStrangeMuDstEventReader)
00052 #endif
00053
00054 #if !(ST_NO_NAMESPACES)
00055 using namespace units;
00056 #endif
00057
00058
00059
00060 StHbtStrangeMuDstEventReader::StHbtStrangeMuDstEventReader(){
00061 mReaderStatus = 0;
00062 mStrangeMuDstMaker =0;
00063 }
00064
00065 StHbtStrangeMuDstEventReader::StHbtStrangeMuDstEventReader(StStrangeMuDstMaker* maker) : mStrangeMuDstMaker(maker) {
00066 mReaderStatus = 0;
00067 }
00068
00069 StHbtStrangeMuDstEventReader::~StHbtStrangeMuDstEventReader(){
00070 if (mEventCut) delete mEventCut;
00071 if (mV0Cut) delete mV0Cut;
00072 }
00073
00074 StHbtString StHbtStrangeMuDstEventReader::Report(){
00075 StHbtString temp = "\n This is the StHbtStrangeMuDstEventReader\n";
00076 temp += "---> EventCuts in Reader: ";
00077 if (mEventCut) {
00078 temp += mEventCut->Report();
00079 }
00080 else {
00081 temp += "NONE";
00082 }
00083 temp += "\n---> V0Cuts in Reader: ";
00084 if (mV0Cut) {
00085 temp += mV0Cut->Report();
00086 }
00087 else {
00088 temp += "NONE";
00089 }
00090 temp += "\n";
00091 return temp;
00092 }
00093
00094 StHbtEvent* StHbtStrangeMuDstEventReader::ReturnHbtEvent(){
00095 #ifdef STHBTDEBUG
00096 cout << " StHbtStrangeMuDstEventReader::ReturnHbtEvent()" << endl;
00097 #endif
00098 StStrangeEvMuDst* strangeEvMuDst = mStrangeMuDstMaker->GetEvent();
00099 if (!strangeEvMuDst){
00100 cout << " StHbtStrangeMuDstEventReader::ReturnHbtEvent() - No StrangeEvMuDst !!! " << endl;
00101 return 0;
00102 }
00103
00104 StHbtEvent* hbtEvent = new StHbtEvent;
00105 StHbtThreeVector vp = StHbtThreeVector(strangeEvMuDst->primaryVertexX(),strangeEvMuDst->primaryVertexY(),strangeEvMuDst->primaryVertexZ());
00106 cout << " StHbtStrangeMuDstEventReader::ReturnHbtEvent() - primary vertex : " << vp << endl;
00107 hbtEvent->SetPrimVertPos(vp);
00108 hbtEvent->SetNumberOfTracks(strangeEvMuDst->primaryTracks());
00109 hbtEvent->SetEventNumber(strangeEvMuDst->event());
00110
00111
00112
00113 if (mEventCut){
00114 if (!(mEventCut->Pass(hbtEvent))){
00115 delete hbtEvent;
00116 return 0;
00117 }
00118 }
00119
00120 for( int i= 0; i < mStrangeMuDstMaker->GetNV0(); i++){
00121 StV0MuDst* v0FromMuDst = mStrangeMuDstMaker->GetV0(i);
00122
00123 StHbtV0* hbtV0 = new StHbtV0;
00124 hbtV0->SetdecayLengthV0(v0FromMuDst->decayLengthV0());
00125 hbtV0->SetdecayVertexV0X(v0FromMuDst->decayVertexV0X());
00126 hbtV0->SetdecayVertexV0Y(v0FromMuDst->decayVertexV0Y());
00127 hbtV0->SetdecayVertexV0Z(v0FromMuDst->decayVertexV0Z());
00128 hbtV0->SetdcaV0Daughters(v0FromMuDst->dcaV0Daughters());
00129 hbtV0->SetdcaV0ToPrimVertex(v0FromMuDst->dcaV0ToPrimVertex());
00130 hbtV0->SetdcaPosToPrimVertex(v0FromMuDst->dcaPosToPrimVertex());
00131 hbtV0->SetdcaNegToPrimVertex(v0FromMuDst->dcaNegToPrimVertex());
00132 hbtV0->SetmomPosX(v0FromMuDst->momPosX());
00133 hbtV0->SetmomPosY(v0FromMuDst->momPosY());
00134 hbtV0->SetmomPosZ(v0FromMuDst->momPosZ());
00135 hbtV0->SetmomNegX(v0FromMuDst->momNegX());
00136 hbtV0->SetmomNegY(v0FromMuDst->momNegY());
00137 hbtV0->SetmomNegZ(v0FromMuDst->momNegZ());
00138 #ifdef STHBTDEBUG
00139 cout << " hist pos ";
00140 cout << v0FromMuDst->topologyMapPos().numberOfHits(kTpcId);
00141 cout << " hist neg ";
00142 cout << v0FromMuDst->topologyMapNeg().numberOfHits(kTpcId) << endl;
00143 #endif
00144 hbtV0->SettpcHitsPos(v0FromMuDst->topologyMapPos().numberOfHits(kTpcId));
00145 hbtV0->SettpcHitsNeg(v0FromMuDst->topologyMapNeg().numberOfHits(kTpcId));
00146 hbtV0->SetTrackTopologyMapPos(0,v0FromMuDst->topologyMapPos().data(0));
00147 hbtV0->SetTrackTopologyMapPos(1,v0FromMuDst->topologyMapPos().data(1));
00148 hbtV0->SetTrackTopologyMapNeg(0,v0FromMuDst->topologyMapNeg().data(0));
00149 hbtV0->SetTrackTopologyMapNeg(1,v0FromMuDst->topologyMapNeg().data(1));
00150 hbtV0->SetkeyPos(v0FromMuDst->keyPos());
00151 hbtV0->SetkeyNeg(v0FromMuDst->keyNeg());
00152 #ifdef STHBTDEBUG
00153 cout << " keyPos " << v0FromMuDst->keyPos() << endl;
00154 cout << " keyNeg " << v0FromMuDst->keyNeg() << endl;
00155 #endif
00156 hbtV0->SetmomV0X(v0FromMuDst->momV0X());
00157 hbtV0->SetmomV0Y(v0FromMuDst->momV0Y());
00158 hbtV0->SetmomV0Z(v0FromMuDst->momV0Z());
00159 #ifdef STHBTDEBUG
00160 cout << " alpha ";
00161 cout << v0FromMuDst->alphaV0();
00162 cout << " ptArm ";
00163 cout << v0FromMuDst->ptArmV0() << endl;
00164 #endif
00165 hbtV0->SetalphaV0(v0FromMuDst->alphaV0());
00166 hbtV0->SetptArmV0(v0FromMuDst->ptArmV0());
00167 hbtV0->SeteLambda(v0FromMuDst->eLambda());
00168 hbtV0->SeteK0Short(v0FromMuDst->eK0Short());
00169 hbtV0->SetePosProton(v0FromMuDst->ePosProton());
00170 hbtV0->SetePosPion(v0FromMuDst->ePosPion());
00171 hbtV0->SeteNegPion(v0FromMuDst->eNegPion());
00172 hbtV0->SeteNegProton(v0FromMuDst->eNegProton());
00173 hbtV0->SetmassLambda(v0FromMuDst->massLambda());
00174 hbtV0->SetmassAntiLambda(v0FromMuDst->massAntiLambda());
00175 hbtV0->SetmassK0Short(v0FromMuDst->massK0Short());
00176 hbtV0->SetrapLambda(v0FromMuDst->rapLambda());
00177 hbtV0->SetrapK0Short(v0FromMuDst->rapK0Short());
00178 hbtV0->SetcTauLambda(v0FromMuDst->cTauLambda());
00179 hbtV0->SetcTauK0Short(v0FromMuDst->cTauK0Short());
00180 hbtV0->SetptV0(v0FromMuDst->ptV0());
00181 hbtV0->SetptotV0(v0FromMuDst->ptotV0());
00182 hbtV0->SetptPos(v0FromMuDst->ptPos());
00183 hbtV0->SetptotPos(v0FromMuDst->ptotPos());
00184 hbtV0->SetptNeg(v0FromMuDst->ptNeg());
00185 hbtV0->SetptotNeg(v0FromMuDst->ptotNeg());
00186 hbtV0->SetdedxPos(v0FromMuDst->dedxPos());
00187 hbtV0->SetdedxNeg(v0FromMuDst->dedxNeg());
00188
00189
00190
00191
00192 if (mV0Cut){
00193 if (!(mV0Cut->Pass(hbtV0))){
00194 delete hbtV0;
00195 continue;
00196 }
00197 }
00198
00199
00200 hbtEvent->V0Collection()->push_back(hbtV0);
00201 }
00202
00203 #ifdef STHBTDEBUG
00204 cout << " StHbtStrangeMuDstEventReader::ReturnHbtEvent() - " << hbtEvent->V0Collection()->size();
00205 cout << " V0s pushed in collection " << endl;
00206 #endif
00207 printf(" StHbtStrangeMuDstEventReader::ReturnHbtEvent() - %8i(%i) V0s pushed into collection \n",
00208 hbtEvent->V0Collection()->size(),
00209 mStrangeMuDstMaker->GetNV0());
00210
00211
00212
00213
00214
00215 if (mEventCut){
00216 if (!(mEventCut->Pass(hbtEvent))){
00217 delete hbtEvent;
00218 return 0;
00219 }
00220 }
00221
00222 return hbtEvent;
00223 }
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244