void readSurveyReport(Int_t mode = 0, const char* filename = "SSDpositionsV3.txt") { //Parses the survey report and creates the //new one to be uploaded to the DCDB //Calculates the residuals in global R-Phi-Z based on the mode: //0: residual = Survey_Final - Survey_Nominal //1: residual = Survey_Nominal - Aliroot_Nominal //2: residual = Survey_Final - Aliroot_Nominal ParseReport(filename); CreateReport(filename); drawResiduals(mode,filename); } //__________________________________// Bool_t ParseReport(const char* filename) { //Parses the survey report ascii file cout<<"\n\n\n"<SetDefaultStorage("local://$ALICE_ROOT"); cdb->SetRun(0); AliCDBEntry* entry = cdb->Get("GRP/Geometry/Data"); AliGeomManager::SetGeometry(gGeoManager); Int_t uid, imodule; const char* symname; Int_t fLayer, fLadder, fModule, fPosition; Double_t fZNominal, fRNominal, fPhiNominal; Double_t fRho, deltaZ, deltaS, deltaPhi; Double_t fZFinal, fPhiFinal; for(Int_t i = 0; i < counter; i++) { in >> fLayer >> fLadder >> fModule >> fPosition >> fZNominal >> fRNominal >> fPhiNominal >> fRho >> deltaZ >> deltaS >> deltaPhi >> fZFinal >> fPhiFinal; imodule = (i < 748) ? i : i - 748; uid = AliGeomManager::LayerToVolUID(fLayer,imodule); symname = AliGeomManager::SymName(uid); cout<SetDefaultStorage("local://$ALICE_ROOT"); cdb->SetRun(0); AliCDBEntry* entry = cdb->Get("GRP/Geometry/Data"); AliGeomManager::SetGeometry(gGeoManager); Int_t uid, imodule; const char* symname; Int_t fLayer, fLadder, fModule, fPosition; Double_t fZNominal, fRNominal, fPhiNominal; Double_t fRho, deltaZ, deltaS, deltaPhi; Double_t fZFinal, fRFinal, fPhiFinal; Double_t fX, fY, fZ; for(Int_t i = 0; i < counter; i++) { in >> fLayer >> fLadder >> fModule >> fPosition >> fZNominal >> fRNominal >> fPhiNominal >> fRho >> deltaZ >> deltaS >> deltaPhi >> fZFinal >> fPhiFinal; fRFinal = fRNominal;// + 1e-04*deltaS; imodule = (i < 748) ? i : i - 748; uid = AliGeomManager::LayerToVolUID(fLayer,imodule); symname = AliGeomManager::SymName(uid); fZ = fZFinal; fX = TMath::Cos(TMath::Pi()*fPhiFinal/180.)*fRFinal; fY = TMath::Sin(TMath::Pi()*fPhiFinal/180.)*fRFinal; cout<SetOptFit(111); gStyle->SetPalette(1,0); ifstream in; in.open(filename); const Int_t counter = 1698; //___________Histograms______________// Double_t nMinR = 0.0, nMaxR = 0.0; Double_t nMinPhi = 0.0, nMaxPhi = 0.0; Double_t nMinZ = 0.0, nMaxZ = 0.0; if(mode == 0) { nMinX = -200.0; nMaxX = 200.0; nMinY = -200.0; nMaxY = 200.0; nMinR = -10.0; nMaxR = 10.0; nMinPhi = -0.5; nMaxPhi = 0.5; nMinZ = -100.0; nMaxZ = 100.0; } if(mode == 1) { nMinX = -400.0; nMaxX = 400.0; nMinY = -400.0; nMaxY = 400.0; nMinR = -300.0; nMaxR = -200.0; nMinPhi = -0.0015; nMaxPhi = 0.0015; nMinZ = -50.0; nMaxZ = 50.0; } if(mode == 2) { nMinX = -400.0; nMaxX = 400.0; nMinY = -400.0; nMaxY = 400.0; nMinR = -300.0; nMaxR = -200.0; nMinPhi = -0.5; nMaxPhi = 0.5; nMinZ = -50.0; nMaxZ = 50.0; } TH1D *fHistResidualsX = new TH1D("fHistResidualsX", "Residuals x coordinate",100,nMinX,nMaxX); fHistResidualsX->GetXaxis()->SetTitleColor(1); fHistResidualsX->GetXaxis()->SetTitle("#Delta x [#mu m]"); TH1D *fHistResidualsY = new TH1D("fHistResidualsY", "Residuals y coordinate",100,nMinY,nMaxY); fHistResidualsY->GetXaxis()->SetTitleColor(1); fHistResidualsY->GetXaxis()->SetTitle("#Delta y [#mu m]"); TH1D *fHistResidualsR = new TH1D("fHistResidualsR", "Residuals R coordinate",100,nMinR,nMaxR); fHistResidualsR->GetXaxis()->SetTitleColor(1); fHistResidualsR->GetXaxis()->SetTitle("#Delta R [#mu m]"); TH1D *fHistResidualsPhi = new TH1D("fHistResidualsPhi", "Residuals phi coordinate",100,nMinPhi,nMaxPhi); fHistResidualsPhi->GetXaxis()->SetTitleColor(1); fHistResidualsPhi->GetXaxis()->SetTitle("#Delta #phi [deg.]"); TH1D *fHistResidualsZ = new TH1D("fHistResidualsZ", "Residuals z coordinate",100,nMinZ,nMaxZ); fHistResidualsZ->GetXaxis()->SetTitleColor(1); fHistResidualsZ->GetXaxis()->SetTitle("#Delta z [#mu m]"); TH2D *fHistResidualsRLayer5 = new TH2D("fHistResidualsRLayer5", "Layer 5 - Residuals R;N_{module};N_{ladder}", 22,1,23, 34,500,534); fHistResidualsRLayer5->GetXaxis()->SetTitleColor(1); fHistResidualsRLayer5->SetStats(kFALSE); fHistResidualsRLayer5->GetYaxis()->SetTitleOffset(1.8); fHistResidualsRLayer5->GetXaxis()->SetNdivisions(22); fHistResidualsRLayer5->GetYaxis()->SetNdivisions(34); fHistResidualsRLayer5->GetXaxis()->SetLabelSize(0.03); fHistResidualsRLayer5->GetYaxis()->SetLabelSize(0.03); fHistResidualsRLayer5->GetZaxis()->SetTitleOffset(1.6); fHistResidualsRLayer5->GetZaxis()->SetTitle("#Delta R [#mu m]"); fHistResidualsRLayer5->GetZaxis()->SetRangeUser(nMinR,nMaxR); TH2D *fHistResidualsPhiLayer5 = new TH2D("fHistResidualsPhiLayer5", "Layer 5 - Residuals phi;N_{module};N_{ladder}", 22,1,23, 34,500,534); fHistResidualsPhiLayer5->GetXaxis()->SetTitleColor(1); fHistResidualsPhiLayer5->SetStats(kFALSE); fHistResidualsPhiLayer5->GetYaxis()->SetTitleOffset(1.8); fHistResidualsPhiLayer5->GetXaxis()->SetNdivisions(22); fHistResidualsPhiLayer5->GetYaxis()->SetNdivisions(34); fHistResidualsPhiLayer5->GetXaxis()->SetLabelSize(0.03); fHistResidualsPhiLayer5->GetYaxis()->SetLabelSize(0.03); fHistResidualsPhiLayer5->GetZaxis()->SetTitleOffset(1.6); fHistResidualsPhiLayer5->GetZaxis()->SetTitle("#Delta #phi [deg.]"); fHistResidualsPhiLayer5->GetZaxis()->SetRangeUser(nMinPhi,nMaxPhi); TH2D *fHistResidualsZLayer5 = new TH2D("fHistResidualsZLayer5", "Layer 5 - Residuals Z;N_{module};N_{ladder}", 22,1,23, 34,500,534); fHistResidualsZLayer5->GetXaxis()->SetTitleColor(1); fHistResidualsZLayer5->SetStats(kFALSE); fHistResidualsZLayer5->GetYaxis()->SetTitleOffset(1.8); fHistResidualsZLayer5->GetXaxis()->SetNdivisions(22); fHistResidualsZLayer5->GetYaxis()->SetNdivisions(34); fHistResidualsZLayer5->GetXaxis()->SetLabelSize(0.03); fHistResidualsZLayer5->GetYaxis()->SetLabelSize(0.03); fHistResidualsZLayer5->GetZaxis()->SetTitleOffset(1.6); fHistResidualsZLayer5->GetZaxis()->SetTitle("#Delta z [#mu m]"); fHistResidualsZLayer5->GetZaxis()->SetRangeUser(nMinZ,nMaxZ); TH2D *fHistResidualsYLayer5 = new TH2D("fHistResidualsYLayer5", "Layer 5 - Residuals Y;N_{module};N_{ladder}", 22,1,23, 34,500,534); fHistResidualsYLayer5->GetXaxis()->SetTitleColor(1); fHistResidualsYLayer5->SetStats(kFALSE); fHistResidualsYLayer5->GetYaxis()->SetTitleOffset(1.8); fHistResidualsYLayer5->GetXaxis()->SetNdivisions(22); fHistResidualsYLayer5->GetYaxis()->SetNdivisions(34); fHistResidualsYLayer5->GetXaxis()->SetLabelSize(0.03); fHistResidualsYLayer5->GetYaxis()->SetLabelSize(0.03); fHistResidualsYLayer5->GetZaxis()->SetTitleOffset(1.6); fHistResidualsYLayer5->GetZaxis()->SetTitle("#Delta y [#mu m]"); fHistResidualsYLayer5->GetZaxis()->SetRangeUser(nMinY,nMaxY); TH2D *fHistResidualsXLayer5 = new TH2D("fHistResidualsXLayer5", "Layer 5 - Residuals X;N_{module};N_{ladder}", 22,1,23, 34,500,534); fHistResidualsXLayer5->GetXaxis()->SetTitleColor(1); fHistResidualsXLayer5->SetStats(kFALSE); fHistResidualsXLayer5->GetYaxis()->SetTitleOffset(1.8); fHistResidualsXLayer5->GetXaxis()->SetNdivisions(22); fHistResidualsXLayer5->GetYaxis()->SetNdivisions(34); fHistResidualsXLayer5->GetXaxis()->SetLabelSize(0.03); fHistResidualsXLayer5->GetYaxis()->SetLabelSize(0.03); fHistResidualsXLayer5->GetZaxis()->SetTitleOffset(1.6); fHistResidualsXLayer5->GetZaxis()->SetTitle("#Delta x [#mu m]"); fHistResidualsXLayer5->GetZaxis()->SetRangeUser(nMinX,nMaxX); TH2D *fHistResidualsRLayer6 = new TH2D("fHistResidualsRLayer6", "Layer 6 - Residuals R;N_{module};N_{ladder}", 25,1,26, 38,600,638); fHistResidualsRLayer6->GetXaxis()->SetTitleColor(1); fHistResidualsRLayer6->SetStats(kFALSE); fHistResidualsRLayer6->GetYaxis()->SetTitleOffset(1.8); fHistResidualsRLayer6->GetXaxis()->SetNdivisions(25); fHistResidualsRLayer6->GetYaxis()->SetNdivisions(38); fHistResidualsRLayer6->GetXaxis()->SetLabelSize(0.03); fHistResidualsRLayer6->GetYaxis()->SetLabelSize(0.03); fHistResidualsRLayer6->GetZaxis()->SetTitleOffset(1.6); fHistResidualsRLayer6->GetZaxis()->SetTitle("#Delta R [#mu m]"); fHistResidualsRLayer6->GetZaxis()->SetRangeUser(nMinR,nMaxR); TH2D *fHistResidualsPhiLayer6 = new TH2D("fHistResidualsPhiLayer6", "Layer 6 - Residuals phi;N_{module};N_{ladder}", 25,1,26, 38,600,638); fHistResidualsPhiLayer6->GetXaxis()->SetTitleColor(1); fHistResidualsPhiLayer6->SetStats(kFALSE); fHistResidualsPhiLayer6->GetYaxis()->SetTitleOffset(1.8); fHistResidualsPhiLayer6->GetXaxis()->SetNdivisions(25); fHistResidualsPhiLayer6->GetYaxis()->SetNdivisions(38); fHistResidualsPhiLayer6->GetXaxis()->SetLabelSize(0.03); fHistResidualsPhiLayer6->GetYaxis()->SetLabelSize(0.03); fHistResidualsPhiLayer6->GetZaxis()->SetTitleOffset(1.6); fHistResidualsPhiLayer6->GetZaxis()->SetTitle("#Delta #phi [deg.]"); fHistResidualsPhiLayer6->GetZaxis()->SetRangeUser(nMinPhi,nMaxPhi); TH2D *fHistResidualsZLayer6 = new TH2D("fHistResidualsZLayer6", "Layer 6 - Residuals Z;N_{module};N_{ladder}", 25,1,26, 38,600,638); fHistResidualsZLayer6->GetXaxis()->SetTitleColor(1); fHistResidualsZLayer6->SetStats(kFALSE); fHistResidualsZLayer6->GetYaxis()->SetTitleOffset(1.8); fHistResidualsZLayer6->GetXaxis()->SetNdivisions(25); fHistResidualsZLayer6->GetYaxis()->SetNdivisions(38); fHistResidualsZLayer6->GetXaxis()->SetLabelSize(0.03); fHistResidualsZLayer6->GetYaxis()->SetLabelSize(0.03); fHistResidualsZLayer6->GetZaxis()->SetTitleOffset(1.6); fHistResidualsZLayer6->GetZaxis()->SetTitle("#Delta z [#mu m]"); fHistResidualsZLayer6->GetZaxis()->SetRangeUser(nMinZ,nMaxZ); TH2D *fHistResidualsYLayer6 = new TH2D("fHistResidualsYLayer6", "Layer 6 - Residuals Y;N_{module};N_{ladder}", 25,1,26, 38,600,638); fHistResidualsYLayer6->GetXaxis()->SetTitleColor(1); fHistResidualsYLayer6->SetStats(kFALSE); fHistResidualsYLayer6->GetYaxis()->SetTitleOffset(1.8); fHistResidualsYLayer6->GetXaxis()->SetNdivisions(22); fHistResidualsYLayer6->GetYaxis()->SetNdivisions(34); fHistResidualsYLayer6->GetXaxis()->SetLabelSize(0.03); fHistResidualsYLayer6->GetYaxis()->SetLabelSize(0.03); fHistResidualsYLayer6->GetZaxis()->SetTitleOffset(1.6); fHistResidualsYLayer6->GetZaxis()->SetTitle("#Delta y [#mu m]"); fHistResidualsYLayer6->GetZaxis()->SetRangeUser(nMinY,nMaxY); TH2D *fHistResidualsXLayer6 = new TH2D("fHistResidualsXLayer6", "Layer 6 - Residuals X;N_{module};N_{ladder}", 25,1,26, 38,600,638); fHistResidualsXLayer6->GetXaxis()->SetTitleColor(1); fHistResidualsXLayer6->SetStats(kFALSE); fHistResidualsXLayer6->GetYaxis()->SetTitleOffset(1.8); fHistResidualsXLayer6->GetXaxis()->SetNdivisions(22); fHistResidualsXLayer6->GetYaxis()->SetNdivisions(34); fHistResidualsXLayer6->GetXaxis()->SetLabelSize(0.03); fHistResidualsXLayer6->GetYaxis()->SetLabelSize(0.03); fHistResidualsXLayer6->GetZaxis()->SetTitleOffset(1.6); fHistResidualsXLayer6->GetZaxis()->SetTitle("#Delta x [#mu m]"); fHistResidualsXLayer6->GetZaxis()->SetRangeUser(nMinX,nMaxX); //____________________________________// AliCDBManager *cdb = AliCDBManager::Instance(); cdb->SetDefaultStorage("local://$ALICE_ROOT"); cdb->SetRun(0); AliCDBEntry* entry = cdb->Get("GRP/Geometry/Data"); AliGeomManager::SetGeometry(gGeoManager); TGeoHMatrix* hm = 0; TGeoPNEntry* pne = 0; Double_t* tr; Int_t uid, imodule; const char* symname; Int_t fLayer, fLadder, fModule, fPosition; Double_t fXNominal, fYNominal, fZNominal, fRNominal, fPhiNominal; Double_t fRho, deltaZ, deltaS, deltaPhi; Double_t fZFinal, fRFinal, fPhiFinal; Double_t fXSurvey, fYSurvey, fZSurvey; Double_t fXIdeal, fYIdeal, fZIdeal; Int_t nCounter = 0; for(Int_t i = 0; i < counter; i++) { in >> fLayer >> fLadder >> fModule >> fPosition >> fZNominal >> fRNominal >> fPhiNominal >> fRho >> deltaZ >> deltaS >> deltaPhi >> fZFinal >> fPhiFinal; //fRFinal = fRNominal;// + 1e-04*deltaS; fRFinal = fRNominal; fZSurvey = fZFinal; fXSurvey = TMath::Cos(TMath::Pi()*fPhiFinal/180.)*fRFinal; fYSurvey = TMath::Sin(TMath::Pi()*fPhiFinal/180.)*fRFinal; fXNominal = TMath::Cos(TMath::Pi()*fPhiNominal/180.)*fRNominal; fYNominal = TMath::Sin(TMath::Pi()*fPhiNominal/180.)*fRNominal; imodule = (i < 748) ? i : i - 748; uid = AliGeomManager::LayerToVolUID(fLayer,imodule); symname = AliGeomManager::SymName(uid); pne = gGeoManager->GetAlignableEntryByUID(uid); hm = pne->GetGlobalOrig(); tr = hm->GetTranslation(); Double_t fRaliroot = TMath::Sqrt(TMath::Power(tr[0],2) + TMath::Power(tr[1],2)); Double_t fPhialiroot = (TMath::Pi() + TMath::ATan2(-tr[1],-tr[0]))*180./TMath::Pi(); Double_t fZaliroot = tr[2]; Double_t fYaliroot = tr[1]; Double_t fXaliroot = tr[0]; Double_t residualR, residualPhi, residualZ; //residual=final_report-nominal_report if(mode == 0) { residualX = fXSurvey - fXNominal; residualY = fYSurvey - fYNominal; residualR = fRFinal - fRNominal; residualPhi = fPhiFinal - fPhiNominal; residualZ = fZFinal - fZNominal; cout<Fill(1e+04*residualX); fHistResidualsY->Fill(1e+04*residualY); fHistResidualsR->Fill(1e+04*residualR); fHistResidualsPhi->Fill(residualPhi); fHistResidualsZ->Fill(1e+04*residualZ); if(fLayer == 5) { fHistResidualsXLayer5->Fill(fPosition+1,fLadder,1e+04*residualX); fHistResidualsYLayer5->Fill(fPosition+1,fLadder,1e+04*residualY); fHistResidualsRLayer5->Fill(fPosition+1,fLadder,1e+04*residualR); fHistResidualsPhiLayer5->Fill(fPosition+1,fLadder,residualPhi); fHistResidualsZLayer5->Fill(fPosition+1,fLadder,1e+04*residualZ); }//layer 5 if(fLayer == 6) { fHistResidualsXLayer6->Fill(fPosition+1,fLadder,1e+04*residualX); fHistResidualsYLayer6->Fill(fPosition+1,fLadder,1e+04*residualY); fHistResidualsRLayer6->Fill(fPosition+1,fLadder,1e+04*residualR); fHistResidualsPhiLayer6->Fill(fPosition+1,fLadder,residualPhi); fHistResidualsZLayer6->Fill(fPosition+1,fLadder,1e+04*residualZ); }//layer 6 }//module loop TCanvas *c1 = new TCanvas("c1","Residuals: Survey-Ideal",0,0,600,600); c1->SetFillColor(10); c1->GetFrame()->SetFillColor(10); c1->SetHighLightColor(10); c1->Divide(2,2); c1->cd(1)->SetBottomMargin(.2); c1->cd(1)->SetLeftMargin(.15); c1->cd(1)->SetRightMargin(.2); c1->cd(1)->SetGridx(); c1->cd(1)->SetGridy(); fHistResidualsRLayer5->Draw("colz"); c1->cd(2)->SetBottomMargin(.2); c1->cd(2)->SetLeftMargin(.15); c1->cd(2)->SetRightMargin(.2); c1->cd(2)->SetGridx(); c1->cd(2)->SetGridy(); fHistResidualsPhiLayer5->Draw("colz"); c1->cd(3)->SetBottomMargin(.2); c1->cd(3)->SetLeftMargin(.15); c1->cd(3)->SetRightMargin(.2); c1->cd(3)->SetGridx(); c1->cd(3)->SetGridy(); fHistResidualsRLayer6->Draw("colz"); c1->cd(4)->SetBottomMargin(.2); c1->cd(4)->SetLeftMargin(.15); c1->cd(4)->SetRightMargin(.2); c1->cd(4)->SetGridx(); c1->cd(4)->SetGridy(); fHistResidualsPhiLayer6->Draw("colz"); TCanvas *c2 = new TCanvas("c2","Residuals: Survey-Ideal",0,0,900,600); c2->SetFillColor(10); c2->GetFrame()->SetFillColor(10); c2->SetHighLightColor(10); c2->Divide(3,2); c2->cd(1)->SetBottomMargin(.2); c2->cd(1)->SetLeftMargin(.15); c2->cd(1)->SetRightMargin(.2); c2->cd(1)->SetGridx(); c2->cd(1)->SetGridy(); fHistResidualsZLayer5->Draw("colz"); c2->cd(2)->SetBottomMargin(.2); c2->cd(2)->SetLeftMargin(.15); c2->cd(2)->SetRightMargin(.2); c2->cd(2)->SetGridx(); c2->cd(2)->SetGridy(); fHistResidualsYLayer5->Draw("colz"); c2->cd(3)->SetBottomMargin(.2); c2->cd(3)->SetLeftMargin(.15); c2->cd(3)->SetRightMargin(.2); c2->cd(3)->SetGridx(); c2->cd(3)->SetGridy(); fHistResidualsXLayer5->Draw("colz"); c2->cd(4)->SetBottomMargin(.2); c2->cd(4)->SetLeftMargin(.15); c2->cd(4)->SetRightMargin(.2); c2->cd(4)->SetGridx(); c2->cd(4)->SetGridy(); fHistResidualsZLayer6->Draw("colz"); c2->cd(5)->SetBottomMargin(.2); c2->cd(5)->SetLeftMargin(.15); c2->cd(5)->SetRightMargin(.2); c2->cd(5)->SetGridx(); c2->cd(5)->SetGridy(); fHistResidualsYLayer6->Draw("colz"); c2->cd(6)->SetBottomMargin(.2); c2->cd(6)->SetLeftMargin(.15); c2->cd(6)->SetRightMargin(.2); c2->cd(6)->SetGridx(); c2->cd(6)->SetGridy(); fHistResidualsXLayer6->Draw("colz"); TCanvas *c3 = new TCanvas("c3","Residuals: Survey-Ideal",0,0,900,450); c3->SetFillColor(10); c3->GetFrame()->SetFillColor(10); c3->SetHighLightColor(10); c3->Divide(2,1); c3->cd(1); fHistResidualsR->Draw(); c3->cd(2); fHistResidualsPhi->Draw(); TCanvas *c4 = new TCanvas("c4","Residuals: Survey-Ideal",0,0,900,400); c4->SetFillColor(10); c4->GetFrame()->SetFillColor(10); c4->SetHighLightColor(10); c4->Divide(3,1); c4->cd(1); fHistResidualsZ->Draw(); c4->cd(2); fHistResidualsY->Draw(); c4->cd(3); fHistResidualsX->Draw(); if(mode == 0) { c1->SaveAs("ResidualsMap-RPhi-Report.gif"); c2->SaveAs("ResidualsMap-XYZ-Report.gif"); c3->SaveAs("Residuals-RPhi-Report.gif"); c4->SaveAs("Residuals-XYZ-Report.gif"); } if(mode == 1) { c1->SaveAs("ResidualsMap-RPhi-Nominal.gif"); c2->SaveAs("ResidualsMap-XYZ-Nominal.gif"); c3->SaveAs("Residuals-RPhi-Nominal.gif"); c4->SaveAs("Residuals-XYZ-Nominal.gif"); } if(mode == 2) { c1->SaveAs("ResidualsMap-RPhi-Final.gif"); c2->SaveAs("ResidualsMap-XYZ-Final.gif"); c3->SaveAs("Residuals-RPhi-Final.gif"); c4->SaveAs("Residuals-XYZ-Final.gif"); } }