405 bool exact_angles =
true;
406 bool x_y_correlation =
true;
407 Float_t eTPb = 1000./1300.;
411 Float_t tx0 =
tr.TX();
412 Float_t ty0 =
tr.TY();
417 Float_t sxd=sx, syd=sy, stxd=stx, styd=sty;
418 Float_t x,y,z,tx,ty, xs, ys, txs, tys;
419 Float_t
dz, dzm, cost, r1, r2, teta0, zold, dzPb;
420 Float_t dx = 0., dy = 0., dtx = 0., dty = 0.;
421 Float_t dxs = 0., dys = 0., dtxs = 0., dtys = 0.;
422 Double_t Phi,CPhi,SPhi;
427 if ( x0 <
lim[0] )
return;
428 if ( y0 <
lim[1] )
return;
429 if ( x0 >
lim[2] )
return;
430 if ( y0 >
lim[3] )
return;
434 Float_t
p = p0, pa = p0, pn, de = 0.,
DE = 0.;
435 Float_t e = TMath::Sqrt((
double)
p*(
double)
p+(
double)m*(
double)m);
443 for (
int kc=0; kc<
npat; kc++ ) {
444 if (zlim[0] > zlim[1])
458 if ( dir > 0 )
if ( z < zlim[0] ) {
continue; }
459 if ( dir > 0 )
if ( z > zlim[1] ) {
continue; }
460 if ( dir < 0 )
if ( z > zlim[0] ) {
continue; }
461 if ( dir < 0 )
if ( z < zlim[1] ) {
continue; }
462 if ( dir > 0 )
if ( z < zold ) {
continue; }
463 if ( dir < 0 )
if ( z >= zold ) {
continue; }
464 if ( gRandom->Rndm() < (
double)PGap) {
continue; }
467 cost = TMath::Sqrt((
double)1.+(
double)tx*(
double)tx+(
double)ty*(
double)ty);
468 if (cost >= 10.)
break;
474 if ( de < 0.) de = 0;
477 pn = TMath::Sqrt((
double)e*(
double)e - (
double)m*(
double)m);
486 if ( de < 0.) de = 0;
489 pn = TMath::Sqrt((
double)e*(
double)e - (
double)m*(
double)m);
497 teta0 = TMath::Sqrt(teta0);
498 do { r1 = gRandom->Gaus();}
while (TMath::Abs(r1) > 50.);
499 do { r2 = gRandom->Gaus();}
while (TMath::Abs(r1) > 50.);
500 dx = (0.5*r1+0.866025*r2)*dzm*teta0/1.73205;
502 do { r1 = gRandom->Gaus();}
while (TMath::Abs(r1) > 50.);
503 do { r2 = gRandom->Gaus();}
while (TMath::Abs(r1) > 50.);
504 dy = (0.5*r1+0.866025*r2)*dzm*teta0/1.73205;
519 tx = TMath::Tan(TMath::ATan(tx) + dtx);
520 ty = TMath::Tan(TMath::ATan(ty) + dty);
528 if ( x <
lim[0] )
break;
529 if ( y <
lim[1] )
break;
530 if ( x >
lim[2] )
break;
531 if ( y >
lim[3] )
break;
532 double theta = TMath::Sqrt(tx*tx + ty*ty);
533 do { r1 = gRandom->Gaus();}
while (TMath::Abs(r1) > 50.);
537 do { r1 = gRandom->Gaus();}
while (TMath::Abs(r1) > 50.);
541 do { r1 = gRandom->Gaus();}
while (TMath::Abs(r1) > 50.);
545 do { r1 = gRandom->Gaus();}
while (TMath::Abs(r1) > 50.);
551 Phi = TMath::ATan2(ty,tx);
552 CPhi = TMath::Cos(Phi);
553 SPhi = TMath::Sin(Phi);
554 xs = x + dxs*CPhi - dys*SPhi;
555 ys = y + dxs*SPhi + dys*CPhi;
556 txs = tx + dtxs*CPhi - dtys*SPhi;
557 tys = ty + dtxs*SPhi + dtys*CPhi;
566 seg->
Set(segnum++, xs, ys, txs, tys, 25.,
tr.ID());
573 seg->
SetErrorsCOV(sxd*sxd, syd*syd, 0., stxd*stxd, styd*styd, 0.);
575 seg->
SetErrors(sxd*sxd, syd*syd, 0., stxd*stxd, styd*styd, 0.);
578 if (
p <= 0.050)
break;
579 if (teta0 >= 1.00)
break;
double DE
Definition: RecDispMC_Profiles.C:465
float RadX0() const
Definition: EdbScanCond.h:58
void SetErrors()
Definition: EdbSegP.h:89
void SetMC(int mEvt, int mTrack)
Definition: EdbSegP.h:138