CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
CTPPSProtonReconstructionSimulationValidator Class Reference
Inheritance diagram for CTPPSProtonReconstructionSimulationValidator:
edm::one::EDAnalyzer<> edm::one::EDAnalyzerBase edm::EDConsumerBase

Classes

struct  DoubleArmPlotGroup
 
struct  PlotGroup
 

Public Member Functions

 CTPPSProtonReconstructionSimulationValidator (const edm::ParameterSet &)
 
- Public Member Functions inherited from edm::one::EDAnalyzer<>
 EDAnalyzer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void endJob () override
 
void fillPlots (unsigned int meth_idx, unsigned int idx, const reco::ForwardProton &rec_pr, const HepMC::FourVector &vtx, const HepMC::FourVector &mom, const LHCInfo &lhcInfo)
 

Private Attributes

DoubleArmPlotGroup double_arm_plots_
 
edm::ESGetToken< LHCInfo, LHCInfoRcdlhcInfoESToken_
 
std::string outputFile_
 
std::map< unsigned int, std::map< unsigned int, PlotGroup > > plots_
 
edm::EDGetTokenT< edm::HepMCProducttokenHepMCAfterSmearing_
 
edm::EDGetTokenT< edm::HepMCProducttokenHepMCBeforeSmearing_
 
edm::EDGetTokenT< reco::ForwardProtonCollectiontokenRecoProtonsMultiRP_
 
edm::EDGetTokenT< reco::ForwardProtonCollectiontokenRecoProtonsSingleRP_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Definition at line 36 of file CTPPSProtonReconstructionSimulationValidator.cc.

Constructor & Destructor Documentation

◆ CTPPSProtonReconstructionSimulationValidator()

CTPPSProtonReconstructionSimulationValidator::CTPPSProtonReconstructionSimulationValidator ( const edm::ParameterSet iConfig)
explicit

Definition at line 190 of file CTPPSProtonReconstructionSimulationValidator.cc.

194  consumes<edm::HepMCProduct>(iConfig.getParameter<edm::InputTag>("tagHepMCBeforeSmearing"))),
196  consumes<edm::HepMCProduct>(iConfig.getParameter<edm::InputTag>("tagHepMCAfterSmearing"))),
198  consumes<reco::ForwardProtonCollection>(iConfig.getParameter<InputTag>("tagRecoProtonsSingleRP"))),
200  consumes<reco::ForwardProtonCollection>(iConfig.getParameter<InputTag>("tagRecoProtonsMultiRP"))),
201  lhcInfoESToken_(esConsumes(ESInputTag("", iConfig.getParameter<std::string>("lhcInfoLabel")))),

Member Function Documentation

◆ analyze()

void CTPPSProtonReconstructionSimulationValidator::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 205 of file CTPPSProtonReconstructionSimulationValidator.cc.

