1 #ifndef H_J_PHOTON_PATH 
    2 #define H_J_PHOTON_PATH 
   80       for( 
iterator it=begin() ; it!=end() ; ++it )
 
   92       for( const_iterator it=begin() ; it!=end() ; ++it )
 
  109     for(  ; v2!=end() ; ++v1,++v2 ) {
 
  111       L += (*v2-*v1).getLength() ;
 
  125     for( 
unsigned int i=1 ; i<size() ; ++i ) {
 
  130         res.push_back( v1+frac*(v2-v1) ) ;
 
  138     for( 
unsigned int i=0 ; i<size() ; ++i ) {
 
  140       if( i+1!=size() ) oss << 
", " ;
 
  149     for( 
unsigned int i=1 ; i<size() ; ++i ) {
 
  154         res.push_back( v1+frac*(v2-v1) ) ;
 
  164     for( 
unsigned int i=1 ; i<size() ; ++i ) {
 
  167       if( (v1.
getZ()>z) != (v2.
getZ()>z) ) {
 
  169         res.push_back( v1+frac*(v2-v1) ) ;
 
  178     for( 
unsigned int i=1 ; i<size() ; ++i ) {
 
  189       double r_to_center = to_center.
getLength() ;
 
  192       double ct = dir_seg.
getDot(dir_to_center) ;
 
  195       if( 1-ct*ct > 
r*
r/(r_to_center*r_to_center) ) {
 
  204       double D = sqrt( r_to_center*r_to_center*(ct*ct-1) + 
r*
r ) ;
 
  205       double xi1 = -r_to_center*ct + D ;
 
  206       if( xi1>0 && xi1<Lseg ) 
return true ;
 
  207       double xi2 = -r_to_center*ct - D ;
 
  208       if( xi2>0 && xi2<Lseg ) 
return true ;
 
  215     for( 
unsigned int i=1 ; i<size() ; ++i ) {
 
  226       double r_to_center = to_center.
getLength() ;
 
  229       double ct = dir_seg.
getDot(dir_to_center) ;
 
  232       if( 1-ct*ct > 
r*
r/(r_to_center*r_to_center) ) {
 
  241       double D = sqrt( r_to_center*r_to_center*(ct*ct-1) + 
r*
r ) ;
 
  244       double xi1 = -r_to_center*ct + D ;
 
  245       if( xi1<0 || xi1>Lseg ) {
 
  250       double xi2 = -r_to_center*ct - D ;
 
  252       if( xi2>0 && xi2<Lseg ) {
 
  254         if( xi2<xi1 ) xi1 = xi2 ;
 
  257       if( xi1>0 && xi1<Lseg ) {
 
Data structure for polyline in three dimensions.
 
Data structure for position in three dimensions.
 
double getY() const
Get y position.
 
double getLength() const
Get length.
 
double getZ() const
Get z position.
 
double getX() const
Get x position.
 
Data structure for normalised vector in three dimensions.
 
double getDot(const JVersor3D &versor) const
Get dot product.
 
Interface for binary input.
 
Forward declaration of binary output.
 
Interface for binary output.
 
std::vector< JPosition3D > getPointsWithY(double y)
return all coordinates where the photon path has the given y
 
JIO::JReader & read(JIO::JReader &in)
Read from input.
 
std::vector< JPosition3D > getPointsWithZ(double z)
return all coordinates where the photon path has the given z
 
bool hitsSphere(const JPosition3D &pos, double r)
Returns whether the photon path intersects a sphere of radius r at position pos.
 
JIO::JWriter & write(JIO::JWriter &out) const
Write to output.
 
JPosition3D getSphereHitPosition(const JPosition3D &pos, double r)
Returns the position where the photon hits a sphere of radius r at position pos. If the photon does n...
 
string getString()
get a string with the path vertex positions
 
JPhotonPath()
default constructor
 
std::vector< JPosition3D > getPointsWithX(double x)
return all coordinates where the photon path has the given x
 
double getLength()
get the total path length
 
JPhotonPath(int _nscat)
constructor to actually be used
 
JMODEL::JString getString(const JFit &fit)
Get model parameters of string.
 
Auxiliary classes and methods for 2D geometrical objects and operations.
 
Auxiliary classes and methods for 3D geometrical objects and operations.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).