CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
EvtPlaneProducer Class Reference

#include <RecoHI/EvtPlaneProducer/src/EvtPlaneProducer.cc>

Inheritance diagram for EvtPlaneProducer:
edm::stream::EDProducer<>

Public Member Functions

 EvtPlaneProducer (const edm::ParameterSet &)
 
 ~EvtPlaneProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Member Functions

void fillCastor (const TrackStructure &track, double vz, int bin)
 
void fillHF (const TrackStructure &track, double vz, int bin)
 
void fillTracker (const TrackStructure &track, double vz, int bin)
 
bool passEta (float eta, int i)
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

bool bScalo_particleFlow_
 
bool bStrack_packedPFCandidates_
 
double caloCentRef_
 
double caloCentRefWidth_
 
edm::Handle< CaloTowerCollectioncaloCollection_
 
edm::InputTag caloTag_
 
edm::EDGetTokenT
< CaloTowerCollection
caloToken_
 
edm::EDGetTokenT
< reco::PFCandidateCollection
caloTokenPF_
 
edm::Handle< std::vector
< reco::CastorTower > > 
castorCollection_
 
edm::InputTag castorTag_
 
edm::EDGetTokenT< std::vector
< reco::CastorTower > > 
castorToken_
 
int CentBinCompression_
 
edm::InputTag centralityBinTag_
 
edm::EDGetTokenT< int > centralityBinToken_
 
std::string centralityMC_
 
edm::ESGetToken
< CentralityTable, HeavyIonRcd
centralityToken_
 
std::string centralityVariable_
 
double chi2_
 
edm::InputTag chi2MapLostTag_
 
edm::EDGetTokenT
< edm::ValueMap< float > > 
chi2MapLostToken_
 
edm::InputTag chi2MapTag_
 
edm::EDGetTokenT
< edm::ValueMap< float > > 
chi2MapToken_
 
double chi2perlayer_
 
int cutEra_
 
EPCuts cuts_
 
double d0d0error_
 
double dzdzerror_
 
double dzdzerror_pix_
 
double dzerr_
 
HiEvtPlaneFlattenflat [NumEPNames]
 
double flatdelvtx_
 
double flatminvtx_
 
int flatnvtxbins_
 
int FlatOrder_
 
edm::ESGetToken< RPFlatParams,
HeavyIonRPRcd
flatparmsToken_
 
edm::ESWatcher< HeavyIonRPRcdhirpWatcher_
 
edm::ESWatcher< HeavyIonRcdhiWatcher_
 
bool loadDB_
 
edm::EDGetTokenT
< pat::PackedCandidateCollection
lostToken_
 
edm::InputTag losttrackTag_
 
double maxet_
 
double maxpt_
 
double minet_
 
double minpt_
 
double nCentBins_
 
int nhitsValid_
 
int NumFlatBins_
 
edm::EDGetTokenT
< pat::PackedCandidateCollection
packedToken_
 
double pterror_
 
GenPlanerp [NumEPNames]
 
TrackStructure track_
 
edm::Handle
< reco::TrackCollection
trackCollection_
 
edm::InputTag trackTag_
 
edm::EDGetTokenT
< reco::TrackCollection
trackToken_
 
edm::Handle< std::vector
< reco::Vertex > > 
vertex_
 
edm::InputTag vertexTag_
 
edm::EDGetTokenT< std::vector
< reco::Vertex > > 
vertexToken_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 167 of file EvtPlaneProducer.cc.

Constructor & Destructor Documentation

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

Definition at line 345 of file EvtPlaneProducer.cc.

References bScalo_particleFlow_, bStrack_packedPFCandidates_, caloTag_, caloToken_, caloTokenPF_, castorTag_, castorToken_, centralityBinTag_, centralityBinToken_, centralityMC_, centralityToken_, centralityVariable_, chi2_, chi2MapLostTag_, chi2MapLostToken_, chi2MapTag_, chi2MapToken_, chi2perlayer_, edm::errors::Configuration, cutEra_, cuts_, d0d0error_, dzdzerror_, dzdzerror_pix_, hi::EPEtaMax1, hi::EPEtaMax2, hi::EPEtaMin1, hi::EPEtaMin2, hi::EPNames, hi::EPOrder, DeDxTools::esConsumes(), Exception, edm::ParameterSet::exists(), flat, flatdelvtx_, flatminvtx_, flatnvtxbins_, FlatOrder_, flatparmsToken_, edm::ParameterSet::getParameter(), mps_fire::i, HiEvtPlaneFlatten::init(), edm::InputTag::label(), loadDB_, lostToken_, losttrackTag_, nCentBins_, nhitsValid_, hi::NumEPNames, NumFlatBins_, packedToken_, pterror_, rp, AlCaHLTBitMon_QueryRunRegistry::string, trackTag_, trackToken_, vertexTag_, and vertexToken_.

