33 for (
auto & src : srcs){
35 JPMT src_pmt = src->getPMT() ;
37 NBPulse* src_pulse = src->getNBPulse() ;
39 for(
auto & tgt : tgts){
41 JPMT tgt_pmt = tgt->getPMT() ;
43 NBPulse* tgt_pulse = tgt->getNBPulse() ;
47 double t_flight = distance / c_w ;
51 double delta_t0 = t_flight - delta_traw ;
55 corrections.push_back(delta_t0 - delta_t0_old) ;
61 sort (corrections.begin() , corrections.end()) ;
63 int index = int(0.5*corrections.size()) ;
65 return corrections[index] ;
80 for(
auto & sm : SuperMods){
84 if(sm->get_good_sources().size()>0){
96 for(
int j=0 ; j < nPMTs ; j++){
Router for direct addressing of PMT data in detector data structure.
const JModuleLocation & getLocation() const
Get location.
Analyzes the signal of a nanobeacon in a PMT.
JDetector Update_Detector(JDetector detector, const vector< SuperModule * > &SuperMods)
Produces a new detector file by updating the existing t0s of the PMTs.
int getNumberOfPMTs(const JModule &module)
Get number of PMTs.
const JPMT & getPMT(const JPMTAddress &address) const
Get PMT.
double get_PMT_distance(JPMT src_pmt, JPMT tgt_pmt)
Calculate the distance between two JPMTs in the detector.
int getID() const
Get identifier.
Data structure for PMT geometry and calibration.
const JPMT & getPMT(const int index) const
Get PMT.
const JModule & getModule(const JModuleAddress &address) const
Get module parameters.
void setT0(const double t0)
Set time offset.
Auxiliary class for object identification.
double computeMedianCorrection(JDetector *det, vector< SuperPMT * > srcs, vector< SuperPMT * > tgts)
It uses the pmts from a source module and from a target module.
double getPeakTime()
Get the arrival time of the nanobeacon pulse.
int getNumberOfModules(const JDetector &detector)
Get number of modules.
Logical location of module.
double getT0() const
Get time offset.