FEDRA emulsion software from the OPERA Collaboration
RecDispMC_Profiles.C File Reference

Classes

struct  BRICK
 

Functions

void BookHistsV ()
 
void CalcCovMS ()
 
void ClearHistsV ()
 
void DrawHistsV ()
 
void g1 (int nv=1)
 
void gen_segs_v (BRICK &b, EdbVertex &vedb)
 
void gen_tracks_v (EdbVertex &vedb)
 
void gen_v (BRICK &b, int nv)
 
void graphs ()
 
void gv (int n=1)
 
void makeVolumeOPERAn (BRICK &b, EdbPatternsVolume *v)
 
void rec_v (EdbVertex &vedb)
 
Double_t roadp (Double_t *x, Double_t *par)
 
void run ()
 

Variables

EdbPVRecali =0
 
BRICK brick
 
double CovMS [dim2]
 
TCanvascv = 0
 
TCanvascv1 = 0
 
TCanvascv2 = 0
 
TCanvascv4 = 0
 
TCanvascvg1 = 0
 
TCanvascvg2 = 0
 
TCanvascvg3 = 0
 
TCanvascvg4 = 0
 
TCanvascvg5 = 0
 
TCanvascvg6 = 0
 
double DE
 
double DE_MC
 
float dpp = 0.
 
brick dz = 1300.
 
int eloss_flag = 0
 
EdbPVGengener = 0
 
TH1F * hp [9] = {0,0,0,0,0,0,0,0,0}
 
TProfile * hpp [4] = {0,0}
 
brick lim [0] = -50000.
 
bool linfit = false
 
float momentum = 4000.
 
double * pCovMS = &CovMS[0]
 
brick plates = 56
 
const unsigned long int PrintN = 100
 
float * pxl = &xl[0]
 
float * pzl = &zl[0]
 
EdbScanCondscanCond =0
 
float seg_s [4] = {.5,.5,0.0015,0.0015}
 
float seg_zero [4] = {.0,.0,.0,.0}
 
EdbTrackPti [10] = {0,0,0,0,0,0,0,0,0,0}
 
EdbVertexvedb
 
float vxyz [3] = {0., 0., -1000.}
 
brick X0 = 5810.
 
float xl [dim]
 
float Xn [5] = {2., 3., 5., 10., 20.}
 
float Xnlin [5] = {2.2, 3.2, 5.2, 10.2, 20.2}
 
float Yerrtx [5][5]
 
float Yerrx [5][5]
 
float Yerrxlin [5][5]
 
float Yrmstx [5][5]
 
float Yrmsx [5][5]
 
float Ysigtx [5][5]
 
float Ysigx [5][5]
 
brick z0 = 0.
 
float zl [dim]
 

Function Documentation

◆ BookHistsV()

void BookHistsV ( )

573{
574 if (!hp[0]) hp[0] = new TH1F("Hist_Vt_DtrackX","Track Delta X, microns",100,-5.,+5.);
575 if (!hp[1]) hp[1] = new TH1F("Hist_Vt_DtrackTX","Track Delta TX, rad",100,-0.010,+0.010);
576 if (!hp[2]) hp[2] = new TH1F("Hist_Vt_DsegX","Segment Delta X, microns",100,-5.,+5.);
577 if (!hp[3]) hp[3] = new TH1F("Hist_Vt_DsegTX","Segment Delta TX, rad",100,-0.050,+0.050);
578 if (!hp[4]) hp[4] = new TH1F("Hist_Vt_StrackX","Track Sigma X, microns",100,0.,+5.);
579 if (!hp[5]) hp[5] = new TH1F("Hist_Vt_StrackTX","Track Sigma TX, rad",100,0.,+0.010);
580 if (!hp[6]) hp[6] = new TH1F("Hist_Vt_Prob","Chi Square Probability",26,0.,1.04);
581 if (!hpp[0]) hpp[0] = new TProfile("Hist_DX_Prof","Delta X vs Z",brick.plates,0.,brick.plates,-1000.,+1000.,"s");
582 if (!hpp[1]) hpp[1] = new TProfile("Hist_SX_Prof","Sigma X vs Z",brick.plates,0.,brick.plates,-1000.,+1000.," ");
583 if (!hpp[2]) hpp[2] = new TProfile("Hist_DXP_Prof","Pull quantities X vs Z",brick.plates,0.,brick.plates,-5.,+5.,"s");
584 if (!hpp[3]) hpp[3] = new TProfile("Hist_DTXP_Prof","Pull quantities TX vs Z",brick.plates,0.,brick.plates,-5.,+5.,"s");
585 hpp[0]->SetStats(kFALSE);
586 hpp[1]->SetStats(kFALSE);
587 hpp[2]->SetStats(kFALSE);
588 hpp[3]->SetStats(kFALSE);
589}
TProfile * hpp[4]
Definition: RecDispMC_Profiles.C:50
TH1F * hp[9]
Definition: RecDispMC_Profiles.C:49
BRICK brick
Definition: RecDispMC_Profiles.C:24
int plates
Definition: RecDispMC.C:96

◆ CalcCovMS()

void CalcCovMS ( )