346  : centralityVariable_(iConfig.getParameter<std::string>("centralityVariable")),
347  centralityBinTag_(iConfig.getParameter<edm::InputTag>("centralityBinTag")),
348  vertexTag_(iConfig.getParameter<edm::InputTag>("vertexTag")),
349  caloTag_(iConfig.getParameter<edm::InputTag>("caloTag")),
350  castorTag_(iConfig.getParameter<edm::InputTag>("castorTag")),
351  trackTag_(iConfig.getParameter<edm::InputTag>("trackTag")),
352  losttrackTag_(iConfig.getParameter<edm::InputTag>("lostTag")),
353  chi2MapTag_(iConfig.getParameter<edm::InputTag>("chi2MapTag")),
354  chi2MapLostTag_(iConfig.getParameter<edm::InputTag>("chi2MapLostTag")),
355  loadDB_(iConfig.getParameter<bool>("loadDB")),
356  minet_(iConfig.getParameter<double>("minet")),
357  maxet_(iConfig.getParameter<double>("maxet")),
358  minpt_(iConfig.getParameter<double>("minpt")),
359  maxpt_(iConfig.getParameter<double>("maxpt")),
360  flatnvtxbins_(iConfig.getParameter<int>("flatnvtxbins")),
361  flatminvtx_(iConfig.getParameter<double>("flatminvtx")),
362  flatdelvtx_(iConfig.getParameter<double>("flatdelvtx")),
363  dzdzerror_(iConfig.getParameter<double>("dzdzerror")),
364  d0d0error_(iConfig.getParameter<double>("d0d0error")),
365  pterror_(iConfig.getParameter<double>("pterror")),
366  chi2perlayer_(iConfig.getParameter<double>("chi2perlayer")),
367  dzdzerror_pix_(iConfig.getParameter<double>("dzdzerror_pix")),
368  chi2_(iConfig.getParameter<double>("chi2")),
369  nhitsValid_(iConfig.getParameter<int>("nhitsValid")),
370  FlatOrder_(iConfig.getParameter<int>("FlatOrder")),
371  NumFlatBins_(iConfig.getParameter<int>("NumFlatBins")),
372  caloCentRef_(iConfig.getParameter<double>("caloCentRef")),
373  caloCentRefWidth_(iConfig.getParameter<double>("caloCentRefWidth")),
374  CentBinCompression_(iConfig.getParameter<int>("CentBinCompression")),
375  cutEra_(iConfig.getParameter<int>("cutEra"))
376 
377 {
378  if (cutEra_ > 3)
379  throw edm::Exception(edm::errors::Configuration) << "wrong range in cutEra parameter";
380  cuts_ = EPCuts(
382  nCentBins_ = 200.;
383 
384  if (iConfig.exists("nonDefaultGlauberModel")) {
385  centralityMC_ = iConfig.getParameter<std::string>("nonDefaultGlauberModel");
386  }
388  if (loadDB_) {
390  }
391 
392  centralityBinToken_ = consumes<int>(centralityBinTag_);
393 
394  vertexToken_ = consumes<std::vector<reco::Vertex>>(vertexTag_);
395 
396  bStrack_packedPFCandidates_ = (trackTag_.label().find("packedPFCandidates") != std::string::npos);
397  bScalo_particleFlow_ = (caloTag_.label().find("particleFlow") != std::string::npos);
398  if (bStrack_packedPFCandidates_) {
399  packedToken_ = consumes<pat::PackedCandidateCollection>(trackTag_);
400  lostToken_ = consumes<pat::PackedCandidateCollection>(losttrackTag_);
401  chi2MapToken_ = consumes<edm::ValueMap<float>>(chi2MapTag_);
402  chi2MapLostToken_ = consumes<edm::ValueMap<float>>(chi2MapLostTag_);
403 
404  } else {
405  if (bScalo_particleFlow_) {
406  caloTokenPF_ = consumes<reco::PFCandidateCollection>(caloTag_);
407  } else {
408  caloToken_ = consumes<CaloTowerCollection>(caloTag_);
409  }
410  castorToken_ = consumes<std::vector<reco::CastorTower>>(castorTag_);
411  trackToken_ = consumes<reco::TrackCollection>(trackTag_);
412  }
413 
414  produces<reco::EvtPlaneCollection>();
415  for (int i = 0; i < NumEPNames; i++) {
416  rp[i] = new GenPlane(EPNames[i], EPEtaMin1[i], EPEtaMax1[i], EPEtaMin2[i], EPEtaMax2[i], EPOrder[i]);
417  }
418  for (int i = 0; i < NumEPNames; i++) {
419  flat[i] = new HiEvtPlaneFlatten();
421  }
422 }
edm::InputTag centralityBinTag_
edm::EDGetTokenT< reco::TrackCollection > trackToken_
edm::InputTag caloTag_
std::string centralityMC_
bool exists(std::string const &parameterName) const
checks if a parameter exists
edm::ESGetToken< CentralityTable, HeavyIonRcd > centralityToken_
const std::array< double, NumEPNames > EPEtaMin2
const std::array< double, NumEPNames > EPEtaMax1
edm::EDGetTokenT< pat::PackedCandidateCollection > packedToken_
edm::EDGetTokenT< pat::PackedCandidateCollection > lostToken_
GenPlane * rp[NumEPNames]
edm::EDGetTokenT< std::vector< reco::Vertex > > vertexToken_
HiEvtPlaneFlatten * flat[NumEPNames]
edm::EDGetTokenT< int > centralityBinToken_
edm::InputTag vertexTag_
edm::InputTag chi2MapLostTag_
edm::ESGetToken< RPFlatParams, HeavyIonRPRcd > flatparmsToken_
edm::InputTag chi2MapTag_
const std::array< double, NumEPNames > EPEtaMin1
void init(int order, int nbins, int nvtxbins=10, double minvtx=-25, double delvtx=5, std::string tag="", int vord=2)
std::string centralityVariable_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::string const & label() const
Definition: InputTag.h:36
const std::array< double, NumEPNames > EPEtaMax2
edm::EDGetTokenT< reco::PFCandidateCollection > caloTokenPF_
const std::array< int, NumEPNames > EPOrder
const std::array< std::string, NumEPNames > EPNames
edm::EDGetTokenT< edm::ValueMap< float > > chi2MapLostToken_
edm::EDGetTokenT< CaloTowerCollection > caloToken_
static const int NumEPNames
edm::EDGetTokenT< std::vector< reco::CastorTower > > castorToken_
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
edm::InputTag castorTag_
edm::EDGetTokenT< edm::ValueMap< float > > chi2MapToken_
edm::InputTag trackTag_
edm::InputTag losttrackTag_
EvtPlaneProducer::~EvtPlaneProducer ( )
override

Definition at line 424 of file EvtPlaneProducer.cc.

References flat, mps_fire::i, and hi::NumEPNames.

424  {
425  // do anything here that needs to be done at desctruction time
426  // (e.g. close files, deallocate resources etc.)
427  for (int i = 0; i < NumEPNames; i++) {
428  delete flat[i];
429  }
430 }
HiEvtPlaneFlatten * flat[NumEPNames]
static const int NumEPNames

Member Function Documentation

void EvtPlaneProducer::fillCastor ( const TrackStructure track,
double  vz,
int  bin 
)
inlineprivate

Definition at line 273 of file EvtPlaneProducer.cc.

References funct::cos(), hi::EPDet, hi::EPOrder, hi::TrackStructure::et, hi::TrackStructure::eta, mps_fire::i, hi::maxTransverse, HiEvtPlane_cfi::minet, hi::minTransverse, hi::MomConsWeight, hi::NumEPNames, hi::TrackStructure::phi, funct::sin(), and w.

Referenced by produce().

273  {
274  double minet = minet_;
275  double maxet = maxet_;
276  for (int i = 0; i < NumEPNames; i++) {
277  if (EPDet[i] == Castor) {
278  if (minet_ < 0)
279  minet = minTransverse[i];
280  if (maxet_ < 0)
281  maxet = maxTransverse[i];
282  if (track.et < minet)
283  continue;
284  if (track.et > maxet)
285  continue;
286  if (not passEta(track.eta, i))
287  continue;
288  double w = track.et;
289  if (EPOrder[i] == 1) {
290  if (MomConsWeight[i][0] == 'y' && loadDB_) {
291  w = flat[i]->getW(track.et, vz, bin);
292  }
293  }
294  rp[i]->addParticle(w, track.et, sin(EPOrder[i] * track.phi), cos(EPOrder[i] * track.phi), track.eta);
295  }
296  }
297  }
const double w
Definition: UKUtility.cc:23
const std::array< std::string, NumEPNames > MomConsWeight
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
bool passEta(float eta, int i)
const std::array< double, NumEPNames > maxTransverse
GenPlane * rp[NumEPNames]
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
HiEvtPlaneFlatten * flat[NumEPNames]
void addParticle(double w, double PtOrEt, double s, double c, double eta)
const std::array< int, NumEPNames > EPDet
const std::array< double, NumEPNames > minTransverse
double getW(double pt, double vtx, int centbin) const
const std::array< int, NumEPNames > EPOrder
static const int NumEPNames
void EvtPlaneProducer::fillHF ( const TrackStructure track,
double  vz,
int  bin 
)
inlineprivate

Definition at line 245 of file EvtPlaneProducer.cc.

References funct::cos(), hi::EPDet, hi::EPOrder, hi::TrackStructure::et, hi::TrackStructure::eta, DigiToRawDM_cff::HF, mps_fire::i, hi::maxTransverse, HiEvtPlane_cfi::minet, hi::minTransverse, hi::MomConsWeight, hi::NumEPNames, hi::TrackStructure::phi, funct::sin(), and w.

Referenced by produce().

245  {
246  double minet = minet_;
247  double maxet = maxet_;
248  for (int i = 0; i < NumEPNames; i++) {
249  if (EPDet[i] != HF)
250  continue;
251  if (minet_ < 0)
252  minet = minTransverse[i];
253  if (maxet_ < 0)
254  maxet = maxTransverse[i];
255  if (track.et < minet)
256  continue;
257  if (track.et > maxet)
258  continue;
259  if (not passEta(track.eta, i))
260  continue;
261  double w = track.et;
262  if (loadDB_)
263  w = track.et * flat[i]->etScale(vz, bin);
264  if (EPOrder[i] == 1) {
265  if (MomConsWeight[i][0] == 'y' && loadDB_) {
266  w = flat[i]->getW(track.et, vz, bin);
267  }
268  }
269  rp[i]->addParticle(w, track.et, sin(EPOrder[i] * track.phi), cos(EPOrder[i] * track.phi), track.eta);
270  }
271  };
const double w
Definition: UKUtility.cc:23
const std::array< std::string, NumEPNames > MomConsWeight
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
bool passEta(float eta, int i)
const std::array< double, NumEPNames > maxTransverse
GenPlane * rp[NumEPNames]
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
HiEvtPlaneFlatten * flat[NumEPNames]
void addParticle(double w, double PtOrEt, double s, double c, double eta)
const std::array< int, NumEPNames > EPDet
double etScale(double vtx, int centbin) const
const std::array< double, NumEPNames > minTransverse
double getW(double pt, double vtx, int centbin) const
const std::array< int, NumEPNames > EPOrder
static const int NumEPNames
void EvtPlaneProducer::fillTracker ( const TrackStructure track,
double  vz,
int  bin 
)
inlineprivate

Definition at line 316 of file EvtPlaneProducer.cc.

References funct::cos(), hi::EPDet, hi::EPOrder, hi::TrackStructure::eta, mps_fire::i, hi::maxTransverse, HiEvtPlane_cfi::minpt, hi::minTransverse, hi::MomConsWeight, hi::NumEPNames, hi::TrackStructure::phi, hi::TrackStructure::pt, funct::sin(), align::Tracker, and w.

Referenced by produce().

316  {
317  double minpt = minpt_;
318  double maxpt = maxpt_;
319  for (int i = 0; i < NumEPNames; i++) {
320  if (EPDet[i] == Tracker) {
321  if (minpt_ < 0)
322  minpt = minTransverse[i];
323  if (maxpt_ < 0)
324  maxpt = maxTransverse[i];
325  if (track.pt < minpt)
326  continue;
327  if (track.pt > maxpt)
328  continue;
329  if (not passEta(track.eta, i))
330  continue;
331  double w = track.pt;
332  if (w > 2.5)
333  w = 2.0; //v2 starts decreasing above ~2.5 GeV/c
334  if (EPOrder[i] == 1) {
335  if (MomConsWeight[i][0] == 'y' && loadDB_) {
336  w = flat[i]->getW(track.pt, vz, bin);
337  }
338  }
339  rp[i]->addParticle(w, track.pt, sin(EPOrder[i] * track.phi), cos(EPOrder[i] * track.phi), track.eta);
340  }
341  }
342  };
const double w
Definition: UKUtility.cc:23
const std::array< std::string, NumEPNames > MomConsWeight
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
bool passEta(float eta, int i)
const std::array< double, NumEPNames > maxTransverse
GenPlane * rp[NumEPNames]
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
HiEvtPlaneFlatten * flat[NumEPNames]
void addParticle(double w, double PtOrEt, double s, double c, double eta)
const std::array< int, NumEPNames > EPDet
const std::array< double, NumEPNames > minTransverse
double getW(double pt, double vtx, int centbin) const
const std::array< int, NumEPNames > EPOrder
static const int NumEPNames
bool EvtPlaneProducer::passEta ( float  eta,
int  i 
)
inlineprivate

Definition at line 299 of file EvtPlaneProducer.cc.

References hi::EPEtaMax1, hi::EPEtaMax2, hi::EPEtaMin1, and hi::EPEtaMin2.

299  {
300  if (EPEtaMin2[i] == EPEtaMax2[i]) {
301  if (eta < EPEtaMin1[i])
302  return false;
303  if (eta > EPEtaMax1[i])
304  return false;
305  } else {
306  if (eta < EPEtaMin1[i])
307  return false;
308  if (eta > EPEtaMax2[i])
309  return false;
310  if (eta > EPEtaMax1[i] && eta < EPEtaMin2[i])
311  return false;
312  }
313  return true;
314  }
const std::array< double, NumEPNames > EPEtaMin2
const std::array< double, NumEPNames > EPEtaMax1
const std::array< double, NumEPNames > EPEtaMin1
const std::array< double, NumEPNames > EPEtaMax2
void EvtPlaneProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 437 of file EvtPlaneProducer.cc.

References funct::abs(), reco::TrackBase::algo(), hi::TrackStructure::algos, newFWLiteAna::bin, bScalo_particleFlow_, bStrack_packedPFCandidates_, caloCentRef_, caloCentRefWidth_, caloCollection_, caloToken_, caloTokenPF_, HLT_FULL_cff::cands, castorCollection_, castorToken_, hi::TrackStructure::centbin, CentBinCompression_, centralityBinToken_, centralityToken_, hi::TrackStructure::charge, reco::TrackBase::charge(), edm::ESWatcher< T >::check(), hi::TrackStructure::chi2layer, chi2MapLostToken_, chi2MapToken_, hi::TrackStructure::collection, cuts_, cuy::cv, EcalCondDB::db, hi::TrackStructure::dxy, reco::TrackBase::dxy(), hi::TrackStructure::dxyError, reco::TrackBase::dxyError(), hi::TrackStructure::dxySig, hi::TrackStructure::dz, reco::TrackBase::dz(), hi::TrackStructure::dzError, reco::TrackBase::dzError(), hi::TrackStructure::dzSig, hi::EPDet, hi::TrackStructure::et, reco::LeafCandidate::et(), pat::PackedCandidate::et(), hi::TrackStructure::eta, reco::LeafCandidate::eta(), reco::TrackBase::eta(), pat::PackedCandidate::eta(), fillCastor(), fillHF(), fillTracker(), flat, flatparmsToken_, edm::Event::get(), hi::GenPlane::getAngle(), edm::Event::getByToken(), edm::EventSetup::getData(), pat::PackedCandidate::hasTrackDetails(), DigiToRawDM_cff::HF, hi::TrackStructure::highPurity, reco::TrackBase::highPurity, hirpWatcher_, reco::TrackBase::hitPattern(), hiWatcher_, mps_fire::i, hi::EPCuts::isGoodCastor(), hi::EPCuts::isGoodHF(), hi::EPCuts::isGoodTrack(), loadDB_, lostToken_, eostools::move(), dqmiodumpmetadata::n, nCentBins_, hi::TrackStructure::normalizedChi2, hi::TrackStructure::numberOfValidHits, reco::TrackBase::numberOfValidHits(), hi::NumEPNames, packedToken_, hi::TrackStructure::pdgid, reco::LeafCandidate::pdgId(), pat::PackedCandidate::pdgId(), hi::TrackStructure::phi, reco::LeafCandidate::phi(), reco::TrackBase::phi(), pat::PackedCandidate::phi(), pat::PackedCandidate::pseudoTrack(), hi::TrackStructure::pt, reco::TrackBase::pt(), hi::TrackStructure::ptError, reco::TrackBase::ptError(), edm::Event::put(), dt_dqm_sourceclient_common_cff::reco, reset(), rp, HiEvtPlaneFlatten::setCaloCentRefBins(), hgcalTowerProducer_cfi::tower, track_, trackCollection_, reco::HitPattern::trackerLayersWithMeasurement(), pat::PackedCandidate::trackHighPurity(), trackToken_, parallelization::uint(), vertexToken_, and gpuVertexFinder::wv.

437  {
438  using namespace edm;
439  using namespace std;
440  using namespace reco;
441  if (hiWatcher_.check(iSetup)) {
442  //
443  //Get Size of Centrality Table
444  //
445  auto const &centDB = iSetup.getData(centralityToken_);
446  nCentBins_ = centDB.m_table.size();
447  for (int i = 0; i < NumEPNames; i++) {
448  if (caloCentRef_ > 0) {
449  int minbin = (caloCentRef_ - caloCentRefWidth_ / 2.) * nCentBins_ / 100.;
450  int maxbin = (caloCentRef_ + caloCentRefWidth_ / 2.) * nCentBins_ / 100.;
451  minbin /= CentBinCompression_;
452  maxbin /= CentBinCompression_;
453  if (minbin > 0 && maxbin >= minbin) {
454  if (EPDet[i] == HF || EPDet[i] == Castor)
455  flat[i]->setCaloCentRefBins(minbin, maxbin);
456  }
457  }
458  }
459  }
460  //
461  //Get flattening parameter file.
462  //
463  if (loadDB_ && hirpWatcher_.check(iSetup)) {
465  if (!db.IsSuccess()) {
466  loadDB_ = kFALSE;
467  }
468  }
469  //
470  //Get Centrality
471  //
472  int bin = 0;
473  int cbin = 0;
474  if (loadDB_) {
475  cbin = iEvent.get(centralityBinToken_);
476  bin = cbin / CentBinCompression_;
477  }
478  //
479  //Get Vertex
480  //
481  //best vertex
482  const reco::Vertex &vtx = iEvent.get(vertexToken_)[0];
483  double bestvz = vtx.z();
484  double bestvx = vtx.x();
485  double bestvy = vtx.y();
486  double bestvzError = vtx.zError();
487  math::XYZPoint bestvtx(bestvx, bestvy, bestvz);
488  math::Error<3>::type vtx_cov = vtx.covariance();
489 
490  for (int i = 0; i < NumEPNames; i++)
491  rp[i]->reset();
496  for (int idx = 1; idx < 3; idx++) {
497  if (idx == 1) {
498  iEvent.getByToken(packedToken_, cands);
499  iEvent.getByToken(chi2MapToken_, chi2Map);
500  }
501  if (idx == 2) {
502  iEvent.getByToken(lostToken_, cands);
503  iEvent.getByToken(chi2MapLostToken_, chi2Map);
504  }
505  for (unsigned int i = 0, n = cands->size(); i < n; ++i) {
506  track_ = {};
507  track_.centbin = cbin;
508  const pat::PackedCandidate &pf = (*cands)[i];
509  track_.et = pf.et();
510  track_.eta = pf.eta();
511  track_.phi = pf.phi();
512  track_.pdgid = pf.pdgId();
513  if ((idx == 1) and cuts_.isGoodHF(track_)) {
514  fillHF(track_, bestvz, bin);
515  }
516  if (!pf.hasTrackDetails())
517  continue;
518  const reco::Track &trk = pf.pseudoTrack();
520  track_.charge = trk.charge();
521  if (!track_.highPurity || track_.charge == 0)
522  continue;
523  track_.collection = idx;
524  track_.eta = trk.eta();
525  track_.phi = trk.phi();
526  track_.pt = trk.pt();
527  track_.ptError = trk.ptError();
529  track_.algos = trk.algo();
530  track_.dz = std::abs(trk.dz(bestvtx));
531  track_.dxy = std::abs(trk.dxy(bestvtx));
532  track_.dzError = std::hypot(trk.dzError(), bestvzError);
533  track_.dxyError = trk.dxyError(bestvtx, vtx_cov);
536  const reco::HitPattern &hit_pattern = trk.hitPattern();
539  if (cuts_.isGoodTrack(track_)) {
540  fillTracker(track_, bestvz, bin);
541  }
542  }
543  }
544  } else {
545  //calorimetry part
546  if (bScalo_particleFlow_) {
547  iEvent.getByToken(caloTokenPF_, calocands);
548  for (unsigned int i = 0, n = calocands->size(); i < n; ++i) {
549  track_ = {};
550  track_.centbin = cbin;
551  const reco::PFCandidate &pf = (*calocands)[i];
552  track_.et = pf.et();
553  track_.eta = pf.eta();
554  track_.phi = pf.phi();
555  track_.pdgid = pf.pdgId();
556  if (cuts_.isGoodHF(track_)) {
557  fillHF(track_, bestvz, bin);
558  }
559  }
560  } else {
562  for (const auto &tower : *caloCollection_) {
563  track_.eta = tower.eta();
564  track_.phi = tower.phi();
565  track_.et = tower.emEt() + tower.hadEt();
566  track_.pdgid = 1;
567  if (cuts_.isGoodHF(track_))
568  fillHF(track_, bestvz, bin);
569  }
570  }
571 
572  //Castor part
574  for (const auto &tower : *castorCollection_) {
575  track_.eta = tower.eta();
576  track_.phi = tower.phi();
577  track_.et = tower.et();
578  track_.pdgid = 1;
580  fillCastor(track_, bestvz, bin);
581  }
582  //Tracking part
584  for (const auto &trk : *trackCollection_) {
586  track_.charge = trk.charge();
587  if (!track_.highPurity || track_.charge == 0)
588  continue;
589  track_.centbin = cbin;
590  track_.collection = 0;
591  track_.eta = trk.eta();
592  track_.phi = trk.phi();
593  track_.pt = trk.pt();
594  track_.ptError = trk.ptError();
596  track_.algos = trk.algo();
597  track_.dz = std::abs(trk.dz(bestvtx));
598  track_.dxy = std::abs(trk.dxy(bestvtx));
599  track_.dzError = std::hypot(trk.dzError(), bestvzError);
600  track_.dxyError = trk.dxyError(bestvtx, vtx_cov);
605  if (cuts_.isGoodTrack(track_))
606  fillTracker(track_, bestvz, bin);
607  }
608  }
609 
610  auto evtplaneOutput = std::make_unique<EvtPlaneCollection>();
611 
612  double ang = -10;
613  double sv = 0;
614  double cv = 0;
615  double svNoWgt = 0;
616  double cvNoWgt = 0;
617 
618  double wv = 0;
619  double wv2 = 0;
620  double pe = 0;
621  double pe2 = 0;
622  uint epmult = 0;
623 
624  for (int i = 0; i < NumEPNames; i++) {
625  rp[i]->getAngle(ang, sv, cv, svNoWgt, cvNoWgt, wv, wv2, pe, pe2, epmult);
626  evtplaneOutput->push_back(EvtPlane(i, 0, ang, sv, cv, wv, wv2, pe, pe2, epmult));
627  evtplaneOutput->back().addLevel(3, 0., svNoWgt, cvNoWgt);
628  }
629 
630  iEvent.put(std::move(evtplaneOutput));
631 }
edm::EDGetTokenT< reco::TrackCollection > trackToken_
edm::Handle< CaloTowerCollection > caloCollection_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
edm::Handle< reco::TrackCollection > trackCollection_
double et() const override
transverse energy
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:593
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
double dxyError() const
error on dxy
Definition: TrackBase.h:769
float *__restrict__ wv
tuple db
Definition: EcalCondDB.py:153
void setCaloCentRefBins(const int caloCentRefMinBin, const int caloCentRefMaxBin)
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:649
ErrorD< N >::type type
Definition: Error.h:32
edm::ESGetToken< CentralityTable, HeavyIonRcd > centralityToken_
int pdgId() const override
PDG identifier.
edm::EDGetTokenT< pat::PackedCandidateCollection > packedToken_
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:521
edm::ESWatcher< HeavyIonRcd > hiWatcher_
void fillHF(const TrackStructure &track, double vz, int bin)
float chi2layer
Definition: EPCuts.h:29
int pdgId() const final
PDG identifier.
TrackAlgorithm algo() const
Definition: TrackBase.h:547
bool getData(T &iHolder) const
Definition: EventSetup.h:128
edm::EDGetTokenT< pat::PackedCandidateCollection > lostToken_
TrackStructure track_
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:652
double eta() const override
momentum pseudorapidity
float dxyError
Definition: EPCuts.h:22
GenPlane * rp[NumEPNames]
edm::EDGetTokenT< std::vector< reco::Vertex > > vertexToken_
double pt() const
track transverse momentum
Definition: TrackBase.h:637
bool trackHighPurity() const
true if the track had the highPurity quality bit
void fillTracker(const TrackStructure &track, double vz, int bin)
def move
Definition: eostools.py:511
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:754
HiEvtPlaneFlatten * flat[NumEPNames]
edm::Ref< pat::PackedCandidateCollection > PackedCandidateRef
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool get(ProductID const &oid, Handle< PROD > &result) const
Definition: Event.h:346
virtual const reco::Track & pseudoTrack() const
const std::array< int, NumEPNames > EPDet
unsigned short numberOfValidHits() const
number of valid hits found
Definition: TrackBase.h:798
edm::EDGetTokenT< int > centralityBinToken_
int numberOfValidHits
Definition: EPCuts.h:30
edm::ESGetToken< RPFlatParams, HeavyIonRPRcd > flatparmsToken_
bool isGoodTrack(const TrackStructure &track) const
Definition: EPCuts.h:64
edm::Handle< std::vector< reco::CastorTower > > castorCollection_
dictionary cv
Definition: cuy.py:363
bool hasTrackDetails() const
Return true if a bestTrack can be extracted from this Candidate.
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:622
double dzError() const
error on dz
Definition: TrackBase.h:778
void fillCastor(const TrackStructure &track, double vz, int bin)
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:504
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
float normalizedChi2
Definition: EPCuts.h:27
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:552
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:41
bool isGoodCastor(const TrackStructure &track) const
Definition: EPCuts.h:62
double et() const final
transverse energy
edm::EDGetTokenT< reco::PFCandidateCollection > caloTokenPF_
edm::ESWatcher< HeavyIonRPRcd > hirpWatcher_
edm::EDGetTokenT< edm::ValueMap< float > > chi2MapLostToken_
edm::EDGetTokenT< CaloTowerCollection > caloToken_
int charge() const
track electric charge
Definition: TrackBase.h:596
static const int NumEPNames
edm::EDGetTokenT< std::vector< reco::CastorTower > > castorToken_
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:608
double phi() const final
momentum azimuthal angle
bool isGoodHF(const TrackStructure &track) const
Definition: EPCuts.h:54
double getAngle(double &ang, double &sv, double &cv, double &svNoWgt, double &cvNoWgt, double &w, double &w2, double &PtOrEt, double &PtOrEt2, uint &epmult)
void reset(double vett[256])
Definition: TPedValues.cc:11
double phi() const override
momentum azimuthal angle
edm::EDGetTokenT< edm::ValueMap< float > > chi2MapToken_
double eta() const final
momentum pseudorapidity

Member Data Documentation

bool EvtPlaneProducer::bScalo_particleFlow_
private

Definition at line 204 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

bool EvtPlaneProducer::bStrack_packedPFCandidates_
private

Definition at line 203 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

double EvtPlaneProducer::caloCentRef_
private

Definition at line 235 of file EvtPlaneProducer.cc.

Referenced by produce().

double EvtPlaneProducer::caloCentRefWidth_
private

Definition at line 236 of file EvtPlaneProducer.cc.

Referenced by produce().

edm::Handle<CaloTowerCollection> EvtPlaneProducer::caloCollection_
private

Definition at line 192 of file EvtPlaneProducer.cc.

Referenced by produce().

edm::InputTag EvtPlaneProducer::caloTag_
private

Definition at line 190 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

edm::EDGetTokenT<CaloTowerCollection> EvtPlaneProducer::caloToken_
private

Definition at line 191 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

edm::EDGetTokenT<reco::PFCandidateCollection> EvtPlaneProducer::caloTokenPF_
private

Definition at line 193 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

edm::Handle<std::vector<reco::CastorTower> > EvtPlaneProducer::castorCollection_
private

Definition at line 197 of file EvtPlaneProducer.cc.

Referenced by produce().

edm::InputTag EvtPlaneProducer::castorTag_
private

Definition at line 195 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

edm::EDGetTokenT<std::vector<reco::CastorTower> > EvtPlaneProducer::castorToken_
private

Definition at line 196 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

int EvtPlaneProducer::CentBinCompression_
private

Definition at line 237 of file EvtPlaneProducer.cc.

Referenced by produce().

edm::InputTag EvtPlaneProducer::centralityBinTag_
private

Definition at line 183 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

edm::EDGetTokenT<int> EvtPlaneProducer::centralityBinToken_
private

Definition at line 184 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

std::string EvtPlaneProducer::centralityMC_
private

Definition at line 181 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

edm::ESGetToken<CentralityTable, HeavyIonRcd> EvtPlaneProducer::centralityToken_
private

Definition at line 213 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

std::string EvtPlaneProducer::centralityVariable_
private

Definition at line 180 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

double EvtPlaneProducer::chi2_
private

Definition at line 230 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

edm::InputTag EvtPlaneProducer::chi2MapLostTag_
private

Definition at line 210 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

edm::EDGetTokenT<edm::ValueMap<float> > EvtPlaneProducer::chi2MapLostToken_
private

Definition at line 211 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

edm::InputTag EvtPlaneProducer::chi2MapTag_
private

Definition at line 208 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

edm::EDGetTokenT<edm::ValueMap<float> > EvtPlaneProducer::chi2MapToken_
private

