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.