#include #include #include #include struct Photon { double t; TVector3 pos; TVector3 dir; TVector3 pol; double wavelength; // nm int state; int last_triangle; int last_solid; }; struct MC { std::string particle; TVector3 gen_pos; TVector3 gen_dir; double gen_ke; std::vector photon; void clear() { particle = "none"; photon.clear(); } }; struct Channel { Channel() : channel_id(-1), t(-9999.0), q(-9999.0) { }; int channel_id; double t; double q; }; struct Event { int event_id; MC mc; int nhit; std::vector channel; void clear() { mc.clear(); channel.clear(); } }; void fill_event(TTree *T, Event *ev, int event_id, double *gen_pos, int nchannels, float *channel_times) { ev->clear(); ev->event_id = event_id; MC &mc = ev->mc; mc.gen_pos.SetXYZ(gen_pos[0], gen_pos[1], gen_pos[2]); ev->nhit = 0; Channel ch; for (int i=0; i < nchannels; i++) { if (channel_times[i] < 1e8) { ev->nhit++; ch.channel_id = i; ch.t = channel_times[i]; ch.q = 1.0; ev->channel.push_back(ch); } } T->Fill(); } #ifdef __MAKECINT__ #pragma link C++ class vector; #pragma link C++ class vector; #endif