141 unsigned int rpDecId = rpId.arm() * 100 + rpId.station() * 10 + rpId.rp();
147 it.second.transport(k_in_beam, k_out_beam);
149 const double vtx_ep = 1E-4;
150 const double th_ep = 1E-6;
152 for (
double xi = 0.;
xi < 0.30001;
xi += 0.001) {
155 it.second.transport(k_in_xi, k_out_xi);
159 it.second.transport(k_in_xi_vtx_x, k_out_xi_vtx_x);
163 it.second.transport(k_in_xi_th_x, k_out_xi_th_x);
167 it.second.transport(k_in_xi_vtx_y, k_out_xi_vtx_y);
171 it.second.transport(k_in_xi_th_y, k_out_xi_th_y);
173 int idx = pl.g_v_x_vs_xi->GetN();
175 pl.g_v_x_vs_xi->SetPoint(
idx,
xi, (k_out_xi_vtx_x.
x - k_out_xi.
x) / vtx_ep);
176 pl.g_L_x_vs_xi->SetPoint(
idx,
xi, (k_out_xi_th_x.
x - k_out_xi.
x) / th_ep);
177 pl.g_x_D_vs_xi->SetPoint(
idx,
xi, k_out_xi.
x - k_out_beam.
x);
179 pl.g_v_y_vs_xi->SetPoint(
idx,
xi, (k_out_xi_vtx_y.
y - k_out_xi.
y) / vtx_ep);
180 pl.g_L_y_vs_xi->SetPoint(
idx,
xi, (k_out_xi_th_y.
y - k_out_xi.
y) / th_ep);
181 pl.g_y_D_vs_xi->SetPoint(
idx,
xi, k_out_xi.
y - k_out_beam.
y);
183 pl.h_y_vs_x_disp->SetPoint(
idx, k_out_xi.
x - k_out_beam.
x, k_out_xi.
y - k_out_beam.
y);
194 unsigned int rpDecId = rpId.arm() * 100 + rpId.station() * 10 + rpId.rp();
196 if (rpDecId == ap.second.id_N)
198 if (rpDecId == ap.second.id_F)
202 if (!opt_N || !opt_F) {
203 edm::LogError(
"CTPPSOpticsPlotter::analyze") <<
"Cannot find optics objects for arm " << ap.first;
210 opt_N->
transport(k_in_beam, k_out_beam_N);
211 opt_F->transport(k_in_beam, k_out_beam_F);
213 for (
double xi = 0.;
xi < 0.30001;
xi += 0.001) {
218 opt_F->transport(k_in_xi, k_out_xi_F);
220 int idx = ap.second.g_de_x_vs_x_disp->GetN();
222 ap.second.g_de_x_vs_x_disp->SetPoint(
223 idx, k_out_xi_N.
x - k_out_beam_N.
x, (k_out_xi_F.
x - k_out_beam_F.
x) - (k_out_xi_N.
x - k_out_beam_N.
x));
224 ap.second.g_de_y_vs_x_disp->SetPoint(
225 idx, k_out_xi_N.
x - k_out_beam_N.
x, (k_out_xi_F.
y - k_out_beam_F.
y) - (k_out_xi_N.
y - k_out_beam_N.
y));
Log< level::Error, false > LogError
std::map< unsigned int, ArmPlots > arm_plots_
void transport(const Kinematics &input, Kinematics &output, bool calculateAngles=false) const
transports proton according to the splines
bool getData(T &iHolder) const
proton kinematics description
std::map< unsigned int, RPPlots > rp_plots_
edm::ESGetToken< LHCInterpolatedOpticalFunctionsSetCollection, CTPPSInterpolatedOpticsRcd > opticsESToken_
Set of optical functions corresponding to one scoring plane along LHC, including splines for interpol...
Base class for CTPPS detector IDs.