CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
gen::TauolappInterface Class Reference

#include <TauolappInterface.h>

Inheritance diagram for gen::TauolappInterface:
gen::TauolaInterfaceBase

Public Member Functions

HepMC::GenEventdecay (HepMC::GenEvent *) override
 
void disablePolarization () override
 
void enablePolarization () override
 
void init (const edm::EventSetup &) override
 
const std::vector< int > & operatesOnParticles () override
 
void SetLHE (lhef::LHEEvent *l) override
 
void setRandomEngine (CLHEP::HepRandomEngine *v) override
 
void statistics () override
 
 TauolappInterface (const edm::ParameterSet &)
 
 ~TauolappInterface () override
 
- Public Member Functions inherited from gen::TauolaInterfaceBase
virtual void SetDecayRandomEngine (CLHEP::HepRandomEngine *decayRandomEngine)
 
 TauolaInterfaceBase ()
 
 TauolaInterfaceBase (const edm::ParameterSet &)
 
virtual ~TauolaInterfaceBase ()
 

Static Public Member Functions

static double flat ()
 

Private Member Functions

void BoostProdToLabLifeTimeInDecays (HepMC::GenParticle *p, TLorentzVector &lab, TLorentzVector &prod)
 
void decodeMDTAU (int)
 
HepMC::GenParticle * FirstTauInChain (HepMC::GenParticle *tau)
 
HepMC::GenParticle * GetMother (HepMC::GenParticle *tau)
 
bool isLastTauInChain (const HepMC::GenParticle *tau)
 
HepMC::GenEventmake_simple_tau_event (const TLorentzVector &l, int pdgid, int status)
 
double MatchedLHESpinUp (HepMC::GenParticle *tau, std::vector< HepMC::GenParticle > &p, std::vector< double > &spinup, std::vector< int > &m_idx)
 
void selectDecayByMDTAU ()
 
int selectHadronic ()
 
int selectLeptonic ()
 
void update_particles (HepMC::GenParticle *partHep, HepMC::GenEvent *theEvent, HepMC::GenParticle *p, TVector3 &boost)
 

Private Attributes

double dmMatch
 
bool dolhe
 
bool dolheBosonCorr
 
std::vector< int > fHadronModes
 
bool fIsInitialized
 
std::vector< int > fLeptonModes
 
int fMDTAU
 
std::vector< int > fPDGs
 
edm::ESHandle< HepPDT::ParticleDataTablefPDGTable
 
bool fPolarization
 
edm::ParameterSetfPSet
 
std::vector< double > fScaledHadronBrRatios
 
std::vector< double > fScaledLeptonBrRatios
 
bool fSelectDecayByEvent
 
lhef::LHEEventlhe
 
double lifetime
 
int ntries
 

Static Private Attributes

static CLHEP::HepRandomEngine * fRandomEngine = 0
 

Additional Inherited Members

- Protected Attributes inherited from gen::TauolaInterfaceBase
std::vector< int > fPDGs
 

Detailed Description

Definition at line 27 of file TauolappInterface.h.

Constructor & Destructor Documentation

TauolappInterface::TauolappInterface ( const edm::ParameterSet pset)

Definition at line 50 of file TauolappInterface.cc.

References Exception, and fPSet.

51  : fPolarization(false),
52  fPSet(nullptr),
53  fIsInitialized(false),
54  fMDTAU(-1),
55  fSelectDecayByEvent(false),
56  lhe(nullptr),
57  dmMatch(0.5),
58  dolhe(false),
59  dolheBosonCorr(false),
60  ntries(10) {
61  if (fPSet != nullptr)
62  throw cms::Exception("TauolappInterfaceError") << "Attempt to override Tauola an existing ParameterSet\n"
63  << std::endl;
64  fPSet = new ParameterSet(pset);
65 }
edm::ParameterSet * fPSet
TauolappInterface::~TauolappInterface ( )
override

Definition at line 67 of file TauolappInterface.cc.

References fPSet.

67  {
68  if (fPSet != nullptr)
69  delete fPSet;
70 }
edm::ParameterSet * fPSet

Member Function Documentation

void TauolappInterface::BoostProdToLabLifeTimeInDecays ( HepMC::GenParticle *  p,
TLorentzVector &  lab,
TLorentzVector &  prod 
)
private

Definition at line 804 of file TauolappInterface.cc.

References class-composition::children.

Referenced by decay().

806  {
807  if (p->end_vertex() && p->production_vertex()) {
808  HepMC::GenVertex* PGenVtx = p->production_vertex();
809  HepMC::GenVertex* EGenVtx = p->end_vertex();
810  double VxDec = PGenVtx->position().x() + lab.Px() / prod.Px() * (EGenVtx->position().x() - PGenVtx->position().x());
811  double VyDec = PGenVtx->position().y() + lab.Py() / prod.Py() * (EGenVtx->position().y() - PGenVtx->position().y());
812  double VzDec = PGenVtx->position().z() + lab.Pz() / prod.Pz() * (EGenVtx->position().z() - PGenVtx->position().z());
813  double VtDec = PGenVtx->position().t() + lab.Pt() / prod.Pt() * (EGenVtx->position().t() - PGenVtx->position().t());
814  EGenVtx->set_position(HepMC::FourVector(VxDec, VyDec, VzDec, VtDec));
815  for (HepMC::GenVertex::particle_iterator dau = p->end_vertex()->particles_begin(HepMC::children);
816  dau != p->end_vertex()->particles_end(HepMC::children);
817  dau++) {
818  BoostProdToLabLifeTimeInDecays((*dau), lab, prod); //recursively modify everything in the decay chain
819  }
820  }
821 }
double p[5][pyjets_maxn]
void BoostProdToLabLifeTimeInDecays(HepMC::GenParticle *p, TLorentzVector &lab, TLorentzVector &prod)
HepMC::GenEvent * TauolappInterface::decay ( HepMC::GenEvent evt)
overridevirtual

Reimplemented from gen::TauolaInterfaceBase.

Definition at line 225 of file TauolappInterface.cc.

