00001 TH2F *h2Ped=0, *h2Sig=0, *h2Peak;
00002 TH1F *h1Stat=0, *h2CapStat;
00003 TH1F *h1p7=0, *h1p77=0, *h1p777=0;
00004 TH2S *h2PedS=0;
00005
00006 void mergePed(){
00007 int cap1=0, cap2=127;
00008 gStyle->SetPalette(1,0);
00009
00010 int run=9067013;
00011 char *pathIn="outX/";
00012 char *pathOut="iter3/";
00013 char txt[1000], txt2[1000];
00014 int nCap=128;
00015
00016 sprintf(txt,"%s/pedBprsR%dallCap.hist.root",pathOut,run);
00017 fd2=new TFile(txt,"recreate");
00018 int nb=800, xx1=100,xx2=300;
00019 h1p7=new TH1F("pedSoftId7","pedestals(cap) , softID=7, crate=0; pedestal(ADC)", nb,xx1,xx2);
00020 h1p607=new TH1F("pedSoftId607","pedestals(cap) , softID=607, crate=1; pedestal(ADC)", nb,xx1,xx2);
00021 h1p2407=new TH1F("pedSoftId2407","pedestals(cap) , softID=2407, crate=2; pedestal(ADC)", nb,xx1,xx2);
00022 h1p3007=new TH1F("pedSoftId3007","pedestals(cap) , softID=3007, crate=2; pedestal(ADC)", nb,xx1,xx2);
00023
00024 for(int cap=cap1;cap<=cap2;cap++) {
00025
00026 sprintf(txt,"%s/pedBprsR%d-cap%d.hist.root",pathIn,run,cap);
00027 fd1=new TFile(txt); assert(fd1->IsOpen());
00028 TH1F * ih1ped= (TH1F *)fd1->Get("pedBPRS"); assert(ih1ped);
00029 TH1F * ih1stat= (TH1F *)fd1->Get("statBPRS"); assert(ih1stat);
00030 TH1F * ih1sig= (TH1F *)fd1->Get("sigPedBPRS"); assert(ih1sig);
00031 TH1F * ih1peak= (TH1F *)fd1->Get("pedPeakBPRS"); assert(ih1peak);
00032 printf("----- merge: %s entries=%d\n",txt,ih1ped->GetEntries());
00033 printf(" %s entries=%d\n",txt,ih1stat->GetEntries());
00034 axX=ih1ped->GetXaxis();
00035 float x1=axX->GetXmin();
00036 float x2=axX->GetXmax();
00037 int nbX=axX->GetNbins();
00038 printf("X-axis range --> [%.1f, %.1f], nb=%d %s\n",x1,x2,nbX,axX->GetTitle());
00039
00040 if(h2Ped==0) {
00041 sprintf(txt,"pedBPRScap");
00042 sprintf(txt2,"BPRS pedestal (ADC), R%d ; BPRS soft ID; capID",run);
00043 h2Ped=new TH2F(txt,txt2,nbX,x1,x2,nCap,-0.5,nCap-0.5);
00044
00045 sprintf(txt,"sigPedBPRScap");
00046 sprintf(txt2,"BPRS sig(ped) (Z=ADC), R%d ; BPRS soft ID; capID",run);
00047 h2Sig=new TH2F(txt,txt2,nbX,x1,x2,nCap,-0.5,nCap-0.5);
00048
00049 sprintf(txt,"peakPedBPRScap");
00050 sprintf(txt2,"integral of pedestal peak, R%d ; BPRS soft ID; capID",run);
00051 h2Peak=new TH2F(txt,txt2,nbX,x1,x2,nCap,-0.5,nCap-0.5);
00052
00053 sprintf(txt,"statBPRSallCap");
00054 sprintf(txt2,"BPRS status from all caps, R%d ; BPRS soft ID; # of bad caps",run);
00055 h1Stat=new TH1F(txt,txt2,nbX,x1,x2);
00056
00057 sprintf(txt,"capStatBPRSallSoft");
00058 sprintf(txt2,"BPRS status from all softID, R%d ; BPRS capID; # of bad softID",run);
00059 h1CapStat=new TH1F(txt,txt2,128,-0.5,127.5);
00060
00061 printf("H2 created\n");
00062 }
00063
00064 for(int i=1;i<=nbX;i++) {
00065 h2Ped->SetBinContent(i,cap+1,ih1ped->GetBinContent(i));
00066 h2Sig->SetBinContent(i,cap+1,ih1sig->GetBinContent(i));
00067 h2Peak->SetBinContent(i,cap+1,ih1peak->GetBinContent(i));
00068 if(ih1stat->GetBinContent(i)>0) {
00069 h1Stat->Fill(i,1);
00070 h1CapStat->Fill(cap,1);
00071 }
00072 }
00073
00074 h1p7->Fill(ih1ped->GetBinContent(7));
00075 h1p607->Fill(ih1ped->GetBinContent(607));
00076 h1p2407->Fill(ih1ped->GetBinContent(2407));
00077 h1p3007->Fill(ih1ped->GetBinContent(3007));
00078
00079 }
00080
00081
00082 int nDead=0;
00083 for(int i=1;i<=nbX;i++) {
00084 if(h1Stat->GetBinContent(i)) nDead++;
00085 }
00086 h1Stat->SetEntries(nDead);
00087 printf(" accumulated nDead=%d\n",nDead);
00088
00089 fd2->cd();
00090 h2Ped->Write();
00091 h2Sig->Write();
00092 h2Peak->Write();
00093 h1Stat->Write();
00094 h1CapStat->Write();
00095 h1p7->Write();
00096 h1p607->Write();
00097 h1p2407->Write();
00098 h1p3007->Write();
00099
00100 printf("total entries=%d\n",h2Ped->GetEntries());
00101
00102 return;
00103
00104 for(int k=120;k<=128;k++)
00105 for(int i=1;i<=nbX;i++)
00106 for(int j=1;j<=nbY;j++)
00107 {
00108 float val=h3->GetBinContent(i,j,k);
00109 if(val<1.) continue;
00110 printf("chan(i)=%d, adc(j)=%d, cap(k)=%d val=%f\n", i-1,j+100,k-1,val);
00111 }
00112 }
00113
00114 void pl7(){
00115 c=new TCanvas();
00116 c->Divide(3,1);
00117 c->cd(1);pedSoft7->Draw();
00118 c->cd(2);pedSoft77->Draw();
00119 c->cd(3);pedSoft777->Draw();
00120
00121
00122 }