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 int sizeOfCharPtr = sizeof(Char_t*);
00029
00030 class StChain;
00031 StChain *chain;
00032
00033 class StIOMaker;
00034 StIOMaker *IOMk=0;
00035
00036
00037
00038 void create_ftpc_QA_refhists(
00039 const Char_t *MainFile=
00040 "/star/xtp/jcs/st_physics_7075188_raw_1030004.hist.root"
00041 )
00042 {
00043
00044 cout << "create_ftpc_refhists.C, input hist file = "
00045 << MainFile << endl;
00046
00047
00048 gSystem->Load("St_base");
00049 gSystem->Load("StChain");
00050 gSystem->Load("StIOMaker");
00051 gSystem->Load("StarClassLibrary");
00052 gSystem->Load("libglobal_Tables");
00053 gSystem->Load("StUtilities");
00054 gSystem->Load("StAnalysisUtilities");
00055
00056
00057 chain = new StChain("bfc");
00058 chain->SetDebug();
00059
00060
00061 StIOMaker *IOMk = new StIOMaker("IO","r",MainFile,"bfcTree");
00062 IOMk->SetDebug();
00063 IOMk->SetIOMode("r");
00064 IOMk->SetBranch("*",0,"0");
00065 IOMk->SetBranch("histBranch",0,"r");
00066
00067
00068 gROOT->SetStyle("Plain");
00069 TCanvas *canvas = new TCanvas("CanvasName"," STAR Maker Histogram Canvas",1);
00070 gStyle->SetOptStat(111111);
00071 gStyle->SetStatStyle(0);
00072 gStyle->SetOptDate(0);
00073 canvas->SetGridx(0);
00074 canvas->SetGridy(0);
00075
00076
00077 chain->Init();
00078
00079 TDataSet *ds=0;
00080 TDataSet *obj=0;
00081 int i=0;
00082 int istat=0;
00083 int countev=0;
00084 int countevhds=0;
00085
00086 chain->Clear();
00087 istat = chain->Make(i);
00088
00089
00090 cout<<"sizeOfCharPtr = "<<sizeOfCharPtr<<endl;
00091 Char_t* sdefList[] = {
00092 "StEQaEvsumTotChgF",
00093 "fcl_chargestepW",
00094 "fcl_chargestepE",
00095 "StEHTQaPointFtpc",
00096 "StEHTQaPointXYFtpcE",
00097 "StEHTQaPointXYFtpcW",
00098 "StEHTQaPointPadTimeFtpcW",
00099 "StEHTQaPointPadTimeFtpcE",
00100 "StEHTQaPointPlaneF",
00101 "StEHTQaGtrkXfYfFE",
00102 "StEHTQaGtrkXfYfFW",
00103 "StEHTQaGtrkPsiF",
00104 "StEHTQaGtrkPtF",
00105 "StEHTQaGtrkEtaF",
00106 "StEHTQaGtrkPF",
00107 "StEHTQaGtrkNPntF",
00108 "StEHTQaGtrkGoodF",
00109 "StEHTQaGtrkImpactrF",
00110 "StEHTQaPtrkMeanPtF",
00111 "StEHTQaPtrkMeanEtaF",
00112 "StEHTQaPtrkEtaF",
00113 "StEHTQaPtrkPtF",
00114 "StEHTQaVtxFtpcETpcXY",
00115 "StEHTQaVtxFtpcETpcZ",
00116 "StEHTQaVtxFtpcWTpcZ",
00117 "StEHTQaVtxFtpcWTpcXY"
00118 };
00119 Int_t lengofList = sizeof(sdefList)/sizeOfCharPtr;
00120 cout<<"sdefList[0] = "<<sdefList[0]<<endl;
00121 cout<<"sizeof(sdefList) = "<<sizeof(sdefList)<<" sizeOfCharPtr = "<<sizeOfCharPtr<<" lengofList = "<<lengofList<<endl;
00122
00123
00124 int countObj=0;
00125 int countHist=0;
00126
00127 if (!istat) {
00128
00129 countev++;
00130
00131 cout << " start event # " << countev << endl;
00132
00133 ds=chain->GetDataSet("hist");
00134 TDataSetIter tabiter(ds);
00135 if (ds) {
00136
00137 countevhds++;
00138
00139 TDataSetIter nextHistList(ds);
00140 St_ObjectSet *histContainer = 0;
00141 TList *dirList = 0;
00142
00143
00144 while (histContainer = (St_ObjectSet *)nextHistList()) {
00145 dirList = (TList *) histContainer->GetObject();
00146
00147 cout << " QAInfo: found directory: " <<
00148 histContainer->GetName() << endl;
00149
00150 countObj++;
00151
00152 if (strcmp((Char_t *)histContainer->GetName(),"EventQAHist") == 0) {
00153 cout << "QAInfo: Process histograms in directory EventQAHist" <<endl;
00154
00155
00156
00157
00158
00159 TIter nextHist(dirList);
00160 TObject *o = 0;
00161 TH1* hobjradialW = NULL;
00162 TH1* hobjradialE = NULL;
00163
00164 while (o= nextHist()) {
00165
00166
00167 canvas->SetLogy(0);
00168 Int_t ilg = 0;
00169 Char_t filename[50];
00170 for (ilg=0;ilg<lengofList;ilg++) {
00171 if (strcmp(sdefList[ilg],o->GetName()) == 0) {
00172 countHist++;
00173 cout << " QAInfo: Hist name: " << o->GetName() <<
00174 " ==> Title: " << o->GetTitle() << endl;
00175 if ( (strcmp("fcl_chargestepW",o->GetName()) == 0)
00176 || (strcmp("fcl_chargestepE",o->GetName()) == 0)
00177 || (strcmp("StEHTQaGtrkEtaF",o->GetName()) == 0)
00178 || (strcmp("StEHTQaGtrkPtF",o->GetName()) == 0)
00179 ||(strcmp("StEHTQaGtrkPF",o->GetName()) == 0)
00180 ) canvas->SetLogy(1);
00181
00182 if ( (strcmp("StEHTQaPointXYFtpcE",o->GetName()) == 0)
00183 || (strcmp("StEHTQaPointXYFtpcW",o->GetName()) == 0)
00184 || (strcmp("StEHTQaPointPadTimeFtpcE",o->GetName()) == 0)
00185 || (strcmp("StEHTQaPointPadTimeFtpcW",o->GetName()) == 0)
00186 || (strcmp("StEHTQaGtrkGoodF",o->GetName()) == 0)
00187 || (strcmp("StEHTQaGtrkXfYfFW",o->GetName()) == 0)
00188 || (strcmp("StEHTQaGtrkXfYfFE",o->GetName()) == 0)
00189 || (strcmp("StEHTQaVtxFtpcETpcXY",o->GetName()) == 0)
00190 || (strcmp("StEHTQaVtxFtpcWTpcXY",o->GetName()) == 0)) {
00191 o->Draw("Box");
00192 if (strcmp("StEHTQaGtrkGoodF",o->GetName()) == 0
00193 && o->InheritsFrom("TH1")) {
00194 TH1* hobj = (TH1*) o;
00195
00196 Float_t mean1 = hobj->GetMean(1);
00197 Float_t mean2 = hobj->GetMean(2);
00198 Float_t window1 = hobj->GetRMS(1);
00199 Float_t window2 = hobj->GetRMS(2);
00200 Float_t bwid = hobj->GetBinWidth(1);
00201 if (window1 < bwid) window1 = bwid;
00202 if (window2 < bwid) window2 = bwid;
00203 Float_t lo = TMath::Min(mean1-5*window1,mean2-5*window2);
00204 Float_t hi = TMath::Max(mean1+5*window1,mean2+5*window2);
00205 hobj->SetAxisRange(lo,hi,"X");
00206 hobj->SetAxisRange(lo,hi,"Y");
00207 TLine ruler;ruler.SetLineColor(46);
00208 ruler.DrawLineNDC(0.1,0.1,0.9,0.9);
00209 }
00210 }
00211 else {
00212 if (strcmp("StEHTQaPointFtpc",o->GetName()) == 0
00213 && o->InheritsFrom("TH1")) {
00214 TH1* hobj = (TH1*) o;
00215 Float_t mean = hobj->GetMean(1);
00216 Float_t window = hobj->GetRMS(1);
00217 Float_t bwid = hobj->GetBinWidth(1);
00218 if (window < bwid) window = bwid;
00219 hobj->SetAxisRange(mean-5*window,mean+5*window,"X");
00220 }
00221 o->Draw();
00222 }
00223 sprintf(filename,"%s.gif",o->GetName());
00224 canvas->Print(filename);
00225 }
00226 }
00227 if ((strcmp("fcl_radialW",o->GetName()) == 0)) hobjradialW = (TH1*) o;
00228 if ((strcmp("fcl_radialE",o->GetName()) == 0)) hobjradialE = (TH1*) o;
00229
00230 if (hobjradialW && hobjradialE) {
00231 hobjradialW->SetStats(kFALSE);
00232 hobjradialW->GetXaxis()->SetRangeUser(7.0,9.0);
00233 hobjradialE->SetStats(kFALSE);
00234 hobjradialE->GetXaxis()->SetRangeUser(7.0,9.0);
00235 if ( hobjradialW->GetMaximum() >= hobjradialE->GetMaximum()) {
00236
00237 hobjradialW->SetTitle("FTPCW+E cluster radial position");
00238 hobjradialE->SetTitle(hobjradialW->GetTitle());
00239 hobjradialW->Draw();
00240 hobjradialE->Draw("Same");
00241 canvas->Modified();
00242 TLine ruler; ruler.SetLineColor(kBlack);
00243 ruler.SetLineWidth(2);
00244 ruler.DrawLine(7.8,0.,7.8,hobjradialW->GetMaximum());
00245 sprintf(filename,"%s.gif",hobjradialW->GetName());
00246 } else {
00247 hobjradialE->SetTitle((TString)"FTPCE+W cluster radial position");
00248 hobjradialW->SetTitle(hobjradialE->GetTitle());
00249 hobjradialE->Draw();
00250 canvas->Modified();
00251 hobjradialW->Draw("Same");
00252 TLine ruler; ruler.SetLineColor(kBlack);
00253 ruler.SetLineWidth(2);
00254 ruler.DrawLine(7.8,0.,7.8,hobjradialE->GetMaximum());
00255 sprintf(filename,"%s.gif",hobjradialE->GetName());
00256 }
00257
00258
00259 TLegend *legend = new TLegend(0.75,0.85,0.98,0.95);
00260 legend->SetFillColor(0);
00261 legend->SetHeader("Legend");
00262 legend->SetMargin(0.25);
00263 legend->AddEntry(hobjradialE,"FtpcEast","l");
00264 legend->AddEntry(hobjradialW,"FtpcWest","l");
00265 legend->Draw();
00266 canvas->Print(filename);
00267 hobjradialW = NULL;
00268 hobjradialE = NULL;
00269 }
00270 }
00271 }
00272 }
00273 }
00274
00275 cout << " QAInfo: event # " << countev
00276 << ", # directories found = " << countObj
00277 << ", # hist found = " << countHist
00278 << endl << endl;
00279
00280 }
00281
00282 else
00283 {
00284 cout << "Last event processed. Status = " << istat << endl;
00285 }
00286
00287 cout <<" create_ftpc_refhists.C, end of macro" << endl;
00288
00289 }
00290
00291