#include "JppGradE.hh" JppGradE::JppGradE( vector< string > shower_pdfs, double sigma_blur ,// = 0, double R_bg ,// background rate in [Hz] double t_start ,// start of hit time residual window double t_end, uint verbose, uint debug ): _background_rate( R_bg ), _window_start( t_start ), _window_end( t_end ), _verbose( verbose ), _debug( debug ), _dXs( 3, vector< double >( 6, 0.0 ) ), _sum_dnpes_a( 7, vector( 3, 0 ) ), _sum_dXs_a ( 7, vector( 3, 0 ) ), _sum_dTs_a ( 7, vector( 6, 0 ) ), _sum_dTes_a ( 7, vector( 7, 0 ) ), _sum_dnpes_n( 7, vector( 3, 0 ) ), _sum_dXs_n ( 7, vector( 3, 0 ) ), _sum_dTs_n ( 7, vector( 6, 0 ) ), _sum_dTes_n ( 7, vector( 7, 0 ) ) { for( uint ii = 0; ii != 7; ii++ ){ uint iii = ii >= 4 ? ii + 3 : ii; //Skip over the cart direction dims returned by jacobian objects jj_jji[ii] = iii; }; cout << "Building JppGradE..." << endl; cout << sigma_blur << endl; cout << R_bg << endl; cout << t_start << endl; cout << t_end << endl; Timer tim("constructPDF", true); _pdf_gradfunc = new JCascadeGradEPdf_t(); //Init pdf object for( auto ipdf = shower_pdfs.begin(); ipdf != shower_pdfs.end(); ipdf++ ){ print ("loading photon table: " + *ipdf); _pdf_gradfunc->load( ipdf->c_str() ); print("loaded"); }; _pdf_gradfunc->transform(JCascadeGradEPdf_t::transformer_type::getDefaultTransformer()); // get rid of R-dependent weight function _pdf_gradfunc->setExceptionHandler( new JCascadeGradEPdf_t::JDefaultResult( JMATH::zero ) ); for (JCascadeGradEPdf_t::super_iterator p = _pdf_gradfunc->super_begin(); p != _pdf_gradfunc->super_end(); ++p) { p.getValue().setExceptionHandler(new PDE_Function1D_t::JDefaultResult( JMATH::zero ) ); }; print( "Making npe function" ); _npe_gradfunc = new JCascadeGradENpe_t( *_pdf_gradfunc ); if ( sigma_blur > 0 ){ print("smearing combined table with sigma=", sigma_blur ); _pdf_gradfunc->blur( sigma_blur ); } print("background rate:", R_bg, "Hz"); print("time window:", t_start, t_end ); print("JppGradE constructed in", tim.value(), "sec"); };