00001 {gROOT->Reset();
00002
00003 gSystem->Load("libMicro.so");
00004 gStyle->SetPalette(1);
00005
00006 bool display = 0;
00007 bool plot = 1;
00008
00009 TString file = "dirac";
00010
00011 TString filename = file +".root";
00012
00013 int xpos,ypos,zpos,val;
00014 Long64_t t,t1,t2,t3,dt;
00015 int nchannel = 0;
00016 bool time_cut = 0;
00017 int hardid = 0;
00018 int softid = 0;
00019 int nhit = 0;
00020
00021 TH1I * hx_1 = new TH1I("hx_1","X distribution of hits in chamber 1",8,0,8);
00022 TH1I * hx_2 = new TH1I("hx_2","X distribution of hits in chamber 2",8,0,8);
00023 TH1I * hx_3 = new TH1I("hx_3","X distribution of hits in chamber 3",8,0,8);
00024 TH1I * hx_4 = new TH1I("hx_4","X distribution of hits in chamber 4",8,0,8);
00025
00026 TH1I * hy_1 = new TH1I("hy_1","Y distribution of hits in chamber 1",8,0,8);
00027 TH1I * hy_2 = new TH1I("hy_2","Y distribution of hits in chamber 2",8,0,8);
00028 TH1I * hy_3 = new TH1I("hy_3","Y distribution of hits in chamber 3",8,0,8);
00029 TH1I * hy_4 = new TH1I("hy_4","Y distribution of hits in chamber 4",8,0,8);
00030
00031 TH2I * hxy_1 = new TH2I("hxy_1","XY distribution of hits in chamber 1",8,0,8,8,0,8);
00032 TH2I * hxy_2 = new TH2I("hxy_2","XY distribution of hits in chamber 2",8,0,8,8,0,8);
00033 TH2I * hxy_3 = new TH2I("hxy_3","XY distribution of hits in chamber 3",8,0,8,8,0,8);
00034 TH2I * hxy_4 = new TH2I("hxy_4","XY distribution of hits in chamber 4",8,0,8,8,0,8);
00035
00036 TH1I * hz = new TH1I("hz","Z distribution of hits",25,-5,20);
00037
00038 TH1I * hc_1 = new TH1I("hc_1","Channel number of hits in chamber 1",64,0,64);
00039 TH1I * hc_2 = new TH1I("hc_2","Channel number of hits in chamber 2",64,0,64);
00040 TH1I * hc_3 = new TH1I("hc_3","Channel number of hits in chamber 3",64,0,64);
00041 TH1I * hc_4 = new TH1I("hc_4","Channel number of hits in chamber 4",64,0,64);
00042
00043 int bcid_hit_max = 10000;
00044 TH1I * hbcid_hit_1 = new TH1I("hbcid_hit_1","BCID_hit distribution in chamber 1",1000,0,bcid_hit_max);
00045 TH1I * hbcid_hit_2 = new TH1I("hbcid_hit_2","BCID_hit distribution in chamber 2",1000,0,bcid_hit_max);
00046 TH1I * hbcid_hit_3 = new TH1I("hbcid_hit_3","BCID_hit distribution in chamber 3",1000,0,bcid_hit_max);
00047 TH1I * hbcid_hit_4 = new TH1I("hbcid_hit_4","BCID_hit distribution in chamber 4",1000,0,bcid_hit_max);
00048
00049 int bcid_dif_max = 2000;
00050 TH1I * hbcid_dif_1 = new TH1I("hbcid_dif_1","BCID_dif distribution in chamber 1",1000,0,bcid_dif_max);
00051 TH1I * hbcid_dif_2 = new TH1I("hbcid_dif_2","BCID_dif distribution in chamber 2",1000,0,bcid_dif_max);
00052 TH1I * hbcid_dif_3 = new TH1I("hbcid_dif_3","BCID_dif distribution in chamber 3",1000,0,bcid_dif_max);
00053 TH1I * hbcid_dif_4 = new TH1I("hbcid_dif_4","BCID_dif distribution in chamber 4",1000,0,bcid_dif_max);
00054
00055 int bcid_abs_max = 1e9;
00056 TH1I * hbcid_abs_1 = new TH1I("hbcid_abs_1","BCID_abs distribution in chamber 1",1000,0,bcid_abs_max);
00057 TH1I * hbcid_abs_2 = new TH1I("hbcid_abs_2","BCID_abs distribution in chamber 2",1000,0,bcid_abs_max);
00058 TH1I * hbcid_abs_3 = new TH1I("hbcid_abs_3","BCID_abs distribution in chamber 3",1000,0,bcid_abs_max);
00059 TH1I * hbcid_abs_4 = new TH1I("hbcid_abs_4","BCID_abs distribution in chamber 4",1000,0,bcid_abs_max);
00060
00061 TH1I * hnhit_1 = new TH1I("hnhit_1","Number of hits per event (per DIF readout) in chamber 1",100,0,100);
00062 TH1I * hnhit_2 = new TH1I("hnhit_2","Number of hits per event (per DIF readout) in chamber 2",100,0,100);
00063 TH1I * hnhit_3 = new TH1I("hnhit_3","Number of hits per event (per DIF readout) in chamber 3",100,0,100);
00064 TH1I * hnhit_4 = new TH1I("hnhit_4","Number of hits per event (per DIF readout) in chamber 4",100,0,100);
00065
00066
00067
00068 int n1=0;
00069 int n2=0;
00070 int n3=0;
00071 int n4=0;
00072 int one_hit_each_chamber = 0;
00073
00074
00075
00076 TFile *f = new TFile(filename);
00077 cout<<"reading File : "<<filename<<endl;
00078
00079
00080 TIter nextkey(f.GetListOfKeys());
00081 TKey *key;
00082
00083 while (key = (TKey*)nextkey()) {
00084
00085 TTree *tree = (TTree*)key->ReadObj();
00086 MTRun* run = (MTRun*)tree->GetUserInfo()->FindObject("MTRun");
00087 run->Info();
00088
00089
00090 int nEvent = tree.GetEntries();
00091 cout <<"nEvent="<<nEvent<<endl;
00092 float nevent = nEvent;
00093
00094
00095 MTEvent *evt = new MTEvent();
00096
00097 TBranch *branch= tree->GetBranch("MTEvent");
00098 branch->SetAddress(&evt);
00099
00100
00101
00102
00103
00104 for (int i=0;i<nevent;i++){
00105
00106
00107 if (i%10 == 0){cout<<i/nevent*100<<" %"<<"\r"<<flush;}
00108
00109 tree.GetEntry(i);
00110 nchannel = evt->GetNchannel();
00111 nhit+=nchannel;
00112
00113
00114
00115
00116 n1=0;n2=0;n3=0;n4=0;
00117
00118
00119 for (int j=0;j<nchannel;j++){
00120
00121 MTChannel* channel = (MTChannel*)evt->GetChannels()->UncheckedAt(j);
00122 xpos = channel->GetX();
00123 ypos = channel->GetY();
00124 zpos = channel->GetZ();
00125 val = channel->GetDigitalValue();
00126 hardid = channel->GetHardId();
00127 softid = channel->GetSoftId();
00128
00129 t1 = channel->GetBcId_Abs();
00130 t2 = channel->GetBcId_Dif();
00131 t3 = channel->GetBcId_Hit();
00132 dt = (t2-t3);
00133 t = (t1 - (t2-t3));
00134
00135
00136 hz->Fill(zpos);
00137
00138 if (zpos == 0) {
00139 hx_1->Fill(xpos);hy_1->Fill(ypos);hxy_1->Fill(xpos,ypos);hc_1->Fill(hardid);hbcid_hit_1->Fill(t3);hbcid_dif_1->Fill(t2);hbcid_abs_1->Fill(t1);hnhit_1->Fill(nchannel);if (hardid!=11 && hardid!=57){n1++;}}
00140
00141 if (zpos == 5) {
00142 hx_2->Fill(xpos);hy_2->Fill(ypos);hxy_2->Fill(xpos,ypos);hc_2->Fill(hardid);hbcid_hit_2->Fill(t3);hbcid_dif_2->Fill(t2);hbcid_abs_2->Fill(t1);hnhit_2->Fill(nchannel);if (hardid!=11 && hardid!=57){n2++;}}
00143
00144 if (zpos == 10){
00145 hx_3->Fill(xpos);hy_3->Fill(ypos);hxy_3->Fill(xpos,ypos);hc_3->Fill(hardid);hbcid_hit_3->Fill(t3);hbcid_dif_3->Fill(t2);hbcid_abs_3->Fill(t1);hnhit_3->Fill(nchannel);if (hardid!=11 && hardid!=57){n3++;}}
00146
00147 if (zpos == 15){
00148 hx_4->Fill(xpos);hy_4->Fill(ypos);hxy_4->Fill(xpos,ypos);hc_4->Fill(hardid);hbcid_hit_4->Fill(t3);hbcid_dif_4->Fill(t2);hbcid_abs_4->Fill(t1);hnhit_4->Fill(nchannel);if (hardid!=11 && hardid!=57){n4++;}}
00149
00150 time_cut = (dt>=2 && dt<=8);
00151
00152 if (display){cout<<" x = "<<xpos<<" y = "<<ypos<<" z = "<<zpos<<" val = "<<val<<" hardid = "<<hardid<<" softid = "<<softid<<" bcid_abs = "<<t1<<" bcid_dif = "<<t2<<" bcid_hit = "<<t3<<endl;}}}}
00153
00154
00155
00156
00157 cout<<"Number of hits = "<<nhit<<endl;
00158
00159
00160
00161
00162 if (plot){
00163
00164 TCanvas * c1 = new TCanvas("c1","",10,10,1600,400);
00165 c1->Divide(4,1);
00166 c1->cd(1);
00167 hxy_1->Draw("zcol");
00168 c1->cd(2);
00169 hxy_2->Draw("zcol");
00170 c1->cd(3);
00171 hxy_3->Draw("zcol");
00172 c1->cd(4);
00173 hxy_4->Draw("zcol");
00174
00175 TCanvas * c2 = new TCanvas("c2","",10,10,1600,400);
00176 c2->Divide(4,1);
00177 c2->cd(1);
00178 hc_1->Draw();
00179 c2->cd(2);
00180 hc_2->Draw();
00181 c2->cd(3);
00182 hc_3->Draw();
00183 c2->cd(4);
00184 hc_4->Draw();
00185
00186 TCanvas * c3 = new TCanvas("c3","",10,10,1600,400);
00187 c3->Divide(4,1);
00188 c3->cd(1);
00189 hbcid_hit_1->Draw();
00190 c3->cd(2);
00191 hbcid_hit_2->Draw();
00192 c3->cd(3);
00193 hbcid_hit_3->Draw();
00194 c3->cd(4);
00195 hbcid_hit_4->Draw();
00196
00197 TCanvas * c4 = new TCanvas("c4","",10,10,600,600);
00198 hz->Draw();
00199
00200 TCanvas * c5 = new TCanvas("c5","",10,10,1600,400);
00201 c5->Divide(4,1);
00202 c5->cd(1);
00203 hnhit_1->Draw();
00204 c5->cd(2);
00205 hnhit_2->Draw();
00206 c5->cd(3);
00207 hnhit_3->Draw();
00208 c5->cd(4);
00209 hnhit_4->Draw();
00210
00211 TCanvas * c6 = new TCanvas("c6","",10,10,1600,400);
00212 c6->Divide(4,1);
00213 c6->cd(1);
00214 hbcid_dif_1->Draw();
00215 c6->cd(2);
00216 hbcid_dif_2->Draw();
00217 c6->cd(3);
00218 hbcid_dif_3->Draw();
00219 c6->cd(4);
00220 hbcid_dif_4->Draw();
00221
00222 TCanvas * c7 = new TCanvas("c7","",10,10,1600,400);
00223 c7->Divide(4,1);
00224 c7->cd(1);
00225 hbcid_abs_1->Draw();
00226 c7->cd(2);
00227 hbcid_abs_2->Draw();
00228 c7->cd(3);
00229 hbcid_abs_3->Draw();
00230 c7->cd(4);
00231 hbcid_abs_4->Draw();
00232
00233
00234 TString plotname1 = "Plots/"+ file +"_xy_hit.png";
00235 TString plotname2 = "Plots/"+ file +"_channel_number_hit.png";
00236 TString plotname3 = "Plots/"+ file +"_bcid_hit.png";
00237 TString plotname4 = "Plots/"+ file +"_z_hit.png";
00238 TString plotname5 = "Plots/"+ file +"_number_of_hit.png";
00239 TString plotname6 = "Plots/"+ file +"_bcid_dif.png";
00240 TString plotname7 = "Plots/"+ file +"_bcid_abs.png";
00241
00242 c1->Print(plotname1.Data());
00243 c2->Print(plotname2.Data());
00244 c3->Print(plotname3.Data());
00245 c4->Print(plotname4.Data());
00246 c5->Print(plotname5.Data());
00247 c6->Print(plotname6.Data());
00248 c7->Print(plotname7.Data());
00249
00250
00251
00252 }
00253
00254
00255
00256
00257 }