00001 TObjArray *HList;
00002 class StEEstaleMaker;
00003
00004 int rdEztFeePed(
00005 int nEve=3000,
00006 Int_t nFiles = 20,
00007 char* file="R5135068ezB.lis",
00008 char* inDir = "../oldPanitkin/muDst/",
00009 TString outPath="./"
00010 ){
00011
00012 file="st_physics_7064056_raw_1040001.MuDst.root";
00013 inDir = "/star/data03/daq/2006/064/";
00014
00015 gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00016 loadSharedLibraries();
00017 cout << " loading done " << endl;
00018 assert( !gSystem->Load("StEEmcPoolmuEztFeePed"));
00019
00020
00021
00022 chain = new StChain("StChain");
00023
00024 printf("adding muDst from '%s' ....\n",file);
00025
00026 muMk = new StMuDstMaker(0,0,inDir,file,"MuDst.root",nFiles);
00027 TChain* tree=muMk->chain(); assert(tree);
00028 int nEntries=tree->GetEntries();
00029 printf("total eve in chain =%d\n",nEntries);
00030 printf("in=%s%s=\n",inDir,file);
00031
00032
00033 HList=new TObjArray;
00034
00035 myMk3=new StFeePedMaker("eeFeePed","MuDst");
00036 myMk3->SetHList(HList);
00037
00038 gMessMgr->SwitchOff("D");
00039 gMessMgr->SwitchOn("I");
00040
00041
00042 muMk->SetStatus("*",0);
00043 muMk->SetStatus("EztAll",1);
00044 chain->Init();
00045 chain->ls(3);
00046
00047
00048 printf("All Ezt-branches set\n");
00049 int eventCounter=0;
00050 int stat=0;
00051 int t1=time(0);
00052 StMuTimer timer;
00053 timer.start();
00054
00055
00056 while ( 1) {
00057 if(eventCounter>=nEve) break;
00058 eventCounter++;
00059 chain->Clear();
00060 stat = chain->Make();
00061 if(stat) break;
00062 if(eventCounter%1000!=0)continue;
00063
00064 printf("\n\n ====================%d processing ==============\n", eventCounter);
00065
00066 }
00067 printf("sorting done, nEve=%d of %d\n",nEve, nEntries);
00068 int t2=time(0);
00069 if(t1==t2) t2++;
00070 float rate=1.*eventCounter/(t2-t1);
00071 float nMnts=(t2-t1)/60.;
00072 printf("sorting done %d of nEve=%d, elapsed rate=%.1f Hz, tot %.1f minutes\n",eventCounter,nEntries,rate,nMnts);
00073
00074 if (eventCounter) {
00075 cout << "CPU time/event= " << timer.elapsedTime()/eventCounter << " sec "
00076 << " rate= " << eventCounter/timer.elapsedTime() << " Hz" << endl;
00077 }
00078
00079
00080
00081 printf("name Nentries chi2 gaus_ampl gaus_mean gaus_sig err_ampl err_mean err_sig \n");
00082
00083 TIterator* iter = HList->MakeIterator();
00084
00085 TH1F* h;
00086 char oName[100];
00087 FILE *fo;
00088 oName[0]=0;
00089 int nPed=0;
00090 TString fName=outPath+"eemcPed4.dat";
00091 FILE *fo2=fopen(fName.Data(),"w");
00092
00093 while((h=(TH1F*)iter->Next())) {
00094 char *txt=h->GetName();
00095 int cr=atoi(txt+2);
00096 int chan=atoi(txt+6);
00097 int ped4=0;
00098 if(chan%32==0) {
00099 if(oName[0]) fclose(fo);
00100 sprintf(oName,"%scrate%dboard%d.ped4",outPath.Data(),cr, 1+chan/32);
00101 FILE *fo=fopen(oName,"w");
00102 if(fo==0) {
00103 printf("\n\nDid you created dir=%s ??? ,JB\n\n",outPath.Data());
00104 printf("ABORT macro\n");
00105 assert(fo);
00106 }
00107 printf(" write to '%s'\n",oName);
00108 }
00109
00110 int ret=-1;
00111
00112 if(cr==4 && chan==127) ret=myMk3->fitPed(h,20);
00113 else ret=myMk3->fitPed(h);
00114
00115 if (ret) {
00116 printf("%s empty\n",h->GetName());
00117 fprintf(fo2," %d %3d 5000 %d\n",cr,chan,ped4);
00118 fprintf(fo," %d\n",ped4);
00119 continue;
00120 }
00121 TF1* fit= h->GetFunction("pedFun");
00122 assert(fit);
00123 nPed++;
00124
00125
00126
00127 float ped=fit->GetParameter(1);
00128 int ped4=(25-ped)/4;
00129 if(ped>24) ped4=(22-ped)/4;
00130 fprintf(fo2,"%d %d %.1f %d\n",cr,chan,ped,ped4);
00131 fprintf(fo,"%d\n",ped4);
00132
00133 printf("%s %8.0f %8.3f %9.3f %8.2f %7.2f %6.2f %7.2f %6.2f\n",
00134 h->GetName(),
00135 h->GetEntries(),
00136 fit->GetChisquare(),
00137 fit->GetParameter(0),
00138 fit->GetParameter(1),
00139 fit->GetParameter(2),
00140 fit->GetParError(0),
00141 fit->GetParError(1),
00142 fit->GetParError(2));
00143
00144 }
00145
00146 myMk3->saveHisto(outPath+"feePed");
00147 fclose(fo2);
00148 fclose(fo);
00149 printf("Fit found %d pedestals\n",nPed);
00150
00151
00152 h=(TH1F*)HList->FindObject("cr5_ch094");
00153 h->Draw(); gPad->SetLogy();
00154
00155 }