206  {
207  // get conditions
208  const auto &lhcInfo = iSetup.getData(lhcInfoESToken_);
209 
210  // get input
211  edm::Handle<edm::HepMCProduct> hHepMCBeforeSmearing;
212  iEvent.getByToken(tokenHepMCBeforeSmearing_, hHepMCBeforeSmearing);
213  HepMC::GenEvent *hepMCEventBeforeSmearing = (HepMC::GenEvent *)hHepMCBeforeSmearing->GetEvent();
214 
215  edm::Handle<edm::HepMCProduct> hHepMCAfterSmearing;
216  iEvent.getByToken(tokenHepMCAfterSmearing_, hHepMCAfterSmearing);
217  HepMC::GenEvent *hepMCEventAfterSmearing = (HepMC::GenEvent *)hHepMCAfterSmearing->GetEvent();
218 
219  Handle<reco::ForwardProtonCollection> hRecoProtonsSingleRP;
220  iEvent.getByToken(tokenRecoProtonsSingleRP_, hRecoProtonsSingleRP);
221 
222  Handle<reco::ForwardProtonCollection> hRecoProtonsMultiRP;
223  iEvent.getByToken(tokenRecoProtonsMultiRP_, hRecoProtonsMultiRP);
224 
225  // extract vertex position
226  bool vertex_set = false;
227  FourVector vtx;
228  for (auto it = hepMCEventAfterSmearing->vertices_begin(); it != hepMCEventAfterSmearing->vertices_end(); ++it) {
229  if (vertex_set) {
230  LogError("CTPPSProtonReconstructionSimulationValidator") << "Multiple vertices found.";
231  return;
232  }
233 
234  vertex_set = true;
235  vtx = (*it)->position();
236  }
237 
238  // extract forward protons
239  bool proton_45_set = false;
240  bool proton_56_set = false;
241  FourVector mom_45, mom_56;
242 
243  for (auto it = hepMCEventBeforeSmearing->particles_begin(); it != hepMCEventBeforeSmearing->particles_end(); ++it) {
244  const auto &part = *it;
245 
246  // accept only stable non-beam protons
247  if (part->pdg_id() != 2212)
248  continue;
249 
250  if (part->status() != 1)
251  continue;
252 
253  if (part->is_beam())
254  continue;
255 
256  const auto &mom = part->momentum();
257 
258  if (mom.e() < 4500.)
259  continue;
260 
261  if (mom.z() > 0) {
262  // 45
263  if (proton_45_set) {
264  LogError("CTPPSProtonReconstructionSimulationValidator") << "Found multiple protons in sector 45.";
265  return;
266  }
267 
268  proton_45_set = true;
269  mom_45 = mom;
270  } else {
271  // 56
272  if (proton_56_set) {
273  LogError("CTPPSProtonReconstructionSimulationValidator") << "Found multiple protons in sector 56.";
274  return;
275  }
276 
277  proton_56_set = true;
278  mom_56 = mom;
279  }
280  }
281 
282  // single-arm comparison
283  for (const auto &handle : {hRecoProtonsSingleRP, hRecoProtonsMultiRP}) {
284  for (const auto &rec_pr : *handle) {
285  if (!rec_pr.validFit())
286  continue;
287 
288  unsigned int idx = 12345;
289 
290  bool mom_set = false;
291  FourVector mom;
292 
293  if (rec_pr.lhcSector() == reco::ForwardProton::LHCSector::sector45) {
294  idx = 0;
295  mom_set = proton_45_set;
296  mom = mom_45;
297  }
298  if (rec_pr.lhcSector() == reco::ForwardProton::LHCSector::sector56) {
299  idx = 1;
300  mom_set = proton_56_set;
301  mom = mom_56;
302  }
303 
304  if (!mom_set)
305  continue;
306 
307  unsigned int meth_idx = 1234;
308 
310  meth_idx = 0;
311 
312  CTPPSDetId rpId((*rec_pr.contributingLocalTracks().begin())->rpId());
313  idx = 100 * rpId.arm() + 10 * rpId.station() + rpId.rp();
314  }
315 
317  meth_idx = 1;
318 
319  fillPlots(meth_idx, idx, rec_pr, vtx, mom, lhcInfo);
320  }
321  }
322 
323  // double-arm comparison
324  bool time_set_45 = false, time_set_56 = false;
325  double time_45 = 0., time_56 = 0.;
326  for (const auto &rec_pr : *hRecoProtonsMultiRP) {
327  if (!rec_pr.validFit())
328  continue;
329 
330  // skip protons with no timing information
331  if (rec_pr.timeError() < 1E-3)
332  continue;
333 
334  if (rec_pr.lhcSector() == reco::ForwardProton::LHCSector::sector45) {
335  time_set_45 = true;
336  time_45 = rec_pr.time();
337  }
338  if (rec_pr.lhcSector() == reco::ForwardProton::LHCSector::sector56) {
339  time_set_56 = true;
340  time_56 = rec_pr.time();
341  }
342  }
343 
344  if (time_set_45 && time_set_56)
345  double_arm_plots_.fill(time_45, time_56, vtx.z(), vtx.t());

