Jpp
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Static Protected Member Functions | Private Attributes | List of all members
JTRIGGER::JTriggerMXShower Class Reference

Shower trigger. More...

#include <JTriggerMXShower.hh>

Inheritance diagram for JTRIGGER::JTriggerMXShower:
JTRIGGER::JTriggerMXShower_t JTRIGGER::JTriggerInterface

Public Types

typedef JModuleMapper< JAttributesJModuleMapper_t
 Type definition of module mapper. More...
 
typedef JTriggerInput::value_type value_type
 
typedef JMatch< value_typematch_type
 

Public Member Functions

 JTriggerMXShower (const JParameters &input, const JDetector &detector)
 Constructor. More...
 
template<class JElement_t >
void operator() (const JTriggerInput &inputL1, const JTimeslice< JElement_t > inputL0, std::back_insert_iterator< JTriggerOutput > out) const
 Process trigger. More...
 
JTriggerbit_t getTriggerBit () const
 Get the trigger bit. More...
 

Static Public Member Functions

static const char * getTriggerName (JTriggerbit_t bit)
 Get trigger name. More...
 

Public Attributes

JModuleCounter getNumberOfModules
 Function object to count unique modules. More...
 

Protected Member Functions

template<JTriggerbit_t N>
bool checkTriggerBit () const
 Test whether specific trigger bit correponds to derived trigger class. More...
 
template<JTriggerbit_t N>
JTriggerbit_t find_trigger_bit (JBit< N > bit) const
 Recursive method to find the trigger bit of the given trigger data. More...
 
JTriggerbit_t find_trigger_bit (JBit< NUMBER_OF_TRIGGER_BITS > bit) const
 Termination method of recursive method to find the trigger bit of the given trigger data. More...
 

Static Protected Member Functions

template<JTriggerbit_t N>
static const char * getTriggerName ()
 Get trigger name. More...
 
template<JTriggerbit_t N>
static const char * get_trigger_name (JBit< N > bit, JTriggerbit_t value)
 Recursive method to get trigger name for given trigger bit. More...
 
static const char * get_trigger_name (JBit< NUMBER_OF_TRIGGER_BITS > bit, JTriggerbit_t value)
 Termination method of recursive method to get trigger name. More...
 

Private Attributes

JParametersHelper< JParametersparameters
 
JModuleMapper_t mapper
 
std::vector< JHitR1buffer
 
JMatch3G< JHitR1match
 
double TMaxEvent_ns
 

Detailed Description

Shower trigger.

Definition at line 76 of file JTriggerMXShower.hh.

Member Typedef Documentation

◆ JModuleMapper_t

Type definition of module mapper.

Definition at line 85 of file JTriggerMXShower.hh.

◆ value_type

typedef JTriggerInput::value_type JTRIGGER::JTriggerInterface::value_type
inherited

Definition at line 161 of file JTriggerInterface.hh.

◆ match_type

Definition at line 162 of file JTriggerInterface.hh.

Constructor & Destructor Documentation

◆ JTriggerMXShower()

JTRIGGER::JTriggerMXShower::JTriggerMXShower ( const JParameters input,
const JDetector detector 
)
inline

Constructor.

Parameters
inputtrigger parameters
detectordetector;

Definition at line 94 of file JTriggerMXShower.hh.

95  :
96  parameters(input),
98  match(parameters.DMax_m, parameters.TMaxExtra_ns)
99  {
100  using namespace JTOOLS;
101 
103 
104  if (parameters.numberOfHits == 0) {
105  parameters.numberOfHits = 1;
106  }
107 
108  if (parameters.numberOfHits == 1) {
109  parameters.factoryLimit = 1;
110  }
111 
112  if (parameters.numberOfModules < 1) {
113  parameters.numberOfModules = 1;
114  }
115  }

Member Function Documentation

◆ operator()()

template<class JElement_t >
void JTRIGGER::JTriggerMXShower::operator() ( const JTriggerInput inputL1,
const JTimeslice< JElement_t >  inputL0,
std::back_insert_iterator< JTriggerOutput out 
) const
inline

Process trigger.

Parameters
inputL1input L1 data
inputL0input L0 data
outoutput data

Definition at line 126 of file JTriggerMXShower.hh.

129  {
130  typedef JTimesliceClone<JElement_t> JTimeslice_t;
131  typedef typename JTimeslice_t::value_type JFrame_t;
132  typedef typename JModuleMapper_t::container_type container_type;
133 
134  if (parameters.enabled) {
135 
136  JTimeslice_t clone(inputL0, mapper);
137 
138  for (JTriggerInput::const_iterator root = inputL1.begin(); root != inputL1.end(); ++root) {
139 
140  buffer.clear();
141 
142  const container_type& zip = mapper.getList(root->getModuleID());
143 
144  for (typename container_type::const_iterator mod = zip.begin(); mod != zip.end(); ++mod) {
145 
146  const double Tmin = root->getT() + mod->Tmin_ns;
147  const double Tmax = root->getT() + mod->Tmax_ns;
148 
149  JFrame_t& frame = clone[mod->first];
150 
151  frame.fast_forward(root->getT() - TMaxEvent_ns);
152 
153  for (typename JFrame_t::const_iterator i = frame.get(); *i <= Tmax; ++i) {
154 
155  if (*i >= Tmin) {
156  buffer.push_back(JHitR1(frame.getModuleID(),
157  frame.getPosition(),
158  frame.getJHit(*i)));
159  }
160  }
161  }
162 
163  if (distance (buffer.begin(), buffer.end()) >= parameters.numberOfHits - 1 &&
164  getNumberOfModules(buffer.begin(), buffer.end()) >= parameters.numberOfModules - 1) {
165 
166  if (distance(buffer.begin(), buffer.end()) < parameters.factoryLimit) {
167 
168  JTriggerInput::iterator q = clusterize(buffer.begin(), buffer.end(), match, parameters.numberOfHits - 1);
169 
170  if (distance (buffer.begin(), q) >= parameters.numberOfHits - 1 &&
171  getNumberOfModules(buffer.begin(), q) >= parameters.numberOfModules - 1) {
172  *out = JEvent(inputL1.getDAQChronometer(), *root, buffer.begin(), q, this->getTriggerBit());
173  ++out;
174  }
175 
176  } else {
177 
178  // Anomalous large event
179 
180  *out = JEvent(inputL1.getDAQChronometer(), *root, buffer.begin(), buffer.end(), this->getTriggerBit());
181  ++out;
182  }
183  }
184  }
185  }
186  }

◆ checkTriggerBit()

template<JTriggerbit_t N>
bool JTRIGGER::JTriggerInterface::checkTriggerBit ( ) const
inlineprotectedinherited

Test whether specific trigger bit correponds to derived trigger class.

This method will be specialised using the marco setTriggerBit() so that it will return true if this triggered event corresponds to bit N.

This method will be repeatedly called by method find_trigger_bit() which in turn is called by the member method JTriggerInterface::getTriggerBit() so that it returns the correct trigger bit.

Returns
false

Definition at line 76 of file JTriggerInterface.hh.

77  {
78  return false;
79  }

◆ find_trigger_bit() [1/2]

template<JTriggerbit_t N>
JTriggerbit_t JTRIGGER::JTriggerInterface::find_trigger_bit ( JBit< N >  bit) const
inlineprotectedinherited

Recursive method to find the trigger bit of the given trigger data.

Parameters
bittrigger bit
Returns
trigger bit

Definition at line 89 of file JTriggerInterface.hh.

90  {
91  if (checkTriggerBit<N>())
92  return N;
93  else
94  return find_trigger_bit(JBit<N+1>());
95  }

◆ find_trigger_bit() [2/2]

JTriggerbit_t JTRIGGER::JTriggerInterface::find_trigger_bit ( JBit< NUMBER_OF_TRIGGER_BITS >  bit) const
inlineprotectedinherited

Termination method of recursive method to find the trigger bit of the given trigger data.

This method throws an error.

Parameters
bittrigger bit
Returns
trigger bit

Definition at line 105 of file JTriggerInterface.hh.

106  {
107  throw JTriggerException("Method find_trigger_bit<>(): no corresponding trigger bit found.");
108  }

◆ getTriggerName() [1/2]

template<JTriggerbit_t N>
static const char* JTRIGGER::JTriggerInterface::getTriggerName ( )
inlinestaticprotectedinherited

Get trigger name.

This method will be specialised using the marco setTriggerBit() so that it will return name of trigger for bit N.

This method will be repeatedly called by method get_trigger_name() which in turn is called by the method JTriggerInterface::getTriggerName() so that it returns the correct trigger name.

Returns
NULL

Definition at line 124 of file JTriggerInterface.hh.

125  {
126  return NULL;
127  }

◆ getTriggerName() [2/2]

static const char* JTRIGGER::JTriggerInterface::getTriggerName ( JTriggerbit_t  bit)
inlinestaticinherited

Get trigger name.

param bit trigger bit

Returns
trigger name

Definition at line 182 of file JTriggerInterface.hh.

183  {
184  return get_trigger_name(JBit<0>(), bit);
185  }

◆ get_trigger_name() [1/2]

template<JTriggerbit_t N>
static const char* JTRIGGER::JTriggerInterface::get_trigger_name ( JBit< N >  bit,
JTriggerbit_t  value 
)
inlinestaticprotectedinherited

Recursive method to get trigger name for given trigger bit.

Parameters
bittrigger bit
valuetrigger bit
Returns
trigger name

Definition at line 138 of file JTriggerInterface.hh.

139  {
140  if (bit.value == value)
141  return getTriggerName<N>();
142  else
143  return get_trigger_name(JBit<N+1>(), value);
144  }

◆ get_trigger_name() [2/2]

static const char* JTRIGGER::JTriggerInterface::get_trigger_name ( JBit< NUMBER_OF_TRIGGER_BITS >  bit,
JTriggerbit_t  value 
)
inlinestaticprotectedinherited

Termination method of recursive method to get trigger name.