References funct::abs(), BoostProdToLabLifeTimeInDecays(), class-composition::children, dolhe, dolheBosonCorr, fIsInitialized, flat(), fSelectDecayByEvent, GenParticle::GenParticle, lhef::LHEEvent::getHEPEUP(), GetMother(), mps_fire::i, lhef::HEPEUP::IDUP, isLastTauInChain(), lhef::HEPEUP::ISTUP, dqmiolumiharvest::j, gen::k, lhe, visualization-live-secondInstance_cfg::m, make_simple_tau_event(), match(), MatchedLHESpinUp(), lhef::HEPEUP::MOTHUP, ntries, gen::p, p1, parents, ecalTrigSettings_cff::particles, lhef::HEPEUP::PUP, selectDecayByMDTAU(), lhef::HEPEUP::SPINUP, mps_update::status, and update_particles().

225  {
226  if (!fIsInitialized)
227  return evt;
228  Tauolapp::Tauola::setRandomGenerator(
229  gen::TauolappInterface::flat); // rest tauola++ random number incase other modules use tauola++
230  int NPartBefore = evt->particles_size();
231  int NVtxBefore = evt->vertices_size();
232 
233  // what do we do if Hep::GenEvent size is larger than 10K ???
234  // Tauola (& Photos, BTW) can only handle up to 10K via HEPEVT,
235  // and in case of CMS, it's only up to 4K !!!
236  // override decay mode if needs be
237 
238  if (fSelectDecayByEvent) {
240  }
241  if (dolhe && lhe != nullptr) {
242  std::vector<HepMC::GenParticle> particles;
243  std::vector<int> m_idx;
244  std::vector<double> spinup = lhe->getHEPEUP()->SPINUP;
245  std::vector<int> pdg = lhe->getHEPEUP()->IDUP;
246  for (unsigned int i = 0; i < spinup.size(); i++) {
247  particles.push_back(HepMC::GenParticle(HepMC::FourVector(lhe->getHEPEUP()->PUP.at(i)[0],
248  lhe->getHEPEUP()->PUP.at(i)[1],
249  lhe->getHEPEUP()->PUP.at(i)[2],
250  lhe->getHEPEUP()->PUP.at(i)[3]),
251  lhe->getHEPEUP()->IDUP.at(i)));
252  int status = lhe->getHEPEUP()->ISTUP.at(i);
253  particles.at(particles.size() - 1).set_generated_mass(lhe->getHEPEUP()->PUP.at(i)[4]);
254  particles.at(particles.size() - 1).set_status(status > 0 ? (status == 2 ? 3 : status) : 3);
255  m_idx.push_back(lhe->getHEPEUP()->MOTHUP.at(i).first - 1); // correct for fortran index offset
256  }
257  // match to taus in hepmc and identify mother of taus
258  bool hastaus(false);
259  std::vector<HepMC::GenParticle*> match;
260  for (HepMC::GenEvent::particle_const_iterator iter = evt->particles_begin(); iter != evt->particles_end(); iter++) {
261  if (abs((*iter)->pdg_id()) == 15) {
262  hastaus = true;
263  int mother_pid(0);
264  // check imediate parent to avoid parent tau ie tau->taugamma
265  for (HepMC::GenVertex::particle_iterator mother = (*iter)->production_vertex()->particles_begin(HepMC::parents);
266  mother != (*iter)->production_vertex()->particles_end(HepMC::parents);
267  mother++) {
268  mother_pid = (*mother)->pdg_id();
269  if (mother_pid != (*iter)->pdg_id()) {
270  // match against lhe record
271  if (abs(mother_pid) == 24 || // W
272  abs(mother_pid) == 37 || // H+/-
273  abs(mother_pid) == 23 || // Z
274  abs(mother_pid) == 22 || // gamma
275  abs(mother_pid) == 25 || // H0 SM
276  abs(mother_pid) == 35 || // H0
277  abs(mother_pid) == 36 // A0
278  ) {
279  bool isfound = false;
280  for (unsigned int k = 0; k < match.size(); k++) {
281  if ((*mother) == match.at(k))
282  isfound = true;
283  }
284  if (!isfound)
285  match.push_back(*mother);
286  }
287  }
288  }
289  }
290  }
291  if (hastaus) {
292  // if is single gauge boson decay and match helicities
293  if (match.size() == 1 && dolheBosonCorr) {
294  for (int i = 0; i < ntries; i++) {
295  // re-decay taus then check if helicities match
296  auto* t_event = new Tauolapp::TauolaHepMCEvent(evt);
297  t_event->undecayTaus();
298  t_event->decayTaus();
299  bool ismatch = true;
300  for (unsigned int j = 0; j < spinup.size(); j++) {
301  if (abs(pdg.at(j)) == 15) {
302  double diffhelminus = (-1.0 * (double)Tauolapp::Tauola::getHelMinus() -
303  spinup.at(j)); // -1.0 to correct for tauola feature
304  double diffhelplus = ((double)Tauolapp::Tauola::getHelPlus() - spinup.at(j));
305  if (pdg.at(j) == 15 && diffhelminus > 0.5)
306  ismatch = false;
307  if (pdg.at(j) == -15 && diffhelplus > 0.5)
308  ismatch = false;
309  }
310  }
311  delete t_event;
312  if (ismatch)
313  break;
314  }
315  } else {
316  // If the event does not contain a single gauge boson the code will be run with
317  // remove all tau decays
318  auto* t_event = new Tauolapp::TauolaHepMCEvent(evt);
319  t_event->undecayTaus();
320  delete t_event;
321  // decay all taus manually based on the helicity
322  for (HepMC::GenEvent::particle_const_iterator iter = evt->particles_begin(); iter != evt->particles_end();
323  iter++) {
324  if (abs((*iter)->pdg_id()) == 15 && isLastTauInChain(*iter)) {
325  TLorentzVector ltau(
326  (*iter)->momentum().px(), (*iter)->momentum().py(), (*iter)->momentum().pz(), (*iter)->momentum().e());
327  HepMC::GenParticle* m = GetMother(*iter);
328  TLorentzVector mother(m->momentum().px(), m->momentum().py(), m->momentum().pz(), m->momentum().e());
329  TVector3 boost = -1.0 * mother.BoostVector(); // boost into mother's CM frame
330  TLorentzVector ltau_lab = ltau;
331  ltau.Boost(boost);
332  mother.Boost(boost);
333  HepMC::GenEvent* tauevt = make_simple_tau_event(ltau, (*iter)->pdg_id(), (*iter)->status());
334  HepMC::GenParticle* p = (*(tauevt->particles_begin()));
335  Tauolapp::TauolaParticle* tp = new Tauolapp::TauolaHepMCParticle(p);
336  double helicity = MatchedLHESpinUp(*iter, particles, spinup, m_idx); // get helicity from lhe
337  if ((*iter)->pdg_id() == 15)
338  helicity *= -1.0;
339  tp->undecay();
340  // use |S_{tau}|=0.999999 to avoid issues with numerical roundoff
341  Tauolapp::Tauola::decayOne(tp, true, 0, 0, ((double)helicity) * 0.999999);
342  boost *= -1.0; // boost back to lab frame
343  mother.Boost(boost);
344  update_particles((*iter), evt, p, boost);
345  //correct tau liftetime for boost (change rest frame from mothers to taus)
346  BoostProdToLabLifeTimeInDecays((*iter), ltau_lab, ltau);
347  delete tauevt;
348  }
349  }
350  }
351  }
352  } else {
353  //construct tmp TAUOLA event
354  auto* t_event = new Tauolapp::TauolaHepMCEvent(evt);
355  //t_event->undecayTaus();
356  t_event->decayTaus();
357  delete t_event;
358  }
359 
360  for (int iv = NVtxBefore + 1; iv <= evt->vertices_size(); iv++) {
361  HepMC::GenVertex* GenVtx = evt->barcode_to_vertex(-iv);
362  //
363  // now find decay products with funky barcode, weed out and replace with clones of sensible barcode
364  // we can NOT change the barcode while iterating, because iterators do depend on the barcoding
365  // thus we have to take a 2-step procedure
366  //
367  std::vector<int> BCodes;
368  BCodes.clear();
369  for (HepMC::GenVertex::particle_iterator pitr = GenVtx->particles_begin(HepMC::children);
370  pitr != GenVtx->particles_end(HepMC::children);
371  ++pitr) {
372  if ((*pitr)->barcode() > 10000) {
373  BCodes.push_back((*pitr)->barcode());
374  }
375  }
376  if (!BCodes.empty()) {
377  for (size_t ibc = 0; ibc < BCodes.size(); ibc++) {
378  HepMC::GenParticle* p1 = evt->barcode_to_particle(BCodes[ibc]);
379  int nbc = p1->barcode() - 10000 + NPartBefore;
380  p1->suggest_barcode(nbc);
381  }
382  }
383  }
384 
385  for (HepMC::GenEvent::particle_const_iterator p = evt->particles_begin(); p != evt->particles_end(); ++p) {
386  if ((*p)->end_vertex() && (*p)->status() == 1)
387  (*p)->set_status(2);
388  if ((*p)->end_vertex() && (*p)->end_vertex()->particles_out_size() == 0)
389  edm::LogWarning("TauolappInterface::decay error: empty end vertex!");
390  }
391 
392  return evt;
393 }
TPRegexp parents
Definition: eve_filter.cc:21
Definition: CLHEP.h:16
HepMC::GenEvent * make_simple_tau_event(const TLorentzVector &l, int pdgid, int status)
const HEPEUP * getHEPEUP() const
Definition: LHEEvent.h:38
double p[5][pyjets_maxn]
void BoostProdToLabLifeTimeInDecays(HepMC::GenParticle *p, TLorentzVector &lab, TLorentzVector &prod)
std::vector< FiveVector > PUP
Definition: LesHouches.h:246
std::vector< double > SPINUP
Definition: LesHouches.h:259
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< int > ISTUP
Definition: LesHouches.h:228
std::vector< std::pair< int, int > > MOTHUP
Definition: LesHouches.h:234
std::vector< int > IDUP
Definition: LesHouches.h:223
int k[5][pyjets_maxn]
void update_particles(HepMC::GenParticle *partHep, HepMC::GenEvent *theEvent, HepMC::GenParticle *p, TVector3 &boost)
bool isLastTauInChain(const HepMC::GenParticle *tau)
double p1[4]
Definition: TauolaWrapper.h:89
HepMC::GenParticle * GetMother(HepMC::GenParticle *tau)
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
double MatchedLHESpinUp(HepMC::GenParticle *tau, std::vector< HepMC::GenParticle > &p, std::vector< double > &spinup, std::vector< int > &m_idx)
void TauolappInterface::decodeMDTAU ( int  mdtau)
private