719{
720 int i, j, l;
721 int n = brick.plates;
722 int m = n*2;
723 int plusi = 0, plusj = 0, emul = 0;
724 Double_t xi, xj, dx, dxi, dxj, xg1, xg2;
725 Double_t sx2 = seg_s[0]*seg_s[0]+seg_s[2]*seg_s[2]*150.*150.;
726 Double_t sxc = seg_s[0]*seg_s[0]-seg_s[2]*seg_s[2]*150.*150.;
727 Double_t stx2 = seg_s[2]*seg_s[2];
728 Double_t cov = 0., len = 0., X = 0.;
729 Double_t beta = momentum/TMath::Sqrt(momentum*momentum+0.139*0.139);
730 Double_t h = 0.0141/(momentum*beta);
731 h = h*h;
732 Double_t H = 0.;
733
734 for (i = 0; i<m*m; i++)
735 {
736 CovMS[i] = 0.;
737 }
738
739 for (i = 0; i<m; i++)
740 {
741 plusi = i%2;
742 xi = brick.z0 + brick.dz*(i/2);
743 if (plusi) xi = xi + 150.;
744 else xi = xi - 150.;
745 for (j = 0; j<m; j++)
746 {
747 plusj = j%2;
748 xj = brick.z0 + brick.dz*(j/2);
749 if (plusj) xj = xj + 150.;
750 else xj = xj - 150.;
751 cov = 0.;
752 xg1 = 0.;
753 xg2 = 0.;
754 for (l = 0; l<m; l++)
755 {
756 emul = 1 - l%2;
757 if (emul)
758 {
759 len = 300.;
760 X = 286000.;
761 H = h/X;
762 }
763 else
764 {
765 len = 1000.;
766 X = 5600.;
767 H = h/X;
768 }
769 xg2 = xg1 + len;
770 if (xi <= xg1 ) break;
771 if (xj <= xg1 ) break;
772 if (xi > xg1 && xi <= xg2 && xj > xg1 && xj <=xg2)
773 {
774 dx = xi - xg1;
775 cov += 0.5*H*dx*dx*(xj - xg1 - 0.33333*dx);
776 }
777 else if (xi > xg1 && xi <= xg2 && xj > xg2)
778 {
779 dx = xi - xg1;
780 cov += 0.5*H*dx*dx*(len - 0.33333*dx + (xj - xg2));
781 }
782 else if (xj > xg1 && xj <= xg2 && xi > xg2)
783 {
784 dx = xj - xg1;
785 cov += 0.5*H*dx*dx*(len - 0.33333*dx + (xi - xg2));
786 }
787 else if (xi >= xg2 && xj >= xg2)
788 {
789 dxi = xi - xg2;
790 dxj = xj - xg2;
791 cov += H*len*(0.33333*len*len + 0.5*len*(dxi+dxj) + dxi*dxj);
792 }
793 xg1 = xg2;
794 }
795 if (i == j)
796 {
797 cov += sx2;
798 }
799 else if ( TMath::Abs(xi-xj) <= 305. )
800 {
801 cov += sxc;
802 }
803 CovMS[m*i+j] = cov;
804 }
805 }
806}
double CovMS[dim2]
Definition: RecDispMC_Profiles.C:59
float momentum
Definition: RecDispMC_Profiles.C:37
float seg_s[4]
Definition: RecDispMC_Profiles.C:39
Double_t X
Definition: tlg2couples.C:76
float z0
Definition: RecDispMC.C:97
float dz
Definition: RecDispMC.C:98

◆ ClearHistsV()

void ClearHistsV ( )

707{
708 for(int i=0; i<7; i++) {
709// if (hp[i]) hp[i]->Clear();
710 if (hp[i]) hp[i]->Reset();
711 }
712 for(int i=0; i<4; i++) {
713// if (hpp[i]) hpp[i]->Clear();
714 if (hpp[i]) hpp[i]->Reset();
715 }
716}

◆ DrawHistsV()

void DrawHistsV ( )

615{
616 char title[80];
617 if (!cv)
618 {
619 cv = new TCanvas("cv", "Track parameters", 500, 0, 600, 750);
620 cv->Divide(2,3);
621 }
622 else
623 {
624 cv->Clear();
625 cv->Divide(2,3);
626 }
627 for(int i=0; i<6; i++) {
628 cv->cd(i+1);
629 if (hp[i]) hp[i]->Draw();
630 }
631 cv->Update();
632 if (!linfit)
633 {
634// double xr = 7.;
635// double pr = 0.;
636// printf("roadp(%4.1f) = %f\n", xr, roadp(&xr, &pr));
637 TF1 *f = new TF1("roadp", roadp, 0., (double)brick.plates, 0);
638// f->SetParameters(&pr);
639 f->SetMinimum(0.);
640 if (!cv1)
641 {
642 cv1 = new TCanvas("cv1", "Error road", 0, 400, 500, 350);
643// cv1->Divide(1,2);
644 }
645 else
646 {
647 cv1->Clear();
648// cv1->Divide(1,2);
649 }
650 cv1->cd();
651 sprintf(title, "Track momentum %d GeV/c", (int)momentum);
652 hpp[0]->SetTitle(title);
653 hpp[0]->SetXTitle("Track segment number");
654 hpp[0]->SetYTitle("Coordinate accuracy, microns");
655 hpp[0]->SetLineColor(2);
656 hpp[0]->Draw();
657 hpp[1]->SetLineColor(3);
658 hpp[1]->Draw("HISTCSAME");
659 f->SetLineColor(4);
660 f->Draw("LSAME");
661
662 if (!cv4)
663 {
664 cv4 = new TCanvas("cv4", "Pull quantities", 0, 400, 500, 350);
665 cv4->Divide(1,2);
666 }
667 else
668 {
669 cv4->Clear();
670 cv4->Divide(1,2);
671 }
672 cv4->cd(1);
673 sprintf(title, "Coordinate pull quantity, track momentum %d GeV/c", (int)momentum);
674 hpp[2]->SetTitle(title);
675 hpp[2]->SetXTitle("Track segment number");
676 hpp[2]->SetYTitle("Pull quantity mean and sigma");
677 hpp[2]->SetLineColor(2);
678 hpp[2]->SetMinimum(-1.5);
679 hpp[2]->SetMaximum(+1.5);
680 hpp[2]->Draw();
681 cv4->cd(2);
682 sprintf(title, "Slope pull quantity, track momentum %d GeV/c", (int)momentum);
683 hpp[3]->SetTitle(title);
684 hpp[3]->SetXTitle("Track segment number");
685 hpp[3]->SetYTitle("Pull quantity mean and sigma");
686 hpp[3]->SetLineColor(2);
687 hpp[3]->SetMinimum(-1.5);
688 hpp[3]->SetMaximum(+1.5);
689 hpp[3]->Draw();
690 }
691 if (!cv2)
692 {
693 cv2 = new TCanvas("cv2", "Probability", 0, 400, 500, 350);
694 cv2->cd();
695 if (hp[6]) hp[6]->Draw();
696 }
697 else
698 {
699 cv2->Clear();
700 cv2->cd();
701 if (hp[6]) hp[6]->Draw();
702 }
703// cv2->Update();
704}
FILE * f
Definition: RecDispMC.C:150
bool linfit
Definition: RecDispMC_Profiles.C:56
TCanvas * cv4
Definition: RecDispMC_Profiles.C:63
Double_t roadp(Double_t *x, Double_t *par)
Definition: RecDispMC_Profiles.C:592
TCanvas * cv1
Definition: RecDispMC_Profiles.C:63
TCanvas * cv2
Definition: RecDispMC_Profiles.C:63
TCanvas * cv
Definition: RecDispMC_Profiles.C:63
new TCanvas()

◆ g1()

void g1 ( int  nv = 1)

369{
370 //generation of 1 event
371
372 gen_v(brick, nv);
373
374 for(int i=0; i<nv; i++) {
375 vedb = (EdbVertex *)(ali->eVTX->At(i));
376 rec_v(*vedb);
377 }
378
379 ali->eVTX->Clear();
380 ali->eTracks->Clear();
381 ali->Clear();
382
383 delete vedb;
384 vedb = 0;
385}
EdbVertex * vedb
Definition: RecDispMC_Profiles.C:52
EdbPVRec * ali
Definition: RecDispMC_Profiles.C:12
void gen_v(BRICK &b, int nv)
Definition: RecDispMC_Profiles.C:388
void rec_v(EdbVertex &vedb)
Definition: RecDispMC_Profiles.C:467
TObjArray * eVTX
array of vertex
Definition: EdbPVRec.h:162
TObjArray * eTracks
Definition: EdbPVRec.h:161
Definition: EdbVertex.h:69