Parameters
bittrigger bit
valuetrigger bit
Returns
NULL

Definition at line 154 of file JTriggerInterface.hh.

155  {
156  return NULL;
157  }

◆ getTriggerBit()

JTriggerbit_t JTRIGGER::JTriggerInterface::getTriggerBit ( ) const
inlineinherited

Get the trigger bit.

Returns
trigger bit

Definition at line 170 of file JTriggerInterface.hh.

171  {
172  return find_trigger_bit(JBit<0>());
173  }

Member Data Documentation

◆ parameters

JParametersHelper<JParameters> JTRIGGER::JTriggerMXShower::parameters
private

Definition at line 189 of file JTriggerMXShower.hh.

◆ mapper

JModuleMapper_t JTRIGGER::JTriggerMXShower::mapper
private

Definition at line 190 of file JTriggerMXShower.hh.

◆ buffer

std::vector<JHitR1> JTRIGGER::JTriggerMXShower::buffer
mutableprivate

Definition at line 191 of file JTriggerMXShower.hh.

◆ match

JMatch3G<JHitR1> JTRIGGER::JTriggerMXShower::match
private

Definition at line 192 of file JTriggerMXShower.hh.

◆ TMaxEvent_ns

double JTRIGGER::JTriggerMXShower::TMaxEvent_ns
private

Definition at line 193 of file JTriggerMXShower.hh.

◆ getNumberOfModules

JModuleCounter JTRIGGER::JTriggerInterface::getNumberOfModules
inherited

Function object to count unique modules.

Definition at line 191 of file JTriggerInterface.hh.


The documentation for this class was generated from the following file:
JDETECTOR::JModuleMapper::getList
const container_type & getList(const JObjectID &id) const
Get list with module data matching given module.
Definition: JModuleMapper.hh:244
JTRIGGER::JTriggerInterface::getTriggerBit
JTriggerbit_t getTriggerBit() const
Get the trigger bit.
Definition: JTriggerInterface.hh:170
JTRIGGER::JTriggerMXShower::buffer
std::vector< JHitR1 > buffer
Definition: JTriggerMXShower.hh:191
KM3NETDAQ::JBit
Auxiliary data structure for single bit.
Definition: JDAQ.hh:36
JTRIGGER::clusterize
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.
Definition: JAlgorithm.hh:45
distance
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Definition: PhysicsEvent.hh:434
JTRIGGER::JTriggerMXShower::parameters
JParametersHelper< JParameters > parameters
Definition: JTriggerMXShower.hh:189
JDETECTOR::JModuleMapper< JAttributes >::container_type
std::vector< moduleattributes_type > container_type
Type definition of a list with module data.
Definition: JModuleMapper.hh:173
JTRIGGER::JTriggerException
General exception.
Definition: JTriggerException.hh:23
JTOOLS::getInverseSpeedOfLight
const double getInverseSpeedOfLight()
Get inverse speed of light.
Definition: JConstants.hh:100
JFIT::JEvent
Auxiliary class for historical event.
Definition: JHistory.hh:32
JTRIGGER::JTriggerMXShower::match
JMatch3G< JHitR1 > match
Definition: JTriggerMXShower.hh:192
JTOOLS::getIndexOfRefraction
double getIndexOfRefraction()
Get average index of refraction of water.
Definition: JConstants.hh:111
JDETECTOR::JMaximalDistance
Auxiliary class to match modules according maximal distance.
Definition: JModuleMapper.hh:116
JTRIGGER::JTriggerMXShower::TMaxEvent_ns
double TMaxEvent_ns
Definition: JTriggerMXShower.hh:193
JTRIGGER::JHitR1
Reduced data structure for L1 hit.
Definition: JHitR1.hh:31
JTRIGGER::JTimesliceClone
Clone of JTimeslice.
Definition: JTimesliceClone.hh:33
JAANET::detector
Detector file.
Definition: JHead.hh:130
KM3NETDAQ::JDAQChronometer::getDAQChronometer
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
Definition: JDAQChronometer.hh:88
JTRIGGER::JTriggerInterface::get_trigger_name
static const char * get_trigger_name(JBit< N > bit, JTriggerbit_t value)
Recursive method to get trigger name for given trigger bit.
Definition: JTriggerInterface.hh:138
JTRIGGER::JTriggerInterface::getNumberOfModules
JModuleCounter getNumberOfModules
Function object to count unique modules.
Definition: JTriggerInterface.hh:191
JTRIGGER::JTriggerMXShower::mapper
JModuleMapper_t mapper
Definition: JTriggerMXShower.hh:190
JTRIGGER::JTriggerInput::end
const_iterator end() const
get iterator to end of data (without end marker)
Definition: JTriggerInput.hh:74
JTOOLS
Auxiliary classes and methods for multi-dimensional interpolations and histograms.
Definition: JAbstractCollection.hh:9
JTRIGGER::JTriggerInterface::find_trigger_bit
JTriggerbit_t find_trigger_bit(JBit< N > bit) const
Recursive method to find the trigger bit of the given trigger data.
Definition: JTriggerInterface.hh:89