ATLAS Offline Software
Loading...
Searching...
No Matches
TauolaPP Class Reference

This Algorithm provides an easy interface to Tauola C++ interface. More...

#include <TauolaPP.h>

Inheritance diagram for TauolaPP:
Collaboration diagram for TauolaPP:

Public Member Functions

 TauolaPP (const std::string &name, ISvcLocator *pSvcLocator)
 Constructor.
virtual StatusCode initialize () override
 Initialization of Tauola++ and setting of JO configurables.
virtual StatusCode execute () override
 Pass each event in the McEventCollection to Tauola to (re)decay the taus.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Attributes

static CLHEP::HepRandomEngine * p_rndmEngine = nullptr

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared
Variables used to configure Tauola
IntegerProperty m_decay_particle {this, "decay_particle", 15}
 PDG ID of particle to study.
IntegerProperty m_decay_mode_same {this, "decay_mode_same", 1}
 TAUOLA decay mode of particles with same charge as "decay_particle".
IntegerProperty m_decay_mode_opp {this, "decay_mode_opposite", 2}
 TAUOLA decay mode of particles with opposite charge as "decay_particle".
DoubleProperty m_tau_mass {this, "tau_mass", 1.77684}
 tau mass to be taken by TAUOLA
BooleanProperty m_spin_correlation {this, "spin_correlation", true}
 TAUOLA switch for spin effects.
BooleanProperty m_setRadiation {this, "setRadiation", true}
 TAUOLA switch for radiative corrections for leptonic tau decays.
DoubleProperty m_setRadiationCutOff {this, "setRadiationCutOff", 0.01}
 TAUOLA cut-off for radiative corrections.

Features for derived classes to use internally

StringProperty m_key {this, "McEventKey", "GEN_EVENT"}
 Event record container key - FIXME should be using Read/WriteHandles here.
ServiceHandle< IAthRNGSvcm_rndmSvc {this, "RndmSvc", "AthRNGSvc"}
IntegerProperty m_dsid {this, "Dsid", 999999}
IntegerProperty m_randomSeed {this, "RandomSeed", 1234567, "Random seed for the built-in random engine"}
 Seed for random number engine.
void reseedRandomEngine (const std::string &streamName, const EventContext &ctx)
CLHEP::HepRandomEngine * getRandomEngine (const std::string &streamName, unsigned long int randomSeedOffset, const EventContext &ctx) const
CLHEP::HepRandomEngine * getRandomEngineDuringInitialize (const std::string &streamName, unsigned long int randomSeedOffset, unsigned int conditionsRun=1, unsigned int lbn=1) const

Detailed Description

This Algorithm provides an easy interface to Tauola C++ interface.

Author
Nadia Davidson, Marcin Wolter
Todo
Convert to use standard GenModule base class

Definition at line 23 of file TauolaPP.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TauolaPP()

TauolaPP::TauolaPP ( const std::string & name,
ISvcLocator * pSvcLocator )

Constructor.

Definition at line 38 of file TauolaPP.cxx.

39 : AthAlgorithm(name, pSvcLocator)
40{
41}
AthAlgorithm()
Default constructor:

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode TauolaPP::execute ( )
overridevirtual

Pass each event in the McEventCollection to Tauola to (re)decay the taus.

Definition at line 115 of file TauolaPP.cxx.

115 {
116
117 //Re-seed the random number stream
118 const EventContext& ctx = Gaudi::Hive::currentContext();
119 reseedRandomEngine("TAUOLAPP", ctx);
120
121 // Load HepMC info
122 // FIXME should be using Read/WriteHandles here
123 const McEventCollection* mcCollptr_const;
124 ATH_CHECK( evtStore()->retrieve(mcCollptr_const, m_key) );
125 // Const_cast to make an event possible to update
126 McEventCollection* mcCollptr = const_cast<McEventCollection*>(mcCollptr_const);
127
128 // Loop over all events in McEventCollection
129 for (HepMC::GenEvent* evt : *mcCollptr) {
130 // Convert event record to format readable by tauola interface
131 auto t_event = new Tauolapp::TauolaHepMCEvent(evt);
132
133 // remove tau decays first
134 t_event->undecayTaus();
135 // decay taus
136 t_event->decayTaus();
137 // t_event->getEvent()->print();
138 }
139
140 return StatusCode::SUCCESS;
141}
#define ATH_CHECK
Evaluate an expression and check for errors.
StringProperty m_key
Event record container key - FIXME should be using Read/WriteHandles here.
Definition TauolaPP.h:47
void reseedRandomEngine(const std::string &streamName, const EventContext &ctx)
Definition TauolaPP.cxx:81
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ getRandomEngine()

