Implementation of JMarkovEnsembleIntegrator interface with 1D histograms.  
 More...
#include <JMarkovIntegrator.hh>
 | 
|   | JMarkovEnsembleIntegrator1D (const vector< JPhotonPath > &_ensemble, JTargetModel *_trg, int _nbinsx, int _nbinsy, int _nbinsz) | 
|   | 
|   | ~JMarkovEnsembleIntegrator1D () | 
|   | 
| void  | free_scattering_vertex_gens () | 
|   | 
| void  | writeHistograms () | 
|   | write the histograms filled from the ensemble  More...
  | 
|   | 
| vector< double >  | integrate (int N, int nscat, JSourceModel *src, JScatteringModel *sm, JTargetModel *trg, double lambda_abs) | 
|   | Integrate with N samples.  More...
  | 
|   | 
| vector< double >  | dummy_integrate (int N, int nscat, JSourceModel *src, JScatteringModel *sm, JTargetModel *trg, double lambda_abs) | 
|   | Integrate a test function with N samples.  More...
  | 
|   | 
| vector< JPhotonPath >  | get_diagnostic_ensemble (int N, int nscat, JSourceModel *src, JScatteringModel *sm, JTargetModel *trg, double lambda_abs) | 
|   | Return photon paths generated with the generatePath method.  More...
  | 