Definition at line 397 of file TauolappInterface.cc.

References fHadronModes, fLeptonModes, fScaledHadronBrRatios, fScaledLeptonBrRatios, fSelectDecayByEvent, gamprt, mps_fire::i, and taubra_.

Referenced by init().

397  {
398  // Note-1:
399  // I have to hack the common block directly because set<...>DecayMode(...)
400  // only changes it in the Tauola++ instance but does NOT passes it over
401  // to the Fortran core - this it does only one, via initialize() stuff...
402  //
403  // So I'll do both ways of settings, just for consistency...
404  // but I probably need to communicate it to the Tauola(++) team...
405  //
406 
407  // Note-2:
408  // originally, the 1xx settings are meant for tau's from hard event,
409  // and the 2xx settings are for any tau in the event record;
410  //
411  // later one, we'll have to take this into account...
412  // but first I'll have to sort out what happens in the 1xx case
413  // to tau's coming outside of hard event (if any in the record)
414  //
415 
416  if (mdtau == 101 || mdtau == 201) {
417  // override with electron mode for both tau's
418  //
419  Tauolapp::jaki_.jak1 = 1;
420  Tauolapp::jaki_.jak2 = 1;
421  Tauolapp::Tauola::setSameParticleDecayMode(1);
422  Tauolapp::Tauola::setOppositeParticleDecayMode(1);
423  return;
424  }
425 
426  if (mdtau == 102 || mdtau == 202) {
427  // override with muon mode for both tau's
428  //
429  Tauolapp::jaki_.jak1 = 2;
430  Tauolapp::jaki_.jak2 = 2;
431  Tauolapp::Tauola::setSameParticleDecayMode(2);
432  Tauolapp::Tauola::setOppositeParticleDecayMode(2);
433  return;
434  }
435 
436  if (mdtau == 111 || mdtau == 211) {
437  // override with electron mode for 1st tau
438  // and any mode for 2nd tau
439  //
440  Tauolapp::jaki_.jak1 = 1;
441  Tauolapp::jaki_.jak2 = 0;
442  Tauolapp::Tauola::setSameParticleDecayMode(1);
443  Tauolapp::Tauola::setOppositeParticleDecayMode(0);
444  return;
445  }
446 
447  if (mdtau == 112 || mdtau == 212) {
448  // override with muon mode for the 1st tau
449  // and any mode for the 2nd tau
450  //
451  Tauolapp::jaki_.jak1 = 2;
452  Tauolapp::jaki_.jak2 = 0;
453  Tauolapp::Tauola::setSameParticleDecayMode(2);
454  Tauolapp::Tauola::setOppositeParticleDecayMode(0);
455  return;
456  }
457 
458  if (mdtau == 121 || mdtau == 221) {
459  // override with any mode for the 1st tau
460  // and electron mode for the 2nd tau
461  //
462  Tauolapp::jaki_.jak1 = 0;
463  Tauolapp::jaki_.jak2 = 1;
464  Tauolapp::Tauola::setSameParticleDecayMode(0);
465  Tauolapp::Tauola::setOppositeParticleDecayMode(1);
466  return;
467  }
468 
469  if (mdtau == 122 || mdtau == 222) {
470  // override with any mode for the 1st tau
471  // and muon mode for the 2nd tau
472  //
473  Tauolapp::jaki_.jak1 = 0;
474  Tauolapp::jaki_.jak2 = 2;
475  Tauolapp::Tauola::setSameParticleDecayMode(0);
476  Tauolapp::Tauola::setOppositeParticleDecayMode(2);
477  return;
478  }
479 
480  if (mdtau == 140 || mdtau == 240) {
481  // override with pi+/- nutau mode for both tau's
482  //
483  Tauolapp::jaki_.jak1 = 3;
484  Tauolapp::jaki_.jak2 = 3;
485  Tauolapp::Tauola::setSameParticleDecayMode(3);
486  Tauolapp::Tauola::setOppositeParticleDecayMode(3);
487  return;
488  }
489 
490  if (mdtau == 141 || mdtau == 241) {
491  // override with pi+/- nutau mode for the 1st tau
492  // and any mode for the 2nd tau
493  //
494  Tauolapp::jaki_.jak1 = 3;
495  Tauolapp::jaki_.jak2 = 0;
496  Tauolapp::Tauola::setSameParticleDecayMode(3);
497  Tauolapp::Tauola::setOppositeParticleDecayMode(0);
498  return;
499  }
500 
501  if (mdtau == 142 || mdtau == 242) {
502  // override with any mode for the 1st tau
503  // and pi+/- nutau mode for 2nd tau
504  //
505  Tauolapp::jaki_.jak1 = 0;
506  Tauolapp::jaki_.jak2 = 3;
507  Tauolapp::Tauola::setSameParticleDecayMode(0);
508  Tauolapp::Tauola::setOppositeParticleDecayMode(3);
509  return;
510  }
511 
512  // OK, we come here for semi-inclusive modes
513  //
514 
515  // First of all, leptons and hadron modes sums
516  //
517  // re-scale branching ratios, just in case...
518  //
519  double sumBra = 0;
520 
521  // the number of decay modes is hardcoded at 22 because that's what it is right now in Tauola
522  // in the future, perhaps an asscess method would be useful - communicate to Tauola team...
523  //
524 
525  for (int i = 0; i < 22; i++) {
526  sumBra += Tauolapp::taubra_.gamprt[i];
527  }
528  if (sumBra == 0.)
529  return; // perhaps need to throw ?
530  for (int i = 0; i < 22; i++) {
531  double newBra = Tauolapp::taubra_.gamprt[i] / sumBra;
532  Tauolapp::Tauola::setTauBr(i + 1, newBra);
533  }
534  sumBra = 1.0;
535 
536  double sumLeptonBra = Tauolapp::taubra_.gamprt[0] + Tauolapp::taubra_.gamprt[1];
537  double sumHadronBra = sumBra - sumLeptonBra;
538 
539  for (int i = 0; i < 2; i++) {
540  fLeptonModes.push_back(i + 1);
541  fScaledLeptonBrRatios.push_back((Tauolapp::taubra_.gamprt[i] / sumLeptonBra));
542  }
543  for (int i = 2; i < 22; i++) {
544  fHadronModes.push_back(i + 1);
545  fScaledHadronBrRatios.push_back((Tauolapp::taubra_.gamprt[i] / sumHadronBra));
546  }
547 
548  fSelectDecayByEvent = true;
549  return;
550 }
std::vector< double > fScaledHadronBrRatios
float gamprt[30]
Definition: TauolaWrapper.h:78
std::vector< int > fLeptonModes
std::vector< double > fScaledLeptonBrRatios
std::vector< int > fHadronModes
struct @748 taubra_
int mdtau
Definition: TauolaWrapper.h:59
void gen::TauolappInterface::disablePolarization ( )
inlineoverridevirtual

