Jpp  18.1.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | 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::JTrigger3N Class Reference

General purpose muon trigger. More...

#include <JTrigger3N.hh>

Inheritance diagram for JTRIGGER::JTrigger3N:
JTRIGGER::JTriggerInterface JTRIGGER::JTrigger3DMuon

Classes

struct  JParameters
 Trigger parameters. More...
 

Public Types

typedef JLANG::JSharedPointer
< match_type
JMatch_t
 
typedef JTriggerInput::value_type value_type
 
typedef JMatch< value_typematch_type
 

Public Member Functions

 JTrigger3N (const JParameters &input)
 Constructor. More...
 
void operator() (const JTriggerInput &input, 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

JParameters parameters
 

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

std::vector< value_typebuffer
 

Detailed Description

General purpose muon trigger.

The 3D match criterion is used followed by a scan of directions. For each direction, the 1D match criterion is applied. A trigger is fired when the specified minimum number of hits is detected for any of the directions.

Definition at line 41 of file JTrigger3N.hh.

Member Typedef Documentation

Definition at line 46 of file JTrigger3N.hh.

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

Definition at line 161 of file JTriggerInterface.hh.

Definition at line 162 of file JTriggerInterface.hh.

Constructor & Destructor Documentation

JTRIGGER::JTrigger3N::JTrigger3N ( const JParameters input)
inline

Constructor.

Parameters
inputtrigger parameters

Definition at line 100 of file JTrigger3N.hh.

100  :
101  parameters(input)
102  {
103  if (parameters.numberOfHits == 0) {
105  }
106 
107  if (parameters.numberOfHits == 1) {
109  }
110 
112  }
std::vector< value_type > buffer
Definition: JTrigger3N.hh:227
JParameters parameters
Definition: JTrigger3N.hh:224

Member Function Documentation

void JTRIGGER::JTrigger3N::operator() ( const JTriggerInput input,
std::back_insert_iterator< JTriggerOutput out 
) const
inline

Process trigger.

Parameters
inputinput data
outoutput data

Definition at line 121 of file JTrigger3N.hh.

122  {
123  using std::distance;
124 
125  if (parameters.enabled && input.size() >= (size_t) parameters.numberOfHits) {
126 
127  const match_type& match3D = *parameters.match3D;
128  const match_type& match1D = *parameters.match1D;
129 
130  for (JTriggerInput::const_iterator p = input.begin(), q = p; p != input.end(); ) {
131 
132  for (++q; q->getT() - p->getT() < parameters.TMaxEvent_ns; ++q) {}
133 
134  if (distance (p,q) >= parameters.numberOfHits &&
136 
137  if (distance(p,q) < parameters.factoryLimit) {
138 
139  do {
140 
141  if (distance (p,q) >= parameters.numberOfHits &&
143 
144  // copy
145 
146  JTriggerInput::iterator root = buffer.begin();
147  JTriggerInput::iterator __p = buffer.begin();
148  JTriggerInput::iterator __q = buffer.begin();
149 
150  *root = *p;
151 
152  ++__p;
153  ++__q;
154 
155  for (JTriggerInput::const_iterator i = p; ++i != q; ) {
156  if (match3D(*p,*i)) {
157  *__q = *i;
158  ++__q;
159  }
160  }
161 
162  if (distance (root,__q) >= parameters.numberOfHits &&
164 
165  __q = clusterize(__p, __q, match3D, parameters.numberOfHits - 1);
166 
167  if (distance (root,__q) >= parameters.numberOfHits &&
169 
170  for (JGEOMETRY3D::JRotator3D_t::const_iterator R = parameters.rotator.begin(); R != parameters.rotator.end(); ++R) {
171 
172  for (JTriggerInput::iterator i = root; i != __q; ++i) {
173  i->JPosition3D::rotate(*R);
174  }
175 
176  JTriggerInput::iterator __z = partition(__p, __q, JBind2nd(match1D,*root));
177 
178  if (distance (root,__z) >= parameters.numberOfHits &&
180 
181  __z = clusterize(__p, __z, match1D, parameters.numberOfHits - 1);
182 
183  if (distance (root,__z) >= parameters.numberOfHits &&
185 
186  *out = JEvent(input.getDAQChronometer(), root, __q, this->getTriggerBit());
187  ++out;
188 
189  break;
190  }
191  }
192  }
193  }
194  }
195  }
196 
197  ++p;
198 
199  } while (q->getT() - p->getT() >= parameters.TMaxEvent_ns);
200 
201  } else {
202 
203  // Anomalous large event
204 
205  JEvent event(input.getDAQChronometer(), p, q, this->getTriggerBit());
206 
207  event.addTriggerBit(FACTORY_LIMIT);
208 
209  *out = event;
210  ++out;
211 
212  p = q;
213  }
214 
215  } else {
216 
217  for (++p; q->getT() - p->getT() >= parameters.TMaxEvent_ns; ++p) {}
218  }
219  }
220  }
221  }
std::vector< value_type > buffer
Definition: JTrigger3N.hh:227
JBinder2nd< JHit_t > JBind2nd(const JMatch< JHit_t > &match, const JHit_t &second)
Auxiliary method to create JBinder2nd object.
Definition: JBind2nd.hh:66
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
JMatch< value_type > match_type
static const int FACTORY_LIMIT
Bit indicating max nhits reached in trigger.
Definition: trigger.hh:16
static const JModuleCounter getNumberOfModules
Function object to count unique modules.
JParameters parameters
Definition: JTrigger3N.hh:224
JFIT::JEvent JEvent
Definition: JHistory.hh:353
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
then JCookie sh JDataQuality D $DETECTOR_ID R
Definition: JDataQuality.sh:41
do JPlot2D f $WORKDIR detector root
JTriggerbit_t getTriggerBit() const
Get the trigger bit.
Acoustic event.
static struct JTRIGGER::clusterize clusterize
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  }
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  }
JTriggerbit_t find_trigger_bit(JBit< N > bit) const
Recursive method to find the trigger bit of the given trigger data.
Auxiliary data structure for single bit.
Definition: JDAQ.hh:36
then usage $script< input file >[option[primary[working directory]]] nWhere option can be N
Definition: JMuonPostfit.sh:40
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  }
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  }
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  }
Auxiliary data structure for single bit.
Definition: JDAQ.hh:36
static const char * get_trigger_name(JBit< N > bit, JTriggerbit_t value)
Recursive method to get trigger name for given trigger bit.
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  }
Auxiliary data structure for single bit.
Definition: JDAQ.hh:36
static const char * get_trigger_name(JBit< N > bit, JTriggerbit_t value)
Recursive method to get trigger name for given trigger bit.
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  }
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  }
JTriggerbit_t find_trigger_bit(JBit< N > bit) const
Recursive method to find the trigger bit of the given trigger data.
Auxiliary data structure for single bit.
Definition: JDAQ.hh:36

Member Data Documentation

JParameters JTRIGGER::JTrigger3N::parameters

Definition at line 224 of file JTrigger3N.hh.

std::vector<value_type> JTRIGGER::JTrigger3N::buffer
mutableprivate

Definition at line 227 of file JTrigger3N.hh.


The documentation for this class was generated from the following file: