PH_HEPEVT_Interface.h
00001 #ifndef _PH_HEPEVT_Interface_included_
00002 #define _PH_HEPEVT_Interface_included_
00003
00004 #include <vector>
00005 #include "PhotosBranch.h"
00006 #include "PhotosParticle.h"
00007
00008 namespace Photospp
00009 {
00010
00011 const static int NMXHEP = 10000;
00012 const static double NO_BOOST_THRESHOLD=1.0e-8;
00013
00014 extern "C"
00015 {
00016
00017 extern struct
00018 {
00019 int nevhep;
00020 int nhep;
00021 int isthep[NMXHEP];
00022 int idhep[NMXHEP];
00023 int jmohep[NMXHEP][2];
00024 int jdahep[NMXHEP][2];
00025 double phep[NMXHEP][5];
00026 double vhep[NMXHEP][4];
00027
00028
00029 } ph_hepevt_;
00030
00031 extern struct
00032 {
00033 int qedrad[NMXHEP];
00034 } ph_phoqed_;
00035
00036
00037 extern "C" void phodmp_();
00038 }
00039
00040 class PH_HEPEVT_Interface
00041 {
00042 public:
00043
00044 static int set(PhotosBranch* branch);
00045
00046
00047 static void get();
00048
00049
00050 static void prepare();
00051
00052
00053 static void check_ME_channel();
00054
00055
00056 static void complete();
00057
00058
00059 static void clear();
00060 public:
00061
00062 static int decay_idx;
00063
00064 static int ME_channel;
00065 private:
00066
00067 static void add_particle(int i, PhotosParticle * particle,
00068 int first_mother, int last_mother,
00069 int first_daughter, int last_daughter);
00070
00071
00072 static std::vector<PhotosParticle*> m_particle_list;
00073 };
00074
00075 }
00076 #endif