Definition at line 209 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

double EvtPlaneProducer::chi2perlayer_
private

Definition at line 227 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

int EvtPlaneProducer::cutEra_
private

Definition at line 238 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

EPCuts EvtPlaneProducer::cuts_
private

Definition at line 178 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

double EvtPlaneProducer::d0d0error_
private

Definition at line 225 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

double EvtPlaneProducer::dzdzerror_
private

Definition at line 224 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

double EvtPlaneProducer::dzdzerror_pix_
private

Definition at line 229 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

double EvtPlaneProducer::dzerr_
private

Definition at line 228 of file EvtPlaneProducer.cc.

HiEvtPlaneFlatten* EvtPlaneProducer::flat[NumEPNames]
private

Definition at line 239 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), produce(), and ~EvtPlaneProducer().

double EvtPlaneProducer::flatdelvtx_
private

Definition at line 223 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

double EvtPlaneProducer::flatminvtx_
private

Definition at line 222 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

int EvtPlaneProducer::flatnvtxbins_
private

Definition at line 221 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

int EvtPlaneProducer::FlatOrder_
private

Definition at line 232 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

edm::ESGetToken<RPFlatParams, HeavyIonRPRcd> EvtPlaneProducer::flatparmsToken_
private

Definition at line 214 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

edm::ESWatcher<HeavyIonRPRcd> EvtPlaneProducer::hirpWatcher_
private

