45 : g_v_x_vs_xi(new TGraph),
46 g_L_x_vs_xi(new TGraph),
47 g_x_D_vs_xi(new TGraph),
48 g_v_y_vs_xi(new TGraph),
49 g_L_y_vs_xi(new TGraph),
50 g_y_D_vs_xi(new TGraph),
51 h_y_vs_x_disp(new TGraph) {}
54 g_v_x_vs_xi->SetTitle(
";xi;v_{x}");
55 g_v_x_vs_xi->Write(
"g_v_x_vs_xi");
57 g_L_x_vs_xi->SetTitle(
";xi;L_{x} (cm)");
58 g_L_x_vs_xi->Write(
"g_L_x_vs_xi");
60 g_x_D_vs_xi->SetTitle(
";xi;x_{D} (cm)");
61 g_x_D_vs_xi->Write(
"g_x_D_vs_xi");
63 g_v_y_vs_xi->SetTitle(
";xi;v_{y}");
64 g_v_y_vs_xi->Write(
"g_v_y_vs_xi");
66 g_L_y_vs_xi->SetTitle(
";xi;L_{y} (cm)");
67 g_L_y_vs_xi->Write(
"g_L_y_vs_xi");
69 g_y_D_vs_xi->SetTitle(
";xi;y_{D} (cm)");
70 g_y_D_vs_xi->Write(
"g_y_D_vs_xi");
72 h_y_vs_x_disp->SetTitle(
";x (cm);y (cm)");
73 h_y_vs_x_disp->Write(
"h_y_vs_x_disp");
103 if (hOpticalFunctions->empty())
107 for (
const auto& it : *hOpticalFunctions) {
109 unsigned int rpDecId = rpId.
arm() * 100 + rpId.
station() * 10 + rpId.
rp();
115 it.second.transport(k_in_beam, k_out_beam);
117 const double vtx_ep = 1E-4;
118 const double th_ep = 1E-6;
120 for (
double xi = 0.;
xi < 0.30001;
xi += 0.001) {
123 it.second.transport(k_in_xi, k_out_xi);
127 it.second.transport(k_in_xi_vtx_x, k_out_xi_vtx_x);
131 it.second.transport(k_in_xi_th_x, k_out_xi_th_x);
135 it.second.transport(k_in_xi_vtx_y, k_out_xi_vtx_y);
139 it.second.transport(k_in_xi_th_y, k_out_xi_th_y);
141 int idx = pl.g_v_x_vs_xi->GetN();
143 pl.g_v_x_vs_xi->SetPoint(idx, xi, (k_out_xi_vtx_x.
x - k_out_xi.
x) / vtx_ep);
144 pl.g_L_x_vs_xi->SetPoint(idx, xi, (k_out_xi_th_x.
x - k_out_xi.
x) / th_ep);
145 pl.g_x_D_vs_xi->SetPoint(idx, xi, k_out_xi.
x - k_out_beam.
x);
147 pl.g_v_y_vs_xi->SetPoint(idx, xi, (k_out_xi_vtx_y.
y - k_out_xi.
y) / vtx_ep);
148 pl.g_L_y_vs_xi->SetPoint(idx, xi, (k_out_xi_th_y.
y - k_out_xi.
y) / th_ep);
149 pl.g_y_D_vs_xi->SetPoint(idx, xi, k_out_xi.
y - k_out_beam.
y);
151 pl.h_y_vs_x_disp->SetPoint(idx, k_out_xi.
x - k_out_beam.
x, k_out_xi.
y - k_out_beam.
y);
159 auto f_out = std::make_unique<TFile>(
outputFile_.c_str(),
"recreate");
162 gDirectory = f_out->mkdir(Form(
"%u",
p.first));
void analyze(const edm::Event &, const edm::EventSetup &) override
std::unique_ptr< TGraph > g_L_x_vs_xi
CTPPSOpticsPlotter(const edm::ParameterSet &)
std::unique_ptr< TGraph > g_x_D_vs_xi
std::unique_ptr< TGraph > g_L_y_vs_xi
#define DEFINE_FWK_MODULE(type)
std::unique_ptr< TGraph > g_v_y_vs_xi
proton kinematics description
std::map< unsigned int, RPPlots > rp_plots_
std::unique_ptr< TGraph > g_v_x_vs_xi
std::unique_ptr< TGraph > h_y_vs_x_disp
std::unique_ptr< TGraph > g_y_D_vs_xi
Base class for CTPPS detector IDs.