◆ gen_segs_v()

void gen_segs_v ( BRICK b,
EdbVertex vedb 
)
440{
441 // generation of basetracks for secondary tracks
442
443 unsigned int seed = 0;
444 float zlim[2];
445 zlim[0] = -1000.;
446 zlim[1] = 130000.;
447 EdbTrackP *tr;
448
449 int nt = vedb.N();
450 for(int ip=0; ip<nt; ip++) {
451 tr = vedb.GetTrack(ip);
452 tr->SetFlag(1000+ip);
453 ti[ip] = new EdbTrackP();
454 ti[ip]->Set(tr->ID(),tr->X(),tr->Y(),tr->TX(),tr->TY(),tr->W(),tr->Flag());
455 ti[ip]->SetZ(tr->Z());
456 ti[ip]->SetP(tr->P());
457 ti[ip]->SetM(tr->M());
458 seed = gRandom->GetSeed();
459 gener->TrackMC( zlim, b.lim, seg_s, *tr, eloss_flag, 0.);
460 gRandom->SetSeed(seed);
461 gener->TrackMC( zlim, b.lim, seg_zero, *ti[ip], eloss_flag, 0.);
462 }
463}
float seg_zero[4]
Definition: RecDispMC_Profiles.C:40
int eloss_flag
Definition: RecDispMC_Profiles.C:35
EdbPVGen * gener
Definition: RecDispMC_Profiles.C:13
EdbTrackP * ti[10]
Definition: RecDispMC_Profiles.C:54
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
void TrackMC(float zlim[2], float lim[4], EdbTrackP &tr, int eloss_flag=0, float PGap=0.)
Definition: EdbPVGen.cxx:389
void SetZ(float z)
Definition: EdbSegP.h:125
void SetP(float p)
Definition: EdbSegP.h:133
void Set(int id, float x, float y, float tx, float ty, float w, int flag)
Definition: EdbSegP.h:87
Definition: EdbPattern.h:113
void SetM(float m)
Definition: EdbPattern.h:154
Int_t N() const
Definition: EdbVertex.h:121
EdbTrackP * GetTrack(int i)
Definition: EdbVertex.h:141
float lim[4]
Definition: RecDispMC.C:99

◆ gen_tracks_v()

void gen_tracks_v ( EdbVertex vedb)
416{
417 // generation of track parameters according to phase space
418
419 EdbTrackP *tr[10];
420 float x = 0.;
421 float y = 0.;
422 float z = 0.;
423 float tx = 0.;
424 float ty = 0.;
425
426 for(int ip=0; ip<1; ip++) {
427 tr[ip] = new EdbTrackP();
428 tr[ip]->Set(ip, x, y, tx, ty, 1, 0);
429 tr[ip]->SetZ(z);
430 tr[ip]->SetP(momentum);
431 tr[ip]->SetM(0.139);
432 vedb.AddTrack(tr[ip], 0);
433 ali->AddTrack(tr[ip]);
434 }
435
436}
void AddTrack(EdbTrackP *track)
Definition: EdbPVRec.h:246

◆ gen_v()

void gen_v ( BRICK b,
int  nv 
)

389{
390 // event generation
391
392 for(int i=0; i<nv; i++) {
393 vedb = new EdbVertex();
394 vedb->SetXYZ(vxyz[0],vxyz[1], vxyz[2]);
395 ali->eVTX->Add(vedb);
397 gen_segs_v(b, *vedb);
398 }
399
400}
void gen_segs_v(BRICK &b, EdbVertex &vedb)
Definition: RecDispMC_Profiles.C:439
void gen_tracks_v(EdbVertex &vedb)
Definition: RecDispMC_Profiles.C:415
float vxyz[3]
Definition: RecDispMC_Profiles.C:47
void SetXYZ(float x, float y, float z)
Definition: EdbVertex.h:157

◆ graphs()

