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 class StChain;
00033 StChain *chain;
00034
00035 void bfcread_geantBranch(
00036 Int_t nevents=2,
00037 const char *MainFile=
00038 "/afs/rhic.bnl.gov/star/data/samples/gstar.geant.root",
00039 const char *fname="qa_geant.out")
00040 {
00041
00042 cout << " events to process = " << nevents << endl;
00043 cout << " Input File Name = " << MainFile << endl;
00044 cout << " Output file containing printouts = " << fname << endl;
00045
00046 ofstream fout(fname);
00047
00048 fout << " Running: bfcread_geantBranch.C " << endl;
00049 fout << " events to process = " << nevents << endl;
00050 fout << " Input File Name = " << MainFile << endl;
00051 fout << " Output file containing printouts = " << fname << endl;
00052 fout << endl << endl;
00053
00054 gSystem->Load("St_base");
00055 gSystem->Load("StChain");
00056 gSystem->Load("libsim_Tables");
00057 gSystem->Load("libgen_Tables");
00058 gSystem->Load("libglobal_Tables");
00059 gSystem->Load("StIOMaker");
00060
00061
00062
00063 chain = new StChain("bfc");
00064 chain->SetDebug();
00065
00066 StIOMaker *IOMk = new StIOMaker("IO","r",MainFile,"bfcTree");
00067 IOMk->SetDebug();
00068 IOMk->SetIOMode("r");
00069 IOMk->SetBranch("*",0,"0");
00070 IOMk->SetBranch("geantBranch",0,"r");
00071
00072
00073 chain->Init();
00074 cout << " Finished Init()..." << endl;
00075 TDataSet *ddb=0;
00076 TTable *tabl=0;
00077 TDataSet *obj=0;
00078 TDataSet *dgeantBranch=0;
00079
00080 int istat=0;
00081 int iev=0;
00082
00083 Float_t countev=0.0;
00084
00085 Float_t countevgB=0.0;
00086 Float_t countevg=0.0;
00087 Float_t countevobjg=0.0;
00088 Float_t countevtabg=0.0;
00089 Float_t countevobjb=0.0;
00090 Float_t countevtabb=0.0;
00091
00092
00093
00094 EventLoop: if (iev < nevents && !istat) {
00095
00096 Int_t Countevobjg=0;
00097 Int_t Countevtabg=0;
00098 Int_t Countevobjb=0;
00099 Int_t Countevtabb=0;
00100
00101
00102 chain->Clear();
00103 cout << " Calling Make()..." << endl;
00104 istat = chain->Make(iev);
00105 cout << " Make() finished..." << endl;
00106
00107
00108 iev++;
00109
00110 cout << " Call Make # " << iev << endl;
00111 cout << " istat value returned from chain Make = " << istat << endl;
00112
00113
00114
00115
00116 if (!istat) {
00117
00118 countev++;
00119
00120 cout << " start event # " << countev << endl;
00121 fout << " start event # " << countev << endl;
00122
00123 dgeantBranch=chain->GetDataSet("geantBranch");
00124 TDataSetIter geantBIter(dgeantBranch);
00125
00126 if (dgeantBranch) {
00127 countevgB++;
00128
00129 cout << endl << " QAInfo: in geantBranch " << endl;
00130 fout << endl << " QAInfo: in geantBranch " << endl;
00131
00132 while (ddb=geantBIter.Next()) {
00133
00134 cout << " QAInfo: found object: " << ddb->GetName() << endl;
00135 fout << " QAInfo: found object: " << ddb->GetName() << endl;
00136
00137 TString dsName = ddb->GetName();
00138
00139 if (dsName == "BfcStatus") {
00140 countevobjb++;
00141 Countevobjb++;
00142 }
00143 else {
00144 countevobjg++;
00145 Countevobjg++;
00146 }
00147
00148 if (ddb->InheritsFrom("TTable")) {
00149
00150 if (dsName == "BfcStatus") {
00151 countevtabb++;
00152 Countevtabb++;
00153 }
00154 else{
00155 countevtabg++;
00156 Countevtabg++;
00157 }
00158
00159 tabl = (TTable *)ddb;
00160 cout << " QAInfo: it's a table with #rows = "
00161 << tabl->GetNRows() << endl;
00162 fout << " QAInfo: it's a table with #rows = "
00163 << tabl->GetNRows() << endl;
00164 }
00165
00166
00167 }
00168
00169 cout << endl << " QAInfo: ev# " << countev <<
00170 ", #geant obj/tab, #Bfc obj/tab found = " <<
00171 Countevobjg << " " <<
00172 Countevtabg << " " <<
00173 Countevobjb << " " <<
00174 Countevtabb << endl << endl;
00175
00176 fout << endl << " QAInfo: ev# " << countev <<
00177 ", #geant obj/tab, #Bfc obj/tab found = " <<
00178 Countevobjg << " " <<
00179 Countevtabg << " " <<
00180 Countevobjb << " " <<
00181 Countevtabb << endl << endl;
00182
00183
00184 }
00185
00186 }
00187
00188 else
00189 {
00190 cout << "Last event processed. Status = " << istat << endl;
00191 }
00192
00193 goto EventLoop;
00194
00195 }
00196
00197 countevobjg /= countev;
00198 countevtabg /= countev;
00199 countevobjb /= countev;
00200 countevtabb /= countev;
00201
00202 cout << endl;
00203 cout << "QAInfo: End of Job " << endl;
00204 cout << "QAInfo: # times Make called = " << iev << endl;
00205 cout << "QAInfo: # events read = " << countev << endl;
00206 cout << "QAInfo: # events with geantBranch dataset = " <<
00207 countevgB << endl;
00208
00209
00210 cout << "QAInfo: avg # geant tables per event = " << countevtabg << endl;
00211 cout << "QAInfo: avg # geant objects per event = " << countevobjg << endl;
00212 cout << "QAInfo: avg # Bfc tables per event = " << countevtabb << endl;
00213 cout << "QAInfo: avg # Bfc objects per event = " << countevobjb << endl << endl;
00214
00215
00216 fout << endl;
00217 fout << "QAInfo: End of Job " << endl;
00218 fout << "QAInfo: # times Make called = " << iev << endl;
00219 fout << "QAInfo: # events read = " << countev << endl;
00220 fout << "QAInfo: # events with geantBranch dataset = " <<
00221 countevgB << endl;
00222
00223
00224 fout << "QAInfo: avg # geant tables per event = " << countevtabg << endl;
00225 fout << "QAInfo: avg # geant objects per event = " << countevobjg << endl;
00226 fout << "QAInfo: avg # Bfc tables per event = " << countevtabb << endl;
00227 fout << "QAInfo: avg # Bfc objects per event = " << countevobjb << endl << endl;
00228
00229 chain->Finish();
00230
00231 }
00232
00233
00234
00235
00236