Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
JACOUSTICS::JVelo Struct Reference

Vertex locator. More...

Inheritance diagram for JACOUSTICS::JVelo:
std::vector< JPosition3D >

Public Member Functions

 JVelo (const JAbstractSoundVelocity &V, const JVector3D &center, const double RMax_m, const double Xv_m, const double factor=1.0)
 Constructor.
 
template<class T >
int operator() (const JVertex3D &vx, T __begin, T __end) const
 Check vertex.
 
template<class T >
vertex_type operator() (const JPosition3D &position, const hit_type &root, T __begin, T __end) const
 Update vertex at given position.
 
template<class T >
vertex_type operator() (const hit_type &root, T __begin, T __end, const int numberOfHits=0) const
 Locate vertex.
 

Public Attributes

const JAbstractSoundVelocityV
 
const double Tmax_s
 

Detailed Description

Vertex locator.

Definition at line 273 of file JAcousticsTriggerProcessor.cc.

Constructor & Destructor Documentation

◆ JVelo()

JACOUSTICS::JVelo::JVelo ( const JAbstractSoundVelocity & V,
const JVector3D & center,
const double RMax_m,
const double Xv_m,
const double factor = 1.0 )
inline

Constructor.

Parameters
Vsound velocity
centercenter for generation of vertices
RMax_mradius for generation of vertices [m]
Xv_mstep size for generation of vertices [m]
factormultiplication factor for corresponding time window

Definition at line 285 of file JAcousticsTriggerProcessor.cc.

289 :
290 V(V),
291 Tmax_s(factor * Xv_m / V())
292 {
293 this->push_back(center);
294
295 if (RMax_m > 0.0 && Xv_m > 0.0) {
296 for (double x = 0.5*Xv_m; x <= RMax_m; x += Xv_m) {
297 for (double y = 0.5*Xv_m; y <= RMax_m; y += Xv_m) {
298 if (x*x + y*y <= RMax_m*RMax_m) {
299 this->push_back(JVector3D(center.getX() - x, center.getY() + y, center.getZ()));
300 this->push_back(JVector3D(center.getX() + x, center.getY() + y, center.getZ()));
301 this->push_back(JVector3D(center.getX() - x, center.getY() - y, center.getZ()));
302 this->push_back(JVector3D(center.getX() + x, center.getY() - y, center.getZ()));
303 }
304 }
305 }
306 }
307 }
Data structure for vector in three dimensions.
Definition JVector3D.hh:36
double getY() const
Get y position.
Definition JVector3D.hh:104
double getZ() const
Get z position.
Definition JVector3D.hh:115
double getX() const
Get x position.
Definition JVector3D.hh:94
const JAbstractSoundVelocity & V

Member Function Documentation

◆ operator()() [1/3]

template<class T >
int JACOUSTICS::JVelo::operator() ( const JVertex3D & vx,
T __begin,
T __end ) const
inline

Check vertex.

Parameters
vxvertex
__beginbegin of data
__endend of data
Returns
number of hits

Definition at line 319 of file JAcousticsTriggerProcessor.cc.

320 {
321 const JPosition3D& p0 = vx.getPosition();
322 const double t0 = vx.getT();
323
324 int n0 = 0;
325 double q0 = 0.0;
326
327 for (T p = __begin; p != __end; ++p) {
328
329 const double t1 = p->getToA() - V.getTime(p0.getDistance(p->getPosition()), p0.getZ(), p->getZ());
330
331 if (fabs(t1 - t0) <= Tmax_s) {
332 n0 += 1;
333 q0 += p->getQ();
334 }
335 }
336
337 return n0;
338 }
Data structure for position in three dimensions.
const JPosition3D & getPosition() const
Get position.
double getDistance(const JVector3D &pos) const
Get distance to point.
Definition JVector3D.hh:270
double getT(const JVector3D &pos) const
Get arrival time of Cherenkov light at given position.
Definition JVertex3D.hh:147
virtual double getTime(const double D_m, const double z1, const double z2) const =0
Get propagation time of sound.

◆ operator()() [2/3]

template<class T >
vertex_type JACOUSTICS::JVelo::operator() ( const JPosition3D & position,
const hit_type & root,
T __begin,
T __end ) const
inline

Update vertex at given position.

Parameters
positionposition
rootroot hit
__beginbegin of data
__endend of data
Returns
vertex

Definition at line 351 of file JAcousticsTriggerProcessor.cc.

352 {
353 const JPosition3D& p0 = position;
354 const double t0 = root.getToA() - V.getTime(p0.getDistance(root.getPosition()), p0.getZ(), root.getZ());
355
356 int n0 = 1;
357 double q0 = root.getQ();
358
359 for (T p = __begin; p != __end; ++p) {
360
361 const double t1 = p->getToA() - V.getTime(p0.getDistance(p->getPosition()), p0.getZ(), p->getZ());
362
363 if (fabs(t1 - t0) <= Tmax_s) {
364 n0 += 1;
365 q0 += p->getQ();
366 }
367 }
368
369 return vertex_type(p0, t0, n0, q0);
370 }
Definition root.py:1

◆ operator()() [3/3]

template<class T >
vertex_type JACOUSTICS::JVelo::operator() ( const hit_type & root,
T __begin,
T __end,
const int numberOfHits = 0 ) const
inline

Locate vertex.

Parameters
rootroot hit
__beginbegin of data
__endend of data
numberOfHitsnumber of hits
Returns
vertex

Definition at line 383 of file JAcousticsTriggerProcessor.cc.

384 {
385 vertex_type vertex;
386
387 for (const_iterator i = this->cbegin(); i != this->cend(); ++i) {
388
389 const JPosition3D& p0 = *i;
390 const double t0 = root.getToA() - V.getTime(p0.getDistance(root.getPosition()), p0.getZ(), root.getZ());
391
392 int n0 = 1;
393 double q0 = root.getQ();
394
395 for (T p = __begin; p != __end && n0 + distance(p, __end) >= numberOfHits && n0 + distance(p, __end) >= vertex.N; ++p) {
396
397 const double t1 = p->getToA() - V.getTime(p0.getDistance(p->getPosition()), p0.getZ(), p->getZ());
398
399 if (fabs(t1 - t0) <= Tmax_s) {
400 n0 += 1;
401 q0 += p->getQ();
402 }
403 }
404
405 if (q0 > vertex.Q) {
406 vertex = vertex_type(p0, t0, n0, q0);
407 }
408 }
409
410 return vertex;
411 }
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.

Member Data Documentation

◆ V

const JAbstractSoundVelocity& JACOUSTICS::JVelo::V

Definition at line 413 of file JAcousticsTriggerProcessor.cc.

◆ Tmax_s

const double JACOUSTICS::JVelo::Tmax_s

Definition at line 414 of file JAcousticsTriggerProcessor.cc.


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