void graphs ( )
862{
863 char legt[64];
864 int imom[5] = {1, 2, 4, 6, 1000};
865 TGraph *gsigx[5];
866 TGraph *grmsx[5];
867 TGraph *gerrx[5];
868 TGraph *gerrxlin[5];
869 TGraph *gsigtx[5];
870 TGraph *grmstx[5];
871 TGraph *gerrtx[5];
872 TLegend *lx = new TLegend(0.15,0.15,0.4,0.4);
873 TLegend *ltx = new TLegend(0.6,0.16,0.85,0.41);
874 for (int i=0; i<5; i++)
875 {
876 gsigx[i] = new TGraph(5, &Xn[0], &Ysigx[i][0]);
877 gsigx[i]->SetMinimum(0.);
878 gsigx[i]->SetMaximum(0.6);
879 gsigx[i]->SetTitle("Track coordinate sigma");
880 gsigx[i]->SetMarkerStyle(20);
881 gsigx[i]->SetMarkerColor(i+2);
882 sprintf(legt, "%4d GeV/c", imom[i]);
883 lx->AddEntry(gsigx[i], legt, "p");
884 ltx->AddEntry(gsigx[i], legt, "p");
885 gsigx[i]->GetXaxis()->SetTitle("Track lenght (in segments)");
886 gsigx[i]->GetYaxis()->SetTitle("Sigma, microns");
887 gsigx[i]->SetLineColor(i+2);
888
889 grmsx[i] = new TGraph(5, &Xn[0], &Yrmsx[i][0]);
890 grmsx[i]->SetMinimum(0.);
891 grmsx[i]->SetMaximum(0.6);
892 grmsx[i]->SetTitle("Track coordinate RMS");
893 grmsx[i]->SetMarkerStyle(20);
894 grmsx[i]->SetMarkerColor(i+2);
895 grmsx[i]->GetXaxis()->SetTitle("Track lenght (in segments)");
896 grmsx[i]->GetYaxis()->SetTitle("RMS, microns");
897 grmsx[i]->SetLineColor(i+2);
898
899 gerrx[i] = new TGraph(5, &Xn[0], &Yerrx[i][0]);
900 gerrx[i]->SetMinimum(0.);
901 gerrx[i]->SetMaximum(0.6);
902 gerrx[i]->SetTitle("Track coordinate error");
903 gerrx[i]->SetMarkerStyle(20);
904 gerrx[i]->SetMarkerColor(i+2);
905 gerrx[i]->GetXaxis()->SetTitle("Track lenght (in segments)");
906 gerrx[i]->GetYaxis()->SetTitle("Error, microns");
907 gerrx[i]->SetLineColor(i+2);
908
909 gerrxlin[i] = new TGraph(5, &Xnlin[0], &Yerrxlin[i][0]);
910 gerrxlin[i]->SetMinimum(0.);
911 gerrxlin[i]->SetMaximum(0.6);
912 gerrxlin[i]->SetTitle("Track coordinate sigma");
913 gerrxlin[i]->SetMarkerStyle(22);
914 gerrxlin[i]->SetMarkerColor(1);
915 gerrxlin[i]->GetXaxis()->SetTitle("Track lenght (in segments)");
916 gerrxlin[i]->GetYaxis()->SetTitle("Sigma, microns");
917
918 gsigtx[i] = new TGraph(5, &Xn[0], &Ysigtx[i][0]);
919 gsigtx[i]->SetMinimum(0.);
920 gsigtx[i]->SetMaximum(1.6);
921 gsigtx[i]->SetTitle("Track slope sigma");
922 gsigtx[i]->SetMarkerStyle(20);
923 gsigtx[i]->SetMarkerColor(i+2);
924 gsigtx[i]->GetXaxis()->SetTitle("Track lenght (in segments)");
925 gsigtx[i]->GetYaxis()->SetTitle("Sigma, mrad");
926 gsigtx[i]->SetLineColor(i+2);
927
928 grmstx[i] = new TGraph(5, &Xn[0], &Yrmstx[i][0]);
929 grmstx[i]->SetMinimum(0.);
930 grmstx[i]->SetMaximum(1.6);
931 grmstx[i]->SetTitle("Track slope RMS");
932 grmstx[i]->SetMarkerStyle(20);
933 grmstx[i]->SetMarkerColor(i+2);
934 grmstx[i]->GetXaxis()->SetTitle("Track lenght (in segments)");
935 grmstx[i]->GetYaxis()->SetTitle("RMS, mrad");
936 grmstx[i]->SetLineColor(i+2);
937
938 gerrtx[i] = new TGraph(5, &Xn[0], &Yerrtx[i][0]);
939 gerrtx[i]->SetMinimum(0.);
940 gerrtx[i]->SetMaximum(1.6);
941 gerrtx[i]->SetTitle("Track slope error");
942 gerrtx[i]->SetMarkerStyle(20);
943 gerrtx[i]->SetMarkerColor(i+2);
944 gerrtx[i]->GetXaxis()->SetTitle("Track lenght (in segments)");
945 gerrtx[i]->GetYaxis()->SetTitle("Error, mrad");
946 gerrtx[i]->SetLineColor(i+2);
947 }
948 sprintf(legt, "Global fit");
949 lx->AddEntry(gerrxlin[0], legt, "p");
950 if (!cvg1 && 0)
951 {
952 cvg1 = new TCanvas("cvg1", "Track coordinate sigma, microns", 0, 400, 500, 350);
953 }
954 else
955 {
956 if (cvg1) cvg1->Clear();
957 }
958 if (cvg1) cvg1->cd(1);
959 for (int i=0; i<5 && cvg1; i++)
960 {
961 if (i == 0)
962 {
963 gsigx[i]->Draw("CPA");
964 lx->Draw();
965 }
966 else
967 gsigx[i]->Draw("CPSAME");
968 }
969 if (!cvg2 && 0)
970 {
971 cvg2 = new TCanvas("cvg2", "Track coordinate RMS, microns", 0, 400, 500, 350);
972 }
973 else
974 {
975 if (cvg2) cvg2->Clear();
976 }
977 if (cvg2) cvg2->cd(1);
978 for (int i=0; i<5 && cvg2; i++)
979 {
980 if (i == 0)
981 {
982 grmsx[i]->Draw("CPA");
983 lx->Draw();
984 }
985 else
986 grmsx[i]->Draw("CPSAME");
987 }
988 if (!cvg3 && 1)
989 {
990 cvg3 = new TCanvas("cvg3", "Track oordinate error, microns", 0, 400, 500, 600);
991 }
992 else
993 {
994 if (cvg3) cvg3->Clear();
995 }
996 if (cvg3) cvg3->cd(1);
997 for (int i=0; i<5 && cvg3; i++)
998 {
999 if (i == 0)
1000 {
1001 gerrx[i]->Draw("CPA");
1002 gerrxlin[i]->Draw("PSAME");
1003 lx->Draw();
1004 }
1005 else
1006 {
1007 gerrx[i]->Draw("CPSAME");
1008 gerrxlin[i]->Draw("PSAME");
1009 }
1010 }
1011
1012 if (!cvg4 && 0)
1013 {
1014 cvg4 = new TCanvas("cvg4", "Track slope sigma, mrad", 0, 400, 500, 350);
1015 }
1016 else
1017 {
1018 if (cvg4) cvg4->Clear();
1019 }
1020 if (cvg4) cvg4->cd(1);
1021 for (int i=0; i<5 && cvg4; i++)
1022 {
1023 if (i == 0)
1024 {
1025 gsigtx[i]->Draw("CPA");
1026 lxt->Draw();
1027 }
1028 else
1029 gsigtx[i]->Draw("CPSAME");
1030 }
1031
1032 if (!cvg5 && 0)
1033 {
1034 cvg5 = new TCanvas("cvg5", "Track slope RMS, mrad", 0, 400, 500, 350);
1035 }
1036 else
1037 {
1038 if (cvg5) cvg5->Clear();
1039 }
1040 if (cvg5) cvg5->cd(1);
1041 for (int i=0; i<5 && cvg5; i++)
1042 {
1043 if (i == 0)
1044 {
1045 grmstx[i]->Draw("CPA");
1046 ltx->Draw();
1047 }
1048 else
1049 grmstx[i]->Draw("CPSAME");
1050 }
1051
1052 if (!cvg6 && 1)
1053 {
1054 cvg6 = new TCanvas("cvg6", "Track slope error, mrad", 0, 400, 500, 350);
1055 }
1056 else
1057 {
1058 if (cvg6) cvg6->Clear();
1059 }
1060 if (cvg6) cvg6->cd(1);
1061 for (int i=0; i<5 && cvg6; i++)
1062 {
1063 if (i == 0)
1064 {
1065 gerrtx[i]->Draw("CPA");
1066 ltx->Draw();
1067 }
1068 else
1069 gerrtx[i]->Draw("CPSAME");
1070 }
1071}
float Yerrxlin[5][5]
Definition: RecDispMC_Profiles.C:829
float Ysigx[5][5]
Definition: RecDispMC_Profiles.C:808
TCanvas * cvg2
Definition: RecDispMC_Profiles.C:64
float Yrmsx[5][5]
Definition: RecDispMC_Profiles.C:815
float Ysigtx[5][5]
Definition: RecDispMC_Profiles.C:836
float Yerrx[5][5]
Definition: RecDispMC_Profiles.C:822
float Xn[5]
Definition: RecDispMC_Profiles.C:859
TCanvas * cvg5
Definition: RecDispMC_Profiles.C:64
TCanvas * cvg4
Definition: RecDispMC_Profiles.C:64
TCanvas * cvg3
Definition: RecDispMC_Profiles.C:64
float Xnlin[5]
Definition: RecDispMC_Profiles.C:860
float Yrmstx[5][5]
Definition: RecDispMC_Profiles.C:843
float Yerrtx[5][5]
Definition: RecDispMC_Profiles.C:850
TCanvas * cvg6
Definition: RecDispMC_Profiles.C:64
TCanvas * cvg1
Definition: RecDispMC_Profiles.C:64

