00001
00013 #ifndef _INTERACTION_H_
00014 #define _INTERACTION_H_
00015
00016 #include <string>
00017 #include <ostream>
00018
00019 #include <TObject.h>
00020
00021 #include "flavor.h"
00022 #include "ccnc.h"
00023 #include "init_state.h"
00024 #include "final_state.h"
00025 #include "nucleus.h"
00026
00027 using std::string;
00028 using std::ostream;
00029
00030 extern "C" {
00031 void makestate_(int*,int*,int*,int*,int*,int*,int*,int*,int*);
00032 void writestate_(int*);
00033 }
00034
00035 class interaction : public TObject {
00036
00037 public:
00038
00039 friend ostream & operator << (ostream & stream, const interaction & inter);
00040
00041 interaction();
00042 interaction(const char *name);
00043 interaction(const interaction * inter);
00044 interaction(flavor_t f, nucleus_t n, ccnc_t c, init_state_t in);
00045 ~interaction();
00046
00047 const char * name (void) const { return _name.c_str(); }
00048
00049 void setFlavor (flavor_t f ) { _flavor = f; }
00050 void setNucleus (nucleus_t n ) { _nucleus = n; }
00051 void setCCNC (ccnc_t c ) { _ccnc = c; }
00052 void setInitState (init_state_t i) { _init_state = i; }
00053
00054 flavor_t getFlavor (void) const { return _flavor; }
00055 nucleus_t getNucleus (void) const { return _nucleus; }
00056 ccnc_t getCCNC (void) const { return _ccnc; }
00057 init_state_t getInitState (void) const { return _init_state; }
00058 int getProcess (void) const;
00059 int getProcess (final_state * final) const;
00060
00061 void print(ostream & stream) const;
00062
00063 private:
00064
00065 string _name;
00066 flavor_t _flavor;
00067 nucleus_t _nucleus;
00068 ccnc_t _ccnc;
00069 init_state_t _init_state;
00070
00071 ClassDef(interaction, 0)
00072 };
00073
00074 #endif
00075