16#ifndef __FIZIKA_REACTION__
17#define __FIZIKA_REACTION__
35 std::vector<hipo::bank> banks;
36 std::vector<std::pair<int,int>> filter;
37 bool filter_exclusive =
true;
39 void initialize(
const char*
file, std::vector<std::string>
blist){
52 initialize(
file,{
"REC::Particle"});
55 initialize(
file,{
"REC::Particle"});
59 initialize(
file,{
"REC::Particle"});
62 lz4_target.
setXYZM(0.0,0.0,0.0,0.938);
63 centermass = lz4_beam + lz4_target;
67 initialize(
file,{
"REC::Particle"});
69 lz4_target.
setXYZM(0.0,0.0,0.0,0.938);
70 centermass = lz4_beam + lz4_target;
71 printf(
">>>> initializing the reaction\n");
73 filter.push_back(std::make_pair(
pids[
k],count[
k]));
84 std::initializer_list< std::tuple<int,int>>::iterator
it;
86 printf(
"PID %d, count %d\n", std::get<0>(*
it),std::get<1>(*
it));
87 filter.push_back(std::make_pair( std::get<0>(*
it),std::get<1>(*
it)));
95 std::initializer_list< std::tuple<int,int,int ,double>>::iterator
it;
124 for(
decltype(banks)
::size_type r = 0; r < banks.size(); r++) event.
read(banks[r]);
136 if(filter_exclusive==
true){
137 if(count!=filter[
f].second)
return false;
138 }
else {
if(count<filter[
f].second)
return false; }
145 for(
int r = 0; r < banks[0].getRows(); r++){
146 int upid = banks[0].getInt(0,r);
147 int stat = banks[0].getInt(
"status",r);
156 for(
int r = 0; r < banks[0].getRows(); r++){
157 int upid = banks[0].getInt(0,r);
158 int stat = banks[0].getInt(
"status",r);
void setXYZM(double _x, double _y, double _z, double _m)
Definition fizika.h:195
reaction(const char *file, double benergy, std::initializer_list< std::tuple< int, int > > desc)
Definition reaction.h:58
void get_vector(fizika::lorentz4 &vec, double mass, hipo::bank &b, int order, int ind_px, int ind_py, int ind_pz)
Definition reaction.h:128
reaction(const char *file)
Definition reaction.h:51
bool next()
Definition reaction.h:120
fizika::lorentz4 get(int *signs, int *pids, int *skips, double *masses, int length)
Definition reaction.h:106
int index(int pid, int skip)
Definition reaction.h:154
void init_filter(std::initializer_list< std::tuple< int, int > > desc)
Definition reaction.h:83
bool is_valid()
Definition reaction.h:132
int countpid(int pid)
Definition reaction.h:143
reaction(const char *file, std::initializer_list< std::tuple< int, int > > desc)
Definition reaction.h:54
std::vector< hipo::bank > & getBanks()
Definition reaction.h:167
reaction(const char *file, double benergy, int *pids, int *count, int length)
Definition reaction.h:66
fizika::lorentz4 & target()
Definition reaction.h:169
fizika::lorentz4 & beam()
Definition reaction.h:168
virtual ~reaction()
Definition reaction.h:78
fizika::lorentz4 get(std::initializer_list< std::tuple< int, int, int, double > > desc)
Definition reaction.h:93
reaction()
Definition reaction.h:50
fizika::lorentz4 & cm()
Definition reaction.h:81
float getFloat(int item, int index) const noexcept
Definition bank.h:416
Collection of schema definitions, typically read from a HIPO file header.
Definition dictionary.h:157
schema & getSchema(const char *name)
Definition dictionary.h:167
void read(hipo::bank &b)
Definition event.cpp:63
void read(hipo::event &dataevent)
Reads current event from the record without advancing the current event position.
Definition reader.cpp:233
void readDictionary(hipo::dictionary &dict)
Reads the dictionary for the file.
Definition reader.cpp:318
bool next()
Advances the event pointer to the next event.
Definition reader.cpp:341
void open(const char *filename)
Open file, if file stream is open, it is closed first.
Definition reader.cpp:78