◆ gv()

void gv ( int  n = 1)
309{
310 // main steering routine for K->3Pi vertex generation&reconstruction test
311
312 timespec_t t0, t;
313 double dt;
314
315 BookHistsV();
316 if (linfit) CalcCovMS();
317
318 ali = new EdbPVRec();
320
322
323 scanCond = new EdbScanCond();
324
325 scanCond->SetSigma0( .5, .5,.0015,.0015 ); // sigma0 "x,y,tx,ty" at 0 angle
326 scanCond->SetDegrad( 0.1 ); // sigma(tx) = sigma0*(1+degrad*tx)
327 scanCond->SetBins(8,8,4,4); // bins in [sigma] for checks
328 scanCond->SetPulsRamp0( 1.,1. ); // in range (Pmin:Pmax) Signal/All is nearly linear
329 scanCond->SetPulsRamp04( 1.,1. ); //
330 scanCond->SetChi2Max(2.7);
331 scanCond->SetChi2PMax(2.7);
333 scanCond->SetName("Prototype_OPERA_basetrack");
334
336 ali->eVTX = new TObjArray();
337
338 gener = new EdbPVGen();
340 gener->eVTX = new TObjArray(1000);
342
343 TTimeStamp ts=TTimeStamp();
344 t0=ts.GetTimeSpec();
345 for(int i=1; i<=n; i++) {
346 g1(1);
347 if (i)
348 {
349 if (!(i%PrintN))
350 {
351 ts=TTimeStamp();
352 t=ts.GetTimeSpec();
353 dt=(t.tv_sec-t0.tv_sec)*1000000000.+(t.tv_nsec-t0.tv_nsec);
354 printf("%d events generated in %.4f sec (%.1f msec per event)\n",
355 i,dt/1000000000.,dt/(double)i/1000000.);
356 }
357 }
358 }
359 DrawHistsV();
360 delete ali;
361 ali = 0;
362 delete gener;
363 gener = 0;
364}
const unsigned long int PrintN
Definition: RecDispMC_Profiles.C:44
void DrawHistsV()
Definition: RecDispMC_Profiles.C:614
void CalcCovMS()
Definition: RecDispMC_Profiles.C:718
void makeVolumeOPERAn(BRICK &b, EdbPatternsVolume *v)
Definition: RecDispMC_Profiles.C:403
EdbScanCond * scanCond
Definition: RecDispMC_Profiles.C:14
void g1(int nv=1)
Definition: RecDispMC_Profiles.C:368
void BookHistsV()
Definition: RecDispMC_Profiles.C:572
EdbPatternsVolume * vol
Definition: RecDispNU.C:116
Definition: EdbPVGen.h:18
void SetVolume(EdbPatternsVolume *pv)
Definition: EdbPVGen.h:34
TObjArray * eVTX
Definition: EdbPVGen.h:28
void SetScanCond(EdbScanCond *scan)
Definition: EdbPVGen.h:35
Definition: EdbPVRec.h:148
void SetScanCond(EdbScanCond *scan)
Definition: EdbPVRec.h:171
Definition: EdbPattern.h:334
Definition: EdbScanCond.h:10
void SetPulsRamp0(float p1, float p2)
Definition: EdbScanCond.h:74
void SetChi2Max(float chi2)
Definition: EdbScanCond.h:83
void SetDegrad(float d)
Definition: EdbScanCond.h:71
void SetSigma0(float x, float y, float tx, float ty)
Definition: EdbScanCond.h:62
void SetBins(float bx, float by, float btx, float bty)
Definition: EdbScanCond.h:65
void SetPulsRamp04(float p1, float p2)
Definition: EdbScanCond.h:75
void SetRadX0(float x0)
Definition: EdbScanCond.h:57
void SetChi2PMax(float chi2)
Definition: EdbScanCond.h:84
TTree * t
Definition: check_shower.C:4
float X0
Definition: RecDispMC.C:100

◆ makeVolumeOPERAn()

void makeVolumeOPERAn ( BRICK b,
EdbPatternsVolume v 
)

404{
405 // Volume geometry setting
406
407 EdbPattern *pat =0;
408 for(int i=0; i<b.plates; i++) {
409 pat = new EdbPattern(0,0,b.z0+b.dz*i);
410 v->AddPattern(pat);
411 }
412}
Definition: EdbPattern.h:273
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1707

◆ rec_v()

void rec_v ( EdbVertex vedb)

