Fit function. 
  225    {
  228 
  230 
  232 
  233      
  234 
  236 
  238 
  239      if (!in.empty()) {
  241      }
  242 
  243      for (JEvt::const_iterator track = in.begin(); track != in.end(); ++track) {
  244 
  247 
  248        double zmin = numeric_limits<double>::lowest();
  249 
  252        }
  253 
  255 
  256        for (const auto& module : input.data) {
  257 
  259 
  260          pos.transform(R, tz.getPosition());
  261 
  263 
  264            const double z1 = pos.getZ()  -  pos.getX() / 
getTanThetaC();
 
  266 
  267            if (z1 >= zmin) {
  268 
  269              for (size_t i = 0; i != module->size(); ++i) {
  270 
  271                if (module.getStatus(i)) {
  272 
  273                  const struct {
  274 
  276                    {
  277                      return (hit.
getPMT() == pmt && T_ns(hit.
getT()));
 
  278                    }
  279                    
  281                    const size_t     pmt;
  282 
  283                  } match = { T_ns + t1, i };
  284 
  285                  JPMT pmt = 
module->getPMT(i);
 
  286 
  288 
  289                  const JNPEHit hit(this->
getNPE(pmt, module.frame.getRate(i)), count_if(module.begin(), module.end(), match));
 
  290 
  291                  DEBUG(
"hit: " << setw(8) << module->getID() << 
'.' << 
FILL(2,
'0') << i << 
' '  
  293                        << 
FIXED(7,3) << module.frame.getRate(i) * 1.0e-3                << 
' ' 
  298                        << setw(2)         << hit.
getN()  << endl);
 
  299 
  301                }
  302              }
  303            }
  304          }
  305        }
  306 
  308 
  309        if (NDF >= 0) {
  310          
  311          
  312 
  313          const int      N  =  5;
  314          
  316          
  317          for (int i = 0; i != N; ++i) {
  319          }
  320          
  322          
  323          do {
  324            
  326            
  327            for (int i = 0; i != N; ++i) {
  328              
  330                
  332                const double  chi2 = (*this)(
x, 
data.begin(), 
data.end());
 
  333                
  335                buffer[chi2]   = 
x.getE();
 
  336              }
  337              
  340              }
  341            }  
  342            
  343            
  344            for (int i = 0; i != N; ++i) {
  346            }
  348            
  349            
  350            
  352              
  353            case 0:
  357              break;
  358              
  359            case 1:
  362              break;
  363              
  364            case 2:
  367              break;
  368              
  369            case 3:
  372              break;
  373              
  374            case 4:
  378              break;
  379            }
  380            
  383            
  385          
  386          
  388            
  391            
  392          }
  393          
  394          const double chi2 = 
result[2].chi2;
 
  395          const double E    = 
result[2].x.getE();
 
  396          
  397          
  398 
  399          double Emin = numeric_limits<double>::max();
  400          double Emax = numeric_limits<double>::lowest();
  401          
  403            if (i->second < Emin) { Emin = i->second; }
  404            if (i->second > Emax) { Emax = i->second; }
  405          }
  406          
  407          const double mu_range   = 
gWater(E);           
 
  408          
  409          double noise_likelihood = 0.0;                 
  410          int    number_of_hits   = 0;                   
  411          
  412          for (vector<JNPEHit>::const_iterator i = 
data.begin(); i != 
data.end(); ++i) {
 
  413            noise_likelihood += log10(
getP(i->getY0(), i->getN()));       
 
  414            number_of_hits   += i->getN();                                
  415          }
  416 
  418 
  419          fit.push_back(event());
  420 
  421          
  422 
  424 
  425          out.push_back(fit);
  426 
  427          
  428 
  429          out.rbegin()->setW(track->getW());
  440        }
  441      }
  442 
  443      
  444 
  446 
  447      copy(input.in.begin(), input.in.end(), back_inserter(out));
 
  448 
  449      return out;
  450    }
#define DEBUG(A)
Message macros.
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
 
Data structure for PMT geometry, calibration and status.
 
Data structure for fit of energy.
 
Data structure for fit of straight line paralel to z-axis.
 
void transform(const JAxis3D &axis)
Transform axis to reference frame of given axis.
 
Data structure for position in three dimensions.
 
JPosition3D & rotate(const JRotation3D &R)
Rotate.
 
double getY() const
Get y position.
 
double getX() const
Get x position.
 
JEvt operator()(const input_type &input)
Fit function.
 
Reduced data structure for L0 hit.
 
JPMT_t getPMT() const
Get PMT.
 
int getN() const
Get count.
 
double getT() const
Get calibrated time of hit.
 
static const int JMUONENERGY
 
static const int JENERGY_NDF
number of degrees of freedom from JEnergy.cc
 
static const int JENERGY_ENERGY
uncorrected energy [GeV] from JEnergy.cc
 
static const int JENERGY_NOISE_LIKELIHOOD
log likelihood of every hit being K40 from JEnergy.cc
 
static const int JENERGY_CHI2
chi2 from JEnergy.cc
 
static const int JENERGY_MUON_RANGE_METRES
range of a muon with the reconstructed energy [m] from JEnergy.cc
 
static const int JPP_COVERAGE_POSITION
coverage of dynamic position calibration from any Jpp application
 
static const int JENERGY_NUMBER_OF_HITS
number of hits from JEnergy.cc
 
static const int JSTART_LENGTH_METRES
distance between projected positions on the track of optical modules for which the response does not ...
 
static const int JPP_COVERAGE_ORIENTATION
coverage of dynamic orientation calibration from any Jpp application
 
static const int JENERGY_MINIMAL_ENERGY
minimal energy [GeV] from JEnergy.cc
 
static const int JENERGY_MAXIMAL_ENERGY
maximal energy [GeV] from JEnergy.cc
 
void copy(const Head &from, JHead &to)
Copy header from from to to.
 
double getNPE(const Hit &hit)
Get true charge of hit.
 
double getP(const double expval, bool hit)
Get Poisson probability to observe a hit or not for given expectation value for the number of hits.
 
double getKappaC()
Get average R-dependence of arrival time of Cherenkov light (a.k.a.
 
const double getInverseSpeedOfLight()
Get inverse speed of light.
 
static const JGeaneWater gWater
Function object for energy loss of muon in sea water.
 
double getTanThetaC()
Get average tangent of Cherenkov angle of water corresponding to group velocity.
 
JPosition3D getPosition(const JFit &fit)
Get position.
 
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
 
JDirection3D getDirection(const JFit &fit)
Get direction.
 
Auxiliary data structure for sequence of same character.
 
Auxiliary data structure for floating point format specification.
 
Auxiliary class to test history.
 
Auxiliary class for simultaneously handling light yields and response of PMT.
 
size_t numberOfPrefits
number of prefits
 
double resolution
energy resolution [log10(GeV)]
 
double EMin_log
minimal energy [log10(GeV)]
 
double ZMin_m
minimal z-position [m]
 
double EMax_log
maximal energy [log10(GeV)]
 
Auxiliary data structure for floating point format specification.