Reimplemented from gen::TauolaInterfaceBase.

Definition at line 37 of file TauolappInterface.h.

References init.

37  {
38  fPolarization = false;
39  return;
40  }
void gen::TauolappInterface::enablePolarization ( )
inlineoverridevirtual

Reimplemented from gen::TauolaInterfaceBase.

Definition at line 33 of file TauolappInterface.h.

33  {
34  fPolarization = true;
35  return;
36  }
HepMC::GenParticle * TauolappInterface::FirstTauInChain ( HepMC::GenParticle *  tau)
private

Definition at line 777 of file TauolappInterface.cc.

References parents, and metsig::tau.

Referenced by MatchedLHESpinUp().

777  {
778  if (tau->production_vertex()) {
779  HepMC::GenVertex::particle_iterator mother;
780  for (mother = tau->production_vertex()->particles_begin(HepMC::parents);
781  mother != tau->production_vertex()->particles_end(HepMC::parents);
782  mother++) {
783  if ((*mother)->pdg_id() == tau->pdg_id())
784  return FirstTauInChain(*mother); // recursive call to get mother with different pdgid
785  }
786  }
787  return tau;
788 }
TPRegexp parents
Definition: eve_filter.cc:21
HepMC::GenParticle * FirstTauInChain(HepMC::GenParticle *tau)
double TauolappInterface::flat ( void  )
static

Definition at line 215 of file TauolappInterface.cc.

References Exception, and fRandomEngine.

Referenced by decay(), init(), gen::ranmar_(), and selectLeptonic().

215  {
216  if (!fRandomEngine) {
217  throw cms::Exception("LogicError")
218  << "TauolaInterface::flat: Attempt to generate random number when engine pointer is null\n"
219  << "This might mean that the code was modified to generate a random number outside the\n"
220  << "event and beginLuminosityBlock methods, which is not allowed.\n";
221  }
222  return fRandomEngine->flat();
223 }
static CLHEP::HepRandomEngine * fRandomEngine
HepMC::GenParticle * TauolappInterface::GetMother ( HepMC::GenParticle *  tau)
private