CLHEP::HepRandomEngine * TauolaPP::getRandomEngine ( const std::string & streamName,
unsigned long int randomSeedOffset,
const EventContext & ctx ) const
private

Definition at line 89 of file TauolaPP.cxx.

91{
92 ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this, streamName);
93 rngWrapper->setSeed( streamName, ctx.slot(), randomSeedOffset, ctx.eventID().run_number() );
94 return rngWrapper->getEngine(ctx);
95}
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition RNGWrapper.h:169
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition RNGWrapper.h:134
ServiceHandle< IAthRNGSvc > m_rndmSvc
Definition TauolaPP.h:50

◆ getRandomEngineDuringInitialize()

CLHEP::HepRandomEngine * TauolaPP::getRandomEngineDuringInitialize ( const std::string & streamName,
unsigned long int randomSeedOffset,
unsigned int conditionsRun = 1,
unsigned int lbn = 1 ) const
private

Definition at line 98 of file TauolaPP.cxx.

99{
100 const size_t slot=0;
101 EventContext ctx;
102 ctx.setSlot( slot );
103 ctx.setEventID (EventIDBase (conditionsRun,
104 EventIDBase::UNDEFEVT, // event
105 EventIDBase::UNDEFNUM, // timestamp
106 EventIDBase::UNDEFNUM, // timestamp ns
107 lbn));
109 Atlas::ExtendedEventContext( evtStore()->hiveProxyDict(),
110 conditionsRun) );
111 return getRandomEngine(streamName, randomSeedOffset, ctx);
112}
CLHEP::HepRandomEngine * getRandomEngine(const std::string &streamName, unsigned long int randomSeedOffset, const EventContext &ctx) const
Definition TauolaPP.cxx:89
void setExtendedEventContext(EventContext &ctx, ExtendedEventContext &&ectx)
Move an extended context into a context object.

◆ initialize()

StatusCode TauolaPP::initialize ( )
overridevirtual

Initialization of Tauola++ and setting of JO configurables.

Definition at line 44 of file TauolaPP.cxx.

44 {
45
46 ATH_CHECK(m_rndmSvc.retrieve());
48 const long* sip = p_rndmEngine->getSeeds();
49
50 // Setup and intialise Tauola Interface
51 using Tauolapp::Tauola;
52 Tauola::setSameParticleDecayMode(m_decay_mode_same);
53 Tauola::setOppositeParticleDecayMode(m_decay_mode_opp);
54 // etc.... see Tauola.h for the full list of configurables
55 // Note: some need to be set before (or after) calling Tauola::initialize();
56
57 // Tauola::setHiggsScalarPseudoscalarMixingAngle(atof(argv[5]));
58 // Tauola::setHiggsScalarPseudoscalarPDG(25);
59
60 Tauola::initialize();
61
62 Tauola::setEtaK0sPi(1,0,1); // switches to decay eta K0_S and pi0 1/0 on/off.
63 Tauola::spin_correlation.setAll(m_spin_correlation);
64 Tauola::setRadiation(m_setRadiation);
65 Tauola::setRadiationCutOff(m_setRadiationCutOff);
66
67 //call RanLux generator for ++ part of Tauola
68 Tauola::setRandomGenerator(AthenaRandomGenerator);
69
70 //seeding tauola-fortran generator
71 // See tauola.f: the first parameter should be positive int <900000000
72 Tauola::setSeed(int(std::abs(sip[0])%(900000000)),0,0);
73
74 //setting tau mass
75 Tauolapp::parmas_.amtau=m_tau_mass;
76
77 return StatusCode::SUCCESS;
78}
BooleanProperty m_setRadiation
TAUOLA switch for radiative corrections for leptonic tau decays.
Definition TauolaPP.h:77
CLHEP::HepRandomEngine * getRandomEngineDuringInitialize(const std::string &streamName, unsigned long int randomSeedOffset, unsigned int conditionsRun=1, unsigned int lbn=1) const
Definition TauolaPP.cxx:98
IntegerProperty m_decay_mode_opp
TAUOLA decay mode of particles with opposite charge as "decay_particle".
Definition TauolaPP.h:68
IntegerProperty m_decay_mode_same
TAUOLA decay mode of particles with same charge as "decay_particle".
Definition TauolaPP.h:65
DoubleProperty m_tau_mass
tau mass to be taken by TAUOLA
Definition TauolaPP.h:71
DoubleProperty m_setRadiationCutOff
TAUOLA cut-off for radiative corrections.
Definition TauolaPP.h:80
IntegerProperty m_randomSeed
Seed for random number engine.
Definition TauolaPP.h:56
IntegerProperty m_dsid
Definition TauolaPP.h:53
static CLHEP::HepRandomEngine * p_rndmEngine
Definition TauolaPP.h:35
BooleanProperty m_spin_correlation
TAUOLA switch for spin effects.
Definition TauolaPP.h:74

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg()

