/* Program reading data prodused by KNOSSOS and produce the root file with results */ #include #include #include #include // // For ROOT #include "TFile.h" #include "TH1F.h" #include "TH2F.h" #include "TF1.h" #include "TCanvas.h" //#include "/home/karavdin/pandaRoot12/mySandbox/myKnossos/constantsLMD.h" #include "/panda/karavdina/myKnossos/constantsLMD.h" // needed for corditate from\out lumi frame calculation #include"PndLmdDim.h" using namespace std; int main(int __argc,char *__argv[]) { std::string inputpar="", outputpar="",outputrootpar="", resnewconst=""; std::string statfile=""; // decode arguments if( __argc>1 && ( strcmp( __argv[1], "-help" ) == 0 || strcmp( __argv[1], "--help" ) == 0 ) ){ std::cout << "This is script for reading data produced by KNOSSOS\n" <<"-stat input [*.txt] file with statistic of tracks used by KNOSSOS\n" <<"-in input [*.par] file, used in simulation \n" <<"-out output [*.txt] file after KNOSSOS \n" <<"-outroot output [*.root] file after KNOSSOS \n" <<"-new [*.par] file to write new constatn \n" <<"Have fun! \n" << std::endl; return 0; } while ((optind < (__argc-1) ) && (__argv[optind][0]=='-')) { bool found=false; std::string sw = __argv[optind]; if (sw=="-in") { optind++; inputpar = __argv[optind]; found=true; } if (sw=="-stat") { optind++; statfile = __argv[optind]; found=true; } if (sw=="-out"){ optind++; outputpar = __argv[optind]; found=true; } if (sw=="-outroot"){ optind++; outputrootpar = __argv[optind]; found=true; } if (sw=="-new"){ optind++; resnewconst = __argv[optind]; found=true; } if (!found){ std::cout<< "Unknown switch: " << __argv[optind] <Fill(i,ntrk_in[i]); haStat_out->Fill(i,ntrk_out[i]); } //END read info about tracks statistic ------------- // Initialize // gROOT->Reset(); // PndLmdDim* lmddim = PndLmdDim::Instance(); // lmddim -> Read_transformation_matrices("/PANDA/pandaroot/macro/lmd/matrices_perfect.txt", false); // lmddim -> Read_transformation_matrices("/PANDA/pandaroot/macro/lmd/matrices_corrected.txt", true); // lmddim -> Read_transformation_matrices("/PANDA/pandaroot/macro/lmd/matrices_corrected.txt", true); double dxin[2][4][5],dyin[2][4][5],dzin[2][4][5],dalphain[2][4][5],dbetain[2][4][5],dgammain[2][4][5]; int ih=0; int ip=0; int im=0; // char tmptxt[20]; std::string tmptxt; bool stopreadcrap=true; char stopletters[3]={'_','s','i'};// search for num_sides // Load files double dxout[2][4][5],dyout[2][4][5],dzout[2][4][5],dalphaout[2][4][5],dbetaout[2][4][5],dgammaout[2][4][5]; double dxerrout[2][4][5],dyerrout[2][4][5],dzerrout[2][4][5],dalphaerrout[2][4][5],dbetaerrout[2][4][5],dgammaerrout[2][4][5]; double dxpullout[2][4][5],dypullout[2][4][5],dzpullout[2][4][5],dalphapullout[2][4][5],dbetapullout[2][4][5],dgammapullout[2][4][5]; std::string tmp; ifstream output; output.open(outputparc.c_str()); cout<<"File with misalignment constants obtained by KNOSSOS: "<>dxout[ih][ip][im]>>tmp>>dxerrout[ih][ip][im]>>dxpullout[ih][ip][im]; output>>dyout[ih][ip][im]>>tmp>>dyerrout[ih][ip][im]>>dypullout[ih][ip][im]; output>>dzout[ih][ip][im]>>tmp>>dzerrout[ih][ip][im]>>dzpullout[ih][ip][im]; output>>dalphaout[ih][ip][im]>>tmp>>dalphaerrout[ih][ip][im]>>dalphapullout[ih][ip][im]; output>>dbetaout[ih][ip][im]>>tmp>>dbetaerrout[ih][ip][im]>>dbetapullout[ih][ip][im]; output>>dgammaout[ih][ip][im]>>tmp>>dgammaerrout[ih][ip][im]>>dgammapullout[ih][ip][im]; // output>>tmp; // cout<<"dxout["<Transform_lmd_local_to_module_side(shift_out,jh,jp,jm,0,true,false); // rot_out = lmddim->Transform_lmd_local_to_module_side(rot_out,jh,jp,jm,0,true,false); // cout<<"shift_out (local)"<>tmptxt; if(tmptxt[3]==stopletters[0] && tmptxt[4]==stopletters[1] && tmptxt[5]==stopletters[2]){ input>>tmptxt; stopreadcrap = false; } // cout<<"tmptxt = "<>tmptxt>>dxin[ih][ip][im]>>tmptxt>>dyin[ih][ip][im]>>tmptxt>>dzin[ih][ip][im]>>tmptxt>>dalphain[ih][ip][im]>>tmptxt>>dbetain[ih][ip][im]>>tmptxt>>dgammain[ih][ip][im]; // cout<<"h,p,m:"<Add(aHisto); // sprintf(histoName2, "mis_after_%d",histID); // TH1F* aHisto2 = new TH1F(histoName2, histoName2, 100, -misal_scales[histID], misal_scales[histID]); // m_mis_aft->Add(aHisto2); // sprintf(histoName3, "pullHisto%d",histID); // TH1F* aHisto3 = new TH1F(histoName3, histoName3, 40, -5, 5); // m_pullHistos->Add(aHisto3); sprintf(histoName, "mis_before_%d",histID); TH2F* aHisto = new TH2F(histoName, histoName, nSides*nSectors*nStation,0,nSides*nSectors*nStation,2e3, -misal_scales[histID], misal_scales[histID]); m_mis_bef->Add(aHisto); sprintf(histoName2, "mis_after_%d",histID); // TH2F* aHisto2 = new TH2F(histoName2, histoName2, nSides*nSectors*nStation,0,32, 100, -0.05*misal_scales[histID], 0.05*misal_scales[histID]); TH2F* aHisto2 = new TH2F(histoName2, histoName2, nSides*nSectors*nStation,0,nSides*nSectors*nStation, 2e3, -misal_scales[histID], misal_scales[histID]); m_mis_aft->Add(aHisto2); sprintf(histoName4, "mis_diff_%d",histID); TH2F* aHisto4 = new TH2F(histoName4, histoName4, nSides*nSectors*nStation,0,nSides*nSectors*nStation, 2e3, -misal_scales[histID], misal_scales[histID]); m_mis_diff->Add(aHisto4); sprintf(histoName3, "pullHisto%d",histID); TH1F* aHisto3 = new TH1F(histoName3, histoName3, 40, -5, 5); m_pullHistos->Add(aHisto3); } for(int jh=0;jhSetFillColor(0); c0->SetBorderMode(0); c0->Divide(2,3); c0->cd(1); ((TH2F*)m_mis_bef->At(0))->GetYaxis()->SetTitle("Misalignment (in cm): #Delta_{X}"); ((TH2F*)m_mis_bef->At(0))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_bef->At(0))->SetMarkerStyle(20); ((TH2F*)m_mis_bef->At(0))->Draw("BOX"); ((TH2F*)m_mis_diff->At(0))->SetMarkerColor(2); ((TH2F*)m_mis_diff->At(0))->SetLineColor(2); ((TH2F*)m_mis_diff->At(0))->SetMarkerStyle(30); ((TH2F*)m_mis_diff->At(0))->Draw("BOX;same"); // ((TH2F*)m_mis_aft->At(0))->SetMarkerColor(3); // ((TH2F*)m_mis_aft->At(0))->SetMarkerStyle(28); // ((TH2F*)m_mis_aft->At(0))->Draw("same"); c0->cd(2); ((TH2F*)m_mis_bef->At(3))->GetYaxis()->SetTitle("Misalignment (in rad): #Delta_{#alpha}"); ((TH2F*)m_mis_bef->At(3))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_bef->At(3))->SetMarkerStyle(20); ((TH2F*)m_mis_bef->At(3))->Draw("BOX"); ((TH2F*)m_mis_diff->At(3))->SetMarkerColor(2); ((TH2F*)m_mis_diff->At(3))->SetLineColor(2); ((TH2F*)m_mis_diff->At(3))->SetMarkerStyle(30); ((TH2F*)m_mis_diff->At(3))->Draw("BOX;same"); // ((TH2F*)m_mis_aft->At(3))->SetMarkerColor(3); // ((TH2F*)m_mis_aft->At(3))->SetMarkerStyle(28); // ((TH2F*)m_mis_aft->At(3))->Draw("same"); c0->cd(3); ((TH2F*)m_mis_bef->At(1))->GetYaxis()->SetTitle("Misalignment (in cm): #Delta_{Y}"); ((TH2F*)m_mis_bef->At(1))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_bef->At(1))->SetMarkerStyle(20); ((TH2F*)m_mis_bef->At(1))->Draw("BOX"); ((TH2F*)m_mis_diff->At(1))->SetMarkerColor(2); ((TH2F*)m_mis_diff->At(1))->SetLineColor(2); ((TH2F*)m_mis_diff->At(1))->SetMarkerStyle(30); ((TH2F*)m_mis_diff->At(1))->Draw("BOX;same"); // ((TH2F*)m_mis_aft->At(1))->SetMarkerColor(3); // ((TH2F*)m_mis_aft->At(1))->SetMarkerStyle(28); // ((TH2F*)m_mis_aft->At(1))->Draw("same"); c0->cd(4); ((TH2F*)m_mis_bef->At(4))->GetYaxis()->SetTitle("Misalignment (in rad): #Delta_{#beta}"); ((TH2F*)m_mis_bef->At(4))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_bef->At(4))->SetMarkerStyle(20); ((TH2F*)m_mis_bef->At(4))->Draw("BOX"); ((TH2F*)m_mis_diff->At(4))->SetMarkerColor(2); ((TH2F*)m_mis_diff->At(4))->SetLineColor(2); ((TH2F*)m_mis_diff->At(4))->SetMarkerStyle(30); ((TH2F*)m_mis_diff->At(4))->Draw("BOX;same"); // ((TH2F*)m_mis_aft->At(4))->SetMarkerColor(3); // ((TH2F*)m_mis_aft->At(4))->SetMarkerStyle(28); // ((TH2F*)m_mis_aft->At(4))->Draw("same"); c0->cd(5); ((TH2F*)m_mis_bef->At(2))->GetYaxis()->SetTitle("Misalignment (in cm): #Delta_{Z}"); ((TH2F*)m_mis_bef->At(2))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_bef->At(2))->SetMarkerStyle(20); ((TH2F*)m_mis_bef->At(2))->Draw("BOX"); ((TH2F*)m_mis_diff->At(2))->SetMarkerColor(2); ((TH2F*)m_mis_diff->At(2))->SetLineColor(2); ((TH2F*)m_mis_diff->At(2))->SetMarkerStyle(30); ((TH2F*)m_mis_diff->At(2))->Draw("BOX;same"); // ((TH2F*)m_mis_aft->At(2))->SetMarkerColor(3); // ((TH2F*)m_mis_aft->At(2))->SetMarkerStyle(28); // ((TH2F*)m_mis_aft->At(2))->Draw("same"); c0->cd(6); ((TH2F*)m_mis_bef->At(5))->GetYaxis()->SetTitle("Misalignment (in rad): #Delta_{#gamma}"); ((TH2F*)m_mis_bef->At(5))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_bef->At(5))->SetMarkerStyle(20); ((TH2F*)m_mis_bef->At(5))->Draw("BOX"); ((TH2F*)m_mis_diff->At(5))->SetMarkerColor(2); ((TH2F*)m_mis_diff->At(5))->SetLineColor(2); ((TH2F*)m_mis_diff->At(5))->SetMarkerStyle(30); ((TH2F*)m_mis_diff->At(5))->Draw("BOX;same"); // ((TH2F*)m_mis_aft->At(5))->SetMarkerColor(3); // ((TH2F*)m_mis_aft->At(5))->SetMarkerStyle(28); // ((TH2F*)m_mis_aft->At(5))->Draw("same"); c0->Update(); TCanvas* c1 = new TCanvas("c1","Misalignments before correction",200,500,700,800); c1->SetFillColor(0); c1->SetBorderMode(0); c1->Divide(2,3); c1->cd(1); ((TH2F*)m_mis_bef->At(0))->GetYaxis()->SetTitle("Misalignment (in cm): #Delta_{X}"); ((TH2F*)m_mis_bef->At(0))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_bef->At(0))->Draw(); c1->cd(2); ((TH2F*)m_mis_bef->At(3))->GetYaxis()->SetTitle("Misalignment (in rad): #Delta_{#alpha}"); ((TH2F*)m_mis_bef->At(3))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_bef->At(3))->Draw(); c1->cd(3); ((TH2F*)m_mis_bef->At(1))->GetYaxis()->SetTitle("Misalignment (in cm): #Delta_{Y}"); ((TH2F*)m_mis_bef->At(1))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_bef->At(1))->Draw(); c1->cd(4); ((TH2F*)m_mis_bef->At(4))->GetYaxis()->SetTitle("Misalignment (in rad): #Delta_{#beta}"); ((TH2F*)m_mis_bef->At(4))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_bef->At(4))->Draw(); c1->cd(5); ((TH1F*)m_mis_bef->At(2))->GetYaxis()->SetTitle("Misalignment (in cm): #Delta_{Z}"); ((TH1F*)m_mis_bef->At(2))->GetYaxis()->SetTitleSize(0.05); ((TH1F*)m_mis_bef->At(2))->Draw(); c1->cd(6); ((TH2F*)m_mis_bef->At(5))->GetYaxis()->SetTitle("Misalignment (in rad): #Delta_{#gamma}"); ((TH2F*)m_mis_bef->At(5))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_bef->At(5))->Draw(); c1->Update(); TCanvas* c2 = new TCanvas("c2","Misalignments after correction",200,500,700,800); c2->SetFillColor(0); c2->SetBorderMode(0); c2->Divide(2,3); c2->cd(1); ((TH2F*)m_mis_aft->At(0))->GetYaxis()->SetTitle("Misalignment (in cm): #Delta_{X}"); ((TH2F*)m_mis_aft->At(0))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_aft->At(0))->Draw(); c2->cd(2); ((TH2F*)m_mis_aft->At(3))->GetYaxis()->SetTitle("Misalignment (in rad): #Delta_{#alpha}"); ((TH2F*)m_mis_aft->At(3))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_aft->At(3))->Draw(); c2->cd(3); ((TH2F*)m_mis_aft->At(1))->GetYaxis()->SetTitle("Misalignment (in cm): #Delta_{Y}"); ((TH2F*)m_mis_aft->At(1))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_aft->At(1))->Draw(); c2->cd(4); ((TH2F*)m_mis_aft->At(4))->GetYaxis()->SetTitle("Misalignment (in rad): #Delta_{#beta}"); ((TH2F*)m_mis_aft->At(4))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_aft->At(4))->Draw(); c2->cd(5); ((TH2F*)m_mis_aft->At(2))->GetYaxis()->SetTitle("Misalignment (in cm): #Delta_{Z}"); ((TH2F*)m_mis_aft->At(2))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_aft->At(2))->Draw(); c2->cd(6); ((TH2F*)m_mis_aft->At(5))->GetYaxis()->SetTitle("Misalignment (in rad): #Delta_{#gamma}"); ((TH2F*)m_mis_aft->At(5))->GetYaxis()->SetTitleSize(0.05); ((TH2F*)m_mis_aft->At(5))->Draw(); c2->Update(); TCanvas* c3 = new TCanvas("c3","Pulls",200,500,700,800); c3->SetFillColor(0); c3->SetBorderMode(0); c3->Divide(2,3); c3->cd(1); ((TH1F*)m_pullHistos->At(0))->GetXaxis()->SetTitle("Pull value: #Delta_{X}"); ((TH1F*)m_pullHistos->At(0))->GetXaxis()->SetTitleSize(0.05); ((TH1F*)m_pullHistos->At(0))->Draw(); c3->cd(2); ((TH1F*)m_pullHistos->At(3))->GetXaxis()->SetTitle("Pull value: #Delta_{#alpha}"); ((TH1F*)m_pullHistos->At(3))->GetXaxis()->SetTitleSize(0.05); ((TH1F*)m_pullHistos->At(3))->Draw(); c3->cd(3); ((TH1F*)m_pullHistos->At(1))->GetXaxis()->SetTitle("Pull value: #Delta_{Y}"); ((TH1F*)m_pullHistos->At(1))->GetXaxis()->SetTitleSize(0.05); ((TH1F*)m_pullHistos->At(1))->Draw(); c3->cd(4); ((TH1F*)m_pullHistos->At(4))->GetXaxis()->SetTitle("Pull value: #Delta_{#beta}"); ((TH1F*)m_pullHistos->At(4))->GetXaxis()->SetTitleSize(0.05); ((TH1F*)m_pullHistos->At(4))->Draw(); c3->cd(5); ((TH1F*)m_pullHistos->At(2))->GetXaxis()->SetTitle("Pull value: #Delta_{Z}"); ((TH1F*)m_pullHistos->At(2))->GetXaxis()->SetTitleSize(0.05); ((TH1F*)m_pullHistos->At(2))->Draw(); c3->cd(6); ((TH1F*)m_pullHistos->At(5))->GetXaxis()->SetTitle("Pull value: #Delta_{#gamma}"); ((TH1F*)m_pullHistos->At(5))->GetXaxis()->SetTitleSize(0.05); ((TH1F*)m_pullHistos->At(5))->Draw(); c3->Update(); TCanvas* c4 = new TCanvas("c4","Stat",200,500,700,800); c4->SetFillColor(0); c4->SetBorderMode(0); c4->Divide(1,2); c4->cd(1); haStat_in->SetMarkerStyle(20); haStat_in->SetMarkerSize(2.5); haStat_in->Draw(); c4->cd(2); haStat_out->SetMarkerStyle(21); haStat_out->SetMarkerSize(2.5); haStat_out->Draw(); c4->Update(); c0->Write(); c1->Write(); c2->Write(); c3->Write(); c4->Write(); haStat_in->Write(); haStat_out->Write(); fi->Close(); cout<<"Now we'll write file for LUMI rec"<