Definition at line 243 of file EvtPlaneProducer.cc.

Referenced by produce().

edm::ESWatcher<HeavyIonRcd> EvtPlaneProducer::hiWatcher_
private

Definition at line 242 of file EvtPlaneProducer.cc.

Referenced by produce().

bool EvtPlaneProducer::loadDB_
private

Definition at line 216 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

edm::EDGetTokenT<pat::PackedCandidateCollection> EvtPlaneProducer::lostToken_
private

Definition at line 206 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

edm::InputTag EvtPlaneProducer::losttrackTag_
private

Definition at line 201 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

double EvtPlaneProducer::maxet_
private

Definition at line 218 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::maxpt_
private

Definition at line 220 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::minet_
private

Definition at line 217 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::minpt_
private

Definition at line 219 of file EvtPlaneProducer.cc.

double EvtPlaneProducer::nCentBins_
private

Definition at line 234 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

int EvtPlaneProducer::nhitsValid_
private

Definition at line 231 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

int EvtPlaneProducer::NumFlatBins_
private

Definition at line 233 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

edm::EDGetTokenT<pat::PackedCandidateCollection> EvtPlaneProducer::packedToken_
private

Definition at line 205 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

double EvtPlaneProducer::pterror_
private

Definition at line 226 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

GenPlane* EvtPlaneProducer::rp[NumEPNames]
private

Definition at line 173 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

TrackStructure EvtPlaneProducer::track_
private

Definition at line 240 of file EvtPlaneProducer.cc.

Referenced by produce().

edm::Handle<reco::TrackCollection> EvtPlaneProducer::trackCollection_
private

Definition at line 202 of file EvtPlaneProducer.cc.

Referenced by produce().

edm::InputTag EvtPlaneProducer::trackTag_
private

Definition at line 199 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

edm::EDGetTokenT<reco::TrackCollection> EvtPlaneProducer::trackToken_
private

Definition at line 200 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().

edm::Handle<std::vector<reco::Vertex> > EvtPlaneProducer::vertex_
private

Definition at line 188 of file EvtPlaneProducer.cc.

edm::InputTag EvtPlaneProducer::vertexTag_
private

Definition at line 186 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer().

edm::EDGetTokenT<std::vector<reco::Vertex> > EvtPlaneProducer::vertexToken_
private

Definition at line 187 of file EvtPlaneProducer.cc.

Referenced by EvtPlaneProducer(), and produce().