468{
469
470 // tracks and vertex reconstruction (KF fitting only without track finding)
471
472 int nsegMin = 2;
473 int ns = 0, ns2 = 0, is = 0;
474 float p, de;
475 EdbTrackP *tr;
476 float par[2], dpar[2][2], chi2l = 0.;
477 float *ppar = &par[0], *pdpar = &dpar[0][0];
478 float dx = 0., dtx = 0., sx = 0., stx = 0.;
479
480 int nt = vedb.N();
481 //printf("\n nt = %d\n\n",nt);
482 for(int ip=0; ip<nt; ip++) {
483 tr = vedb.GetTrack(ip);
484 // tr->Print();
485 if (tr->N() < nsegMin) break;
486 if (tr->P() < 0.1) break;
487
488 p = tr->P();
489 tr->SetErrorP(p*p*dpp*dpp);
490 DE_MC = tr->DE();
491
492 p = p*(1.+dpp*gRandom->Gaus());
493 if (p < 0.01) p = 0.01;
494
495 tr->SetP(p);
496 if (linfit)
497 {
498 if ((ns = tr->N()) != brick.plates) continue;
499 ns2 = 2*ns;
500 for (int i = 0; i<ns2; i++)
501 {
502 is = i/2;
503 zl[i] = tr->GetSegment(is)->Z();
504 if (i%2) zl[i] = zl[i] + 150.;
505 else zl[i] = zl[i] - 150.;
506 xl[i] = tr->GetSegment(is)->X();
507 if (i%2) xl[i] = xl[i] + 150.*tr->GetSegment(is)->TX();
508 else xl[i] = xl[i] - 150.*tr->GetSegment(is)->TX();
509 }
510 if (EdbMath::LinFitCOV(ns2, pzl, pxl, pCovMS, ppar, pdpar, &chi2l))
511 {
512 hp[0]->Fill(par[0]-ti[ip]->X());
513 hp[1]->Fill(par[1]-ti[ip]->TX());
514 sx = (float)TMath::Sqrt(dpar[0][0]);
515 stx = (float)TMath::Sqrt(dpar[1][1]);
516 hp[4]->Fill(sx);
517 hp[5]->Fill(stx);
518 hp[6]->Fill(TMath::Prob((double)chi2l, ns2-2));
519 }
520 hp[2]->Fill((tr->GetSegmentFirst())->X()-ti[ip]->X());
521 hp[3]->Fill((tr->GetSegmentFirst())->TX()-ti[ip]->TX());
522 continue;
523 }
524
525 tr->FitTrackKFS(false, brick.X0);
526
527 hp[0]->Fill((tr->GetSegmentFFirst())->X()-ti[ip]->X());
528 hp[1]->Fill((tr->GetSegmentFFirst())->TX()-ti[ip]->TX());
529 hp[2]->Fill((tr->GetSegmentFirst())->X()-ti[ip]->X());
530 hp[3]->Fill((tr->GetSegmentFirst())->TX()-ti[ip]->TX());
531 hp[6]->Fill(tr->Prob());
532
533 DE = tr->DE();
534
535 EdbSegP *s, *sf;
536 TMatrixD cov(5,5);
537
538 if(tr->NF() == brick.plates)
539 {
540 for (int is = 0; is < brick.plates; is++)
541 {
542 s = tr->GetSegment(is);
543 sf = tr->GetSegmentF(is);
544 dx = sf->X() - s->X();
545 if (ti[ip])
546 {
547 dx = sf->X() - (ti[ip]->GetSegment(is))->X();
548 dtx = sf->TX() - (ti[ip]->GetSegment(is))->TX();
549 }
550 cov = (sf->COV());
551 sx = (float)TMath::Sqrt(cov(0,0));
552 stx = (float)TMath::Sqrt(cov(2,2));
553 hpp[0]->Fill((float)is,dx);
554 hpp[1]->Fill((float)is,sx);
555
556 dx = sf->X() - s->X();
557 dtx = sf->TX() - s->TX();
558 hpp[2]->Fill((float)is,dx/TMath::Sqrt(seg_s[0]*seg_s[0] - sx*sx));
559 hpp[3]->Fill((float)is,dtx/TMath::Sqrt(seg_s[2]*seg_s[2] - stx*stx));
560
561 if (is == 0)
562 {
563 hp[4]->Fill(sx);
564 hp[5]->Fill(stx);
565 }
566 }
567 }
568 }
569}
T Prob(const T &rhs, int n)
Definition: Prob.hh:37
int nsegMin
Definition: RecDispEX.C:19
float zl[dim]
Definition: RecDispMC_Profiles.C:61
double DE_MC
Definition: RecDispMC_Profiles.C:465
double * pCovMS
Definition: RecDispMC_Profiles.C:60
float * pzl
Definition: RecDispMC_Profiles.C:62
float dpp
Definition: RecDispMC_Profiles.C:42
float xl[dim]
Definition: RecDispMC_Profiles.C:61
float * pxl
Definition: RecDispMC_Profiles.C:62
double DE
Definition: RecDispMC_Profiles.C:465
static bool LinFitCOV(int n, float *x, float *y, double *c, float *p, float *d, float *chi2)
Definition: EdbMath.cxx:193
Definition: EdbSegP.h:21
Float_t TX() const
tangens = deltaX/deltaZ
Definition: EdbSegP.h:175
Float_t X() const
Definition: EdbSegP.h:173
TMatrixD & COV() const
Definition: EdbSegP.h:123
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:195
s
Definition: check_shower.C:55
Double_t TX
Definition: tlg2couples.C:78
p
Definition: testBGReduction_AllMethods.C:8

◆ roadp()

Double_t roadp ( Double_t *  x,
Double_t *  par 
)

593{
594// double s = seg_s[0];
595 double s = TMath::Sqrt(seg_s[0]*seg_s[0]+seg_s[2]*seg_s[2]*150.*150.);
596 double n = brick.plates*2;
597 double x0 = (float)brick.plates/2.;
598 double sx = 0.;
599 double xs = 0.;
600 double xx = *x - x0;
601 for (int i=0; i<n; i++)
602 {
603 xs = i/2+0.5;
604 if (i%2) xs = xs + 0.15/1.3;
605 else xs = xs - 0.15/1.3;
606 sx += (xs-x0)*(xs-x0);
607 }
608 Double_t r2 = 2.*(1./n+xx*xx/sx);
609 Double_t r = 0.;
610 if (r2 > 0.) r = s*TMath::Sqrt(r2);
611 return r;
612}
for(int i=0;i< nentries;i++)
Definition: check_shower.C:42
void r(int rid=2)
Definition: test.C:201

◆ run()

void run ( )
68{
69 // p = 1., 2., 4., 6., 1000.
70 // n = 2 3 5 10 20
71 FILE *f = 0;
72 int ip1=2, ip2=3, in1=4, in2=5;
73 float sigxt[5][5];
74 float sigtxt[5][5];
75 float sigxs[5][5];
76 float sigtxs[5][5];
77 float rmsxt[5][5];
78 float rmstxt[5][5];
79 float rmsxs[5][5];
80 float rmstxs[5][5];
81 float errxt[5][5];
82 float errtxt[5][5];
83 int hst[5][5];
84 float mom[5], ns[5];
85 for (int i=ip1; i<ip2; i++)
86 {
87 mom[i] = i*2;
88 if (i == 0) mom[i] = 1.;
89 if (i == 4) mom[i] = 1000.;
90 momentum = mom[i];
91 for (int j=in1; j<in2; j++)
92 {
93 if (j == 0) brick.plates = 2;
94 if (j == 1) brick.plates = 3;
95 if (j == 2) brick.plates = 5;
96 if (j == 3) brick.plates = 10;
97 if (j == 4) brick.plates = 20;
98 printf("--------------------------\n P = %6.1f N = %2d\n",
99 mom[i], brick.plates);
100 ClearHistsV();
101 gv(20000);
102 cv->cd(1);
103 hp[0]->Fit("gaus","q");
104 rmsxt[i][j] = hp[0]->GetRMS(1);
105 errxt[i][j] = hp[4]->GetMean(1);
106 sigxt[i][j] = hp[0]->GetFunction("gaus")->GetParameter(2);
107 cv->cd(2);
108 hp[1]->Fit("gaus","q");
109 rmstxt[i][j] = hp[1]->GetRMS(1);
110 errtxt[i][j] = hp[5]->GetMean(1);
111 sigtxt[i][j] = hp[1]->GetFunction("gaus")->GetParameter(2);
112 cv->cd(3);
113 hp[2]->Fit("gaus","q");
114 rmsxs[i][j] = hp[2]->GetRMS(1);
115 sigxs[i][j] = hp[2]->GetFunction("gaus")->GetParameter(2);
116 cv->cd(4);
117 hp[3]->Fit("gaus","q");
118 rmstxs[i][j] = hp[3]->GetRMS(1);
119 sigtxs[i][j] = hp[3]->GetFunction("gaus")->GetParameter(2);
120 hst[i][j] = hp[0]->GetEntries();
121 ns[j] = brick.plates;
122 }
123 }
124 for (int i=ip1; i<ip2 && 0; i++)
125 {
126 for (int j=in1; j<in2; j++)
127 {
128 printf("**** P = %3.1f N = %2d Nev = %4d\n",
129 mom[i], ns[j], hst[i][j]);
130 printf("SX_tr = %6.3f STX_tr = %10.7f SX_s = %6.3f STX_s = %8.5f\n",
131 sigxt[i][j], sigtxt[i][j], sigxs[i][j], sigtxs[i][j]);
132 printf("RX_tr = %6.3f RTX_tr = %10.7f RX_s = %6.3f RTX_s = %8.5f\n",
133 rmsxt[i][j], rmstxt[i][j], rmsxs[i][j], rmstxs[i][j]);
134 printf("EX_tr = %6.3f ETX_tr = %10.7f\n",
135 errxt[i][j], errtxt[i][j]);
136 }
137 }
138 if (linfit)
139 {
140 f = fopen("linfit.out","w");
141 printf(" Track fitting accuracy vs number of segments and momentum\n");
142 printf(" (Global matrix method\n\n");
143 fprintf(f, " Track fitting accuracy vs number of segments and momentum\n");
144 fprintf(f, " (Global matrix method)\n\n");
145 }
146 else
147 {
148 f = fopen("kalman.out","w");
149 printf(" Track fitting accuracy vs number of segments and momentum\n");
150 printf(" (Kalman filtering method)\n\n");
151 fprintf(f, " Track fitting accuracy vs number of segments and momentum\n");
152 fprintf(f, " (Kalman filtering method)\n\n");
153 }
154 printf("\n*************** Sigma X (microns) **********\n");
155 printf(" Nplates\n");
156 printf(" P (GeV/c) ");
157 fprintf(f, "\n*************** Sigma X (microns) **********\n");
158 fprintf(f, " Nplates\n");
159 fprintf(f, " P (GeV/c) ");
160 for (int j=in1; j<in2; j++)
161 {
162 printf("%2d ", ns[j]);
163 fprintf(f, "%2d ", ns[j]);
164 }
165 printf("\n");
166 fprintf(f, "\n");
167 for (int i=ip1; i<ip2; i++)
168 {
169 printf(" %6.1f ", mom[i]);
170 fprintf(f, " %6.1f ", mom[i]);
171 for (int j=in1; j<in2; j++)
172 {
173 printf("%7.3f ",sigxt[i][j]);
174 fprintf(f, "%7.3f ",sigxt[i][j]);
175 }
176 printf("\n");
177 fprintf(f, "\n");
178 }
179 printf("\n*************** RMS X (microns) **********\n");
180 printf(" Nplates\n");
181 printf(" P (GeV/c) ");
182 fprintf(f, "\n*************** RMS X (microns) **********\n");
183 fprintf(f, " Nplates\n");
184 fprintf(f, " P (GeV/c) ");
185 for (int j=in1; j<in2; j++)
186 {
187 printf("%2d ", ns[j]);
188 fprintf(f, "%2d ", ns[j]);
189 }
190 printf("\n");
191 fprintf(f, "\n");
192 for (int i=ip1; i<ip2; i++)
193 {
194 printf(" %6.1f ", mom[i]);
195 fprintf(f, " %6.1f ", mom[i]);
196 for (int j=in1; j<in2; j++)
197 {
198 printf("%7.3f ",rmsxt[i][j]);
199 fprintf(f, "%7.3f ",rmsxt[i][j]);
200 }
201 printf("\n");
202 fprintf(f, "\n");
203 }
204 printf("\n*************** ERR X (microns) **********\n");
205 printf(" Nplates\n");
206 printf(" P (GeV/c) ");
207 fprintf(f, "\n*************** ERR X (microns) **********\n");
208 fprintf(f, " Nplates\n");
209 fprintf(f, " P (GeV/c) ");
210 for (int j=in1; j<in2; j++)
211 {
212 printf("%2d ", ns[j]);
213 fprintf(f, "%2d ", ns[j]);
214 }
215 printf("\n");
216 fprintf(f, "\n");
217 for (int i=ip1; i<ip2; i++)
218 {
219 printf(" %6.1f ", mom[i]);
220 fprintf(f, " %6.1f ", mom[i]);
221 for (int j=in1; j<in2; j++)
222 {
223 printf("%7.3f ",errxt[i][j]);
224 fprintf(f, "%7.3f ",errxt[i][j]);
225 }
226 printf("\n");
227 fprintf(f, "\n");
228 }
229 printf("\n*************** Sigma TX (mrad) **********\n");
230 printf(" Nplates\n");
231 printf(" P (GeV/c) ");
232 fprintf(f, "\n*************** Sigma TX (mrad) **********\n");
233 fprintf(f, " Nplates\n");
234 fprintf(f, " P (GeV/c) ");
235 for (int j=in1; j<in2; j++)
236 {
237 printf("%2d ", ns[j]);
238 fprintf(f, "%2d ", ns[j]);
239 }
240 printf("\n");
241 fprintf(f, "\n");
242 for (int i=ip1; i<ip2; i++)
243 {
244 printf(" %6.1f ", mom[i]);
245 fprintf(f, " %6.1f ", mom[i]);
246 for (int j=in1; j<in2; j++)
247 {
248 printf("%7.2f ",sigtxt[i][j]*1000.);
249 fprintf(f, "%7.2f ",sigtxt[i][j]*1000.);
250 }
251 printf("\n");
252 fprintf(f, "\n");
253 }
254 printf("\n*************** RMS TX (mrad) **********\n");
255 printf(" Nplates\n");
256 printf(" P (GeV/c) ");
257 fprintf(f, "\n*************** RMS TX (mrad) **********\n");
258 fprintf(f, " Nplates\n");
259 fprintf(f, " P (GeV/c) ");
260 for (int j=in1; j<in2; j++)
261 {
262 printf("%2d ", ns[j]);
263 fprintf(f, "%2d ", ns[j]);
264 }
265 printf("\n");
266 fprintf(f, "\n");
267 for (int i=ip1; i<ip2; i++)
268 {
269 printf(" %6.1f ", mom[i]);
270 fprintf(f, " %6.1f ", mom[i]);
271 for (int j=in1; j<in2; j++)
272 {
273 printf("%7.2f ",rmstxt[i][j]*1000.);
274 fprintf(f, "%7.2f ",rmstxt[i][j]*1000.);
275 }
276 printf("\n");
277 fprintf(f, "\n");
278 }
279 printf("\n*************** ERR TX (mrad) **********\n");
280 printf(" Nplates\n");
281 printf(" P (GeV/c) ");
282 fprintf(f, "\n*************** ERR TX (mrad) **********\n");
283 fprintf(f, " Nplates\n");
284 fprintf(f, " P (GeV/c) ");
285 for (int j=in1; j<in2; j++)
286 {
287 printf("%2d ", ns[j]);
288 fprintf(f, "%2d ", ns[j]);
289 }
290 printf("\n");
291 fprintf(f, "\n");
292 for (int i=ip1; i<ip2; i++)
293 {
294 printf(" %6.1f ", mom[i]);
295 fprintf(f, " %6.1f ", mom[i]);
296 for (int j=in1; j<in2; j++)
297 {
298 printf("%7.2f ",errtxt[i][j]*1000.);
299 fprintf(f, "%7.2f ",errtxt[i][j]*1000.);
300 }
301 printf("\n");
302 fprintf(f, "\n");
303 }
304 fclose(f);
305}
void ClearHistsV()
Definition: RecDispMC_Profiles.C:706
void gv(int n=1)
Definition: RecDispMC_Profiles.C:308
fclose(pFile)

