Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JTRIGGER::JTrigger3DMuon Class Reference

Muon trigger. More...

#include <JTrigger3DMuon.hh>

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

Public Types

typedef JLANG::JSharedPointer< match_typeJMatch_t
 
typedef JTriggerInput::value_type value_type
 
typedef JMatch< value_typematch_type
 

Public Member Functions

 JTrigger3DMuon (const JTrigger3DMuon_t::JParameters &input)
 Constructor.
 
void operator() (const JTriggerInput &input, std::back_insert_iterator< JTriggerOutput > out) const
 Process trigger.
 
JTriggerbit_t getTriggerBit () const
 Get the trigger bit.
 

Static Public Member Functions

static JTrigger3N::JParameters getParameters (const JTrigger3DMuon_t::JParameters &input)
 Convert trigger parameters.
 
static const char * getTriggerName (JTriggerbit_t bit)
 Get trigger name.
 

Public Attributes

JParameters parameters
 

Protected Member Functions

template<JTriggerbit_t N>
bool checkTriggerBit () const
 Test whether specific trigger bit correponds to derived trigger class.
 
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.
 
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.
 

Static Protected Member Functions

template<JTriggerbit_t N>
static const char * getTriggerName ()
 Get trigger name.
 
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.
 
static const char * get_trigger_name (JBit< NUMBER_OF_TRIGGER_BITS > bit, JTriggerbit_t value)
 Termination method of recursive method to get trigger name.
 

Private Attributes

std::vector< value_typebuffer
 

Detailed Description

Muon trigger.

Definition at line 24 of file JTrigger3DMuon.hh.

Member Typedef Documentation

◆ JMatch_t

◆ value_type

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

Definition at line 161 of file JTriggerInterface.hh.

◆ match_type

Constructor & Destructor Documentation

◆ JTrigger3DMuon()

JTRIGGER::JTrigger3DMuon::JTrigger3DMuon ( const JTrigger3DMuon_t::JParameters & input)
inline

Constructor.

Parameters
inputtrigger parameters

Definition at line 33 of file JTrigger3DMuon.hh.

33 :
35 {}
static JTrigger3N::JParameters getParameters(const JTrigger3DMuon_t::JParameters &input)
Convert trigger parameters.
JTrigger3N(const JParameters &input)
Constructor.

Member Function Documentation

◆ getParameters()

static JTrigger3N::JParameters JTRIGGER::JTrigger3DMuon::getParameters ( const JTrigger3DMuon_t::JParameters & input)
inlinestatic

Convert trigger parameters.

Parameters
inputtrigger parameters
Returns
trigger parameters

Definition at line 44 of file JTrigger3DMuon.hh.

45 {
46 using namespace JPP;
47
48 const double TMaxEvent_ns = (sqrt((input.DMax_m + input.roadWidth_m*getSinThetaC()) *
49 (input.DMax_m - input.roadWidth_m*getSinThetaC())) +
51
53 input.numberOfHits,
54 input.numberOfModules,
55 TMaxEvent_ns + input.TMaxExtra_ns,
59 input.factoryLimit);
60 }
Direction set covering (part of) solid angle.
Definition JOmega3D.hh:68
1D match criterion.
Definition JMatch1D.hh:33
3D match criterion with road width.
Definition JMatch3B.hh:36
double TMaxExtra_ns
maximal extra time [ns]
double DMax_m
maximal distance between PMTs [m]
double roadWidth_m
maximal road width [m]
int numberOfModules
minimal number of modules to trigger event
bool enabled
enabled status of trigger
int factoryLimit
maximal number of hits to apply trigger logic (above this limit, always trigger)
int numberOfHits
minimal number of hits to trigger event
const double getInverseSpeedOfLight()
Get inverse speed of light.
double getTanThetaC()
Get average tangent of Cherenkov angle of water corresponding to group velocity.
double getSinThetaC()
Get average sine of Cherenkov angle of water corresponding to group velocity.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).

◆ operator()()

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

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< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
JParameters parameters
std::vector< value_type > buffer
JMatch< value_type > match_type
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
JFIT::JEvent JEvent
Definition JHistory.hh:404
JBinder2nd< JHit_t > JBind2nd(const JMatch< JHit_t > &match, const JHit_t &second)
Auxiliary method to create JBinder2nd object.
Definition JBind2nd.hh:66
JHitIterator_t clusterize(JHitIterator_t __begin, JHitIterator_t __end, const JMatch_t &match, const int Nmin=1)
Partition data according given binary match operator.
Definition JAlgorithm.hh:38
static const JModuleCounter getNumberOfModules
Function object to count unique modules.
Definition root.py:1
static const int FACTORY_LIMIT
Bit indicating max nhits reached in trigger.
Definition trigger.hh:16

◆ 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 {
92 return N;
93 else
95 }
JTriggerbit_t find_trigger_bit(JBit< N > bit) const
Recursive method to find the trigger bit of the given trigger data.
bool checkTriggerBit() const
Test whether specific trigger bit correponds to derived trigger class.
Auxiliary data structure for single bit.
Definition JDAQ.hh:36

◆ 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 }
static const char * get_trigger_name(JBit< N > bit, JTriggerbit_t value)
Recursive method to get trigger name for given trigger bit.

◆ 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 }
static const char * getTriggerName()
Get trigger name.

◆ 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

JParameters JTRIGGER::JTrigger3N::parameters
inherited

Definition at line 224 of file JTrigger3N.hh.

◆ buffer

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

Definition at line 227 of file JTrigger3N.hh.


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