1 #ifndef __JTRIGGER__JTRIGGERMXSHOWER__
2 #define __JTRIGGER__JTRIGGERMXSHOWER__
50 using namespace JMATH;
63 if (d <= 0.5 * parameters.DMax_m)
65 else if (d <= parameters.DMax_m)
98 match(parameters.DMax_m, parameters.TMaxExtra_ns)
104 if (parameters.numberOfHits == 0) {
105 parameters.numberOfHits = 1;
108 if (parameters.numberOfHits == 1) {
109 parameters.factoryLimit = 1;
112 if (parameters.numberOfModules < 1) {
113 parameters.numberOfModules = 1;
125 template<
class JElement_t>
128 std::back_insert_iterator<JTriggerOutput> out)
const
131 typedef typename JTimeslice_t::value_type JFrame_t;
134 if (parameters.enabled) {
136 JTimeslice_t clone(inputL0, mapper);
138 for (JTriggerInput::const_iterator root = inputL1.begin(); root != inputL1.
end(); ++root) {
142 const container_type& zip = mapper.getList(root->getModuleID());
144 for (
typename container_type::const_iterator mod = zip.begin(); mod != zip.end(); ++mod) {
146 const double Tmin = root->getT() + mod->Tmin_ns;
147 const double Tmax = root->getT() + mod->Tmax_ns;
149 JFrame_t& frame = clone[mod->first];
151 frame.fast_forward(root->getT() - TMaxEvent_ns);
153 for (
typename JFrame_t::const_iterator i = frame.get(); *i <= Tmax; ++i) {
156 buffer.push_back(
JHitR1(frame.getModuleID(),
163 if (
distance (buffer.begin(), buffer.end()) >= parameters.numberOfHits - 1 &&
166 if (
distance(buffer.begin(), buffer.end()) < parameters.factoryLimit) {
168 JTriggerInput::iterator q =
clusterize(buffer.begin(), buffer.end(), match, parameters.numberOfHits - 1);
170 if (
distance (buffer.begin(), q) >= parameters.numberOfHits - 1 &&