00001 #ifndef _TauolaEvent_h_included_ 00002 #define _TauolaEvent_h_included_ 00003 00004 #include <stdio.h> 00005 #include <stdlib.h> 00006 #include <iostream> 00007 #include "TauolaParticlePair.h" 00008 00009 /** 00010 * @class TauolaEvent 00011 * 00012 * @brief Abstract base class for containing the event information. 00013 * 00014 * TauolaEvent contains virtual methods, which need to be implemented 00015 * by the appropriate interface class to the event record. Currently only 00016 * TauolaHepMCEvent does this. An object of TauolaEvent type should be 00017 * created by the user and can be decayed via the decayTaus() method. 00018 * 00019 * This class is responsible for finding taus, (or tau and 00020 * it's neutrino) and creating TauolaParticlePairs out of them. 00021 * 00022 * @author Nadia Davidson 00023 * @date 16 June 2008 00024 */ 00025 00026 namespace Tauolapp 00027 { 00028 00029 class TauolaEvent{ 00030 00031 public: 00032 virtual ~TauolaEvent(){}; 00033 00034 /** create TauolaParticlePairs */ 00035 std::vector<TauolaParticle*> findPairs(); 00036 00037 /** Decay taus in this event.*/ 00038 void decayTaus(); 00039 00040 /** Undecay taus in this event but removing their daughters and 00041 returning the status cods to 1.*/ 00042 void undecayTaus(); 00043 00044 /** Final touches to event record after all decays are finished. 00045 Some event records (e.g. HepMC) need it. */ 00046 virtual void eventEndgame() {} 00047 00048 /** return a list of all particle with pdg_id = absolute value of pdg_id. 00049 This method must be implemented by a derived class. eg. 00050 TauolaHepMCEvent */ 00051 virtual std::vector<TauolaParticle*> findParticles(int pdg_id)=0; 00052 00053 /** return a list of all particle with pdg_id = absolute value of pdg_id 00054 and stable status code. This method must be implemented by a derived class. 00055 eg. TauolaHepMCEvent */ 00056 virtual std::vector<TauolaParticle*> findStableParticles(int pdg_id)=0; 00057 00058 00059 private: 00060 00061 }; 00062 00063 } // namespace Tauolapp 00064 #endif 00065