Variable Documentation

◆ ali

EdbPVRec* ali =0

◆ brick

BRICK brick

◆ CovMS

double CovMS[dim2]

◆ cv

TCanvas* cv = 0

◆ cv1

TCanvas * cv1 = 0

◆ cv2

TCanvas * cv2 = 0

◆ cv4

TCanvas * cv4 = 0

◆ cvg1

TCanvas* cvg1 = 0

◆ cvg2

TCanvas * cvg2 = 0

◆ cvg3

TCanvas * cvg3 = 0

◆ cvg4

TCanvas * cvg4 = 0

◆ cvg5

TCanvas * cvg5 = 0

◆ cvg6

TCanvas * cvg6 = 0

◆ DE

double DE

◆ DE_MC

double DE_MC

◆ dpp

float dpp = 0.

◆ dz

brick dz = 1300.

◆ eloss_flag

int eloss_flag = 0

◆ gener

EdbPVGen* gener = 0

◆ hp

TH1F* hp[9] = {0,0,0,0,0,0,0,0,0}

◆ hpp

TProfile* hpp[4] = {0,0}

◆ lim

brick lim[3] = -50000.

◆ linfit

bool linfit = false

◆ momentum

float momentum = 4000.

◆ pCovMS

double* pCovMS = &CovMS[0]

◆ plates

brick plates = 56

◆ PrintN

const unsigned long int PrintN = 100

◆ pxl

float * pxl = &xl[0]

◆ pzl

float* pzl = &zl[0]

◆ scanCond

EdbScanCond* scanCond =0

◆ seg_s

float seg_s[4] = {.5,.5,0.0015,0.0015}

◆ seg_zero

float seg_zero[4] = {.0,.0,.0,.0}

◆ ti

EdbTrackP* ti[10] = {0,0,0,0,0,0,0,0,0,0}

◆ vedb

EdbVertex* vedb

◆ vxyz

float vxyz[3] = {0., 0., -1000.}

◆ X0

brick X0 = 5810.

◆ xl

float xl[dim]

◆ Xn

float Xn[5] = {2., 3., 5., 10., 20.}

◆ Xnlin

float Xnlin[5] = {2.2, 3.2, 5.2, 10.2, 20.2}

◆ Yerrtx

float Yerrtx[5][5]
Initial value:
= {
{ 1.37, 1.37, 1.37, 1.37, 1.37},
{ 1.16, 1.16, 1.16, 1.16, 1.16},
{ 0.87, 0.87, 0.87, 0.87, 0.87},
{ 0.72, 0.70, 0.70, 0.70, 0.70},
{ 0.48, 0.26, 0.12, 0.07, 0.04}
}

◆ Yerrx

float Yerrx[5][5]
Initial value:
= {
{0.492, 0.492, 0.492, 0.492, 0.492},
{0.484, 0.482, 0.482, 0.482, 0.482},
{0.477, 0.470, 0.470, 0.470, 0.470},
{0.475, 0.463, 0.462, 0.462, 0.462},
{0.473, 0.444, 0.383, 0.294, 0.224}
}

◆ Yerrxlin

float Yerrxlin[5][5]
Initial value:
= {
{0.487, 0.487, 0.487, 0.487, 0.487},
{0.479, 0.477, 0.477, 0.477, 0.477},
{0.475, 0.467, 0.467, 0.467, 0.467},
{0.474, 0.461, 0.459, 0.459, 0.459},
{0.473, 0.444, 0.383, 0.294, 0.223}
}

◆ Yrmstx

float Yrmstx[5][5]
Initial value:
= {
{ 1.39, 1.41, 1.32, 1.43, 1.36},
{ 1.14, 1.17, 1.19, 1.17, 1.17},
{ 0.90, 0.85, 0.88, 0.86, 0.86},
{ 0.72, 0.68, 0.69, 0.69, 0.71},
{ 0.48, 0.26, 0.12, 0.07, 0.04}
}

◆ Yrmsx

float Yrmsx[5][5]
Initial value:
= {
{0.506, 0.505, 0.474, 0.480, 0.495},
{0.457, 0.469, 0.460, 0.491, 0.482},
{0.477, 0.452, 0.472, 0.466, 0.458},
{0.477, 0.462, 0.463, 0.480, 0.452},
{0.454, 0.450, 0.385, 0.289, 0.227}
}

◆ Ysigtx

float Ysigtx[5][5]
Initial value:
= {
{ 1.38, 1.41, 1.30, 1.41, 1.33},
{ 1.12, 1.15, 1.15, 1.15, 1.16},
{ 0.83, 0.85, 0.87, 0.84, 0.87},
{ 0.71, 0.68, 0.69, 0.68, 0.71},
{ 0.49, 0.27, 0.13, 0.11, 0.11}
}

◆ Ysigx

float Ysigx[5][5]
Initial value:
= {
{0.502, 0.489, 0.461, 0.458, 0.486},
{0.442, 0.469, 0.453, 0.470, 0.469},
{0.463, 0.447, 0.463, 0.468, 0.459},
{0.479, 0.452, 0.453, 0.480, 0.442},
{0.450, 0.451, 0.384, 0.290, 0.223}
}

◆ z0

brick z0 = 0.

◆ zl

float zl[dim]