00001
00002
00003 rdEEeventMipSolo(int neve=1000, TString Tname0="/star/u/eemcdb/dataFeb11/run00006.eeTree", int flag=0, float Emax=40.){
00004 Tname0="../4piotr/dAu1K.eeTree";
00005
00006 gSystem->Load("StRoot/StEEmcUtil/EEevent/libEEevent.so");
00007
00008 gStyle->SetPalette(1,0);
00009 gStyle->SetOptStat(111111);
00010
00011 TString fname="out.hist.root";
00012 TFile *fd=new TFile(fname,"recreate");
00013
00014 TH1F *h1[8];
00015 TH2F *h2[8];
00016 initHisto(h2,h1,fd);
00017 TH2F *heve=new TH2F("tw2D","eta vs. phi , EEMC towers",60,-0.5,59.5,12,0.5,12.5);
00018
00019 const int mxEta=12;
00020 const int mxPhi=60;
00021 int valA[mxEta*mxPhi];
00022
00023 TString Tname;
00024 Tname=Tname0;
00025
00026 printf("read upto %d events from file=%s.root\n",neve,Tname.Data());
00027 TFile *f = new TFile(Tname+".root");
00028 assert(f->IsOpen());
00029 TTree *t4 = (TTree*)f->Get("EEtree");
00030 assert(t4);
00031
00032
00033 EEeventDst *event = new EEeventDst();
00034
00035
00036 TBranch *br = t4->GetBranch("EEdst");
00037 br->SetAddress(&event);
00038 Int_t nevent = (Int_t)t4->GetEntries();
00039 for (Int_t ie=0;ie<nevent;ie++) {
00040 if(ie>=neve) break;
00041 if(ie<5 || ie%50==0)
00042 printf("\niEve=%d ---------- \n",ie);
00043 int i;
00044
00045
00046 br->GetEntry(ie);
00047 if(ie<5) event->print();
00048
00049 int nSec=event->Sec->GetEntries();
00050 if(ie<5) printf("%d sectors with data\n",nSec);
00051
00052 heve->Reset();
00053 memset(valA,0,sizeof(valA));
00054 int is;
00055 for(is=0;is<nSec;is++) {
00056 EEsectorDst *sec=(EEsectorDst*)event->Sec->At(is);
00057
00058 TClonesArray *hitA=sec->getTwHits();
00059 assert(hitA);
00060 int ih;
00061 for(ih=0;ih<hitA->GetEntries();ih++) {
00062 char sub;
00063 int eta;
00064 float ener;
00065 EEtwHitDst *hit=(EEtwHitDst*)hitA->At(ih);
00066 hit->get(sub,eta,ener);
00067 h2[0]->Fill(ener,eta);
00068 h1[0]->Fill(ener);
00069 int iphi=5*(sec->getID()-1) +(sub-'A');
00070 int jj=mxPhi*(eta-1)+iphi;
00071 heve->Fill(iphi,eta,ener);
00072 if(ener<256) valA[jj]=ener+0.5;
00073 if(ie<5) printf(" ih=%d sec=%d sub=%c etaBin=%d ener=%f\n",ih, sec->getID(), sub, eta,ener);
00074
00075 }
00076
00077 }
00078
00079
00080 int k0;
00081 for(k0=0;k0<mxEta*mxPhi;k0++) {
00082 if(valA[k0]==0) continue;
00083 int ieta=k0/mxPhi;
00084 int iphi=k0%mxPhi;
00085
00086 int sumS=sumSurr(ieta,iphi,valA,mxPhi,mxEta);
00087
00088 if(sumS<=0) {
00089 h2[1]->Fill(valA[k0],ieta+1);
00090 h1[1]->Fill(valA[k0]);
00091 } else {
00092 h2[2]->Fill(valA[k0],ieta+1);
00093 h1[2]->Fill(valA[k0]);
00094 }
00095 sumS=sumSurr2(ieta,iphi,valA,mxPhi,mxEta);
00096 if(sumS<=0) {
00097 h2[3]->Fill(valA[k0],ieta+1);
00098 h1[3]->Fill(valA[k0]);
00099 } else {
00100 h2[4]->Fill(valA[k0],ieta+1);
00101 h1[4]->Fill(valA[k0]);
00102 }
00103 }
00104
00105 }
00106 printf("\n\nTotal events in B TTree=%d\n",nevent);
00107 heve->Draw("colz");
00108 heve->SetMaximum(20);
00109 heve->SetMinimum(0);
00110
00111 gPad->SetGrid();
00112
00113 TCanvas * c=new TCanvas("aa","bb",500,600);
00114 c->Divide(1,5);
00115
00116 for(i=0;i<5;i++){
00117 c->cd(i+1);
00118 h2[i]->Draw("colz");
00119 }
00120
00121 TCanvas * c=new TCanvas("aa1","bb1",500,600);
00122 c->Divide(1,5);
00123
00124 for(i=0;i<5;i++){
00125 c->cd(i+1);
00126 h1[i]->Draw();
00127 }
00128
00129 fd->ls();
00130 fd->Write();
00131 c->Print("all.ps");
00132
00133 c=new TCanvas("aa2","bb2",600,400);
00134 c->Divide(2,2);
00135 c->cd(1);
00136 TH2F *hx=(TH2F *hx)h2[0]->Clone();
00137 hx->Divide(h2[1],h2[2]); hx->Draw("colz");
00138 c->cd(2);
00139 hx=(TH2F *hx)h2[0]->Clone();
00140 hx->Divide(h2[3],h2[2]); hx->Draw("colz");
00141
00142 c->cd(3);
00143 TH1F *hy=(TH1F*) h1[0]->Clone();
00144 hy->Divide(h1[1],h1[2]); hy->Draw();
00145 c->cd(4);
00146 hy=(TH1F*) h1[0]->Clone();
00147 hy->Divide(h1[3],h1[2]); hy->Draw();
00148
00149
00150 }
00151
00152
00153
00154 int sumSurr(int ieta, int iphi,int *valA, int nPhi, int nEta){
00155 int sum=0;
00156 assert(iphi>0);
00157 assert(iphi<nPhi-1);
00158
00159
00160 int jeta=ieta+1;
00161 if(jeta<nEta) {
00162 sum+=valA[ nPhi*jeta + iphi-1 ];
00163 sum+=valA[ nPhi*jeta + iphi ];
00164 sum+=valA[ nPhi*jeta + iphi+1 ];
00165 }
00166
00167
00168 jeta=ieta-1;
00169 if(jeta>=0) {
00170 sum+=valA[ nPhi*jeta + iphi-1 ];
00171 sum+=valA[ nPhi*jeta + iphi ];
00172 sum+=valA[ nPhi*jeta + iphi+1 ];
00173 }
00174
00175
00176 sum+=valA[ nPhi*ieta + iphi-1 ];
00177 sum+=valA[ nPhi*ieta + iphi+1 ];
00178
00179 return sum;
00180 }
00181
00182
00183
00184 int sumSurr2(int ieta, int iphi,int *valA, int nPhi, int nEta){
00185 int sum=0;
00186 assert(iphi>1);
00187 assert(iphi<nPhi-2);
00188
00189
00190 int i,j;
00191 sum=-valA[ nPhi*ieta + iphi];
00192
00193 for(i=ieta-2; i<=ieta+2;i++){
00194 if(i>=nEta || i<0) continue;
00195 for(j=iphi-2;j<=iphi+2;j++){
00196
00197 sum+=valA[ nPhi*i + j ];
00198 }
00199 }
00200
00201 return sum;
00202 }
00203
00204
00205
00206 void initHisto(TH2F **h2, TH1F **h1, TFile *fd) {
00207
00208 int i;
00209 for(i=0;i<5;i++) {
00210 char tt1[100], tt2[100];
00211 sprintf(tt1,"etaC%d",i);
00212 sprintf(tt2,"eta-bin vs. raw ADC , condition=%d",i);
00213 TH2F *h = new TH2F(tt1,tt2, 25,-0.,50.,12,.5,12.5);
00214 h->SetDirectory(fd);
00215 h->Sumw2();
00216 h2[i]=h;
00217
00218 sprintf(tt1,"C%d",i);
00219 sprintf(tt2," raw ADC , condition=%d",i);
00220 TH1F *hx = new TH1F(tt1,tt2, 50,-0.5,49.5);
00221 hx->SetDirectory(fd);
00222 hx->Sumw2();
00223 h1[i]=hx;
00224 }
00225 }
00226
00227