File indexing completed on 2023-03-17 11:27:37
0001
0002
0003
0004
0005
0006 #include "TFile.h"
0007 #include "TTree.h"
0008 #include "TBranch.h"
0009 #include "TString.h"
0010
0011 void MakeValidation(TString sfilename = "GlobalHitsHistograms.root",
0012 TString rfilename = "GlobalHitsHistograms-reference.root",
0013 TString filename = "GlobalHitsHistogramsCompare")
0014 {
0015 gROOT->Reset();
0016
0017
0018 bool zoomx = false;
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 delete gROOT->GetListOfFiles()->FindObject(sfilename);
0030 delete gROOT->GetListOfFiles()->FindObject(rfilename);
0031
0032
0033 TFile *sfile = new TFile(sfilename);
0034 TFile *rfile = new TFile(rfilename);
0035
0036
0037 Int_t cWidth = 928, cHeight = 1218;
0038
0039 TCanvas *myCanvas = new TCanvas("globalhits","globalhits");
0040
0041
0042
0043
0044 TString psfile = filename+".ps";
0045 TString psfileopen = filename+".ps[";
0046 TString psfileclose = filename+".ps]";
0047 myCanvas->Print(psfileopen);
0048
0049
0050 TLatex *label = new TLatex();
0051 label->SetNDC();
0052 label->SetTextSize(0.03);
0053 label->SetTextAlign(22);
0054 TString labeltitle;
0055
0056
0057 TText* te = new TText();
0058 te->SetTextSize(0.075);
0059
0060
0061 Int_t rcolor = kBlue;
0062 Int_t rtype = kDotted;
0063 Int_t stype = kSolid;
0064 Int_t scolor = kRed;
0065 Int_t linewidth = 2;
0066
0067 vector<Int_t> histnames;
0068
0069 vector<string> mchistname;
0070 mchistname.push_back("hMCRGP1");
0071 mchistname.push_back("hMCRGP1");
0072 histnames.push_back(0);
0073
0074 vector<string> vtxhistname;
0075 vtxhistname.push_back("hMCG4Vtx1");
0076 vtxhistname.push_back("hMCG4Vtx2");
0077 vtxhistname.push_back("hGeantVtxX1");
0078 vtxhistname.push_back("hGeantVtxX2");
0079 vtxhistname.push_back("hGeantVtxY1");
0080 vtxhistname.push_back("hGeantVtxY2");
0081 vtxhistname.push_back("hGeantVtxZ1");
0082 vtxhistname.push_back("hGeantVtxZ2");
0083 histnames.push_back(1);
0084
0085 vector<string> trkhistname;
0086 trkhistname.push_back("hMCG4Trk1");
0087 trkhistname.push_back("hMCG4Trk2");
0088 trkhistname.push_back("hGeantTrkPt");
0089 trkhistname.push_back("hGeantTrkE");
0090 histnames.push_back(2);
0091
0092 vector<string> ecalhistname;
0093 ecalhistname.push_back("hCaloEcal1");
0094 ecalhistname.push_back("hCaloEcal2");
0095 ecalhistname.push_back("hCaloEcalE1");
0096 ecalhistname.push_back("hCaloEcalE2");
0097 ecalhistname.push_back("hCaloEcalToF1");
0098 ecalhistname.push_back("hCaloEcalToF2");
0099 ecalhistname.push_back("hCaloEcalPhi");
0100 ecalhistname.push_back("hCaloEcalEta");
0101 histnames.push_back(3);
0102
0103 vector<string> preshhistname;
0104 preshhistname.push_back("hCaloPreSh1");
0105 preshhistname.push_back("hCaloPreSh2");
0106 preshhistname.push_back("hCaloPreShE1");
0107 preshhistname.push_back("hCaloPreShE2");
0108 preshhistname.push_back("hCaloPreShToF1");
0109 preshhistname.push_back("hCaloPreShToF2");
0110 preshhistname.push_back("hCaloPreShPhi");
0111 preshhistname.push_back("hCaloPreShEta");
0112 histnames.push_back(4);
0113
0114 vector<string> hcalhistname;
0115 hcalhistname.push_back("hCaloHcal1");
0116 hcalhistname.push_back("hCaloHcal2");
0117 hcalhistname.push_back("hCaloHcalE1");
0118 hcalhistname.push_back("hCaloHcalE2");
0119 hcalhistname.push_back("hCaloHcalToF1");
0120 hcalhistname.push_back("hCaloHcalToF2");
0121 hcalhistname.push_back("hCaloHcalPhi");
0122 hcalhistname.push_back("hCaloHcalEta");
0123 histnames.push_back(5);
0124
0125 vector<string> pxlhistname;
0126 pxlhistname.push_back("hTrackerPx1");
0127 pxlhistname.push_back("hTrackerPx2");
0128 pxlhistname.push_back("hTrackerPxPhi");
0129 pxlhistname.push_back("hTrackerPxEta");
0130 pxlhistname.push_back("hTrackerPxBToF");
0131 pxlhistname.push_back("hTrackerPxBR");
0132 pxlhistname.push_back("hTrackerPxFToF");
0133 pxlhistname.push_back("hTrackerPxFZ");
0134 histnames.push_back(6);
0135
0136 vector<string> sihistname;
0137 sihistname.push_back("hTrackerSi1");
0138 sihistname.push_back("hTrackerSi2");
0139 sihistname.push_back("hTrackerSiPhi");
0140 sihistname.push_back("hTrackerSiEta");
0141 sihistname.push_back("hTrackerSiBToF");
0142 sihistname.push_back("hTrackerSiBR");
0143 sihistname.push_back("hTrackerSiFToF");
0144 sihistname.push_back("hTrackerSiFZ");
0145 histnames.push_back(7);
0146
0147 vector<string> muonhistname;
0148 muonhistname.push_back("hMuon1");
0149 muonhistname.push_back("hMuon2");
0150 muonhistname.push_back("hMuonPhi");
0151 muonhistname.push_back("hMuonEta");
0152 histnames.push_back(8);
0153
0154 vector<string> cschistname;
0155 cschistname.push_back("hMuonCscToF1");
0156 cschistname.push_back("hMuonCscToF2");
0157 cschistname.push_back("hMuonCscZ");
0158 histnames.push_back(9);
0159
0160 vector<string> dthistname;
0161 dthistname.push_back("hMuonDtToF1");
0162 dthistname.push_back("hMuonDtToF2");
0163 dthistname.push_back("hMuonDtR");
0164 histnames.push_back(10);
0165
0166 vector<string> rpchistname;
0167 rpchistname.push_back("hMuonRpcFToF1");
0168 rpchistname.push_back("hMuonRpcFToF2");
0169 rpchistname.push_back("hMuonRpcFZ");
0170 rpchistname.push_back("hMuonRpcBToF1");
0171 rpchistname.push_back("hMuonRpcBToF2");
0172 rpchistname.push_back("hMuonRpcBR");
0173 histnames.push_back(11);
0174
0175
0176 for (Int_t i = 0; i < histnames.size(); ++i) {
0177
0178 vector<string> names;
0179
0180
0181 TCanvas *Canvas;
0182 if (i == 0) {
0183 names = mchistname;
0184
0185 Canvas = new TCanvas("MCRGP","MCRGP");
0186
0187 Canvas->Divide(1,2);
0188 myCanvas = Canvas;
0189 myCanvas->cd(0);
0190
0191 }
0192 if (i == 1) {
0193 names = vtxhistname;
0194
0195 Canvas = new TCanvas("G4Vtx","G4Vtx");
0196
0197 Canvas->Divide(2,4);
0198 myCanvas = Canvas;
0199 myCanvas->cd(0);
0200
0201 }
0202 if (i == 2) {
0203 names = trkhistname;
0204
0205 Canvas = new TCanvas("G4Trk","G4Trk");
0206
0207 Canvas->Divide(2,2);
0208 myCanvas = Canvas;
0209 myCanvas->cd(0);
0210
0211 }
0212 if (i == 3) {
0213 names = ecalhistname;
0214
0215 Canvas = new TCanvas("ECalHits","ECalHits");
0216
0217 Canvas->Divide(2,4);
0218 myCanvas = Canvas;
0219 myCanvas->cd(0);
0220
0221 }
0222 if (i == 4) {
0223 names = preshhistname;
0224
0225 Canvas = new TCanvas("PreShHits","PreShHits");
0226
0227 Canvas->Divide(2,4);
0228 myCanvas = Canvas;
0229 myCanvas->cd(0);
0230
0231 }
0232 if (i == 5) {
0233 names = hcalhistname;
0234
0235 Canvas = new TCanvas("HCalHits","HCalHits");
0236
0237 Canvas->Divide(2,4);
0238 myCanvas = Canvas;
0239 myCanvas->cd(0);
0240
0241 }
0242 if (i == 6) {
0243 names = pxlhistname;
0244
0245 Canvas = new TCanvas("PixelHits","PixelHits");
0246
0247 Canvas->Divide(2,4);
0248 myCanvas = Canvas;
0249 myCanvas->cd(0);
0250
0251 }
0252 if (i == 7) {
0253 names = sihistname;
0254
0255 Canvas = new TCanvas("StripHits","StripHits");
0256
0257 Canvas->Divide(2,4);
0258 myCanvas = Canvas;
0259 myCanvas->cd(0);
0260
0261 }
0262 if (i == 8) {
0263 names = muonhistname;
0264
0265 Canvas = new TCanvas("MuonHits","MuonHits");
0266
0267 Canvas->Divide(2,2);
0268 myCanvas = Canvas;
0269 myCanvas->cd(0);
0270
0271 }
0272 if (i == 9) {
0273 names = cschistname;
0274
0275 Canvas = new TCanvas("MuonCscHits","MuonCscHits");
0276
0277 Canvas->Divide(2,2);
0278 myCanvas = Canvas;
0279 myCanvas->cd(0);
0280
0281 }
0282 if (i == 10) {
0283 names = dthistname;
0284
0285 Canvas = new TCanvas("MuonDtHits","MuonDtHits");
0286
0287 Canvas->Divide(2,2);
0288 myCanvas = Canvas;
0289 myCanvas->cd(0);
0290
0291 }
0292 if (i == 11) {
0293 names = rpchistname;
0294
0295 Canvas = new TCanvas("MuonRpcHits","MuonRpcHits");
0296
0297 Canvas->Divide(2,3);
0298 myCanvas = Canvas;
0299 myCanvas->cd(0);
0300
0301 }
0302
0303
0304 for (Int_t j = 0; j < names.size(); ++j) {
0305
0306 TH1F *sh;
0307 TH1F *rh;
0308
0309
0310 if (i == 0) {
0311 TString hpath = "DQMData/GlobalHitsV/MCGeant/"+names[j];
0312 sh = (TH1F*)sfile->Get(hpath);
0313 rh = (TH1F*)rfile->Get(hpath);
0314 }
0315 if (i == 1) {
0316 TString hpath = "DQMData/GlobalHitsV/MCGeant/"+names[j];
0317 sh = (TH1F*)sfile->Get(hpath);
0318 rh = (TH1F*)rfile->Get(hpath);
0319 }
0320 if (i == 2) {
0321 TString hpath = "DQMData/GlobalHitsV/MCGeant/"+names[j];
0322 sh = (TH1F*)srcfile->Get(hpath);
0323 rh = (TH1F*)rfile->Get(hpath);
0324 }
0325 if (i == 3 || i == 4 || i == 5) {
0326 if (i == 3 || i == 4) {
0327 TString hpath = "DQMData/GlobalHitsV/ECals/"+names[j];
0328 sh = (TH1F*)sfile->Get(hpath);
0329 rh = (TH1F*)rfile->Get(hpath);
0330 }
0331 if (i == 5) {
0332 TString hpath = "DQMData/GlobalHitsV/HCals/"+names[j];
0333 sh = (TH1F*)sfile->Get(hpath);
0334 rh = (TH1F*)rfile->Get(hpath);
0335 }
0336 }
0337 if (i == 6) {
0338 TString hpath = "DQMData/GlobalHitsV/SiPixels/"+names[j];
0339 sh = (TH1F*)sfile->Get(hpath);
0340 rh = (TH1F*)rfile->Get(hpath);
0341 }
0342 if (i == 7) {
0343 TString hpath = "DQMData/GlobalHitsV/SiStrips/"+names[j];
0344 sh = (TH1F*)sfile->Get(hpath);
0345 rh = (TH1F*)rfile->Get(hpath);
0346 }
0347 if (i == 8) {
0348 TString hpath = "DQMData/GlobalHitsV/Muons/"+names[j];
0349 sh = (TH1F*)sfile->Get(hpath);
0350 rh = (TH1F*)rfile->Get(hpath);
0351 }
0352 if (i == 9) {
0353 TString hpath = "DQMData/GlobalHitsV/Muons/"+names[j];
0354 sh = (TH1F*)sfile->Get(hpath);
0355 rh = (TH1F*)rfile->Get(hpath);
0356 }
0357 if (i == 10) {
0358 TString hpath = "DQMData/GlobalHitsV/Muons/"+names[j];
0359 sh = (TH1F*)sfile->Get(hpath);
0360 rh = (TH1F*)rfile->Get(hpath);
0361 }
0362 if (i == 11) {
0363 TString hpath = "DQMData/GlobalHitsV/Muon/"+names[j];
0364 sh = (TH1F*)sfile->Get(hpath);
0365 rh = (TH1F*)rfile->Get(hpath);
0366 }
0367
0368
0369
0370 sh->SetLineColor(scolor);
0371 sh->SetLineWidth(linewidth);
0372 sh->SetLineStyle(stype);
0373 Double_t smax = sh->GetMaximum();
0374
0375 rh->SetLineColor(rcolor);
0376 rh->SetLineWidth(linewidth);
0377 rh->SetLineStyle(rtype);
0378 Double_t rmax = rh->GetMaximum();
0379
0380
0381
0382
0383 double pv = rh->KolmogorovTest(sh);
0384 std::strstream buf;
0385 std::string value;
0386 buf << "PV=" << pv <<std::endl;
0387 buf >> value;
0388
0389
0390 Double_t max = smax;
0391 if (rmax > smax) max = rmax;
0392 max *= 1.10;
0393 rh->SetMaximum(max);
0394
0395
0396 if (zoomx) {
0397 Int_t nbins = rh->GetNbinsX();
0398 Int_t rlbin, slbin;
0399 Int_t rfbin = -1, sfbin = -1;
0400 for (Int_t k = 1; k < nbins; ++k) {
0401 Int_t rbincont = rh->GetBinContent(k);
0402 if (rbincont != 0) {
0403 rlbin = k;
0404 if (rfbin == -1) rfbin = k;
0405 }
0406 Int_t sbincont = sh->GetBinContent(k);
0407 if (sbincont != 0) {
0408 slbin = k;
0409 if (sfbin == -1) sfbin = k;
0410 }
0411 }
0412 Int_t binmin = rfbin, binmax = rlbin+1;
0413 if (sfbin < binmin) binmin = sfbin;
0414 if (slbin > binmax) binmax = slbin+1;
0415 rh->SetAxisRange(rh->GetBinLowEdge(binmin),rh->GetBinLowEdge(binmax));
0416 }
0417
0418
0419 myCanvas->cd(j+1);
0420
0421 sh->Draw();
0422 rh->Draw("sames");
0423
0424 te->DrawTextNDC(0.15,0.8, value.c_str());
0425 std::cout << "[OVAL] " << rh->GetName()
0426 << " PV = " << pv << std::endl;
0427 }
0428 myCanvas->Print(psfile);
0429
0430 }
0431
0432
0433 myCanvas->Print(psfileclose);
0434
0435
0436 rfile->Close();
0437 sfile->Close();
0438
0439
0440 TString cmnd;
0441 cmnd = "ps2pdf "+psfile+" "+filename+".pdf";
0442 gSystem->Exec(cmnd);
0443 cmnd = "rm "+psfile;
0444 gSystem->Exec(cmnd);
0445
0446 return;
0447 }