Jpp  master_rocky-43-ge265d140c
the software that should make you happy
JPhotonPathIO.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <fstream>
3 
4 #include "TRandom3.h"
5 
6 #include "JMarkov/JPhotonPath.hh"
9 using namespace JGEOMETRY3D ;
10 using namespace JMARKOV ;
11 using namespace std ;
12 
14  for( int i=0 ; i<(int)pl.size()-1 ; ++i )
15  cout << "(" << pl[i] << ")-" ;
16  if( pl.size()>0 ) cout << "(" << pl.back() << ")" ;
17 }
18 
19 /**
20  * \file Usage example of JPhotonPathReader and JPhotonPathWriter
21 
22  Generates a number of random JPhotonPaths and writes them to a file.
23  Then reads them back from the same file.
24  **/
25 int main( int argc, char** argv ) {
26  // initialization
27  TRandom* ran = new TRandom3(0) ;
28  const int npaths = 5 ;
29  char fname[100] = "out.paths" ;
30 
31  // write some example paths to a file
32  cout << "Writing some example paths to '" << fname << "'." << endl ;
33 
35  writer.open(fname) ;
36  for( int n=0 ; n<npaths ; ++n ) {
37  // create path
38  int nscat = ran->Integer(6) ; // how often the photon scatters
39  JPhotonPath path(nscat) ;
40  // loop over the vertices
41  for( JPhotonPath::iterator it=path.begin() ; it!=path.end() ; ++it ) {
42  double x = ran->Integer(50) ;
43  double y = ran->Integer(50) ;
44  double z = ran->Integer(50) ;
45  it->setPosition( JGEOMETRY3D::JVector3D(x,y,z) ) ;
46  }
47  // print the path
48  printPolyline( path ) ;
49  cout << endl ;
50  // write the path
51  writer.put(path) ;
52  }
53  writer.close() ;
54  cout << endl ;
55 
56  // read paths from a file
58  reader.open("out.paths") ;
59 
60  int nread = 0 ;
61  JPhotonPath* p = NULL ;
62  cout << "Reading file" << endl ;
63  while( reader.hasNext() ) {
64  p = reader.next() ;
65  printPolyline( *p ) ;
66  cout << endl ;
67  ++nread ;
68  }
69 
70  cout << "Done reading file. Read " << nread << " paths from it." << endl ;
71  cout << endl ;
72  cout << "Done!" << endl ;
73 
74  return 0 ;
75 }
int main(int argc, char **argv)
void printPolyline(JPolyline3D &pl)
Data structure for polyline in three dimensions.
Definition: JPolyline3D.hh:25
Data structure for vector in three dimensions.
Definition: JVector3D.hh:36
virtual void open(const char *file_name) override
Open file.
virtual void close()=0
Close device.
virtual bool put(const T &object)=0
Object output.
A photon path.
Definition: JPhotonPath.hh:38
Auxiliary classes and methods for 3D geometrical objects and operations.
Definition: JAngle3D.hh:19
const int n
Definition: JPolint.hh:786
Definition: JSTDTypes.hh:14