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
struct @9 H
Double_t X
Definition: tlg2pattern.C:77
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
Definition: EdbPVRec.h:162
TObjArray * eTracks
Definition: EdbPVRec.h:161
Definition: EdbVertex.h:68

◆ 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:122
void SetP(float p)
Definition: EdbSegP.h:130
void Set(int id, float x, float y, float tx, float ty, float w, int flag)
Definition: EdbSegP.h:86
Definition: EdbPattern.h:118
void SetM(float m)
Definition: EdbPattern.h:159
EdbTrackP * GetTrack(int i)
Definition: EdbVertex.h:141
Int_t N() const
Definition: EdbVertex.h:121
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);
396  gen_tracks_v( *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();
339  gener->SetVolume(vol);
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
TTree * t
Definition: check_shower.C:4
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:348
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
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:280
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1867

◆ 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:18
TMatrixD & COV() const
Definition: EdbSegP.h:120
Float_t TX() const
Definition: EdbSegP.h:172
Float_t X() const
Definition: EdbSegP.h:170
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:200
Double_t TX
Definition: tlg2pattern.C:79
p
Definition: testBGReduction_AllMethods.C:8
EdbSegP * s
Definition: tlg2pattern.C:32

◆ 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]