48 :
h_de_x(new TH1D(
"",
";#Deltax (mm)", 1000, -1., +1.)),
49 h_de_y(new TH1D(
"",
";#Deltay (mm)", 1000, -1., +1.)) {}
51 void fill(
double de_x,
double de_y) {
75 chiSqCut_(iConfig.getParameter<double>(
"chiSqCut")),
76 outputFile_(iConfig.getParameter<
string>(
"outputFile")) {}
85 if (opticalFunctions.empty())
93 for (
const auto& pr : *hRecoProtons) {
100 for (
const auto& tr : pr.contributingLocalTracks()) {
102 unsigned int rpDecId = rpId.
arm() * 100 + rpId.station() * 10 + rpId.rp();
109 if (opticalFunctions.count(rpId) == 0)
111 const auto&
func = opticalFunctions.at(rpId);
116 func.transport(k_in_beam, k_out_beam);
119 -pr.vx(), -pr.thetaX(), pr.vy(), pr.thetaY(), pr.
xi()};
121 func.transport(k_in, k_out);
124 const double de_x = (k_out.
x - k_out_beam.
x) * 10. - tr->x();
125 const double de_y = (k_out.
y - k_out_beam.
y) * 10. - tr->y();
135 auto f_out = std::make_unique<TFile>(
outputFile_.c_str(),
"recreate");
138 gDirectory = f_out->mkdir(Form(
"%u",
p.first));
void fill(double de_x, double de_y)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::unique_ptr< TH1D > h_de_y
#define DEFINE_FWK_MODULE(type)
edm::EDGetTokenT< reco::ForwardProtonCollection > tokenRecoProtons_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t Func __host__ __device__ V int Func func
std::unique_ptr< TH1D > h_de_x
CTPPSProtonReconstructionValidator(const edm::ParameterSet &)
bool getData(T &iHolder) const
edm::ESGetToken< LHCInterpolatedOpticalFunctionsSetCollection, CTPPSInterpolatedOpticsRcd > opticsESToken_
void analyze(const edm::Event &, const edm::EventSetup &) override
std::map< unsigned int, RPPlots > rp_plots_
proton kinematics description
Base class for CTPPS detector IDs.
std::vector< ForwardProton > ForwardProtonCollection
Collection of ForwardProton objects.