Fork me on GitHub

Changeset cde9f31 in git for modules


Ignore:
Timestamp:
Oct 26, 2017, 12:03:13 AM (7 years ago)
Author:
Kevin Pedro <kpedro88@…>
Branches:
ImprovedOutputFile, Timing, dual_readout, llp, master
Children:
e40b9cf
Parents:
76ef951
Message:

propagate track smearing to Xd,Yd,Zd variables

Location:
modules
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • modules/TrackSmearing.cc

    r76ef951 rcde9f31  
    6161void TrackSmearing::Init()
    6262{
     63  fBz = GetDouble("Bz", 0.0);
     64
    6365  // read resolution formula
    6466
     
    158160  Double_t pt, eta, d0, d0Error, trueD0, dz, dzError, trueDZ, p, pError, trueP, ctgTheta, ctgThetaError, trueCtgTheta, phi, phiError, truePhi;
    159161  Double_t x, y, z, t, px, py, pz, theta;
     162  Double_t q, r;
     163  Double_t x_c, y_c, r_c, phi_0;
     164  Double_t rcu, rc2, xd, yd, zd;
     165  const Double_t c_light = 2.99792458E8;
    160166  TProfile2D *d0ErrorHist = NULL,
    161167             *dzErrorHist = NULL,
     
    349355    y = candidate->InitialPosition.Y ();
    350356    candidate->InitialPosition.SetZ (z + ((pz * (px * (x - beamSpotPosition.X ()) + py * (y - beamSpotPosition.Y ())) + pt * pt * (dz - z)) / (pt * pt)));
    351  
     357    z = candidate->InitialPosition.Z ();
     358
    352359    candidate->InitialPosition.SetT(t);
    353    
     360
     361    // update closest approach
     362    x *= 1.0E-3;
     363    y *= 1.0E-3;
     364    z *= 1.0E-3;
     365
     366    q = candidate->Charge;
     367
     368    r = pt / (q * fBz) * 1.0E9/c_light;        // in [m]
     369    phi_0 = TMath::ATan2(py, px); // [rad] in [-pi, pi]
     370
     371    // 2. helix axis coordinates
     372    x_c = x + r*TMath::Sin(phi_0);
     373    y_c = y - r*TMath::Cos(phi_0);
     374    r_c = TMath::Hypot(x_c, y_c);
     375
     376    rcu = TMath::Abs(r);
     377    rc2 = r_c*r_c;
     378
     379    // calculate coordinates of closest approach to track circle in transverse plane xd, yd, zd
     380    xd = x_c*x_c*x_c - x_c*rcu*r_c + x_c*y_c*y_c;
     381    xd = (rc2 > 0.0) ? xd / rc2 : -999;
     382    yd = y_c*(-rcu*r_c + rc2);
     383    yd = (rc2 > 0.0) ? yd / rc2 : -999;
     384    zd = z + (TMath::Sqrt(xd*xd + yd*yd) - TMath::Sqrt(x*x + y*y))*pz/pt;
     385
     386    candidate->Xd = xd*1.0E3;
     387    candidate->Yd = yd*1.0E3;
     388    candidate->Zd = zd*1.0E3;
     389
    354390    if (fApplyToPileUp || !candidate->IsPU)
    355391    {
  • modules/TrackSmearing.h

    r76ef951 rcde9f31  
    3232
    3333  Double_t ptError (const Double_t, const Double_t, const Double_t, const Double_t);
     34
     35  Double_t fBz;
    3436
    3537  DelphesFormula *fD0Formula; //!
Note: See TracChangeset for help on using the changeset viewer.