|   | 
Implementation of JMarkovEnsembleIntegrator interface with 1D histograms. 
Definition at line 313 of file JMarkovIntegrator.hh.
 
  
  
      
        
          | JMARKOV::JMarkovEnsembleIntegrator1D::JMarkovEnsembleIntegrator1D  | 
          ( | 
          const vector< JPhotonPath > &  | 
          _ensemble,  | 
         
        
           | 
           | 
          JTargetModel *  | 
          _trg,  | 
         
        
           | 
           | 
          int  | 
          _nbinsx,  | 
         
        
           | 
           | 
          int  | 
          _nbinsy,  | 
         
        
           | 
           | 
          int  | 
          _nbinsz  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inline   | 
  
 
Definition at line 317 of file JMarkovIntegrator.hh.
JMarkovEnsembleIntegrator(const vector< JPhotonPath > &_ensemble, JTargetModel *_trg, int _nbinsx, int _nbinsy, int _nbinsz)
 
 
 
 
  
  
      
        
          | JMARKOV::JMarkovEnsembleIntegrator1D::~JMarkovEnsembleIntegrator1D  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
  
  
      
        
          | void JMARKOV::JMarkovEnsembleIntegrator1D::free_scattering_vertex_gens  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
Definition at line 324 of file JMarkovIntegrator.hh.
  325       for( vector<JHistGenerator*>::iterator it=
gens.begin() ; it!=
gens.end() ; ++it ) {
 
  326         if( *it != NULL ) 
delete *it ;
 
vector< JHistGenerator * > gens
 
 
 
 
  
  
      
        
          | void JMARKOV::JMarkovEnsembleIntegrator1D::writeHistograms  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinevirtual   | 
  
 
write the histograms filled from the ensemble 
Implements JMARKOV::JMarkovEnsembleIntegrator.
Definition at line 330 of file JMarkovIntegrator.hh.
  331       for( vector<JHistGenerator*>::iterator it=
gens.begin() ; it!=
gens.end() ; ++it ) {
 
  340           if( (*it)->h != NULL ) (*it)->h->Write() ;
 
vector< JSphereGenerator * > target_gens
 
vector< JHistGenerator * > gens
 
 
 
 
  
  
      
        
          | void JMARKOV::JMarkovEnsembleIntegrator1D::init_scattering_vertex_generators  | 
          ( | 
          int  | 
          nscat | ) | 
           | 
         
       
   | 
  
inlineprotectedvirtual   | 
  
 
Implements JMARKOV::JMarkovEnsembleIntegrator.
Definition at line 347 of file JMarkovIntegrator.hh.
  350       if( (
int)
gens.size() < ilast ) 
gens.resize( ilast, NULL ) ;
 
  351       for( 
int nv=1 ; nv<=nscat ; ++nv ) {
 
  352         int index = ifirst + nv - 1 ;
 
  354         double xmin =  1.0/0.0 ;
 
  355         double xmax = -1.0/0.0 ;
 
  356         double ymin =  1.0/0.0 ;
 
  357         double ymax = -1.0/0.0 ;
 
  358         double zmin =  1.0/0.0 ;
 
  359         double zmax = -1.0/0.0 ;
 
  360         for( vector<JPhotonPath>::iterator it=
ensemble.begin() ; it!=
ensemble.end() ; ++it ) {
 
  362           JPosition3D vtx( (*it)[nv] ) ;
 
  363           if( vtx.getX()<
xmin ) xmin = vtx.getX() ;
 
  364           if( vtx.getX()>
xmax ) xmax = vtx.getX() ;
 
  365           if( vtx.getY()<ymin ) ymin = vtx.getY() ;
 
  366           if( vtx.getY()>ymax ) ymax = vtx.getY() ;
 
  367           if( vtx.getZ()<zmin ) zmin = vtx.getZ() ;
 
  368           if( vtx.getZ()>zmax ) zmax = vtx.getZ() ;
 
  372         sprintf( hname, 
"hx_nscat%i_vtx%i", nscat, nv ) ;
 
  373         TH1F hx(hname,
"Vertex position;X",
nbinsx,xmin,xmax) ;
 
  374         sprintf( hname, 
"hy_nscat%i_vtx%i", nscat, nv ) ;
 
  375         TH1F hy(hname,
"Vertex position;Y",
nbinsy,ymin,ymax) ;
 
  376         sprintf( hname, 
"hz_nscat%i_vtx%i", nscat, nv ) ;
 
  377         TH1F hz(hname,
"Vertex position;Z",
nbinsz,zmin,zmax) ;
 
  379         for( vector<JPhotonPath>::iterator it=
ensemble.begin() ; it!=
ensemble.end() ; ++it ) {
 
  381           JPosition3D vtx( (*it)[nv] ) ;
 
  382           hx.Fill( vtx.getX() ) ;
 
  383           hy.Fill( vtx.getY() ) ;
 
  384           hz.Fill( vtx.getZ() ) ;
 
  387         for( Int_t bin=1 ; bin<=hx.GetNbinsX() ; ++bin ) 
 
  388           hx.AddBinContent(bin,1) ;
 
  389         for( Int_t bin=1 ; bin<=hy.GetNbinsX() ; ++bin ) 
 
  390           hy.AddBinContent(bin,1) ;
 
  391         for( Int_t bin=1 ; bin<=hz.GetNbinsX() ; ++bin ) 
 
  392           hz.AddBinContent(bin,1) ;
 
int getIndex(int nv, int nscat)
return the internal index for a given number of scatterings and vertex number 
 
Implementation of the JGenerator interface. 
 
vector< JHistGenerator * > gens
 
vector< JPhotonPath > ensemble
 
 
 
 
  
  
      
        
          | JPosition3D JMARKOV::JMarkovEnsembleIntegrator1D::generateScatteringVertexPosition  | 
          ( | 
          int  | 
          nscat,  | 
         
        
           | 
           | 
          int  | 
          nv,  | 
         
        
           | 
           | 
          double &  | 
          winv  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlineprotectedvirtual   | 
  
 
Implements JMARKOV::JMarkovEnsembleIntegrator.
Definition at line 399 of file JMarkovIntegrator.hh.
  403       JPosition3D pos = 
gens[index]->getPosition() ;
 
  404       winv = 1.0/
gens[index]->getWeight(pos) ;
 
void initgenerators(int nscat)
initialize the position generators for a given number of scatterings (i.e. create histograms and fill...
 
int getIndex(int nv, int nscat)
return the internal index for a given number of scatterings and vertex number 
 
vector< JHistGenerator * > gens
 
 
 
 
  
  
      
        
          | JPosition3D JMARKOV::JMarkovEnsembleIntegrator::generatePosition  | 
          ( | 
          int  | 
          nscat,  | 
         
        
           | 
           | 
          int  | 
          nv,  | 
         
        
           | 
           | 
          double &  | 
          winv  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlineprotectedvirtualinherited   | 
  
 
generate a position for vertex nv for the given number of scatterings, winv will be set to 1/weight 
Implements JMARKOV::JMarkovIntegrator.
Definition at line 228 of file JMarkovIntegrator.hh.
  235       if( nv == nscat+1 ) {
 
  239         JPosition3D pos = 
target_gens[nscat]->getPosition() ;
 
virtual JPosition3D generateScatteringVertexPosition(int nscat, int nv, double &winv)=0
 
void initgenerators(int nscat)
initialize the position generators for a given number of scatterings (i.e. create histograms and fill...
 
vector< JSphereGenerator * > target_gens
 
JPosition3D source_position
 
 
 
 
  
  
      
        
          | int JMARKOV::JMarkovEnsembleIntegrator::getIndex  | 
          ( | 
          int  | 
          nv,  | 
         
        
           | 
           | 
          int  | 
          nscat  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlineprotectedinherited   | 
  
 
return the internal index for a given number of scatterings and vertex number 
Definition at line 251 of file JMarkovIntegrator.hh.
  259       return (nscat*(nscat-1))/2 + nv - 1 ;
 
 
 
 
  
  
      
        
          | void JMARKOV::JMarkovEnsembleIntegrator::initgenerators  | 
          ( | 
          int  | 
          nscat | ) | 
           | 
         
       
   | 
  
inlineprotectedinherited   | 
  
 
initialize the position generators for a given number of scatterings (i.e. create histograms and fill them from the ensemble) 
Definition at line 263 of file JMarkovIntegrator.hh.
virtual void init_scattering_vertex_generators(int nscat)=0
 
void init_target_generator(int nscat)
initialize the generator for a target vertex for a given number of scatterings 
 
 
 
 
  
  
      
        
          | void JMARKOV::JMarkovEnsembleIntegrator::init_target_generator  | 
          ( | 
          int  | 
          nscat | ) | 
           | 
         
       
   | 
  
inlineprotectedinherited   | 
  
 
initialize the generator for a target vertex for a given number of scatterings 
Definition at line 272 of file JMarkovIntegrator.hh.
  278         sprintf( hname, 
"htarget_nscat%i", nscat ) ;
 
  279         TH2D* ht = 
new TH2D(hname,
";cos(#theta);#phi",100,-1,1,100,-M_PI,M_PI) ;
 
  280         for( vector<JPhotonPath>::iterator it=
ensemble.begin() ; it!=
ensemble.end() ; ++it ) {
 
  283           ht->Fill( dir.getDZ(), dir.getPhi() ) ;
 
vector< JSphereGenerator * > target_gens
 
const JPosition3D & getPosition() const 
 
Implementation of the JGenerator interface. 
 
vector< JPhotonPath > ensemble
 
 
 
 
  
  
      
        
          | void JMARKOV::JMarkovEnsembleIntegrator::free_target_gens  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlineprotectedinherited   | 
  
 
Definition at line 295 of file JMarkovIntegrator.hh.
  297         if( *it != NULL ) 
delete *it ;
 
vector< JSphereGenerator * > target_gens
 
 
 
 
Integrate with N samples. 
Returns a vector with the contribution to the integral of each sample. The mean of those values is the estimate of the result of the integral, while the distribution itself can be used to estimate the stability of the result. In this distribution, you want to avoid
- long tails (because they make the result unstable)
 
- small contributions (because it means that parts of the parameter space are being oversampled, so it is less efficient) This can be achieved by tuning the sample distribution to the problem at hand. 
 
Definition at line 130 of file JMarkovIntegrator.hh.
  131     vector<double> contributions(
N,-1) ;
 
  133     for( 
int i=0 ; i<
N ; ++i ) {
 
  138       contributions[i] = rho * winv ; 
 
  140     return contributions ;
 
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
 
virtual JPhotonPath generatePath(int nscat, double &winv)
Generate a random photon path with a given number of scatterings. 
 
double getPhotonPathProbabilityDensity(JPhotonPath &p, JSourceModel *src, JScatteringModel *sm, JTargetModel *trg, double lambda_abs)
Return the probability density for a photon path with the given ingredients. 
 
 
 
 
Integrate a test function with N samples. 
This can be used as a sanity check for derived classes of JMarkovIntegrator.
The integral should yield 1 when the complete relevant part of the volume is taken into account. If it does not, it may be a sign that the implementation is not correct.
Returns a vector with the contribution to the integral of each sample. 
Definition at line 143 of file JMarkovIntegrator.hh.
  144     vector<double> contributions(
N,-1) ;
 
  146     for( 
int i=0 ; i<
N ; ++i ) {
 
  147       const double r = 10 ;
 
  150       double rho = 1.0/(4.0/3.0*M_PI*r*r*
r) ;
 
  151       if( p[1].getLength()>
r ) rho = 0 ;
 
  152       contributions[i] = rho * winv ; 
 
  154     return contributions ;
 
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
 
virtual JPhotonPath generatePath(int nscat, double &winv)
Generate a random photon path with a given number of scatterings. 
 
 
 
 
Return photon paths generated with the generatePath method. 
This can be used to identify the parts of parameter space that are over- or undersampled in a given problem so that the integrator may be optimized to handle those better. 
Definition at line 157 of file JMarkovIntegrator.hh.
  158     vector<JPhotonPath> paths ;
 
  160     for( 
int i=0 ; i<
N ; ++i ) {
 
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
 
virtual JPhotonPath generatePath(int nscat, double &winv)
Generate a random photon path with a given number of scatterings. 
 
 
 
 
  
  
      
        
          | virtual JPhotonPath JMARKOV::JMarkovIntegrator::generatePath  | 
          ( | 
          int  | 
          nscat,  | 
         
        
           | 
           | 
          double &  | 
          winv  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlineprotectedvirtualinherited   | 
  
 
Generate a random photon path with a given number of scatterings. 
winv must be set to the inverted probability density to generate this particular path. 
Definition at line 94 of file JMarkovIntegrator.hh.
   99       for( 
int nv=0 ; nv<nscat+2 ; ++nv ) {
 
virtual JPosition3D generatePosition(int nscat, int nv, double &winv)=0
Generate a random position for vertex nv. 
 
 
 
 
  
  
      
        
          | int JMARKOV::JMarkovEnsembleIntegrator::nbinsx | 
         
       
   | 
  
protectedinherited   | 
  
 
 
  
  
      
        
          | int JMARKOV::JMarkovEnsembleIntegrator::nbinsy | 
         
       
   | 
  
protectedinherited   | 
  
 
 
  
  
      
        
          | int JMARKOV::JMarkovEnsembleIntegrator::nbinsz | 
         
       
   | 
  
protectedinherited   | 
  
 
 
  
  
      
        
          | JPosition3D JMARKOV::JMarkovEnsembleIntegrator::source_position | 
         
       
   | 
  
protectedinherited   | 
  
 
 
The documentation for this class was generated from the following file: