]>
Commit | Line | Data |
---|---|---|
0bca1a77 | 1 | #if !defined(__CINT__) || defined(__MAKECINT__) |
2 | #include <TFile.h> | |
3 | #include <TFileMerger.h> | |
4 | #include <TAlienFile.h> | |
5 | #include <TSystem.h> | |
6 | #include <TGrid.h> | |
7 | #include <TGridResult.h> | |
8 | #include <Riostream.h> | |
9 | #include <TObjArray.h> | |
10 | #include <TClass.h> | |
11 | #include <TKey.h> | |
2a250bc5 | 12 | #include <TFile.h> |
13 | #include <TFileMerger.h> | |
14 | #include <TAlienFile.h> | |
15 | //#include <TExec.h> | |
16 | #include <TSystem.h> | |
17 | #include <TGrid.h> | |
18 | #include <TGridResult.h> | |
19 | #include <Riostream.h> | |
20 | #include <TObjArray.h> | |
21 | #include <TClass.h> | |
22 | #include <TH1F.h> | |
23 | #include <TH2D.h> | |
24 | #include <TH2F.h> | |
25 | #include <TF1.h> | |
26 | #include <TStyle.h> | |
27 | #include <TCanvas.h> | |
28 | #include <TLegend.h> | |
29 | #include <TMath.h> | |
8a55554e | 30 | #include <TString.h> |
2a250bc5 | 31 | #include "AliRecoParam.h" |
0bca1a77 | 32 | #endif |
33 | ||
8a55554e | 34 | enum rawexpert_t{pattern,patternnorm,layer3norm,layer4norm,layer3occ,layer4occ,rawcheck,rawtot}; |
35 | enum nonrawexpert_t{layer3,layer4,calibl3,calibl4,nonrawtot}; | |
0bca1a77 | 36 | |
8a55554e | 37 | enum rpexpert_t{rlocaldistro,rlayer3norm,rlayer4norm,rmodpattern,rmodpatternnorm,rphilayer3,rphilayer4,rrlayer3,rrlayer4,occlayer3,occlayer4,recraw2dlayer3,recraw2dlayer4,recrawlayer3,recrawlayer4,dedxlayer3,dedxlayer4,rlayer3,rlayer4,recpointcheck,rtot}; |
38 | enum rnonexpert_t{rphizlayer3,rphizlayer4,rglobalrz,rglobalxy,rchargelayer3,rchargelayer4,rtimelayer3,rtimelayer4,nrtot}; | |
0bca1a77 | 39 | |
8a55554e | 40 | enum canvsname_t{canvname0,canvname1,canvname2,canvname3,canvname4,canvname5,canvname6,canvname7,canvname8,canvname9,canvname10,canvname11,canvname12,canvname13,canvname14,canvname15,canvname16,canvname17,canvname18,canvname19,canvname20,canvname21,canvname22,canvname23,canvasname24,canvasname25,canvasname26};//27 |
0bca1a77 | 41 | |
2a250bc5 | 42 | |
43 | ||
8a55554e | 44 | void PlotQASDD(Char_t fileName[100]="File.QA.111333.2010.LHC09b.pass2.root",Bool_t kDoEps=kFALSE,Char_t eventspecie[25]="LowMultiplicity") |
0bca1a77 | 45 | { |
8a55554e | 46 | const TString Rawsexpertname[]={"SDDModPattern",//0 1 |
47 | "SDDModPatternNORM",//1 //1 | |
48 | "SDDphizL3NORM", //2 //0 | |
49 | "SDDphizL4NORM", //3 //0 | |
50 | "SDDL3_RelativeOccupancy", //4 4 5 | |
51 | "SDDL4_RelativeOccupancy",//5 4 5 | |
52 | "SDDRawDataCheck"//6 6 | |
53 | };//tot 7 | |
54 | const TString Rawsnonexpertname[]={"SDDphizL3",//0 2 | |
55 | "SDDphizL4",//1 2 | |
56 | "SDDphizCalibL3",//2 // 3 | |
57 | "SDDphizCalibL4"//3 3 | |
58 | };//tot 4 | |
2a250bc5 | 59 | |
8a55554e | 60 | const TString RecPointsexpertname[]={"SDDLocalCoordDistrib",//0 //11 |
61 | "SDDModPatternL3RP",//1 //12 | |
62 | "SDDModPatternL4RP",//2 //12 | |
63 | "SDDModPatternL3RPNORM",//3 //13 | |
64 | "SDDModPatternL4RPNORM",//4 //13 | |
65 | "SDDModPatternRP",//5 //14 | |
66 | "SDDModPatternRPNORM",//6 //14 | |
67 | "SDDphidistrib_Layer3",//7 //15 | |
68 | "SDDphidistrib_Layer4",//8 //15 | |
69 | "SDDrdistrib_Layer3",//9 //16 | |
70 | "SDDrdistrib_Layer4",//10 //16 | |
71 | "SDDL3_RelativeOccupancy",//11 //19 20 | |
72 | "SDDL4_RelativeOccupancy",//12 //19 20 | |
73 | "SDDL3_Rec2Raw_2D", //13 //21 | |
74 | "SDDL4_Rec2Raw_2D", //14 //21 | |
75 | "SDDL3_Rec2Raw", //15 //22 23 | |
76 | "SDDL4_Rec2Raw", //16 //22 23 | |
77 | "SDDL3_dedx", //17 //24 25 | |
78 | "SDDL4_dedx", //18 24 25 | |
79 | "SDDRecPointCheck"//19 26 | |
80 | };//tot 20 | |
0bca1a77 | 81 | |
8a55554e | 82 | const TString RecPointsnonexpertname[]={"SDDGlobalCoordDistribL3PHIZ",//0 7 |
83 | "SDDGlobalCoordDistribL4PHIZ",//1 7 | |
84 | "SDDGlobalCoordDistribRZ",//2 8 | |
85 | "SDDGlobalCoordDistribYX",//3 8 | |
86 | "SDDLay3TotCh", //4 9 17 | |
87 | "SDDLay4TotCh", //5 9 17 | |
88 | "SDDdrifttime_Layer3", //6 10 18 | |
89 | "SDDdrifttime_Layer4"//7 10 18 | |
90 | };//tot 8 | |
91 | ||
92 | const TString canvassavedname[]={"RawLayersNORM", //0 | |
93 | "Rawpatterns", //1 | |
94 | "RawLayers", //2 | |
95 | "CalibConfiguration", //3 | |
96 | "RawLayersRelOcc", //4 | |
97 | "RawLayersRelOccBoth", //5 | |
98 | "CheckRawdata", //6 | |
99 | "RecPointsphiz", //7 | |
100 | "RecPointsGlobalDistributions", //8 | |
101 | "RecPointsCharge", //9 | |
102 | "RecPointsDriftTime", //10 | |
103 | "RecPointsLocalDistribution", //11 | |
104 | "RecPointsLayers", //12 | |
105 | "RecPointsLayersNORM", //13 | |
106 | "RecPointsLayersPatterns", //14 | |
107 | "RecPointsPhiDistribution", //15 | |
108 | "RecPointsRDistribution", //16 | |
109 | "RecPointsChargeBothLayers", //17 | |
110 | "RecPointsDriftTimeBothLayers", //18 | |
111 | "RecPointsRelLayersOcc", //19 | |
112 | "RecPointsLayersRelOccBoth", //20 | |
113 | "RecPointsLayersRecRaw2D", //21 | |
114 | "RecPointsLayersRecRaw", //22 | |
115 | "RecPointsLayersRecRawBoth", //23 | |
116 | "RecPointsLayersdedx", //24 | |
117 | "RecPointsLayersdedxBoth", //25 | |
118 | "CheckRecPoints" //26 | |
119 | };//tot 27 | |
2a250bc5 | 120 | |
121 | Char_t trendfile[25]="FileQAtrend.root"; | |
0bca1a77 | 122 | |
8a55554e | 123 | TString psfilestart=Form("SDDQAPlot.ps["); |
124 | TString psfile =Form("SDDQAPlot.ps"); | |
125 | TString psfileend =Form("SDDQAPlot.ps]"); | |
126 | ||
0bca1a77 | 127 | |
8a55554e | 128 | gStyle->SetTitleFont(62,""); |
129 | gStyle->SetTitleFontSize(0.025); | |
0bca1a77 | 130 | gStyle->SetPalette(1); |
2a250bc5 | 131 | // gStyle->SetOptStat("ne"); |
132 | if(gSystem->Exec(Form("ls %s >/dev/null 2>&1", fileName))!=0) | |
133 | { | |
134 | printf(" No file created --- Exit"); | |
0bca1a77 | 135 | return; |
136 | } | |
2a250bc5 | 137 | TFile mergedfile(fileName); |
138 | if(mergedfile.GetKey("ITS")==0x0){ | |
139 | printf("In this run ITS QA has not been executed.\n\nExit macro \n\n"); | |
140 | return; | |
141 | } | |
0bca1a77 | 142 | Char_t filepath[100]; |
143 | Char_t namecanvas[50]; | |
144 | TDirectory *directory=NULL; | |
145 | TDirectory *directory2=NULL; | |
146 | Char_t histoname[200]; | |
147 | TH2D *historaw=NULL; | |
148 | TH1F *historaw2=NULL; | |
149 | TH2F *histodraw=NULL; | |
2a250bc5 | 150 | |
8a55554e | 151 | // TH1F *histo2save[9]; |
152 | //for(Int_t i=0;i<9;i++){histo2save[i]=NULL;} | |
2a250bc5 | 153 | |
154 | TF1 *f1 = new TF1("f1","1",-100000,100000); // this is the function defined to multiply histograms | |
155 | Char_t layer[10]; | |
156 | float fmax=0.; | |
157 | float fmaxold=0.; | |
158 | float fmaxmargin; | |
159 | ||
160 | Int_t cannum=0; | |
8a55554e | 161 | //Int_t histo2savenumber[9]={4,5,6,7,7,8,3,5,1}; |
0bca1a77 | 162 | TCanvas *canvas1 = new TCanvas("canvas1","SDD QA Plot",1000,600); |
2a250bc5 | 163 | // TLegend *legend=new TLegend(0.83,0.8,0.97,0.7); |
164 | TLegend *legend=new TLegend(0.81,0.895,0.95,0.995); | |
165 | Bool_t updatecanvas[2]; | |
166 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
0bca1a77 | 167 | |
2a250bc5 | 168 | // -------------This part is to read the number of chunks that were merged |
169 | Float_t fChnknmbr=0.; | |
170 | FILE * pChunkNumber = fopen ("ChunkNumber.txt","r"); | |
88522cc1 | 171 | if(pChunkNumber){ |
172 | Int_t rv=fscanf(pChunkNumber, "%f", &fChnknmbr); | |
2a250bc5 | 173 | fclose (pChunkNumber); |
88522cc1 | 174 | } |
175 | else fChnknmbr=1.; | |
176 | ||
2a250bc5 | 177 | gStyle->SetPalette(1); |
178 | float fCNinv=1./fChnknmbr; | |
179 | // printf("\n====================>%f\n\n", fCNinv); | |
0bca1a77 | 180 | |
8a55554e | 181 | |
0bca1a77 | 182 | if(!mergedfile.IsOpen()){return;}else{printf("file is open\n");} |
8a55554e | 183 | |
0bca1a77 | 184 | for(Int_t ispecie=0;ispecie<AliRecoParam::kNSpecies;ispecie++){ |
185 | //__________________________________________________________________ | |
186 | //raw data | |
187 | sprintf(filepath,"ITS/Raws/%s",AliRecoParam::GetEventSpecieName(ispecie)); | |
188 | printf("%s",filepath); | |
189 | TString especie(filepath); | |
190 | if(!especie.Contains(eventspecie)){printf("...Found and Skipped\n");continue;} | |
8a55554e | 191 | canvas1->Print(psfilestart.Data()); |
0bca1a77 | 192 | directory=(TDirectory*)mergedfile.Get(filepath); |
193 | if(!directory){printf("...Not Found\n ");}//faccio l'istogramma | |
194 | else{ | |
8a55554e | 195 | |
0bca1a77 | 196 | printf("...Found: The histograms of this EventSpecie will be displayed\n"); |
8a55554e | 197 | printf("0\n"); |
0bca1a77 | 198 | canvas1->Clear(); |
199 | canvas1->Divide(2,1); | |
2a250bc5 | 200 | |
0bca1a77 | 201 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} |
2a250bc5 | 202 | for(Int_t iraws=2;iraws<4;iraws++){//non expert raws |
203 | canvas1->cd(iraws-1); | |
204 | ||
205 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[iraws].Data()); | |
206 | printf("histo name %s ",Rawsexpertname[iraws].Data()); | |
0bca1a77 | 207 | historaw=(TH2D*)mergedfile.Get(histoname); |
8a55554e | 208 | if(historaw){printf("...Found\n"); historaw->Multiply(f1,fCNinv); historaw->DrawCopy("colz");} |
209 | else | |
210 | { | |
211 | sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[iraws].Data()); | |
212 | printf("...Not found\nSecond try for histo name %s ",Rawsexpertname[iraws].Data()); | |
213 | historaw=(TH2D*)mergedfile.Get(histoname); | |
214 | if(historaw){printf("...Found\n"); historaw->Multiply(f1,fCNinv);historaw->DrawCopy("colz");} | |
215 | else | |
216 | { | |
217 | updatecanvas[iraws-2]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n"); | |
218 | } | |
219 | } | |
0bca1a77 | 220 | historaw=NULL; |
221 | }//end for | |
2a250bc5 | 222 | |
0bca1a77 | 223 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) |
224 | { | |
225 | canvas1->Update(); | |
2a250bc5 | 226 | if(kDoEps){ |
227 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
228 | canvas1->SaveAs(namecanvas); | |
229 | } | |
8a55554e | 230 | canvas1->Print(psfile.Data()); |
0bca1a77 | 231 | } |
232 | //else{delete canvas1; canvas1=NULL;} | |
233 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
2a250bc5 | 234 | canvas1->Clear(); |
235 | canvas1->Divide(1,2); | |
8a55554e | 236 | printf("1\n"); |
2a250bc5 | 237 | cannum++; |
238 | for(Int_t inraws=0;inraws<2;inraws++){//non expert raws | |
239 | canvas1->cd(inraws+1); | |
240 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[inraws].Data()); | |
241 | printf("histo name %s ",Rawsexpertname[inraws].Data()); | |
8a55554e | 242 | historaw2=(TH1F*)mergedfile.Get(histoname); |
2a250bc5 | 243 | // -----------------This is the part were I divide between the number of chunks to normalize the histogram---------------- |
244 | ||
245 | ||
246 | if(historaw2) | |
0bca1a77 | 247 | { |
2a250bc5 | 248 | printf("...Found\n"); |
249 | if (inraws==1) | |
250 | { | |
251 | historaw2->Multiply(f1,fCNinv); | |
252 | ||
253 | } | |
254 | historaw2->DrawCopy(); | |
255 | } | |
8a55554e | 256 | else {updatecanvas[inraws]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} |
2a250bc5 | 257 | historaw2=NULL; |
258 | }//end for | |
259 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
260 | { | |
261 | canvas1->Update(); | |
262 | if(kDoEps){ | |
263 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
0bca1a77 | 264 | canvas1->SaveAs(namecanvas); |
2a250bc5 | 265 | } |
8a55554e | 266 | canvas1->Print(psfile.Data()); |
2a250bc5 | 267 | } |
268 | //else{delete canvas2; canvas2=NULL;} | |
269 | ||
270 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
8a55554e | 271 | printf("2\n"); |
2a250bc5 | 272 | cannum++; |
273 | canvas1->Clear(); | |
274 | canvas1->Divide(2,1); | |
275 | for(Int_t iraws=0;iraws<2;iraws++){//non expert raws | |
276 | canvas1->cd(iraws+1); | |
277 | ||
278 | sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsnonexpertname[iraws].Data()); | |
279 | printf("histo name %s",Rawsnonexpertname[iraws].Data()); | |
280 | historaw=(TH2D*)mergedfile.Get(histoname); | |
281 | if(historaw){ | |
282 | printf("...Found\n"); | |
8a55554e | 283 | // historaw->SetTitleSize(0.02); |
284 | ||
2a250bc5 | 285 | historaw->DrawCopy("colz"); |
286 | } | |
287 | else | |
8a55554e | 288 | { |
289 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsnonexpertname[iraws].Data()); | |
290 | printf("...Not Found.\n Second Try for histo name %s",Rawsnonexpertname[iraws].Data()); | |
291 | historaw=(TH2D*)mergedfile.Get(histoname); | |
292 | if(historaw){ | |
293 | printf("...Found\n"); | |
294 | // historaw->SetTitleSize(0.02); | |
295 | historaw->Multiply(f1,fCNinv); | |
296 | historaw->DrawCopy("colz"); | |
297 | } | |
298 | else | |
299 | { | |
300 | updatecanvas[iraws]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n"); | |
301 | } | |
302 | } | |
2a250bc5 | 303 | historaw=NULL; |
304 | }//end for | |
305 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
306 | { | |
307 | canvas1->Update(); | |
308 | if(kDoEps){ | |
309 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
310 | canvas1->SaveAs(namecanvas); | |
311 | } | |
8a55554e | 312 | canvas1->Print(psfile.Data()); |
2a250bc5 | 313 | } |
314 | //else{delete canvas3; canvas3=NULL;} | |
315 | ||
8a55554e | 316 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} |
317 | printf("3\n"); | |
318 | cannum++; | |
319 | canvas1->Clear(); | |
320 | canvas1->Divide(2,1); | |
321 | for(Int_t iraws=2;iraws<4;iraws++){//non expert raws | |
322 | canvas1->cd(iraws-1); | |
323 | ||
324 | sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsnonexpertname[iraws].Data()); | |
325 | printf("histo name %s",Rawsnonexpertname[iraws].Data()); | |
326 | historaw=(TH2D*)mergedfile.Get(histoname); | |
327 | if(historaw){ | |
328 | printf("...Found\n"); | |
329 | // historaw->SetTitleSize(0.02); | |
330 | // historaw->Multiply(f1,fCNinv); | |
331 | historaw->DrawCopy("colz"); | |
332 | } | |
333 | else | |
334 | { | |
335 | updatecanvas[iraws]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n"); | |
336 | } | |
337 | historaw=NULL; | |
338 | }//end for | |
339 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
340 | { | |
341 | canvas1->Update(); | |
342 | if(kDoEps){ | |
343 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
344 | canvas1->SaveAs(namecanvas); | |
345 | } | |
346 | canvas1->Print(psfile.Data()); | |
347 | } | |
348 | ||
2a250bc5 | 349 | //--------------------- new plots |
350 | printf("================= 4\n"); | |
351 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
352 | cannum++; | |
353 | canvas1->Clear(); | |
354 | canvas1->Divide(2,1); | |
8a55554e | 355 | for(Int_t iraws=4;iraws<rawtot-1;iraws++){//non expert raws |
2a250bc5 | 356 | canvas1->cd(iraws-3); |
357 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[iraws].Data()); | |
358 | printf("histo name %s",Rawsexpertname[iraws].Data()); | |
359 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
360 | if(historaw2) | |
0bca1a77 | 361 | { |
2a250bc5 | 362 | printf("...Found\n"); |
363 | historaw2->DrawCopy(); | |
364 | }else | |
365 | { | |
366 | updatecanvas[iraws-4]=kFALSE; | |
367 | printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n"); | |
368 | } | |
369 | historaw2=NULL; | |
370 | }//end for | |
371 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
372 | { | |
373 | canvas1->Update(); | |
374 | if(kDoEps){ | |
375 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
0bca1a77 | 376 | canvas1->SaveAs(namecanvas); |
2a250bc5 | 377 | } |
8a55554e | 378 | canvas1->Print(psfile.Data()); |
2a250bc5 | 379 | } |
380 | //else{delete canvas3; canvas3=NULL;} | |
381 | ||
382 | ||
383 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
384 | canvas1->Clear(); | |
385 | legend->Clear(); | |
8a55554e | 386 | printf("5\n"); |
2a250bc5 | 387 | cannum++; |
8a55554e | 388 | for (Int_t i=4;i<rawtot-1;i++){ |
2a250bc5 | 389 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[i].Data()); |
390 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
391 | if(historaw2){ | |
392 | fmax=historaw2->GetMaximum(); | |
393 | if (i==4){ | |
394 | fmaxold=fmax;} | |
395 | if (i!=4){ | |
396 | if(fmaxold<fmax){ | |
397 | fmaxold=fmax; | |
398 | } | |
399 | } | |
0bca1a77 | 400 | } |
2a250bc5 | 401 | historaw2=NULL; |
402 | } | |
403 | fmaxmargin=1.1*fmaxold; | |
8a55554e | 404 | for(Int_t irrpp=4;irrpp<rawtot-1;irrpp++){//non expert raws |
2a250bc5 | 405 | |
406 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[irrpp].Data()); | |
407 | printf("histo name %s",Rawsexpertname[irrpp].Data()); | |
408 | sprintf(layer, "layer %d",irrpp-1); | |
409 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
410 | gStyle->SetOptStat(0); | |
411 | ||
412 | if(historaw2) | |
0bca1a77 | 413 | { |
2a250bc5 | 414 | printf("...Found\n"); |
415 | historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin); | |
416 | historaw2->SetTitle("Raw Relative Occupancy"); | |
417 | if (irrpp==4) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();} | |
418 | if (irrpp!=4) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");} | |
419 | legend->AddEntry(historaw2,layer,"l"); | |
420 | legend->Draw(); | |
0bca1a77 | 421 | canvas1->Update(); |
2a250bc5 | 422 | } |
423 | else{updatecanvas[irrpp-4]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
424 | historaw2=NULL; | |
425 | }//end for | |
426 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
427 | { | |
428 | canvas1->Update(); | |
429 | if(kDoEps){ | |
430 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
431 | canvas1->SaveAs(namecanvas); | |
432 | } | |
8a55554e | 433 | canvas1->Print(psfile.Data()); |
2a250bc5 | 434 | } |
8a55554e | 435 | //---------------------------- summary plot ------------------------// |
436 | printf("6\n"); | |
437 | canvas1->Clear(); | |
438 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
439 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[rawtot-1].Data()); | |
440 | printf("histo name %s",Rawsexpertname[rawtot-1].Data()); | |
441 | cannum++; | |
442 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
443 | if(historaw2) | |
444 | { | |
445 | printf("...Found\n"); | |
446 | historaw2->SetStats(0); | |
447 | historaw2->DrawCopy(); | |
448 | canvas1->Update(); | |
449 | } | |
450 | else{updatecanvas[0]=kFALSE;updatecanvas[1]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
451 | historaw2=NULL; | |
452 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
453 | { | |
454 | canvas1->Update(); | |
455 | if(kDoEps){ | |
456 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
457 | canvas1->SaveAs(namecanvas); | |
458 | } | |
459 | canvas1->Print(psfile.Data()); | |
460 | } | |
461 | ||
2a250bc5 | 462 | }//end if directory |
8a55554e | 463 | |
2a250bc5 | 464 | |
465 | ||
466 | //_______________________________________________________________________________ | |
467 | //rec point | |
468 | sprintf(filepath,"ITS/RecPoints/%s",AliRecoParam::GetEventSpecieName(ispecie)); | |
469 | printf("%s\n",filepath); | |
470 | directory2=(TDirectory*)mergedfile.Get(filepath); | |
471 | if(directory2){ | |
8a55554e | 472 | |
2a250bc5 | 473 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} |
474 | canvas1->Clear(); | |
475 | canvas1->Divide(2,1); | |
8a55554e | 476 | printf("7\n"); |
2a250bc5 | 477 | cannum++; |
478 | for(Int_t irp=0;irp<2;irp++){//non expert rec point | |
479 | canvas1->cd(irp+1); | |
480 | ||
481 | sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irp].Data()); | |
482 | printf("histo name %s ",RecPointsnonexpertname[irp].Data()); | |
483 | histodraw=(TH2F*)mergedfile.Get(histoname); | |
484 | if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[irp]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
485 | histodraw=NULL; | |
486 | } | |
487 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
488 | { | |
489 | canvas1->Update(); | |
490 | if(kDoEps){ | |
491 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
0bca1a77 | 492 | canvas1->SaveAs(namecanvas); |
0bca1a77 | 493 | } |
8a55554e | 494 | canvas1->Print(psfile.Data()); |
2a250bc5 | 495 | } |
496 | // else{delete canvas4; canvas4=NULL;} | |
497 | ||
498 | ||
499 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
500 | canvas1->Clear(); | |
501 | canvas1->Divide(2,1); | |
8a55554e | 502 | printf("8\n"); |
2a250bc5 | 503 | cannum++; |
504 | for(Int_t irrp=2;irrp<4;irrp++){//non expert raws | |
505 | canvas1->cd(irrp-1); | |
506 | ||
507 | sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrp].Data()); | |
508 | printf("histo name %s",RecPointsnonexpertname[irrp].Data() ); | |
509 | histodraw=(TH2F*)mergedfile.Get(histoname); | |
510 | if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[irrp-2]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
511 | histodraw=NULL; | |
512 | } | |
513 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
514 | { | |
515 | canvas1->Update(); | |
516 | if(kDoEps){ | |
517 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
518 | canvas1->SaveAs(namecanvas); | |
519 | } | |
8a55554e | 520 | canvas1->Print(psfile.Data()); |
2a250bc5 | 521 | } |
522 | //else{delete canvas5; canvas5=NULL;} | |
523 | ||
524 | ||
525 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
526 | canvas1->Clear(); | |
527 | canvas1->Divide(1,2); | |
8a55554e | 528 | printf("9\n"); |
2a250bc5 | 529 | cannum++; |
530 | for(Int_t irrpp=4;irrpp<6;irrpp++){//non expert raws | |
531 | canvas1->cd(irrpp-3); | |
532 | ||
533 | sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data()); | |
534 | printf("histo name %s",RecPointsnonexpertname[irrpp].Data()); | |
535 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
536 | ||
537 | if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[irrpp-4]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
538 | historaw2=NULL; | |
539 | }//end for | |
540 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
541 | { | |
542 | canvas1->Update(); | |
543 | if(kDoEps){ | |
544 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
545 | canvas1->SaveAs(namecanvas); | |
546 | } | |
8a55554e | 547 | canvas1->Print(psfile.Data()); |
2a250bc5 | 548 | } |
549 | //else{delete canvas6; canvas6=NULL;} | |
550 | ||
551 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
552 | canvas1->Clear(); | |
553 | canvas1->Divide(1,2); | |
8a55554e | 554 | printf("10\n"); |
2a250bc5 | 555 | cannum++; |
556 | for(Int_t irrpp=6;irrpp<8;irrpp++){//non expert raws | |
557 | canvas1->cd(irrpp-5); | |
558 | // printf("histo name\n"); | |
559 | sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data()); | |
560 | printf("histo name %s",RecPointsnonexpertname[irrpp].Data()); | |
561 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
562 | if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[irrpp-6]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
563 | historaw2=NULL; | |
564 | }//end for | |
565 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
566 | { | |
567 | canvas1->Update(); | |
568 | if(kDoEps){ | |
569 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
570 | canvas1->SaveAs(namecanvas); | |
571 | } | |
8a55554e | 572 | canvas1->Print(psfile.Data()); |
2a250bc5 | 573 | } |
574 | //else{delete canvas7; canvas7=NULL;} | |
575 | ||
576 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
577 | canvas1->Clear(); | |
8a55554e | 578 | printf("11\n"); |
2a250bc5 | 579 | cannum++; |
580 | //canvas1->Divide(2,1); | |
581 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[rlocaldistro].Data()); | |
582 | printf("histo name %s",RecPointsexpertname[rlocaldistro].Data()); | |
583 | histodraw=(TH2F*)mergedfile.Get(histoname); | |
584 | ||
585 | if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[0]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
586 | histodraw=NULL; | |
587 | if(updatecanvas[0]==kTRUE){ | |
588 | canvas1->Update(); | |
589 | if(kDoEps){ | |
590 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
591 | canvas1->SaveAs(namecanvas); | |
592 | } | |
8a55554e | 593 | canvas1->Print(psfile.Data()); |
2a250bc5 | 594 | } |
595 | //else{delete canvas8; canvas8=NULL;} | |
0bca1a77 | 596 | |
2a250bc5 | 597 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} |
598 | canvas1->Clear(); | |
599 | canvas1->Divide(2,1); | |
8a55554e | 600 | printf("12\n"); |
2a250bc5 | 601 | cannum++; |
602 | for(Int_t i=1;i<3;i++) | |
603 | { | |
604 | canvas1->cd(i); | |
0bca1a77 | 605 | |
2a250bc5 | 606 | sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); |
607 | printf("histo name %s",RecPointsexpertname[i].Data()); | |
0bca1a77 | 608 | histodraw=(TH2F*)mergedfile.Get(histoname); |
2a250bc5 | 609 | |
610 | if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[i-1]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
0bca1a77 | 611 | histodraw=NULL; |
612 | } | |
2a250bc5 | 613 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) |
614 | { | |
615 | canvas1->Update(); | |
616 | if(kDoEps){ | |
617 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
618 | canvas1->SaveAs(namecanvas); | |
619 | } | |
8a55554e | 620 | canvas1->Print(psfile.Data()); |
2a250bc5 | 621 | } |
8a55554e | 622 | |
2a250bc5 | 623 | //else{delete canvas9; canvas9=NULL;} |
624 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
625 | canvas1->Clear(); | |
626 | canvas1->Divide(2,1); | |
8a55554e | 627 | printf("13\n"); |
2a250bc5 | 628 | cannum++; |
8a55554e | 629 | for(Int_t i=3;i<5;i++) |
2a250bc5 | 630 | { |
8a55554e | 631 | canvas1->cd(i-2); |
2a250bc5 | 632 | |
8a55554e | 633 | sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); |
2a250bc5 | 634 | histodraw=(TH2F*)mergedfile.Get(histoname); |
8a55554e | 635 | printf("histo name %s",RecPointsexpertname[i].Data()); |
2a250bc5 | 636 | |
637 | if(histodraw){ | |
638 | printf("...Found\n");histodraw->Multiply(f1,fCNinv); | |
639 | histodraw->DrawCopy("colz"); | |
8a55554e | 640 | }else{updatecanvas[i-3]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} |
2a250bc5 | 641 | histodraw=NULL; |
642 | } | |
643 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
644 | { | |
645 | canvas1->Update(); | |
646 | if(kDoEps){ | |
647 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
0bca1a77 | 648 | canvas1->SaveAs(namecanvas); |
0bca1a77 | 649 | } |
8a55554e | 650 | canvas1->Print(psfile.Data()); |
2a250bc5 | 651 | } |
0bca1a77 | 652 | |
8a55554e | 653 | |
2a250bc5 | 654 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} |
655 | canvas1->Clear(); | |
656 | canvas1->Divide(1,2); | |
8a55554e | 657 | |
658 | printf("14\n"); | |
2a250bc5 | 659 | cannum++; |
8a55554e | 660 | for(Int_t i=5;i<7;i++) |
2a250bc5 | 661 | { |
8a55554e | 662 | canvas1->cd(i-4); |
2a250bc5 | 663 | |
664 | sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); | |
665 | printf("histo name %s",RecPointsexpertname[i].Data()); | |
0bca1a77 | 666 | historaw2=(TH1F*)mergedfile.Get(histoname); |
2a250bc5 | 667 | |
668 | if(historaw2) | |
669 | { | |
670 | printf("...Found\n"); | |
671 | if (i==4){historaw2->Multiply(f1,fCNinv);} | |
672 | historaw2->DrawCopy(); | |
673 | } | |
8a55554e | 674 | else{updatecanvas[i-5]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} |
0bca1a77 | 675 | historaw2=NULL; |
2a250bc5 | 676 | } |
677 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
678 | { | |
679 | canvas1->Update(); | |
680 | if(kDoEps){ | |
681 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
0bca1a77 | 682 | canvas1->SaveAs(namecanvas); |
0bca1a77 | 683 | } |
8a55554e | 684 | canvas1->Print(psfile.Data()); |
2a250bc5 | 685 | } |
8a55554e | 686 | |
2a250bc5 | 687 | |
688 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
689 | canvas1->Clear(); | |
690 | canvas1->Divide(2,1); | |
8a55554e | 691 | printf("15\n"); |
2a250bc5 | 692 | cannum++; |
8a55554e | 693 | for(Int_t i=7;i<9;i++) |
2a250bc5 | 694 | { |
8a55554e | 695 | canvas1->cd(i-6); |
2a250bc5 | 696 | |
697 | sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); | |
698 | printf("histo name %s",RecPointsexpertname[i].Data()); | |
0bca1a77 | 699 | historaw2=(TH1F*)mergedfile.Get(histoname); |
2a250bc5 | 700 | |
8a55554e | 701 | if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-7]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} |
0bca1a77 | 702 | historaw2=NULL; |
2a250bc5 | 703 | } |
704 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
705 | { | |
706 | canvas1->Update(); | |
707 | if(kDoEps){ | |
708 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
0bca1a77 | 709 | canvas1->SaveAs(namecanvas); |
0bca1a77 | 710 | } |
8a55554e | 711 | canvas1->Print(psfile.Data()); |
2a250bc5 | 712 | } |
8a55554e | 713 | |
2a250bc5 | 714 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} |
715 | canvas1->Clear(); | |
716 | canvas1->Divide(2,1); | |
8a55554e | 717 | printf("16\n"); |
2a250bc5 | 718 | cannum++; |
8a55554e | 719 | for(Int_t i=9;i<11;i++) |
2a250bc5 | 720 | { |
8a55554e | 721 | canvas1->cd(i-8); |
2a250bc5 | 722 | sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); |
723 | printf("histo name %s",RecPointsexpertname[i].Data()); | |
724 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
0bca1a77 | 725 | |
8a55554e | 726 | if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-9]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} |
2a250bc5 | 727 | historaw2=NULL; |
728 | } | |
729 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
730 | { | |
0bca1a77 | 731 | canvas1->Update(); |
2a250bc5 | 732 | if(kDoEps){ |
733 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
734 | canvas1->SaveAs(namecanvas); | |
735 | } | |
8a55554e | 736 | canvas1->Print(psfile.Data()); |
0bca1a77 | 737 | } |
2a250bc5 | 738 | |
0bca1a77 | 739 | |
2a250bc5 | 740 | //superimposed |
741 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
742 | canvas1->Clear(); | |
743 | legend->Clear(); | |
8a55554e | 744 | printf("17\n"); |
2a250bc5 | 745 | cannum++; |
746 | for (Int_t i=4;i<6;i++){ | |
747 | sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[i].Data()); | |
748 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
749 | if(historaw2){ | |
750 | fmax=historaw2->GetMaximum(); | |
751 | if (i==4){ | |
752 | fmaxold=fmax;} | |
753 | if (i!=4){ | |
754 | if(fmaxold<fmax){ | |
755 | fmaxold=fmax; | |
756 | } | |
0bca1a77 | 757 | } |
2a250bc5 | 758 | } |
759 | historaw2=NULL; | |
760 | } | |
761 | fmaxmargin=1.1*fmaxold; | |
762 | for(Int_t irrpp=4;irrpp<6;irrpp++){//non expert raws | |
763 | ||
764 | sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data()); | |
765 | printf("histo name %s",RecPointsnonexpertname[irrpp].Data()); | |
766 | sprintf(layer, "layer %d",irrpp-1); | |
767 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
768 | gStyle->SetOptStat(0); | |
769 | ||
770 | if(historaw2) | |
0bca1a77 | 771 | { |
2a250bc5 | 772 | printf("...Found\n"); |
773 | historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin); | |
774 | historaw2->SetTitle("Charge"); | |
88522cc1 | 775 | historaw2->SetFillColor(0); |
2a250bc5 | 776 | if (irrpp==4) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();} |
777 | if (irrpp!=4) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");} | |
778 | legend->AddEntry(historaw2,layer,"l"); | |
779 | legend->Draw(); | |
0bca1a77 | 780 | canvas1->Update(); |
2a250bc5 | 781 | } |
782 | else{updatecanvas[irrpp-4]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
783 | historaw2=NULL; | |
784 | }//end for | |
785 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
786 | { | |
787 | canvas1->Update(); | |
788 | if(kDoEps){ | |
789 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
0bca1a77 | 790 | canvas1->SaveAs(namecanvas); |
0bca1a77 | 791 | } |
8a55554e | 792 | canvas1->Print(psfile.Data()); |
2a250bc5 | 793 | } |
794 | ||
795 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
796 | canvas1->Clear(); | |
797 | legend->Clear(); | |
8a55554e | 798 | printf("18\n"); |
2a250bc5 | 799 | cannum++; |
800 | for (Int_t i=6;i<8;i++){ | |
801 | sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[i].Data()); | |
802 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
803 | if(historaw2){ | |
804 | fmax=historaw2->GetMaximum(); | |
805 | if (i==6){ | |
806 | fmaxold=fmax;} | |
807 | if (i!=6){ | |
808 | if(fmaxold<fmax){ | |
809 | fmaxold=fmax;}}} | |
810 | fmaxmargin=1.1*fmaxold; | |
811 | } | |
812 | for(Int_t irrpp=6;irrpp<8;irrpp++){//non expert raws | |
813 | ||
814 | sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data()); | |
815 | printf("histo name %s",RecPointsnonexpertname[irrpp].Data()); | |
816 | sprintf(layer, "layer %d",irrpp-3); | |
817 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
818 | gStyle->SetOptStat(0); | |
819 | ||
820 | if(historaw2) | |
0bca1a77 | 821 | { |
2a250bc5 | 822 | printf("...Found\n"); |
823 | historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin); | |
824 | historaw2->SetTitle("Drift Time"); | |
88522cc1 | 825 | historaw2->SetFillColor(0); |
2a250bc5 | 826 | if (irrpp==6) {historaw2->SetStats(0); historaw2->SetLineColor(2);historaw2->DrawCopy();} |
827 | if (irrpp!=6) {historaw2->SetStats(0); historaw2->SetLineColor(4);historaw2->DrawCopy("same");} | |
828 | legend->AddEntry(historaw2,layer,"l"); | |
829 | legend->Draw(); | |
0bca1a77 | 830 | canvas1->Update(); |
2a250bc5 | 831 | } |
832 | else{updatecanvas[irrpp-6]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
833 | printf("%s\n%s\n",historaw2->GetName(),historaw2->GetTitle()); | |
834 | historaw2=NULL; | |
835 | }//end for | |
836 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
837 | { | |
838 | canvas1->Update(); | |
839 | if(kDoEps){ | |
840 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
0bca1a77 | 841 | canvas1->SaveAs(namecanvas); |
0bca1a77 | 842 | } |
8a55554e | 843 | canvas1->Print(psfile.Data()); |
2a250bc5 | 844 | } |
0bca1a77 | 845 | |
2a250bc5 | 846 | //------------------------------------------- new plot |
0bca1a77 | 847 | |
2a250bc5 | 848 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} |
849 | canvas1->Clear(); | |
850 | canvas1->Divide(2,1); | |
8a55554e | 851 | printf("19\n"); |
2a250bc5 | 852 | cannum++; |
8a55554e | 853 | for(Int_t i=11;i<13;i++) |
2a250bc5 | 854 | { |
8a55554e | 855 | canvas1->cd(i-10); |
2a250bc5 | 856 | sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); |
857 | printf("histo name %s",RecPointsexpertname[i].Data()); | |
858 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
0bca1a77 | 859 | |
8a55554e | 860 | if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-11]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} |
2a250bc5 | 861 | historaw2=NULL; |
862 | } | |
863 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
864 | { | |
865 | canvas1->Update(); | |
866 | if(kDoEps){ | |
867 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
868 | canvas1->SaveAs(namecanvas); | |
869 | } | |
8a55554e | 870 | canvas1->Print(psfile.Data()); |
2a250bc5 | 871 | } |
872 | ||
873 | //------------------------------------ | |
874 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
875 | canvas1->Clear(); | |
876 | legend->Clear(); | |
8a55554e | 877 | printf("20\n"); |
2a250bc5 | 878 | cannum++; |
8a55554e | 879 | for (Int_t i=11;i<13;i++){ |
2a250bc5 | 880 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); |
881 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
882 | if(historaw2){ | |
883 | fmax=historaw2->GetMaximum(); | |
884 | if (i==4){ | |
885 | fmaxold=fmax;} | |
886 | if (i!=4){ | |
887 | if(fmaxold<fmax){ | |
888 | fmaxold=fmax; | |
889 | } | |
0bca1a77 | 890 | } |
2a250bc5 | 891 | } |
892 | historaw2=NULL; | |
893 | } | |
894 | fmaxmargin=1.1*fmaxold; | |
8a55554e | 895 | for(Int_t irrpp=11;irrpp<13;irrpp++){//non expert raws |
2a250bc5 | 896 | |
897 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[irrpp].Data()); | |
898 | printf("histo name %s",RecPointsexpertname[irrpp].Data()); | |
8a55554e | 899 | sprintf(layer, "layer %d",irrpp-8); |
2a250bc5 | 900 | historaw2=(TH1F*)mergedfile.Get(histoname); |
901 | gStyle->SetOptStat(0); | |
902 | ||
903 | if(historaw2) | |
0bca1a77 | 904 | { |
2a250bc5 | 905 | printf("...Found\n"); |
906 | historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin); | |
907 | historaw2->SetTitle("RecPoint Relative Occupancy"); | |
8a55554e | 908 | if (irrpp==11) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();} |
909 | if (irrpp!=11) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");} | |
2a250bc5 | 910 | legend->AddEntry(historaw2,layer,"l"); |
911 | legend->Draw(); | |
0bca1a77 | 912 | canvas1->Update(); |
2a250bc5 | 913 | } |
8a55554e | 914 | else{updatecanvas[irrpp-11]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} |
2a250bc5 | 915 | historaw2=NULL; |
916 | }//end for | |
917 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
918 | { | |
919 | canvas1->Update(); | |
920 | if(kDoEps){ | |
921 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
0bca1a77 | 922 | canvas1->SaveAs(namecanvas); |
0bca1a77 | 923 | } |
8a55554e | 924 | canvas1->Print(psfile.Data()); |
2a250bc5 | 925 | } |
926 | ||
927 | ||
928 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
929 | canvas1->Clear(); | |
930 | canvas1->Divide(2,1); | |
8a55554e | 931 | printf("21\n"); |
2a250bc5 | 932 | cannum++; |
8a55554e | 933 | for(Int_t i=13;i<15;i++) |
2a250bc5 | 934 | { |
8a55554e | 935 | canvas1->cd(i-12); |
2a250bc5 | 936 | sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); |
937 | printf("histo name %s",RecPointsexpertname[i].Data()); | |
938 | historaw=(TH2D*)mergedfile.Get(histoname); | |
939 | ||
8a55554e | 940 | if(historaw){printf("...Found\n"); historaw->DrawCopy("colz");}else{updatecanvas[i-13]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} |
941 | historaw=NULL; | |
2a250bc5 | 942 | } |
943 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
944 | { | |
945 | canvas1->Update(); | |
946 | if(kDoEps){ | |
947 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
948 | canvas1->SaveAs(namecanvas); | |
949 | } | |
8a55554e | 950 | canvas1->Print(psfile.Data()); |
2a250bc5 | 951 | } |
952 | ||
0bca1a77 | 953 | |
0bca1a77 | 954 | |
2a250bc5 | 955 | //----------------- |
956 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
957 | canvas1->Clear(); | |
958 | canvas1->Divide(2,1); | |
8a55554e | 959 | printf("22\n"); |
2a250bc5 | 960 | cannum++; |
8a55554e | 961 | for(Int_t i=15;i<17;i++) |
2a250bc5 | 962 | { |
8a55554e | 963 | canvas1->cd(i-14); |
2a250bc5 | 964 | sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); |
965 | printf("histo name %s",RecPointsexpertname[i].Data()); | |
966 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
967 | ||
8a55554e | 968 | if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-15]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} |
2a250bc5 | 969 | historaw2=NULL; |
970 | } | |
971 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
972 | { | |
973 | canvas1->Update(); | |
974 | if(kDoEps){ | |
975 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
976 | canvas1->SaveAs(namecanvas); | |
977 | } | |
8a55554e | 978 | canvas1->Print(psfile.Data()); |
2a250bc5 | 979 | } |
980 | //-------------------------------------------- | |
0bca1a77 | 981 | |
2a250bc5 | 982 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} |
983 | canvas1->Clear(); | |
984 | legend->Clear(); | |
8a55554e | 985 | printf("23\n"); |
2a250bc5 | 986 | cannum++; |
8a55554e | 987 | for (Int_t i=15;i<17;i++){ |
2a250bc5 | 988 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); |
989 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
990 | if(historaw2){ | |
991 | fmax=historaw2->GetMaximum(); | |
8a55554e | 992 | if (i==15){ |
2a250bc5 | 993 | fmaxold=fmax;} |
8a55554e | 994 | if (i!=15){ |
2a250bc5 | 995 | if(fmaxold<fmax){ |
996 | fmaxold=fmax; | |
997 | } | |
0bca1a77 | 998 | } |
2a250bc5 | 999 | } |
1000 | historaw2=NULL; | |
1001 | } | |
1002 | fmaxmargin=1.1*fmaxold; | |
8a55554e | 1003 | for(Int_t irrpp=15;irrpp<17;irrpp++){//non expert raws |
2a250bc5 | 1004 | |
1005 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[irrpp].Data()); | |
1006 | printf("histo name %s",RecPointsexpertname[irrpp].Data()); | |
8a55554e | 1007 | sprintf(layer, "layer %d",irrpp-12); |
2a250bc5 | 1008 | historaw2=(TH1F*)mergedfile.Get(histoname); |
1009 | gStyle->SetOptStat(0); | |
1010 | ||
1011 | if(historaw2) | |
0bca1a77 | 1012 | { |
2a250bc5 | 1013 | printf("...Found\n"); |
1014 | historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin); | |
1015 | historaw2->SetTitle("Rec2Raw Ratio"); | |
8a55554e | 1016 | if (irrpp==15) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();} |
1017 | if (irrpp!=15) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");} | |
2a250bc5 | 1018 | legend->AddEntry(historaw2,layer,"l"); |
1019 | legend->Draw(); | |
0bca1a77 | 1020 | canvas1->Update(); |
2a250bc5 | 1021 | } |
8a55554e | 1022 | else{updatecanvas[irrpp-15]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} |
2a250bc5 | 1023 | historaw2=NULL; |
1024 | }//end for | |
1025 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
1026 | { | |
1027 | canvas1->Update(); | |
1028 | if(kDoEps){ | |
1029 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
0bca1a77 | 1030 | canvas1->SaveAs(namecanvas); |
0bca1a77 | 1031 | } |
8a55554e | 1032 | canvas1->Print(psfile.Data()); |
2a250bc5 | 1033 | } |
0bca1a77 | 1034 | |
2a250bc5 | 1035 | |
1036 | //-------------------------------------- | |
1037 | ||
1038 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
1039 | canvas1->Clear(); | |
1040 | canvas1->Divide(2,1); | |
8a55554e | 1041 | printf("24\n"); |
2a250bc5 | 1042 | cannum++; |
8a55554e | 1043 | for(Int_t i=17;i<19;i++) |
2a250bc5 | 1044 | { |
8a55554e | 1045 | canvas1->cd(i-16); |
2a250bc5 | 1046 | sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); |
1047 | printf("histo name %s",RecPointsexpertname[i].Data()); | |
1048 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
1049 | ||
8a55554e | 1050 | if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-17]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} |
2a250bc5 | 1051 | historaw2=NULL; |
1052 | } | |
1053 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
1054 | { | |
1055 | canvas1->Update(); | |
1056 | if(kDoEps){ | |
1057 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
1058 | canvas1->SaveAs(namecanvas); | |
1059 | } | |
8a55554e | 1060 | canvas1->Print(psfile.Data()); |
2a250bc5 | 1061 | } |
1062 | ||
0bca1a77 | 1063 | |
2a250bc5 | 1064 | //-------------------------------------------- |
1065 | ||
1066 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
1067 | canvas1->Clear(); | |
1068 | legend->Clear(); | |
8a55554e | 1069 | printf("25\n"); |
2a250bc5 | 1070 | cannum++; |
8a55554e | 1071 | for (Int_t i=17;i<19;i++){ |
2a250bc5 | 1072 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data()); |
1073 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
1074 | if(historaw2){ | |
1075 | fmax=historaw2->GetMaximum(); | |
8a55554e | 1076 | if (i==17){ |
2a250bc5 | 1077 | fmaxold=fmax;} |
8a55554e | 1078 | if (i!=17){ |
2a250bc5 | 1079 | if(fmaxold<fmax){fmaxold=fmax;} |
0bca1a77 | 1080 | } |
2a250bc5 | 1081 | } |
1082 | historaw2=NULL; | |
1083 | } | |
1084 | fmaxmargin=1.1*fmaxold; | |
8a55554e | 1085 | for(Int_t irrpp=17;irrpp<19;irrpp++){//non expert raws |
2a250bc5 | 1086 | |
1087 | sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[irrpp].Data()); | |
1088 | printf("histo name %s",RecPointsexpertname[irrpp].Data()); | |
8a55554e | 1089 | sprintf(layer, "layer %d",irrpp-14); |
2a250bc5 | 1090 | historaw2=(TH1F*)mergedfile.Get(histoname); |
1091 | gStyle->SetOptStat(0); | |
1092 | ||
1093 | if(historaw2) | |
0bca1a77 | 1094 | { |
2a250bc5 | 1095 | printf("...Found\n"); |
1096 | historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin); | |
1097 | historaw2->SetTitle("RecPoint dEdx"); | |
8a55554e | 1098 | if (irrpp==17) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();} |
1099 | if (irrpp!=17) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");} | |
2a250bc5 | 1100 | legend->AddEntry(historaw2,layer,"l"); |
1101 | legend->Draw(); | |
0bca1a77 | 1102 | canvas1->Update(); |
2a250bc5 | 1103 | } |
1104 | else{updatecanvas[irrpp-15]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
1105 | historaw2=NULL; | |
1106 | }//end for | |
1107 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
1108 | { | |
1109 | canvas1->Update(); | |
1110 | if(kDoEps){ | |
1111 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
0bca1a77 | 1112 | canvas1->SaveAs(namecanvas); |
0bca1a77 | 1113 | } |
8a55554e | 1114 | canvas1->Print(psfile.Data()); |
1115 | ||
1116 | //------------------------summary plot ---------------// | |
1117 | ||
1118 | for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;} | |
1119 | canvas1->Clear(); | |
1120 | ||
1121 | printf("26\n"); | |
1122 | cannum++; | |
1123 | ||
1124 | ||
1125 | sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[rtot-1].Data()); | |
1126 | printf("histo name %s",RecPointsexpertname[rtot-1].Data()); | |
1127 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
1128 | ||
1129 | if(historaw2) | |
1130 | { | |
1131 | printf("...Found\n"); | |
1132 | ||
1133 | historaw2->DrawCopy(); | |
1134 | } | |
1135 | else{updatecanvas[0]=kFALSE;updatecanvas[1]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");} | |
1136 | historaw2=NULL; | |
1137 | ||
1138 | if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE) | |
1139 | { | |
1140 | canvas1->Update(); | |
1141 | if(kDoEps){ | |
1142 | sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data()); | |
1143 | canvas1->SaveAs(namecanvas); | |
1144 | } | |
1145 | canvas1->Print(psfile.Data()); | |
2a250bc5 | 1146 | } |
8a55554e | 1147 | |
2a250bc5 | 1148 | |
1149 | ||
8a55554e | 1150 | |
1151 | } | |
1152 | canvas1->Print(psfileend.Data()); | |
2a250bc5 | 1153 | |
1154 | TFile file2savefortrend(trendfile,"recreate"); | |
1155 | file2savefortrend.cd(); | |
8a55554e | 1156 | |
1157 | for(Int_t isave=0;isave<nonrawtot;isave++) | |
1158 | { | |
1159 | sprintf(histoname,"ITS/Raws/%s/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),Rawsnonexpertname[isave].Data()); | |
1160 | historaw=(TH2D*)mergedfile.Get(histoname); | |
1161 | historaw->Write(); | |
1162 | printf("Saved %s\n",histoname); | |
1163 | historaw=NULL; | |
1164 | } | |
1165 | ||
1166 | for(Int_t isave1=0;isave1<rawtot;isave1++) | |
1167 | { | |
1168 | sprintf(histoname,"ITS/Raws/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[isave1].Data()); | |
1169 | if(isave1==2||isave1==3) | |
1170 | { | |
1171 | historaw=(TH2D*)mergedfile.Get(histoname); | |
1172 | historaw->Write(); | |
1173 | historaw=NULL; | |
1174 | } | |
1175 | else | |
1176 | { | |
1177 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
1178 | historaw2->Write(); | |
1179 | historaw2=NULL; | |
1180 | } | |
1181 | printf("Saved %s\n",histoname); | |
1182 | } | |
1183 | ||
1184 | for(Int_t isave2=0;isave2<nrtot;isave2++) | |
1185 | { | |
1186 | sprintf(histoname,"ITS/RecPoints/%s/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[isave2].Data()); | |
1187 | if(isave2<4||isave2==17||isave2==18) | |
1188 | { | |
1189 | historaw=(TH2D*)mergedfile.Get(histoname); | |
1190 | historaw->Write(); | |
1191 | historaw=NULL; | |
1192 | } | |
1193 | else | |
1194 | { | |
1195 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
1196 | historaw2->Write(); | |
1197 | historaw2=NULL; | |
1198 | } | |
1199 | printf("Saved %s\n",histoname); | |
1200 | } | |
1201 | for(Int_t isave3=0;isave3<rtot;isave3++) | |
1202 | { | |
1203 | sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[isave3].Data()); | |
1204 | //printf(histoname,"ITS/RecPoints/%s/Expert/%s_%s \n",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[isave3].Data()); | |
1205 | if(isave3<3||isave3==11||isave3==12||isave3==17||isave3==18) | |
1206 | { | |
1207 | histodraw=(TH2F*)mergedfile.Get(histoname); | |
1208 | histodraw->Write(); | |
1209 | histodraw=NULL; | |
1210 | } | |
1211 | else | |
1212 | { | |
1213 | historaw2=(TH1F*)mergedfile.Get(histoname); | |
1214 | historaw2->Write(); | |
1215 | historaw2=NULL; | |
1216 | } | |
1217 | printf("Saved %s\n",histoname); | |
1218 | } | |
1219 | ||
1220 | //for(Int_t iss=0;iss<9;iss++){printf("Saved %d\n",iss); histo2save[iss]->Write();} | |
2a250bc5 | 1221 | file2savefortrend.Close(); |
1222 | ||
1223 | //else{delete canvas13; canvas13=NULL;} | |
1224 | //directory2=NULL; | |
8a55554e | 1225 | |
1226 | ||
1227 | ||
1228 | ||
2a250bc5 | 1229 | }//end directory |
1230 | ||
1231 | ||
1232 | ||
0bca1a77 | 1233 | }//end for |
1234 | ||
2a250bc5 | 1235 | |
1236 | ||
1237 | ||
0bca1a77 | 1238 | delete directory; |
1239 | directory=NULL; | |
1240 | delete directory2; | |
1241 | directory2=NULL; | |
1242 | ||
1243 | }//end macro | |
1244 | ||
1245 |