MsgStream & AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ reseedRandomEngine()

void TauolaPP::reseedRandomEngine ( const std::string & streamName,
const EventContext & ctx )
private

Definition at line 81 of file TauolaPP.cxx.

82{
83 long seeds[7];
84 ATHRNG::calculateSeedsMC21(seeds, streamName, ctx.eventID().event_number(), m_dsid, m_randomSeed);
85 p_rndmEngine->setSeeds(seeds, 0); // NOT THREAD-SAFE
86}
void calculateSeedsMC21(long *seeds, const std::string &algName, uint64_t ev, uint64_t run, uint64_t offset=0)
Set the random seed using a string (e.g.

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_WARNING(x)
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_decay_mode_opp

IntegerProperty TauolaPP::m_decay_mode_opp {this, "decay_mode_opposite", 2}
private

TAUOLA decay mode of particles with opposite charge as "decay_particle".

Definition at line 68 of file TauolaPP.h.

68{this, "decay_mode_opposite", 2};

◆ m_decay_mode_same

IntegerProperty TauolaPP::m_decay_mode_same {this, "decay_mode_same", 1}
private

TAUOLA decay mode of particles with same charge as "decay_particle".

Definition at line 65 of file TauolaPP.h.

65{this, "decay_mode_same", 1};

◆ m_decay_particle

IntegerProperty TauolaPP::m_decay_particle {this, "decay_particle", 15}
private

PDG ID of particle to study.

Definition at line 62 of file TauolaPP.h.

62{this, "decay_particle", 15};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_dsid

IntegerProperty TauolaPP::m_dsid {this, "Dsid", 999999}
private

Definition at line 53 of file TauolaPP.h.

53{this, "Dsid", 999999};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_key

StringProperty TauolaPP::m_key {this, "McEventKey", "GEN_EVENT"}
private

Event record container key - FIXME should be using Read/WriteHandles here.

Definition at line 47 of file TauolaPP.h.

47{this, "McEventKey", "GEN_EVENT"};

◆ m_randomSeed

IntegerProperty TauolaPP::m_randomSeed {this, "RandomSeed", 1234567, "Random seed for the built-in random engine"}
private

Seed for random number engine.

Definition at line 56 of file TauolaPP.h.

56{this, "RandomSeed", 1234567, "Random seed for the built-in random engine"}; // FIXME make this into an unsigned long int?

◆ m_rndmSvc

ServiceHandle<IAthRNGSvc> TauolaPP::m_rndmSvc {this, "RndmSvc", "AthRNGSvc"}
private

Definition at line 50 of file TauolaPP.h.

50{this, "RndmSvc", "AthRNGSvc"};

◆ m_setRadiation

BooleanProperty TauolaPP::m_setRadiation {this, "setRadiation", true}
private

TAUOLA switch for radiative corrections for leptonic tau decays.

Definition at line 77 of file TauolaPP.h.

77{this, "setRadiation", true};

◆ m_setRadiationCutOff

DoubleProperty TauolaPP::m_setRadiationCutOff {this, "setRadiationCutOff", 0.01}
private

TAUOLA cut-off for radiative corrections.

Definition at line 80 of file TauolaPP.h.

80{this, "setRadiationCutOff", 0.01};

◆ m_spin_correlation

BooleanProperty TauolaPP::m_spin_correlation {this, "spin_correlation", true}
private

TAUOLA switch for spin effects.

Definition at line 74 of file TauolaPP.h.

74{this, "spin_correlation", true};

◆ m_tau_mass

DoubleProperty TauolaPP::m_tau_mass {this, "tau_mass", 1.77684}
private

tau mass to be taken by TAUOLA

Definition at line 71 of file TauolaPP.h.

71{this, "tau_mass", 1.77684};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ p_rndmEngine

CLHEP::HepRandomEngine * TauolaPP::p_rndmEngine = nullptr
static

Definition at line 35 of file TauolaPP.h.


The documentation for this class was generated from the following files: