00001
00002
00003 class StChain;
00004 StChain *chain=0;
00005
00006 int rdMuDst_Geant2print( int maxEve=2){
00007 char * muDstPath="/star/data26/reco/pp200/pythia_6.203/default/minbias/year2003/hadronic_on/trs_ic/";
00008 char * muDstFile="rcf1200_2723_2000evts.MuDst.root";
00009
00010 TString geantFile = "/star/data26/reco/pp200/pythia_6.203/default/minbias/year2003/hadronic_on/trs_ic/rcf1200_2723_2000evts.geant.root";
00011
00012
00013 gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00014 loadSharedLibraries();
00015 cout << " loading done " << endl;
00016
00017
00018
00019 chain = new StChain("StChain");
00020
00021
00022
00023
00024 StIOMaker* IOMk = new StIOMaker("IO","r",geantFile,"bfcTree");
00025 IOMk->SetDebug();
00026 IOMk->SetIOMode("r");
00027 IOMk->SetBranch("*",0,"0");
00028 IOMk->SetBranch("geantBranch",0,"r");
00029
00030
00031 int maxList=1;
00032 muMk = new StMuDstMaker(0,0,muDstPath,muDstFile,"MuDst.root",maxList);
00033
00034 chain->Init();
00035 chain->ls(3);
00036
00037
00038
00039 int eventCounter=0;
00040
00041 printf(" requested maxEve=%d\n",maxEve);
00042
00043 while ( 1) {
00044 eventCounter++;;
00045 if(eventCounter >maxEve) break;
00046 chain->Clear();
00047 int stat = chain->Make();
00048 if(stat) break;
00049
00050
00051 StMuEvent* muEve = muMk->muDst()->event();
00052 int n = muMk->muDst()->primaryTracks()->GetEntries();
00053 StEventInfo &info=muEve->eventInfo();
00054
00055 printf("eve=%d Nprim=%d ID=%d\n",eventCounter,n,info.id());
00056
00057
00058
00059
00060 St_DataSet* Event = chain->GetDataSet("geant");
00061
00062 St_DataSetIter geantDstI(Event);
00063
00064
00065 St_g2t_event *Pg2t_event=(St_g2t_event *) geantDstI("g2t_event");
00066
00067 g2t_event_st *g2t_event1=Pg2t_event->GetTable();
00068 printf("nr=%d %p\n",Pg2t_event->GetNRows(),g2t_event1);
00069 int k1= g2t_event1->eg_label;
00070 int k2= g2t_event1->n_event;
00071 int k3= g2t_event1->subprocess_id;
00072
00073 printf("eg_label=%d n_event=%d subprocess_id=%d\n", k1,k2,k3);
00074 assert(info.id()==g2t_event1->n_event);
00075
00076
00077
00078 St_particle *particleTabPtr = (St_particle *) geantDstI("particle");
00079 particle_st* particleTable = particleTabPtr->GetTable();
00080
00081 for (int i=0; i<particleTabPtr->GetNRows();++i) {
00082 if(i>10) break;
00083 cout << "track " << i << endl;
00084 cout << " id = " << particleTable[i].idhep << endl;
00085 cout << " px = " << particleTable[i].phep[0] << endl;
00086 cout << " py = " << particleTable[i].phep[1] << endl;
00087 cout << " pz = " << particleTable[i].phep[2] << endl;
00088 cout << " e = " << particleTable[i].phep[3] << endl;
00089 cout << " m = " << particleTable[i].phep[4] << endl;
00090 cout << " moth1 = " << particleTable[i].jmohep[0] << endl;
00091 cout << " moth2 = " << particleTable[i].jmohep[1] << endl;
00092 }
00093
00094 }
00095
00096
00097
00098 }
00099
00100
00101
00102
00103
00104
00105
00106