1 #ifndef __JTRIGGER__JTRIGGERMXSHOWER__
2 #define __JTRIGGER__JTRIGGERMXSHOWER__
20 namespace JPP {
using namespace JTRIGGER; }
50 using namespace JMATH;
51 using namespace JTOOLS;
63 if (d <= 0.5 * parameters.DMax_m)
65 else if (d <= parameters.DMax_m)
98 match(parameters.DMax_m, parameters.TMaxExtra_ns)
100 using namespace JTOOLS;
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
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 &&
Data structure for a composite optical module.
Shower trigger parameters.
static const JParameters_t & getParameters()
Get latest parameters.
Data structure for detector geometry and calibration.
double getDistance(const JFirst_t &first, const JSecond_t &second)
Get distance between objects.
double Tmin_ns
minimal time difference [ns]
Auxiliary class to match modules according maximal distance.
JModuleMapper< JAttributes > JModuleMapper_t
Type definition of module mapper.
JHitIterator_t clusterize(JHitIterator_t __begin, JHitIterator_t __end, const JMatch< JHit_t > &match, const int Nmin=1)
Partition data according given binary match operator.
std::vector< JHitR1 > buffer
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
JTimeslice< hit_type > JTimeslice_t
void setAttributes(const JModule &first, const JModule &second, JAttributes_t &attributes)
Template method to set module attributes.
double Tmax_ns
maximal time difference [ns]
void operator()(const JTriggerInput &inputL1, const JTimeslice< JElement_t > inputL0, std::back_insert_iterator< JTriggerOutput > out) const
Process trigger.
JParametersHelper< JParameters > parameters
Mapper for directly addressing of associated modules in the detector data structure.
Map of associated modules in detector.
Reduced data structure for L1 hit.
int getNumberOfModules(const JDetector &detector)
Get number of modules.
JTriggerMXShower(const JParameters &input, const JDetector &detector)
Constructor.
Time slice with calibrated data.
JTriggerbit_t getTriggerBit()
Get the trigger bit.