Definition at line 790 of file TauolappInterface.cc.

References parents, and metsig::tau.

Referenced by decay(), and MatchedLHESpinUp().

790  {
791  if (tau->production_vertex()) {
792  HepMC::GenVertex::particle_iterator mother;
793  for (mother = tau->production_vertex()->particles_begin(HepMC::parents);
794  mother != tau->production_vertex()->particles_end(HepMC::parents);
795  mother++) {
796  if ((*mother)->pdg_id() == tau->pdg_id())
797  return GetMother(*mother); // recursive call to get mother with different pdgid
798  return (*mother);
799  }
800  }
801  return tau;
802 }
TPRegexp parents
Definition: eve_filter.cc:21
HepMC::GenParticle * GetMother(HepMC::GenParticle *tau)
void TauolappInterface::init ( const edm::EventSetup es)
overridevirtual

Reimplemented from gen::TauolaInterfaceBase.

Definition at line 72 of file TauolappInterface.cc.

References funct::abs(), looper::cfg, gather_cfg::cout, decodeMDTAU(), dmMatch, dolhe, dolheBosonCorr, Exception, edm::ParameterSet::exists(), fIsInitialized, flat(), fMDTAU, fPDGs, fPDGTable, fPolarization, fPSet, edm::EventSetup::getData(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), mps_fire::i, initialize(), lifetime, ntries, LHEGenericFilter_cfi::ParticleID, and AlCaHLTBitMon_QueryRunRegistry::string.

72  {
73  if (fIsInitialized)
74  return; // do init only once
75  if (fPSet == nullptr)
76  throw cms::Exception("TauolappInterfaceError") << "Attempt to initialize Tauola with an empty ParameterSet\n"
77  << std::endl;
78 
79  fIsInitialized = true;
80 
81  es.getData(fPDGTable);
82 
83  Tauolapp::Tauola::setDecayingParticle(15);
84 
85  // LHE Information
86  dmMatch = fPSet->getUntrackedParameter<double>("dmMatch", 0.5);
87  dolhe = fPSet->getUntrackedParameter<bool>("dolhe", false);
88  dolheBosonCorr = fPSet->getUntrackedParameter<bool>("dolheBosonCorr", true);
89  ntries = fPSet->getUntrackedParameter<int>("ntries", 10);
90 
91  // polarization switch
92  // fPolarization = fPSet->getParameter<bool>("UseTauolaPolarization") ? 1 : 0 ;
93  fPolarization = fPSet->getParameter<bool>("UseTauolaPolarization");
94 
95  // read tau decay mode switches
96  //
97  ParameterSet cards = fPSet->getParameter<ParameterSet>("InputCards");
98 
99  fMDTAU = cards.getParameter<int>("mdtau");
100 
101  if (fMDTAU == 0 || fMDTAU == 1) {
102  Tauolapp::Tauola::setSameParticleDecayMode(cards.getParameter<int>("pjak1"));
103  Tauolapp::Tauola::setOppositeParticleDecayMode(cards.getParameter<int>("pjak2"));
104  }
105 
106  Tauolapp::Tauola::spin_correlation.setAll(fPolarization);
107 
108  // some more options, copied over from an example
109  // Default values
110  //Tauola::setEtaK0sPi(0,0,0); // switches to decay eta K0_S and pi0 1/0 on/off.
111 
112  const HepPDT::ParticleData* PData =
113  fPDGTable->particle(HepPDT::ParticleID(abs(Tauolapp::Tauola::getDecayingParticle())));
114  double lifetime = PData->lifetime().value();
115  Tauolapp::Tauola::setTauLifetime(lifetime);
116 
117  fPDGs.push_back(Tauolapp::Tauola::getDecayingParticle());
118 
119  Tauolapp::Tauola::setRandomGenerator(gen::TauolappInterface::flat);
120 
121  if (fPSet->exists("parameterSets")) {
122  std::vector<std::string> par = fPSet->getParameter<std::vector<std::string> >("parameterSets");
123  for (unsigned int ip = 0; ip < par.size(); ++ip) {
124  std::string curSet = par[ip];
125  if (curSet == "setNewCurrents")
126  Tauolapp::Tauola::setNewCurrents(fPSet->getParameter<int>(curSet));
127  }
128  }
129 
131 
132  Tauolapp::Tauola::spin_correlation.setAll(
133  fPolarization); // Tauola switches this on during Tauola::initialise(); so we add this here to keep it on/off
134 
135  if (fPSet->exists("parameterSets")) {
136  std::vector<std::string> par = fPSet->getParameter<std::vector<std::string> >("parameterSets");
137  for (unsigned int ip = 0; ip < par.size(); ++ip) {
138  std::string curSet = par[ip];
139  if (curSet == "spinCorrelationSetAll")
140  Tauolapp::Tauola::spin_correlation.setAll(fPSet->getParameter<bool>(curSet));
141  if (curSet == "spinCorrelationGAMMA")
142  Tauolapp::Tauola::spin_correlation.GAMMA = fPSet->getParameter<bool>(curSet);
143  if (curSet == "spinCorrelationZ0")
144  Tauolapp::Tauola::spin_correlation.Z0 = fPSet->getParameter<bool>(curSet);
145  if (curSet == "spinCorrelationHIGGS")
146  Tauolapp::Tauola::spin_correlation.HIGGS = fPSet->getParameter<bool>(curSet);
147  if (curSet == "spinCorrelationHIGGSH")
148  Tauolapp::Tauola::spin_correlation.HIGGS_H = fPSet->getParameter<bool>(curSet);
149  if (curSet == "spinCorrelationHIGGSA")
150  Tauolapp::Tauola::spin_correlation.HIGGS_A = fPSet->getParameter<bool>(curSet);
151  if (curSet == "spinCorrelationHIGGSPLUS")
152  Tauolapp::Tauola::spin_correlation.HIGGS_PLUS = fPSet->getParameter<bool>(curSet);
153  if (curSet == "spinCorrelationHIGGSMINUS")
154  Tauolapp::Tauola::spin_correlation.HIGGS_MINUS = fPSet->getParameter<bool>(curSet);
155  if (curSet == "spinCorrelationWPLUS")
156  Tauolapp::Tauola::spin_correlation.W_PLUS = fPSet->getParameter<bool>(curSet);
157  if (curSet == "spinCorrelationWMINUS")
158  Tauolapp::Tauola::spin_correlation.W_MINUS = fPSet->getParameter<bool>(curSet);
159 
160  if (curSet == "setHiggsScalarPseudoscalarPDG")
161  Tauolapp::Tauola::setHiggsScalarPseudoscalarPDG(fPSet->getParameter<int>(curSet));
162  if (curSet == "setHiggsScalarPseudoscalarMixingAngle")
163  Tauolapp::Tauola::setHiggsScalarPseudoscalarMixingAngle(fPSet->getParameter<double>(curSet));
164 
165  if (curSet == "setRadiation")
166  Tauolapp::Tauola::setRadiation(fPSet->getParameter<bool>(curSet));
167  if (curSet == "setRadiationCutOff")
168  Tauolapp::Tauola::setRadiationCutOff(fPSet->getParameter<double>(curSet));
169 
170  if (curSet == "setEtaK0sPi") {
171  std::vector<int> vpar = fPSet->getParameter<std::vector<int> >(curSet);
172  if (vpar.size() == 3)
173  Tauolapp::Tauola::setEtaK0sPi(vpar[0], vpar[1], vpar[2]);
174  else {
175  std::cout << "WARNING invalid size for setEtaK0sPi: " << vpar.size() << " Require 3 elements " << std::endl;
176  }
177  }
178 
179  if (curSet == "setTaukle") {
180  std::vector<double> vpar = fPSet->getParameter<std::vector<double> >(curSet);
181  if (vpar.size() == 4)
182  Tauolapp::Tauola::setTaukle(vpar[0], vpar[1], vpar[2], vpar[3]);
183  else {
184  std::cout << "WARNING invalid size for setTaukle: " << vpar.size() << " Require 4 elements " << std::endl;
185  }
186  }
187 
188  if (curSet == "setTauBr") {
190  std::vector<int> vJAK = cfg.getParameter<std::vector<int> >("JAK");
191  std::vector<double> vBR = cfg.getParameter<std::vector<double> >("BR");
192  if (vJAK.size() == vBR.size()) {
193  for (unsigned int i = 0; i < vJAK.size(); i++)
194  Tauolapp::Tauola::setTauBr(vJAK[i], vBR[i]);
195  } else {
196  std::cout << "WARNING invalid size for setTauBr - JAK: " << vJAK.size() << " BR: " << vBR.size() << std::endl;
197  }
198  }
199  }
200  }
201 
202  // override decay modes if needs be
203  //
204  // we have to do it AFTER init because otherwises branching ratios are NOT filled in
205  //
206  if (fMDTAU != 0 && fMDTAU != 1) {
207  decodeMDTAU(fMDTAU);
208  }
209 
210  Tauolapp::Log::LogWarning(false);
211 
212  return;
213 }
T getParameter(std::string const &) const
static AlgebraicMatrix initialize()
T getUntrackedParameter(std::string const &, T const &) const
edm::ParameterSet * fPSet
bool exists(std::string const &parameterName) const
checks if a parameter exists
bool getData(T &iHolder) const
Definition: EventSetup.h:113
std::vector< int > fPDGs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HepPDT::ParticleData ParticleData
edm::ESHandle< HepPDT::ParticleDataTable > fPDGTable
bool TauolappInterface::isLastTauInChain ( const HepMC::GenParticle *  tau)
private

Definition at line 740 of file TauolappInterface.cc.

References class-composition::children.

Referenced by decay().

740  {
741  if (tau->end_vertex()) {
742  HepMC::GenVertex::particle_iterator dau;
743  for (dau = tau->end_vertex()->particles_begin(HepMC::children);
744  dau != tau->end_vertex()->particles_end(HepMC::children);
745  dau++) {
746  int dau_pid = (*dau)->pdg_id();
747  if (dau_pid == tau->pdg_id())
748  return false;
749  }
750  }
751  return true;
752 }
HepMC::GenEvent * TauolappInterface::make_simple_tau_event ( const TLorentzVector &  l,
int  pdgid,
int  status 
)
private

Definition at line 698 of file TauolappInterface.cc.

References event(), GenParticle::GenParticle, jets_cff::tau1, and bphysicsOniaDQM_cfi::vertex.

Referenced by decay().

698  {
699  HepMC::GenEvent* event = new HepMC::GenEvent();
700  // make tau's four vector
701  HepMC::FourVector momentum_tau1(l.Px(), l.Py(), l.Pz(), l.E());
702  // make particles
703  HepMC::GenParticle* tau1 = new HepMC::GenParticle(momentum_tau1, pdgid, status);
704  // make the vertex
705  HepMC::GenVertex* vertex = new HepMC::GenVertex();
706  vertex->add_particle_out(tau1);
707  event->add_vertex(vertex);
708  return event;
709 }
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
double TauolappInterface::MatchedLHESpinUp ( HepMC::GenParticle *  tau,
std::vector< HepMC::GenParticle > &  p,
std::vector< double > &  spinup,
std::vector< int > &  m_idx 
)
private

Definition at line 754 of file TauolappInterface.cc.

References dmMatch, FirstTauInChain(), GenParticle::GenParticle, GetMother(), mps_fire::i, visualization-live-secondInstance_cfg::m, HiggsValidation_cfi::pdg_id, and OrderedSet::t.

Referenced by decay().

757  {
759  HepMC::GenParticle* mother = GetMother(Tau);
760  TLorentzVector t(tau->momentum().px(), tau->momentum().py(), tau->momentum().pz(), tau->momentum().e());
761  TLorentzVector m(mother->momentum().px(), mother->momentum().py(), mother->momentum().pz(), mother->momentum().e());
762  for (unsigned int i = 0; i < p.size(); i++) {
763  if (tau->pdg_id() == p.at(i).pdg_id()) {
764  if (mother->pdg_id() == p.at(m_idx.at(i)).pdg_id()) {
765  TLorentzVector pm(p.at(m_idx.at(i)).momentum().px(),
766  p.at(m_idx.at(i)).momentum().py(),
767  p.at(m_idx.at(i)).momentum().pz(),
768  p.at(m_idx.at(i)).momentum().e());
769  if (fabs(m.M() - pm.M()) < dmMatch)
770  return spinup.at(i);
771  }
772  }
773  }
774  return 0;
775 }
double p[5][pyjets_maxn]
Definition: Tau.py:1
HepMC::GenParticle * FirstTauInChain(HepMC::GenParticle *tau)
HepMC::GenParticle * GetMother(HepMC::GenParticle *tau)
const std::vector<int>& gen::TauolappInterface::operatesOnParticles ( )
inlineoverridevirtual

