CMS 3D CMS Logo

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

Classes

struct  ArmCorrelationPlots
 
struct  MultiRPPlots
 
struct  SingleMultiCorrelationPlots
 
struct  SingleRPPlots
 

Public Member Functions

 CTPPSProtonReconstructionPlotter (const edm::ParameterSet &)
 
 ~CTPPSProtonReconstructionPlotter () override
 
- Public Member Functions inherited from edm::one::EDAnalyzer<>
 EDAnalyzer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () 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 const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (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::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
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
 

Static Private Member Functions

static void profileToRMSGraph (TProfile *p, TGraphErrors *g)
 

Private Attributes

std::map< unsigned int, ArmCorrelationPlotsarmCorrelationPlots_
 
signed int maxNonEmptyEvents_
 
std::map< unsigned int, MultiRPPlotsmultiRPPlots_
 
signed int n_non_empty_events_
 
std::string outputFile_
 
std::unique_ptr< TProfile > p_x_L_diffNF_vs_x_L_N_
 
std::unique_ptr< TProfile > p_x_R_diffNF_vs_x_R_N_
 
std::unique_ptr< TProfile > p_y_L_diffNF_vs_y_L_N_
 
std::unique_ptr< TProfile > p_y_R_diffNF_vs_y_R_N_
 
unsigned int rpId_45_F_
 
unsigned int rpId_45_N_
 
unsigned int rpId_56_F_
 
unsigned int rpId_56_N_
 
std::map< unsigned int, SingleMultiCorrelationPlotssingleMultiCorrelationPlots_
 
std::map< unsigned int, SingleRPPlotssingleRPPlots_
 
edm::EDGetTokenT< reco::ForwardProtonCollectiontokenRecoProtonsMultiRP_
 
edm::EDGetTokenT< reco::ForwardProtonCollectiontokenRecoProtonsSingleRP_
 
edm::EDGetTokenT< CTPPSLocalTrackLiteCollectiontokenTracks_
 

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
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
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<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 29 of file CTPPSProtonReconstructionPlotter.cc.

Constructor & Destructor Documentation

CTPPSProtonReconstructionPlotter::CTPPSProtonReconstructionPlotter ( const edm::ParameterSet ps)
explicit

Definition at line 344 of file CTPPSProtonReconstructionPlotter.cc.

344  :
345  tokenTracks_ (consumes<CTPPSLocalTrackLiteCollection>(ps.getParameter<edm::InputTag>("tagTracks"))),
346  tokenRecoProtonsSingleRP_(consumes<reco::ForwardProtonCollection>(ps.getParameter<InputTag>("tagRecoProtonsSingleRP"))),
347  tokenRecoProtonsMultiRP_ (consumes<reco::ForwardProtonCollection>(ps.getParameter<InputTag>("tagRecoProtonsMultiRP"))),
348 
349  rpId_45_N_(ps.getParameter<unsigned int>("rpId_45_N")),
350  rpId_45_F_(ps.getParameter<unsigned int>("rpId_45_F")),
351  rpId_56_N_(ps.getParameter<unsigned int>("rpId_56_N")),
352  rpId_56_F_(ps.getParameter<unsigned int>("rpId_56_F")),
353 
354  outputFile_(ps.getParameter<string>("outputFile")),
355  maxNonEmptyEvents_(ps.getUntrackedParameter<signed int>("maxNonEmptyEvents", -1)),
356 
357  p_x_L_diffNF_vs_x_L_N_(new TProfile("p_x_L_diffNF_vs_x_L_N", ";x_{LN};x_{LF} - x_{LN}", 100, 0., +20.)),
358  p_x_R_diffNF_vs_x_R_N_(new TProfile("p_x_R_diffNF_vs_x_R_N", ";x_{RN};x_{RF} - x_{RN}", 100, 0., +20.)),
359 
360  p_y_L_diffNF_vs_y_L_N_(new TProfile("p_y_L_diffNF_vs_y_L_N", ";y_{LN};y_{LF} - y_{LN}", 100, -20., +20.)),
361  p_y_R_diffNF_vs_y_R_N_(new TProfile("p_y_R_diffNF_vs_y_R_N", ";y_{RN};y_{RF} - y_{RN}", 100, -20., +20.)),
362 
364 {}
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< reco::ForwardProtonCollection > tokenRecoProtonsSingleRP_
edm::EDGetTokenT< CTPPSLocalTrackLiteCollection > tokenTracks_
edm::EDGetTokenT< reco::ForwardProtonCollection > tokenRecoProtonsMultiRP_
CTPPSProtonReconstructionPlotter::~CTPPSProtonReconstructionPlotter ( )
inlineoverride

Definition at line 33 of file CTPPSProtonReconstructionPlotter.cc.

References analyze(), and endJob().

33 {}

Member Function Documentation

void CTPPSProtonReconstructionPlotter::analyze ( const edm::Event event,
const edm::EventSetup  
)
overrideprivate

Definition at line 368 of file CTPPSProtonReconstructionPlotter.cc.

References CTPPSDetId::arm(), armCorrelationPlots_, Exception, CTPPSLocalTrackLite::getX(), CTPPSLocalTrackLite::getY(), training_settings::idx, maxNonEmptyEvents_, multiRPPlots_, n_non_empty_events_, p_x_L_diffNF_vs_x_L_N_, p_x_R_diffNF_vs_x_R_N_, p_y_L_diffNF_vs_y_L_N_, p_y_R_diffNF_vs_y_R_N_, rpId_45_F_, rpId_45_N_, rpId_56_F_, rpId_56_N_, singleMultiCorrelationPlots_, singleRPPlots_, tokenRecoProtonsMultiRP_, tokenRecoProtonsSingleRP_, and tokenTracks_.

Referenced by ~CTPPSProtonReconstructionPlotter().

369 {
370  // get input
372  event.getByToken(tokenTracks_, hTracks);
373 
374  Handle<reco::ForwardProtonCollection> hRecoProtonsSingleRP;
375  event.getByToken(tokenRecoProtonsSingleRP_, hRecoProtonsSingleRP);
376 
377  Handle<reco::ForwardProtonCollection> hRecoProtonsMultiRP;
378  event.getByToken(tokenRecoProtonsMultiRP_, hRecoProtonsMultiRP);
379 
380  if (!hRecoProtonsSingleRP->empty())
382 
384  throw cms::Exception("CTPPSProtonReconstructionPlotter") << "Number of non empty events reached maximum.";
385 
386  // track plots
387  const CTPPSLocalTrackLite *tr_L_N = nullptr;
388  const CTPPSLocalTrackLite *tr_L_F = nullptr;
389  const CTPPSLocalTrackLite *tr_R_N = nullptr;
390  const CTPPSLocalTrackLite *tr_R_F = nullptr;
391 
392  for (const auto &tr : *hTracks)
393  {
394  CTPPSDetId rpId(tr.getRPId());
395  unsigned int decRPId = rpId.arm()*100 + rpId.station()*10 + rpId.rp();
396 
397  if (decRPId == rpId_45_N_) tr_L_N = &tr;
398  if (decRPId == rpId_45_F_) tr_L_F = &tr;
399  if (decRPId == rpId_56_N_) tr_R_N = &tr;
400  if (decRPId == rpId_56_F_) tr_R_F = &tr;
401  }
402 
403  if (tr_L_N && tr_L_F)
404  {
405  p_x_L_diffNF_vs_x_L_N_->Fill(tr_L_N->getX(), tr_L_F->getX() - tr_L_N->getX());
406  p_y_L_diffNF_vs_y_L_N_->Fill(tr_L_N->getY(), tr_L_F->getY() - tr_L_N->getY());
407  }
408 
409  if (tr_R_N && tr_R_F)
410  {
411  p_x_R_diffNF_vs_x_R_N_->Fill(tr_R_N->getX(), tr_R_F->getX() - tr_R_N->getX());
412  p_y_R_diffNF_vs_y_R_N_->Fill(tr_R_N->getY(), tr_R_F->getY() - tr_R_N->getY());
413  }
414 
415  // make single-RP-reco plots
416  for (const auto &proton : *hRecoProtonsSingleRP)
417  {
418  CTPPSDetId rpId((*proton.contributingLocalTracks().begin())->getRPId());
419  unsigned int decRPId = rpId.arm()*100 + rpId.station()*10 + rpId.rp();
420  singleRPPlots_[decRPId].fill(proton);
421  }
422 
423  // make multi-RP-reco plots
424  for (const auto &proton : *hRecoProtonsMultiRP)
425  {
426  CTPPSDetId rpId((*proton.contributingLocalTracks().begin())->getRPId());
427  unsigned int armId = rpId.arm();
428  multiRPPlots_[armId].fill(proton);
429  }
430 
431  // make correlation plots
432  for (const auto &proton_s : *hRecoProtonsSingleRP)
433  {
434  for (const auto &proton_m : *hRecoProtonsMultiRP)
435  {
436  // only compare object from the same arm
437  CTPPSDetId rpId_s((*proton_s.contributingLocalTracks().begin())->getRPId());
438  CTPPSDetId rpId_m((*proton_m.contributingLocalTracks().begin())->getRPId());
439 
440  if (rpId_s.arm() != rpId_m.arm())
441  continue;
442 
443  // build index
444  const unsigned int idx = rpId_s.arm()*1000 + rpId_s.station()*100 + rpId_s.rp()*10 + rpId_m.arm();
445 
446  // fill plots
447  singleMultiCorrelationPlots_[idx].fill(proton_s, proton_m);
448  }
449  }
450 
451  // arm correlation plots
452  const reco::ForwardProton *p_arm0_s_N = nullptr, *p_arm0_s_F = nullptr, *p_arm0_m = nullptr;
453  const reco::ForwardProton *p_arm1_s_N = nullptr, *p_arm1_s_F = nullptr, *p_arm1_m = nullptr;
454 
455  for (const auto &proton : *hRecoProtonsSingleRP)
456  {
457  CTPPSDetId rpId((*proton.contributingLocalTracks().begin())->getRPId());
458  const unsigned int rpDecId = rpId.arm()*100 + rpId.station()*10 + rpId.rp();
459 
460  if (rpDecId == rpId_45_N_) p_arm0_s_N = &proton;
461  if (rpDecId == rpId_45_F_) p_arm0_s_F = &proton;
462 
463  if (rpDecId == rpId_56_N_) p_arm1_s_N = &proton;
464  if (rpDecId == rpId_56_F_) p_arm1_s_F = &proton;
465  }
466 
467  for (const auto & proton : *hRecoProtonsMultiRP)
468  {
469  CTPPSDetId rpId((*proton.contributingLocalTracks().begin())->getRPId());
470  const unsigned int arm = rpId.arm();
471 
472  if (arm == 0) p_arm0_m = &proton;
473  if (arm == 1) p_arm1_m = &proton;
474  }
475 
476  if (p_arm0_s_N && p_arm0_s_F && p_arm0_m)
477  armCorrelationPlots_[0].fill(*p_arm0_s_N, *p_arm0_s_F, *p_arm0_m);
478 
479  if (p_arm1_s_N && p_arm1_s_F && p_arm1_m)
480  armCorrelationPlots_[1].fill(*p_arm1_s_N, *p_arm1_s_F, *p_arm1_m);
481 }
std::map< unsigned int, MultiRPPlots > multiRPPlots_
edm::EDGetTokenT< reco::ForwardProtonCollection > tokenRecoProtonsSingleRP_
std::map< unsigned int, SingleRPPlots > singleRPPlots_
Local (=single RP) track with essential information only.
edm::EDGetTokenT< CTPPSLocalTrackLiteCollection > tokenTracks_
float getX() const
returns the horizontal track position
float getY() const
returns the vertical track position
uint32_t arm() const
Definition: CTPPSDetId.h:51
std::map< unsigned int, ArmCorrelationPlots > armCorrelationPlots_
Base class for CTPPS detector IDs.
Definition: CTPPSDetId.h:32
std::map< unsigned int, SingleMultiCorrelationPlots > singleMultiCorrelationPlots_
edm::EDGetTokenT< reco::ForwardProtonCollection > tokenRecoProtonsMultiRP_
void CTPPSProtonReconstructionPlotter::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 485 of file CTPPSProtonReconstructionPlotter.cc.

References armCorrelationPlots_, DEFINE_FWK_MODULE, multiRPPlots_, n_non_empty_events_, outputFile_, p_x_L_diffNF_vs_x_L_N_, p_x_R_diffNF_vs_x_R_N_, p_y_L_diffNF_vs_y_L_N_, p_y_R_diffNF_vs_y_R_N_, singleMultiCorrelationPlots_, and singleRPPlots_.

Referenced by ~CTPPSProtonReconstructionPlotter().

486 {
487  LogInfo("CTPPSProtonReconstructionPlotter") << "n_non_empty_events = " << n_non_empty_events_;
488 
489  auto f_out = std::make_unique<TFile>(outputFile_.c_str(), "recreate");
490 
491  p_x_L_diffNF_vs_x_L_N_->Write();
492  p_x_R_diffNF_vs_x_R_N_->Write();
493 
494  p_y_L_diffNF_vs_y_L_N_->Write();
495  p_y_R_diffNF_vs_y_R_N_->Write();
496 
497  TDirectory *d_singleRPPlots = f_out->mkdir("singleRPPlots");
498  for (const auto& it : singleRPPlots_) {
499  gDirectory = d_singleRPPlots->mkdir(Form("rp%u", it.first));
500  it.second.write();
501  }
502 
503  TDirectory *d_multiRPPlots = f_out->mkdir("multiRPPlots");
504  for (const auto& it : multiRPPlots_) {
505  gDirectory = d_multiRPPlots->mkdir(Form("arm%u", it.first));
506  it.second.write();
507  }
508 
509  TDirectory *d_singleMultiCorrelationPlots = f_out->mkdir("singleMultiCorrelationPlots");
510  for (const auto& it : singleMultiCorrelationPlots_) {
511  unsigned int si_rp = it.first / 10;
512  unsigned int mu_arm = it.first % 10;
513 
514  gDirectory = d_singleMultiCorrelationPlots->mkdir(Form("si_rp%u_mu_arm%u", si_rp, mu_arm));
515  it.second.write();
516  }
517 
518  TDirectory *d_armCorrelationPlots = f_out->mkdir("armCorrelationPlots");
519  for (const auto& it : armCorrelationPlots_) {
520  gDirectory = d_armCorrelationPlots->mkdir(Form("arm%u", it.first));
521  it.second.write();
522  }
523 }
std::map< unsigned int, MultiRPPlots > multiRPPlots_
std::map< unsigned int, SingleRPPlots > singleRPPlots_
std::map< unsigned int, ArmCorrelationPlots > armCorrelationPlots_
std::map< unsigned int, SingleMultiCorrelationPlots > singleMultiCorrelationPlots_
static void CTPPSProtonReconstructionPlotter::profileToRMSGraph ( TProfile *  p,
TGraphErrors *  g 
)
inlinestaticprivate

Definition at line 51 of file CTPPSProtonReconstructionPlotter.cc.

References EnergyCorrector::c, training_settings::idx, N, and mathSSE::sqrt().

Referenced by CTPPSProtonReconstructionPlotter::MultiRPPlots::write().

52  {
53  for (int bi = 1; bi <= p->GetNbinsX(); ++bi)
54  {
55  double c = p->GetBinCenter(bi);
56 
57  double N = p->GetBinEntries(bi);
58  double Sy = p->GetBinContent(bi) * N;
59  double Syy = p->GetSumw2()->At(bi);
60 
61  double si_sq = Syy/N - Sy*Sy/N/N;
62  double si = (si_sq >= 0.) ? sqrt(si_sq) : 0.;
63  double si_unc_sq = si_sq / 2. / N; // Gaussian approximation
64  double si_unc = (si_unc_sq >= 0.) ? sqrt(si_unc_sq) : 0.;
65 
66  int idx = g->GetN();
67  g->SetPoint(idx, c, si);
68  g->SetPointError(idx, 0., si_unc);
69  }
70  }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
T sqrt(T t)
Definition: SSEVec.h:18
#define N
Definition: blowfish.cc:9

Member Data Documentation

std::map<unsigned int, ArmCorrelationPlots> CTPPSProtonReconstructionPlotter::armCorrelationPlots_
private

Definition at line 329 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze(), and endJob().

signed int CTPPSProtonReconstructionPlotter::maxNonEmptyEvents_
private

Definition at line 49 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze().

std::map<unsigned int, MultiRPPlots> CTPPSProtonReconstructionPlotter::multiRPPlots_
private

Definition at line 236 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze(), and endJob().

signed int CTPPSProtonReconstructionPlotter::n_non_empty_events_
private

Definition at line 334 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze(), and endJob().

std::string CTPPSProtonReconstructionPlotter::outputFile_
private

Definition at line 47 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by endJob().

std::unique_ptr<TProfile> CTPPSProtonReconstructionPlotter::p_x_L_diffNF_vs_x_L_N_
private

Definition at line 331 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze(), and endJob().

std::unique_ptr<TProfile> CTPPSProtonReconstructionPlotter::p_x_R_diffNF_vs_x_R_N_
private

Definition at line 331 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze(), and endJob().

std::unique_ptr<TProfile> CTPPSProtonReconstructionPlotter::p_y_L_diffNF_vs_y_L_N_
private

Definition at line 332 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze(), and endJob().

std::unique_ptr<TProfile> CTPPSProtonReconstructionPlotter::p_y_R_diffNF_vs_y_R_N_
private

Definition at line 332 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze(), and endJob().

unsigned int CTPPSProtonReconstructionPlotter::rpId_45_F_
private

Definition at line 44 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze().

unsigned int CTPPSProtonReconstructionPlotter::rpId_45_N_
private

Definition at line 44 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze().

unsigned int CTPPSProtonReconstructionPlotter::rpId_56_F_
private

Definition at line 45 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze().

unsigned int CTPPSProtonReconstructionPlotter::rpId_56_N_
private

Definition at line 45 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze().

std::map<unsigned int, SingleMultiCorrelationPlots> CTPPSProtonReconstructionPlotter::singleMultiCorrelationPlots_
private

Definition at line 287 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze(), and endJob().

std::map<unsigned int, SingleRPPlots> CTPPSProtonReconstructionPlotter::singleRPPlots_
private

Definition at line 104 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze(), and endJob().

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

Definition at line 42 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze().

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

Definition at line 41 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze().

edm::EDGetTokenT<CTPPSLocalTrackLiteCollection> CTPPSProtonReconstructionPlotter::tokenTracks_
private

Definition at line 40 of file CTPPSProtonReconstructionPlotter.cc.

Referenced by analyze().