References edm::RefVector< C, T, F >::begin(), reco::ForwardProton::contributingLocalTracks(), double_arm_plots_, CTPPSProtonReconstructionSimulationValidator::DoubleArmPlotGroup::fill(), fillPlots(), edm::EventSetup::getData(), edm::HepMCProduct::GetEvent(), patZpeak::handle, heavyIonCSV_trainingSettings::idx, iEvent, lhcInfoESToken_, reco::ForwardProton::lhcSector(), reco::ForwardProton::method(), reco::ForwardProton::multiRP, profile_2016_postTS2_cff::rpId, reco::ForwardProton::sector45, reco::ForwardProton::sector56, reco::ForwardProton::singleRP, reco::ForwardProton::time(), reco::ForwardProton::timeError(), tokenHepMCAfterSmearing_, tokenHepMCBeforeSmearing_, tokenRecoProtonsMultiRP_, tokenRecoProtonsSingleRP_, reco::ForwardProton::validFit(), and extraflags_cff::vtx.

◆ endJob()

void CTPPSProtonReconstructionSimulationValidator::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 391 of file CTPPSProtonReconstructionSimulationValidator.cc.

392  {
393  auto f_out = std::make_unique<TFile>(outputFile_.c_str(), "recreate");
394 
395  for (const auto &mit : plots_) {
396  const char *method = (mit.first == 0) ? "single rp" : "multi rp";
397  TDirectory *d_method = f_out->mkdir(method);
398 
399  for (const auto &eit : mit.second) {
400  gDirectory = d_method->mkdir(Form("%i", eit.first));
401  eit.second.write();
402  }
403  }
404 
405  gDirectory = f_out->mkdir("double arm");

References double_arm_plots_, AlcaSiPixelAliHarvester0T_cff::method, outputFile_, plots_, and CTPPSProtonReconstructionSimulationValidator::DoubleArmPlotGroup::write().

◆ fillPlots()

void CTPPSProtonReconstructionSimulationValidator::fillPlots ( unsigned int  meth_idx,
unsigned int  idx,
const reco::ForwardProton rec_pr,
const HepMC::FourVector &  vtx,
const HepMC::FourVector &  mom,
const LHCInfo lhcInfo 
)
private

Definition at line 349 of file CTPPSProtonReconstructionSimulationValidator.cc.

355  {
356  const double p_nom = lhcInfo.energy();
357  const double xi_simu = (p_nom - mom.rho()) / p_nom;
358  const double th_x_simu = mom.x() / mom.rho();
359  const double th_y_simu = mom.y() / mom.rho();
360  const double vtx_y_simu = vtx.y();
361  const double th_simu = sqrt(th_x_simu * th_x_simu + th_y_simu * th_y_simu);
362  const double t_simu = -reco::ForwardProton::calculateT(p_nom, mom.rho(), th_simu);
363 
364  const double xi_reco = rec_pr.xi();
365  const double th_x_reco = rec_pr.thetaX();
366  const double th_y_reco = rec_pr.thetaY();
367  const double vtx_y_reco = rec_pr.vertex().y() * 10.; // conversion: cm --> mm
368  const double t_reco = -rec_pr.t();
369 
370  auto &plt = plots_[meth_idx][idx];
371 
372  plt.h_xi_reco_vs_xi_simu->Fill(xi_simu, xi_reco);
373  plt.h_de_xi->Fill(xi_reco - xi_simu);
374  plt.p_de_xi_vs_xi_simu->Fill(xi_simu, xi_reco - xi_simu);
375 
376  plt.h_de_th_x->Fill(th_x_reco - th_x_simu);
377  plt.p_de_th_x_vs_xi_simu->Fill(xi_simu, th_x_reco - th_x_simu);
378 
379  plt.h_de_th_y->Fill(th_y_reco - th_y_simu);
380  plt.p_de_th_y_vs_xi_simu->Fill(xi_simu, th_y_reco - th_y_simu);
381 
382  plt.h_de_vtx_y->Fill(vtx_y_reco - vtx_y_simu);
383  plt.p_de_vtx_y_vs_xi_simu->Fill(xi_simu, vtx_y_reco - vtx_y_simu);
384 
385  plt.h_de_t->Fill(t_reco - t_simu);
386  plt.p_de_t_vs_xi_simu->Fill(xi_simu, t_reco - t_simu);
387  plt.p_de_t_vs_t_simu->Fill(t_simu, t_reco - t_simu);

References reco::ForwardProton::calculateT(), LHCInfo::energy(), heavyIonCSV_trainingSettings::idx, plots_, mathSSE::sqrt(), reco::ForwardProton::t(), reco::ForwardProton::thetaX(), reco::ForwardProton::thetaY(), reco::ForwardProton::vertex(), extraflags_cff::vtx, and reco::ForwardProton::xi().

Referenced by analyze().

Member Data Documentation

◆ double_arm_plots_

DoubleArmPlotGroup CTPPSProtonReconstructionSimulationValidator::double_arm_plots_
private

Definition at line 181 of file CTPPSProtonReconstructionSimulationValidator.cc.

Referenced by analyze(), and endJob().

◆ lhcInfoESToken_

edm::ESGetToken<LHCInfo, LHCInfoRcd> CTPPSProtonReconstructionSimulationValidator::lhcInfoESToken_
private

Definition at line 59 of file CTPPSProtonReconstructionSimulationValidator.cc.

Referenced by analyze().

◆ outputFile_

std::string CTPPSProtonReconstructionSimulationValidator::outputFile_
private

Definition at line 61 of file CTPPSProtonReconstructionSimulationValidator.cc.

Referenced by endJob().

◆ plots_

std::map<unsigned int, std::map<unsigned int, PlotGroup> > CTPPSProtonReconstructionSimulationValidator::plots_
private

Definition at line 149 of file CTPPSProtonReconstructionSimulationValidator.cc.

Referenced by endJob(), and fillPlots().

◆ tokenHepMCAfterSmearing_

edm::EDGetTokenT<edm::HepMCProduct> CTPPSProtonReconstructionSimulationValidator::tokenHepMCAfterSmearing_
private

Definition at line 54 of file CTPPSProtonReconstructionSimulationValidator.cc.

Referenced by analyze().

◆ tokenHepMCBeforeSmearing_

edm::EDGetTokenT<edm::HepMCProduct> CTPPSProtonReconstructionSimulationValidator::tokenHepMCBeforeSmearing_
private

Definition at line 53 of file CTPPSProtonReconstructionSimulationValidator.cc.

Referenced by analyze().

◆ tokenRecoProtonsMultiRP_

edm::EDGetTokenT<reco::ForwardProtonCollection> CTPPSProtonReconstructionSimulationValidator::tokenRecoProtonsMultiRP_
private

Definition at line 57 of file CTPPSProtonReconstructionSimulationValidator.cc.

Referenced by analyze().

◆ tokenRecoProtonsSingleRP_

edm::EDGetTokenT<reco::ForwardProtonCollection> CTPPSProtonReconstructionSimulationValidator::tokenRecoProtonsSingleRP_
private

Definition at line 56 of file CTPPSProtonReconstructionSimulationValidator.cc.

Referenced by analyze().

LHCInfo::energy
const float energy() const
Definition: LHCInfo.cc:190
CTPPSProtonReconstructionSimulationValidator::lhcInfoESToken_
edm::ESGetToken< LHCInfo, LHCInfoRcd > lhcInfoESToken_
Definition: CTPPSProtonReconstructionSimulationValidator.cc:59
CTPPSProtonReconstructionSimulationValidator::tokenHepMCAfterSmearing_
edm::EDGetTokenT< edm::HepMCProduct > tokenHepMCAfterSmearing_
Definition: CTPPSProtonReconstructionSimulationValidator.cc:54
edm::ESInputTag
Definition: ESInputTag.h:87
reco::ForwardProton::ReconstructionMethod::singleRP
CTPPSProtonReconstructionSimulationValidator::DoubleArmPlotGroup::write
void write() const
Definition: CTPPSProtonReconstructionSimulationValidator.cc:172
patZpeak.handle
handle
Definition: patZpeak.py:23
reco::ForwardProton::thetaY
float thetaY() const
horizontal scattering angle, in rad
Definition: ForwardProton.h:88
AlcaSiPixelAliHarvester0T_cff.method
method
Definition: AlcaSiPixelAliHarvester0T_cff.py:41
CTPPSProtonReconstructionSimulationValidator::fillPlots
void fillPlots(unsigned int meth_idx, unsigned int idx, const reco::ForwardProton &rec_pr, const HepMC::FourVector &vtx, const HepMC::FourVector &mom, const LHCInfo &lhcInfo)
Definition: CTPPSProtonReconstructionSimulationValidator.cc:349
reco::ForwardProton::vertex
const Point & vertex() const
fitted vertex position
Definition: ForwardProton.h:56
edm::Handle< edm::HepMCProduct >
CTPPSProtonReconstructionSimulationValidator::plots_
std::map< unsigned int, std::map< unsigned int, PlotGroup > > plots_
Definition: CTPPSProtonReconstructionSimulationValidator.cc:149
HepMC::GenEvent
Definition: hepmc_rootio.cc:9
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
part
part
Definition: HCALResponse.h:20
CTPPSProtonReconstructionSimulationValidator::tokenRecoProtonsMultiRP_
edm::EDGetTokenT< reco::ForwardProtonCollection > tokenRecoProtonsMultiRP_
Definition: CTPPSProtonReconstructionSimulationValidator.cc:57
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
CTPPSProtonReconstructionSimulationValidator::tokenHepMCBeforeSmearing_
edm::EDGetTokenT< edm::HepMCProduct > tokenHepMCBeforeSmearing_
Definition: CTPPSProtonReconstructionSimulationValidator.cc:53
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
reco::ForwardProton::LHCSector::sector56
CTPPSDetId
Base class for CTPPS detector IDs.
Definition: CTPPSDetId.h:31
reco::ForwardProton::xi
float xi() const
longitudinal fractional momentum loss
Definition: ForwardProton.h:84
iEvent
int iEvent
Definition: GenABIO.cc:224
reco::ForwardProton::calculateT
static float calculateT(double beam_mom, double proton_mom, double theta)
compute the squared four-momentum transfer from incident and scattered momenta, and angular informati...
Definition: ForwardProton.cc:44
edm::HepMCProduct::GetEvent
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:37
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
reco::ForwardProton::thetaX
float thetaX() const
vertical scattering angle, in rad
Definition: ForwardProton.h:86
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
profile_2016_postTS2_cff.rpId
rpId
Definition: profile_2016_postTS2_cff.py:21
reco::ForwardProton::ReconstructionMethod::multiRP
extraflags_cff.vtx
vtx
Definition: extraflags_cff.py:18
reco::ForwardProton::LHCSector::sector45
CTPPSProtonReconstructionSimulationValidator::outputFile_
std::string outputFile_
Definition: CTPPSProtonReconstructionSimulationValidator.cc:61
CTPPSProtonReconstructionSimulationValidator::DoubleArmPlotGroup::fill
void fill(double time_45, double time_56, double vtx_z, double vtx_t)
Definition: CTPPSProtonReconstructionSimulationValidator.cc:161
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDConsumerBase::esConsumes
auto esConsumes()
Definition: EDConsumerBase.h:202
reco::ForwardProton::t
float t() const
four-momentum transfer squared, in GeV^2
Definition: ForwardProton.cc:51
CTPPSProtonReconstructionSimulationValidator::double_arm_plots_
DoubleArmPlotGroup double_arm_plots_
Definition: CTPPSProtonReconstructionSimulationValidator.cc:181
edm::InputTag
Definition: InputTag.h:15
CTPPSProtonReconstructionSimulationValidator::tokenRecoProtonsSingleRP_
edm::EDGetTokenT< reco::ForwardProtonCollection > tokenRecoProtonsSingleRP_
Definition: CTPPSProtonReconstructionSimulationValidator.cc:56