Reimplemented from gen::TauolaInterfaceBase.

Definition at line 42 of file TauolappInterface.h.

References PA_ZEESkim_cff::decay, and myMessageLogger_cff::statistics.

42 { return fPDGs; }
std::vector< int > fPDGs
void TauolappInterface::selectDecayByMDTAU ( )
private

Definition at line 552 of file TauolappInterface.cc.

References fMDTAU, jak2, ALCARECOPromptCalibProdSiPixelAli0T_cff::mode, selectHadronic(), and selectLeptonic().

Referenced by decay().

552  {
553  if (fMDTAU == 100 || fMDTAU == 200) {
554  int mode = selectLeptonic();
555  Tauolapp::jaki_.jak1 = mode;
556  Tauolapp::Tauola::setSameParticleDecayMode(mode);
557  mode = selectLeptonic();
558  Tauolapp::jaki_.jak2 = mode;
559  Tauolapp::Tauola::setOppositeParticleDecayMode(mode);
560  return;
561  }
562 
563  int modeL = selectLeptonic();
564  int modeH = selectHadronic();
565 
566  if (fMDTAU == 110 || fMDTAU == 210) {
567  Tauolapp::jaki_.jak1 = modeL;
568  Tauolapp::jaki_.jak2 = 0;
569  Tauolapp::Tauola::setSameParticleDecayMode(modeL);
570  Tauolapp::Tauola::setOppositeParticleDecayMode(0);
571  return;
572  }
573 
574  if (fMDTAU == 120 || fMDTAU == 22) {
575  Tauolapp::jaki_.jak1 = 0;
576  Tauolapp::jaki_.jak2 = modeL;
577  Tauolapp::Tauola::setSameParticleDecayMode(0);
578  Tauolapp::Tauola::setOppositeParticleDecayMode(modeL);
579  return;
580  }
581 
582  if (fMDTAU == 114 || fMDTAU == 214) {
583  Tauolapp::jaki_.jak1 = modeL;
584  Tauolapp::jaki_.jak2 = modeH;
585  Tauolapp::Tauola::setSameParticleDecayMode(modeL);
586  Tauolapp::Tauola::setOppositeParticleDecayMode(modeH);
587  return;
588  }
589 
590  if (fMDTAU == 124 || fMDTAU == 224) {
591  Tauolapp::jaki_.jak1 = modeH;
592  Tauolapp::jaki_.jak2 = modeL;
593  Tauolapp::Tauola::setSameParticleDecayMode(modeH);
594  Tauolapp::Tauola::setOppositeParticleDecayMode(modeL);
595  return;
596  }
597 
598  if (fMDTAU == 115 || fMDTAU == 215) {
599  Tauolapp::jaki_.jak1 = 1;
600  Tauolapp::jaki_.jak2 = modeH;
601  Tauolapp::Tauola::setSameParticleDecayMode(1);
602  Tauolapp::Tauola::setOppositeParticleDecayMode(modeH);
603  return;
604  }
605 
606  if (fMDTAU == 125 || fMDTAU == 225) {
607  Tauolapp::jaki_.jak1 = modeH;
608  Tauolapp::jaki_.jak2 = 1;
609  Tauolapp::Tauola::setSameParticleDecayMode(modeH);
610  Tauolapp::Tauola::setOppositeParticleDecayMode(1);
611  return;
612  }
613 
614  if (fMDTAU == 116 || fMDTAU == 216) {
615  Tauolapp::jaki_.jak1 = 2;
616  Tauolapp::jaki_.jak2 = modeH;
617  Tauolapp::Tauola::setSameParticleDecayMode(2);
618  Tauolapp::Tauola::setOppositeParticleDecayMode(modeH);
619  return;
620  }
621 
622  if (fMDTAU == 126 || fMDTAU == 226) {
623  Tauolapp::jaki_.jak1 = modeH;
624  Tauolapp::jaki_.jak2 = 2;
625  Tauolapp::Tauola::setSameParticleDecayMode(modeH);
626  Tauolapp::Tauola::setOppositeParticleDecayMode(2);
627  return;
628  }
629 
630  if (fMDTAU == 130 || fMDTAU == 230) {
631  Tauolapp::jaki_.jak1 = modeH;
632  Tauolapp::jaki_.jak2 = selectHadronic();
633  Tauolapp::Tauola::setSameParticleDecayMode(modeH);
634  Tauolapp::Tauola::setOppositeParticleDecayMode(Tauolapp::jaki_.jak2);
635  return;
636  }
637 
638  if (fMDTAU == 131 || fMDTAU == 231) {
639  Tauolapp::jaki_.jak1 = modeH;
640  Tauolapp::jaki_.jak2 = 0;
641  Tauolapp::Tauola::setSameParticleDecayMode(modeH);
642  Tauolapp::Tauola::setOppositeParticleDecayMode(0);
643  return;
644  }
645 
646  if (fMDTAU == 132 || fMDTAU == 232) {
647  Tauolapp::jaki_.jak1 = 0;
648  Tauolapp::jaki_.jak2 = modeH;
649  Tauolapp::Tauola::setSameParticleDecayMode(0);
650  Tauolapp::Tauola::setOppositeParticleDecayMode(modeH);
651  return;
652  }
653 
654  // unlikely that we get here on unknown mdtau
655  // - there's a protection earlier
656  // but if we do, just set defaults
657  // probably need to spit a warning...
658  //
659  Tauolapp::Tauola::setSameParticleDecayMode(0);
660  Tauolapp::Tauola::setOppositeParticleDecayMode(0);
661 
662  return;
663 }
int jak2
Definition: TauolaWrapper.h:67
int TauolappInterface::selectHadronic ( )
private

Definition at line 677 of file TauolappInterface.cc.

References fHadronModes, fScaledHadronBrRatios, mps_fire::i, TtFullHadEvtBuilder_cfi::prob, and gen::ranmar_().

Referenced by selectDecayByMDTAU().

677  {
678  float prob = 0.;
679  int len = 1;
680  ranmar_(&prob, &len);
681 
682  double sumBra = fScaledHadronBrRatios[0];
683  if (prob > 0. && prob <= sumBra) {
684  return fHadronModes[0];
685  } else {
686  int NN = fScaledHadronBrRatios.size();
687  for (int i = 1; i < NN; i++) {
688  if (prob > sumBra && prob <= (sumBra + fScaledHadronBrRatios[i])) {
689  return fHadronModes[i];
690  }
691  sumBra += fScaledHadronBrRatios[i];
692  }
693  }
694 
695  return 0;
696 }
std::vector< double > fScaledHadronBrRatios
void ranmar_(float *rvec, int *lenv)
std::vector< int > fHadronModes
int TauolappInterface::selectLeptonic ( )
private

Definition at line 665 of file TauolappInterface.cc.

References flat(), fScaledLeptonBrRatios, and TtFullHadEvtBuilder_cfi::prob.

Referenced by selectDecayByMDTAU().

665  {
666  float prob = flat();
667 
668  if (prob > 0. && prob <= fScaledLeptonBrRatios[0]) {
669  return 1;
670  } else if (prob > fScaledLeptonBrRatios[1] && prob <= 1.) {
671  return 2;
672  }
673 
674  return 0;
675 }
std::vector< double > fScaledLeptonBrRatios
void gen::TauolappInterface::SetLHE ( lhef::LHEEvent l)
inlineoverridevirtual

Reimplemented from gen::TauolaInterfaceBase.

Definition at line 45 of file TauolappInterface.h.

References cmsLHEtoEOSManager::l.

void gen::TauolappInterface::setRandomEngine ( CLHEP::HepRandomEngine *  v)
inlineoverridevirtual
void TauolappInterface::statistics ( )
overridevirtual

Reimplemented from gen::TauolaInterfaceBase.

Definition at line 395 of file TauolappInterface.cc.

395 { return; }
void TauolappInterface::update_particles ( HepMC::GenParticle *  partHep,
HepMC::GenEvent theEvent,
HepMC::GenParticle *  p,
TVector3 &  boost 
)
private

Definition at line 711 of file TauolappInterface.cc.

References ztail::d, GenParticle::GenParticle, cmsLHEtoEOSManager::l, and badGlobalMuonTaggersAOD_cff::vtx.

Referenced by decay().

714  {
715  partHep->set_status(p->status());
716  if (p->end_vertex()) {
717  if (!partHep->end_vertex()) {
718  HepMC::GenVertex* vtx = new HepMC::GenVertex(p->end_vertex()->position());
719  theEvent->add_vertex(vtx);
720  vtx->add_particle_in(partHep);
721  }
722  if (p->end_vertex()->particles_out_size() != 0) {
723  for (HepMC::GenVertex::particles_out_const_iterator d = p->end_vertex()->particles_out_const_begin();
724  d != p->end_vertex()->particles_out_const_end();
725  d++) {
726  // Create daughter and add to event
727  TLorentzVector l((*d)->momentum().px(), (*d)->momentum().py(), (*d)->momentum().pz(), (*d)->momentum().e());
728  l.Boost(boost);
729  HepMC::FourVector momentum(l.Px(), l.Py(), l.Pz(), l.E());
730  HepMC::GenParticle* daughter = new HepMC::GenParticle(momentum, (*d)->pdg_id(), (*d)->status());
731  daughter->suggest_barcode(theEvent->particles_size() + 1);
732  partHep->end_vertex()->add_particle_out(daughter);
733  if ((*d)->end_vertex())
734  update_particles(daughter, theEvent, (*d), boost);
735  }
736  }
737  }
738 }
Definition: CLHEP.h:16
double p[5][pyjets_maxn]
d
Definition: ztail.py:151
void update_particles(HepMC::GenParticle *partHep, HepMC::GenEvent *theEvent, HepMC::GenParticle *p, TVector3 &boost)

Member Data Documentation

double gen::TauolappInterface::dmMatch
private

Definition at line 86 of file TauolappInterface.h.

Referenced by init(), and MatchedLHESpinUp().

bool gen::TauolappInterface::dolhe
private

Definition at line 87 of file TauolappInterface.h.

Referenced by decay(), and init().

bool gen::TauolappInterface::dolheBosonCorr
private

Definition at line 88 of file TauolappInterface.h.

Referenced by decay(), and init().

std::vector<int> gen::TauolappInterface::fHadronModes
private

Definition at line 81 of file TauolappInterface.h.

Referenced by decodeMDTAU(), and selectHadronic().

bool gen::TauolappInterface::fIsInitialized
private

Definition at line 76 of file TauolappInterface.h.

Referenced by decay(), and init().

std::vector<int> gen::TauolappInterface::fLeptonModes
private

Definition at line 80 of file TauolappInterface.h.

Referenced by decodeMDTAU().

int gen::TauolappInterface::fMDTAU
private

Definition at line 78 of file TauolappInterface.h.

Referenced by init(), and selectDecayByMDTAU().

std::vector<int> gen::TauolappInterface::fPDGs
private

Definition at line 72 of file TauolappInterface.h.

Referenced by init().

edm::ESHandle<HepPDT::ParticleDataTable> gen::TauolappInterface::fPDGTable
private

Definition at line 74 of file TauolappInterface.h.

Referenced by init().

bool gen::TauolappInterface::fPolarization
private

Definition at line 73 of file TauolappInterface.h.

Referenced by init().

edm::ParameterSet* gen::TauolappInterface::fPSet
private

Definition at line 75 of file TauolappInterface.h.

Referenced by init(), TauolappInterface(), and ~TauolappInterface().

CLHEP::HepRandomEngine * TauolappInterface::fRandomEngine = 0
staticprivate

Definition at line 71 of file TauolappInterface.h.

Referenced by flat().

std::vector<double> gen::TauolappInterface::fScaledHadronBrRatios
private

Definition at line 83 of file TauolappInterface.h.

Referenced by decodeMDTAU(), and selectHadronic().

std::vector<double> gen::TauolappInterface::fScaledLeptonBrRatios
private

Definition at line 82 of file TauolappInterface.h.

Referenced by decodeMDTAU(), and selectLeptonic().

bool gen::TauolappInterface::fSelectDecayByEvent
private

Definition at line 79 of file TauolappInterface.h.

Referenced by decay(), and decodeMDTAU().

lhef::LHEEvent* gen::TauolappInterface::lhe
private

Definition at line 84 of file TauolappInterface.h.

Referenced by decay().

double gen::TauolappInterface::lifetime
private

Definition at line 90 of file TauolappInterface.h.

Referenced by init().

int gen::TauolappInterface::ntries
private

Definition at line 89 of file TauolappInterface.h.

Referenced by decay(), and init().