Jpp  18.3.0-209-g56ce19a
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Private Attributes | List of all members
JACOUSTICS::JSydney Struct Reference

Main class for pre-calibration using acoustics data. More...

Classes

struct  detector_type
 Auxiliary data structure for detector with decomposed strings. More...
 
struct  fits_t
 Auxiliary data structure for group of lists of identifiers of to-be-fitted objects. More...
 
struct  ids_t
 List of object identifiers. More...
 
struct  JAnchorEditor
 Auxiliary class to edit orientation of anchor. More...
 
struct  JDyneemaEditor
 Auxiliary class to edit length of Dyneema ropes. More...
 
struct  JModuleEditor
 Auxiliary class to edit (z) position of module. More...
 
struct  JParameters_t
 Extended data structure for parameters of stage. More...
 
struct  JStringEditor
 Auxiliary class to edit (x,y,z) position of string. More...
 
struct  JTripodEditor
 Auxiliary class to edit (x,y,z) position of tripod. More...
 
struct  string_type
 Auxiliary data structure for decomposed string. More...
 

Public Types

typedef std::vector< JEventinput_type
 

Public Member Functions

 JSydney (const JFilenames &filenames, const JSoundVelocity &V, const size_t threads, const int debug)
 Constructor. More...
 
void stage_0 (const JParameters_t &parameters)
 Fit procedure to determine the positions of tripods and transmitters using strings that are fixed. More...
 
void stage_a (const JParameters_t &parameters)
 Fit procedure to determine the positions of the strings and tripods. More...
 
void stage_b (const JParameters_t &parameters)
 Fit procedure to determine the stretching and z-positions of individual strings. More...
 
void stage_c (const JParameters_t &parameters)
 Fit procedure to determine the z-positions of the modules. More...
 
void stage_d (const JParameters_t &parameters)
 Fit procedure to determine the z-positions of anchors. More...
 
void stage_x (const JParameters_t &parameters)
 Fit procedure to determine the (x,y,z) positions of the modules. More...
 
double operator() (const int option) const
 Get chi2. More...
 
void run (const std::string &script)
 Run. More...
 
void store (const std::string &dir=".")
 Store data in given directory. More...
 
ids_t getReceivers () const
 Get list of identifiers of receivers. More...
 
ids_t getEmitters () const
 Get list of identifiers of emitters. More...
 

Public Attributes

JFilenames filenames
 
JSoundVelocity V
 
size_t threads
 
int debug
 
JSetup setup
 
fits_t fits
 
JTOOLS::JHashMap< int, JLocationreceivers
 
std::unique_ptr< JLocationRouterrouter
 
std::vector< input_typeinput
 

Static Public Attributes

static constexpr double RADIUS_M = 1.0
 maximal horizontal distance between T-bar and emitter/hydrophone More...
 

Private Attributes

std::vector< JSuperEvtoutput
 
JDetector detector
 PMTs. More...
 
JFitParameters parameters
 

Detailed Description

Main class for pre-calibration using acoustics data.

Definition at line 133 of file JSydney.cc.

Member Typedef Documentation

Definition at line 1241 of file JSydney.cc.

Constructor & Destructor Documentation

JACOUSTICS::JSydney::JSydney ( const JFilenames filenames,
const JSoundVelocity V,
const size_t  threads,
const int  debug 
)
inline

Constructor.

Parameters
filenamesfile names
Vsound velocity
threadsthreads
debugdebug

Definition at line 582 of file JSydney.cc.

585  :
586  filenames(filenames),
587  V(V),
588  threads(threads),
589  debug(debug)
590  {
591  load(filenames.detector, setup.detector);
592 
593  setup.tripods.load(filenames.tripod.c_str());
594 
595  if (filenames.hydrophone != "") { setup.hydrophones .load(filenames.hydrophone .c_str()); }
596  if (filenames.transmitter != "") { setup.transmitters.load(filenames.transmitter.c_str()); }
597 
598  for (JDetector::const_iterator i = setup.detector.begin(); i != setup.detector.end(); ++i) {
599  receivers[i->getID()] = i->getLocation();
600  }
601 
602  // detach PMTs
603 
605 
606  for (JDetector::iterator module = setup.detector.begin(); module != setup.detector.end(); ++module) {
607  module->clear();
608  }
609 
610  router.reset(new JLocationRouter(setup.detector));
611 
613 
614  this->V.set(setup.detector.getUTMZ()); // sound velocity at detector depth
615 
618 
620 
621  ROOT::EnableThreadSafety();
622  }
void initialise(const JSetup &setup)
Initialise.
Definition: JSydney.cc:245
JDetector detector
detector
Definition: JSydney.cc:108
std::string detector
detector
Definition: JSydney.cc:97
tripods_container tripods
tripods
Definition: JSydney.cc:109
transmitters_container transmitters
transmitters
Definition: JSydney.cc:126
double getUTMZ() const
Get UTM Z.
hydrophones
hydrophones
std::string hydrophone
hydrophone
Definition: JSydney.cc:99
Detector file.
Definition: JHead.hh:226
Router for direct addressing of location data in detector data structure.
JFilenames filenames
Definition: JSydney.cc:1231
JSoundVelocity V
Definition: JSydney.cc:1232
void load(const char *file_name)
Load from input file.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
JTOOLS::JHashMap< int, JLocation > receivers
Definition: JSydney.cc:1238
std::string tripod
tripod
Definition: JSydney.cc:98
std::string transmitter
transmitter
Definition: JSydney.cc:100
JSoundVelocity & set(const double z0)
Set depth.
std::unique_ptr< JLocationRouter > router
Definition: JSydney.cc:1239
Template definition of fit function of acoustic model.
Definition: JKatoomba_t.hh:146

Member Function Documentation

void JACOUSTICS::JSydney::stage_0 ( const JParameters_t parameters)
inline

Fit procedure to determine the positions of tripods and transmitters using strings that are fixed.

Parameters
parametersparameters

Definition at line 671 of file JSydney.cc.

672  {
673  using namespace std;
674  using namespace JPP;
675 
676  this->parameters = parameters;
677 
678  JDetector A; // old strings
679  detector_type B; // new strings with transmitter -> fit only base module
680  JDetector C; // new strings w/o transmitter -> discard completely from fit
681 
682  for (JDetector::iterator module = setup.detector.begin(); module != setup.detector.end(); ++module) {
683 
684  if (fits.strings .count(module->getString()) == 0)
685  A.push_back(*module);
686  else if (fits.transmitters.count(module->getString()) != 0)
687  B.push_back(*module);
688  else
689  C.push_back(*module);
690  }
691 
692  setup.detector.swap(A);
693 
694  for (const auto& element : B) {
695  setup.detector.push_back(element.second.base);
696  }
697 
698  router.reset(new JLocationRouter(setup.detector));
699 
700  JGradient fit(parameters.Nmax, parameters.Nextra, parameters.epsilon, parameters.debug);
701 
702  for (const int i : fits.tripods) {
703  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "tripod.x: " << RIGHT(4) << i), new JTripodEditor(setup, i, JVector3X_t), parameters.steps[0]));
704  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "tripod.y: " << RIGHT(4) << i), new JTripodEditor(setup, i, JVector3Y_t), parameters.steps[0]));
705  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "tripod.z: " << RIGHT(4) << i), new JTripodEditor(setup, i, JVector3Z_t), parameters.steps[0]));
706  }
707 
708  for (const int i : fits.transmitters) {
709  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "transmitter.x: " << RIGHT(4) << i), new JStringEditor(setup, i, JVector3X_t, true), parameters.steps[0]));
710  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "transmitter.y: " << RIGHT(4) << i), new JStringEditor(setup, i, JVector3Y_t, true), parameters.steps[0]));
711  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "transmitter.z: " << RIGHT(4) << i), new JStringEditor(setup, i, JVector3Z_t, true), parameters.steps[0]));
712  }
713 
714  const double chi2 = fit(*this);
715 
716  for (auto& element : B) {
717 
718  const JModule& base = setup.detector.getModule(router->getAddress(JLocation(element.second.base.getString(),0)));
719  const JVector3D pos = base.getPosition() - element.second.base.getPosition();
720 
721  for (string_type::iterator module = element.second.begin(); module != element.second.end(); ++module) {
722 
723  module->add(pos);
724 
725  setup.detector.push_back(*module);
726  }
727  }
728 
729  copy(C.begin(), C.end(), back_inserter(setup.detector));
730 
732 
733  router.reset(new JLocationRouter(setup.detector));
734 
735  STATUS("detector: " << FIXED(9,4) << chi2 << endl);
736  }
JDetector detector
detector
Definition: JSydney.cc:108
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
Data structure for a composite optical module.
Definition: JModule.hh:67
#define STATUS(A)
Definition: JMessage.hh:63
Detector data structure.
Definition: JDetector.hh:89
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
Auxiliary class to edit time offset of data per string.
Definition: JPerth.cc:88
static const JVector3D JVector3X_t(1, 0, 0)
unit x-vector
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:127
ids_t strings
identifiers of strings
Definition: JSydney.cc:255
static const double C
Physics constants.
Data structure for vector in three dimensions.
Definition: JVector3D.hh:34
Router for direct addressing of location data in detector data structure.
Logical location of module.
Definition: JLocation.hh:37
const JLocation & getLocation() const
Get location.
Definition: JLocation.hh:69
ids_t transmitters
identifiers of strings with transmitter
Definition: JSydney.cc:258
const JPosition3D & getPosition() const
Get position.
Definition: JPosition3D.hh:130
const JModule & getModule(const JModuleAddress &address) const
Get module parameters.
Definition: JDetector.hh:270
Auxiliary data structure for editable parameter.
Definition: JGradient.hh:47
JFitParameters parameters
Definition: JSydney.cc:1248
static const JVector3D JVector3Z_t(0, 0, 1)
unit z-vector
then if[[!-f $DETECTOR]] then JDetector sh $DETECTOR fi cat $WORKDIR trigger_parameters txt<< EOFtrigger3DMuon.enabled=1;trigger3DMuon.numberOfHits=5;trigger3DMuon.gridAngle_deg=1;ctMin=0.0;TMaxLocal_ns=15.0;EOF set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY INPUT_FILES=() for((i=1;$i<=$NUMBER_OF_RUNS;++i));do JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_ ${i}.root JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_ ${i}.root $WORKDIR/trigger_efficiency_ ${i}.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt INPUT_FILES+=($WORKDIR/trigger_efficiency_ ${i}.root) done for ANGLE_DEG in $ANGLES_DEG[*];do set_variable SIGMA_NS 3.0 set_variable OUTLIERS 3 set_variable OUTPUT_FILE $WORKDIR/matrix\[${ANGLE_DEG}\deg\].root $JPP_DIR/examples/JReconstruction-f"$INPUT_FILES[*]"-o $OUTPUT_FILE-S ${SIGMA_NS}-A ${ANGLE_DEG}-O ${OUTLIERS}-d ${DEBUG}--!fiif[[$OPTION=="plot"]];then if((0));then for H1 in h0 h1;do JPlot1D-f"$WORKDIR/matrix["${^ANGLES_DEG}" deg].root:${H1}"-y"1 2e3"-Y-L TR-T""-\^"number of events [a.u.]"-> o chi2
Definition: JMatrixNZ.sh:106
ids_t tripods
identifiers of tripods
Definition: JSydney.cc:256
void copy(const Head &from, JHead &to)
Copy header from from to to.
Definition: JHead.cc:162
static const JVector3D JVector3Y_t(0, 1, 0)
unit y-vector
Conjugate gradient fit.
Definition: JGradient.hh:73
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
std::unique_ptr< JLocationRouter > router
Definition: JSydney.cc:1239
JVector3D & add(const JVector3D &vector)
Add vector.
Definition: JVector3D.hh:142
void JACOUSTICS::JSydney::stage_a ( const JParameters_t parameters)
inline

Fit procedure to determine the positions of the strings and tripods.

Parameters
parametersparameters

Definition at line 744 of file JSydney.cc.

745  {
746  using namespace std;
747  using namespace JPP;
748 
749  this->parameters = parameters;
750 
751  JGradient fit(parameters.Nmax, parameters.Nextra, parameters.epsilon, parameters.debug);
752 
753  for (const int i : fits.strings) {
754  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "string.x: " << RIGHT(4) << i), new JStringEditor(setup, i, JVector3X_t, true), parameters.steps[0]));
755  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "string.y: " << RIGHT(4) << i), new JStringEditor(setup, i, JVector3Y_t, true), parameters.steps[0]));
756  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "string.z: " << RIGHT(4) << i), new JStringEditor(setup, i, JVector3Z_t, false), parameters.steps[0]));
757  }
758 
759  for (const int i : fits.tripods) {
760  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "tripod.x: " << RIGHT(4) << i), new JTripodEditor(setup, i, JVector3X_t), parameters.steps[1]));
761  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "tripod.y: " << RIGHT(4) << i), new JTripodEditor(setup, i, JVector3Y_t), parameters.steps[1]));
762  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "tripod.z: " << RIGHT(4) << i), new JTripodEditor(setup, i, JVector3Z_t), parameters.steps[1]));
763  }
764 
765  for (const int i : ids_t(fits.hydrophones, fits.transmitters)) {
766  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "anchor.R: " << RIGHT(4) << i), new JAnchorEditor(setup, i), parameters.steps[0] / RADIUS_M));
767  }
768 
769  for (const int i : fits.transmitters) {
770 
771  JModule& module = setup.detector.getModule(router->getAddress(JLocation(i,0)));
772 
773  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "anchor.R: " << RIGHT(4) << i), new JAnchorEditor(setup, i), parameters.steps[0] / RADIUS_M));
774  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "anchor.z: " << RIGHT(4) << i), new JModuleEditor(module), parameters.steps[0]));
775  }
776 
777  const double chi2 = fit(*this);
778 
779  STATUS("detector: " << FIXED(9,4) << chi2 << endl);
780  }
JDetector detector
detector
Definition: JSydney.cc:108
Data structure for a composite optical module.
Definition: JModule.hh:67
#define STATUS(A)
Definition: JMessage.hh:63
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
Auxiliary class to edit time offset of data per string.
Definition: JPerth.cc:88
static const JVector3D JVector3X_t(1, 0, 0)
unit x-vector
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:127
ids_t strings
identifiers of strings
Definition: JSydney.cc:255
Logical location of module.
Definition: JLocation.hh:37
ids_t transmitters
identifiers of strings with transmitter
Definition: JSydney.cc:258
const JModule & getModule(const JModuleAddress &address) const
Get module parameters.
Definition: JDetector.hh:270
Auxiliary data structure for editable parameter.
Definition: JGradient.hh:47
JFitParameters parameters
Definition: JSydney.cc:1248
ids_t hydrophones
identifiers of strings with hydrophone
Definition: JSydney.cc:257
static const JVector3D JVector3Z_t(0, 0, 1)
unit z-vector
then if[[!-f $DETECTOR]] then JDetector sh $DETECTOR fi cat $WORKDIR trigger_parameters txt<< EOFtrigger3DMuon.enabled=1;trigger3DMuon.numberOfHits=5;trigger3DMuon.gridAngle_deg=1;ctMin=0.0;TMaxLocal_ns=15.0;EOF set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY INPUT_FILES=() for((i=1;$i<=$NUMBER_OF_RUNS;++i));do JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_ ${i}.root JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_ ${i}.root $WORKDIR/trigger_efficiency_ ${i}.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt INPUT_FILES+=($WORKDIR/trigger_efficiency_ ${i}.root) done for ANGLE_DEG in $ANGLES_DEG[*];do set_variable SIGMA_NS 3.0 set_variable OUTLIERS 3 set_variable OUTPUT_FILE $WORKDIR/matrix\[${ANGLE_DEG}\deg\].root $JPP_DIR/examples/JReconstruction-f"$INPUT_FILES[*]"-o $OUTPUT_FILE-S ${SIGMA_NS}-A ${ANGLE_DEG}-O ${OUTLIERS}-d ${DEBUG}--!fiif[[$OPTION=="plot"]];then if((0));then for H1 in h0 h1;do JPlot1D-f"$WORKDIR/matrix["${^ANGLES_DEG}" deg].root:${H1}"-y"1 2e3"-Y-L TR-T""-\^"number of events [a.u.]"-> o chi2
Definition: JMatrixNZ.sh:106
ids_t tripods
identifiers of tripods
Definition: JSydney.cc:256
static const JVector3D JVector3Y_t(0, 1, 0)
unit y-vector
Conjugate gradient fit.
Definition: JGradient.hh:73
static constexpr double RADIUS_M
maximal horizontal distance between T-bar and emitter/hydrophone
Definition: JSydney.cc:135
std::unique_ptr< JLocationRouter > router
Definition: JSydney.cc:1239
void JACOUSTICS::JSydney::stage_b ( const JParameters_t parameters)
inline

Fit procedure to determine the stretching and z-positions of individual strings.

Parameters
parametersparameters

Definition at line 788 of file JSydney.cc.

789  {
790  using namespace std;
791  using namespace JPP;
792 
793  this->parameters = parameters;
794 
795  map<int, JDetector> buffer;
796 
797  double z0 = 0.0;
798 
799  for (JDetector::iterator module = setup.detector.begin(); module != setup.detector.end(); ++module) {
800 
801  buffer[module->getString()].push_back(*module);
802 
803  if (module->getZ() > z0) {
804  z0 = module->getZ();
805  }
806  }
807 
808  JDetector tx;
809 
810  for (transmitters_container::iterator i = setup.transmitters.begin(); i != setup.transmitters.end(); ++i) {
811  try {
812  tx.push_back(router->getModule(i->getLocation()));
813  }
814  catch(const exception&) {}
815  }
816 
817  for (const int i : fits.strings) {
818 
819  setup.detector.swap(buffer[i]);
820 
821  copy(tx.begin(), tx.end(), back_inserter(setup.detector));
822 
823  router.reset(new JLocationRouter(setup.detector));
824 
825  JGradient fit(parameters.Nmax, parameters.Nextra, parameters.epsilon, parameters.debug);
826 
827  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "string.M: " << RIGHT(4) << i), new JDyneemaEditor(setup, i, z0), parameters.steps[0]));
828  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "string.z: " << RIGHT(4) << i), new JStringEditor (setup, i, JVector3Z_t, false), parameters.steps[1]));
829 
830  const double chi2 = fit(*this);
831 
832  STATUS("string: " << setw(4) << i << ' ' << FIXED(9,4) << chi2 << endl);
833 
834  buffer[i].clear();
835 
836  copy_if(setup.detector.begin(), setup.detector.end(), back_inserter(buffer[i]), make_predicate(&JModule::getString, i));
837  }
838 
839  setup.detector.clear();
840 
841  for (const auto& element : buffer) {
842  copy(element.second.begin(), element.second.end(), back_inserter(setup.detector));
843  }
844 
845  router.reset(new JLocationRouter(setup.detector));
846  }
JDetector detector
detector
Definition: JSydney.cc:108
JPredicate< JResult_t T::*, JComparison::eq > make_predicate(JResult_t T::*member, const JResult_t value)
Helper method to create predicate for data member.
Definition: JPredicate.hh:128
#define STATUS(A)
Definition: JMessage.hh:63
Detector data structure.
Definition: JDetector.hh:89
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
transmitters_container transmitters
transmitters
Definition: JSydney.cc:126
Auxiliary class to edit time offset of data per string.
Definition: JPerth.cc:88
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:127
ids_t strings
identifiers of strings
Definition: JSydney.cc:255
Router for direct addressing of location data in detector data structure.
Auxiliary data structure for editable parameter.
Definition: JGradient.hh:47
int getString() const
Get string number.
Definition: JLocation.hh:134
JFitParameters parameters
Definition: JSydney.cc:1248
static const JVector3D JVector3Z_t(0, 0, 1)
unit z-vector
then if[[!-f $DETECTOR]] then JDetector sh $DETECTOR fi cat $WORKDIR trigger_parameters txt<< EOFtrigger3DMuon.enabled=1;trigger3DMuon.numberOfHits=5;trigger3DMuon.gridAngle_deg=1;ctMin=0.0;TMaxLocal_ns=15.0;EOF set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY INPUT_FILES=() for((i=1;$i<=$NUMBER_OF_RUNS;++i));do JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_ ${i}.root JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_ ${i}.root $WORKDIR/trigger_efficiency_ ${i}.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt INPUT_FILES+=($WORKDIR/trigger_efficiency_ ${i}.root) done for ANGLE_DEG in $ANGLES_DEG[*];do set_variable SIGMA_NS 3.0 set_variable OUTLIERS 3 set_variable OUTPUT_FILE $WORKDIR/matrix\[${ANGLE_DEG}\deg\].root $JPP_DIR/examples/JReconstruction-f"$INPUT_FILES[*]"-o $OUTPUT_FILE-S ${SIGMA_NS}-A ${ANGLE_DEG}-O ${OUTLIERS}-d ${DEBUG}--!fiif[[$OPTION=="plot"]];then if((0));then for H1 in h0 h1;do JPlot1D-f"$WORKDIR/matrix["${^ANGLES_DEG}" deg].root:${H1}"-y"1 2e3"-Y-L TR-T""-\^"number of events [a.u.]"-> o chi2
Definition: JMatrixNZ.sh:106
void copy(const Head &from, JHead &to)
Copy header from from to to.
Definition: JHead.cc:162
Conjugate gradient fit.
Definition: JGradient.hh:73
std::unique_ptr< JLocationRouter > router
Definition: JSydney.cc:1239
void JACOUSTICS::JSydney::stage_c ( const JParameters_t parameters)
inline

Fit procedure to determine the z-positions of the modules.

Parameters
parametersparameters

Definition at line 854 of file JSydney.cc.

855  {
856  using namespace std;
857  using namespace JPP;
858 
859  this->parameters = parameters;
860 
861  JGradient fit(parameters.Nmax, parameters.Nextra, parameters.epsilon, parameters.debug);
862 
863  for (JDetector::iterator module = setup.detector.begin(); module != setup.detector.end(); ++module) {
864  if (fits.strings.count(module->getString()) != 0 && module->getFloor() != 0) {
865  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "module.z: " << right << module->getLocation()), new JModuleEditor(*module), parameters.steps[0]));
866  }
867  }
868 
869  const double chi2 = fit(*this);
870 
871  STATUS("detector: " << FIXED(9,4) << chi2 << endl);
872  }
JDetector detector
detector
Definition: JSydney.cc:108
#define STATUS(A)
Definition: JMessage.hh:63
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:127
ids_t strings
identifiers of strings
Definition: JSydney.cc:255
Auxiliary data structure for editable parameter.
Definition: JGradient.hh:47
JFitParameters parameters
Definition: JSydney.cc:1248
then if[[!-f $DETECTOR]] then JDetector sh $DETECTOR fi cat $WORKDIR trigger_parameters txt<< EOFtrigger3DMuon.enabled=1;trigger3DMuon.numberOfHits=5;trigger3DMuon.gridAngle_deg=1;ctMin=0.0;TMaxLocal_ns=15.0;EOF set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY INPUT_FILES=() for((i=1;$i<=$NUMBER_OF_RUNS;++i));do JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_ ${i}.root JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_ ${i}.root $WORKDIR/trigger_efficiency_ ${i}.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt INPUT_FILES+=($WORKDIR/trigger_efficiency_ ${i}.root) done for ANGLE_DEG in $ANGLES_DEG[*];do set_variable SIGMA_NS 3.0 set_variable OUTLIERS 3 set_variable OUTPUT_FILE $WORKDIR/matrix\[${ANGLE_DEG}\deg\].root $JPP_DIR/examples/JReconstruction-f"$INPUT_FILES[*]"-o $OUTPUT_FILE-S ${SIGMA_NS}-A ${ANGLE_DEG}-O ${OUTLIERS}-d ${DEBUG}--!fiif[[$OPTION=="plot"]];then if((0));then for H1 in h0 h1;do JPlot1D-f"$WORKDIR/matrix["${^ANGLES_DEG}" deg].root:${H1}"-y"1 2e3"-Y-L TR-T""-\^"number of events [a.u.]"-> o chi2
Definition: JMatrixNZ.sh:106
Conjugate gradient fit.
Definition: JGradient.hh:73
void JACOUSTICS::JSydney::stage_d ( const JParameters_t parameters)
inline

Fit procedure to determine the z-positions of anchors.

Parameters
parametersparameters

Definition at line 880 of file JSydney.cc.

881  {
882  using namespace std;
883  using namespace JPP;
884 
885  this->parameters = parameters;
886 
887  JGradient fit(parameters.Nmax, parameters.Nextra, parameters.epsilon, parameters.debug);
888 
889  for (JDetector::iterator module = setup.detector.begin(); module != setup.detector.end(); ++module) {
890  if (fits.strings.count(module->getString()) != 0 && module->getFloor() == 0) {
891  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "module.z: " << right << module->getLocation()), new JModuleEditor(*module), parameters.steps[0]));
892  }
893  }
894 
895  const double chi2 = fit(*this);
896 
897  STATUS("detector: " << FIXED(9,4) << chi2 << endl);
898  }
JDetector detector
detector
Definition: JSydney.cc:108
#define STATUS(A)
Definition: JMessage.hh:63
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:127
ids_t strings
identifiers of strings
Definition: JSydney.cc:255
Auxiliary data structure for editable parameter.
Definition: JGradient.hh:47
JFitParameters parameters
Definition: JSydney.cc:1248
then if[[!-f $DETECTOR]] then JDetector sh $DETECTOR fi cat $WORKDIR trigger_parameters txt<< EOFtrigger3DMuon.enabled=1;trigger3DMuon.numberOfHits=5;trigger3DMuon.gridAngle_deg=1;ctMin=0.0;TMaxLocal_ns=15.0;EOF set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY INPUT_FILES=() for((i=1;$i<=$NUMBER_OF_RUNS;++i));do JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_ ${i}.root JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_ ${i}.root $WORKDIR/trigger_efficiency_ ${i}.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt INPUT_FILES+=($WORKDIR/trigger_efficiency_ ${i}.root) done for ANGLE_DEG in $ANGLES_DEG[*];do set_variable SIGMA_NS 3.0 set_variable OUTLIERS 3 set_variable OUTPUT_FILE $WORKDIR/matrix\[${ANGLE_DEG}\deg\].root $JPP_DIR/examples/JReconstruction-f"$INPUT_FILES[*]"-o $OUTPUT_FILE-S ${SIGMA_NS}-A ${ANGLE_DEG}-O ${OUTLIERS}-d ${DEBUG}--!fiif[[$OPTION=="plot"]];then if((0));then for H1 in h0 h1;do JPlot1D-f"$WORKDIR/matrix["${^ANGLES_DEG}" deg].root:${H1}"-y"1 2e3"-Y-L TR-T""-\^"number of events [a.u.]"-> o chi2
Definition: JMatrixNZ.sh:106
Conjugate gradient fit.
Definition: JGradient.hh:73
void JACOUSTICS::JSydney::stage_x ( const JParameters_t parameters)
inline

Fit procedure to determine the (x,y,z) positions of the modules.

This procedure should be considered unorthodox - it can be used to modify the detector file in such a way to accommodate anomalies in the shapes of a string (e.g. entanglement of string in D0ORCA018).

Parameters
parametersparameters

Definition at line 908 of file JSydney.cc.

909  {
910  using namespace std;
911  using namespace JPP;
912 
913  this->parameters = parameters;
914 
915  JGradient fit(parameters.Nmax, parameters.Nextra, parameters.epsilon, parameters.debug);
916 
917  for (JDetector::iterator module = setup.detector.begin(); module != setup.detector.end(); ++module) {
918  if (fits.strings.count(module->getString()) != 0 && module->getFloor() != 0) {
919  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "module.x: " << right << module->getLocation()), new JModuleEditor(*module, JVector3X_t), parameters.steps[0]));
920  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "module.y: " << right << module->getLocation()), new JModuleEditor(*module, JVector3Y_t), parameters.steps[0]));
921  fit.push_back(JModifier_t(MAKE_STRING(LEFT(16) << "module.z: " << right << module->getLocation()), new JModuleEditor(*module, JVector3Z_t), parameters.steps[0]));
922  }
923  }
924 
925  const double chi2 = fit(*this);
926 
927  STATUS("detector: " << FIXED(9,4) << chi2 << endl);
928  }
JDetector detector
detector
Definition: JSydney.cc:108
#define STATUS(A)
Definition: JMessage.hh:63
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
static const JVector3D JVector3X_t(1, 0, 0)
unit x-vector
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:127
ids_t strings
identifiers of strings
Definition: JSydney.cc:255
Auxiliary data structure for editable parameter.
Definition: JGradient.hh:47
JFitParameters parameters
Definition: JSydney.cc:1248
static const JVector3D JVector3Z_t(0, 0, 1)
unit z-vector
then if[[!-f $DETECTOR]] then JDetector sh $DETECTOR fi cat $WORKDIR trigger_parameters txt<< EOFtrigger3DMuon.enabled=1;trigger3DMuon.numberOfHits=5;trigger3DMuon.gridAngle_deg=1;ctMin=0.0;TMaxLocal_ns=15.0;EOF set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY INPUT_FILES=() for((i=1;$i<=$NUMBER_OF_RUNS;++i));do JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_ ${i}.root JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_ ${i}.root $WORKDIR/trigger_efficiency_ ${i}.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt INPUT_FILES+=($WORKDIR/trigger_efficiency_ ${i}.root) done for ANGLE_DEG in $ANGLES_DEG[*];do set_variable SIGMA_NS 3.0 set_variable OUTLIERS 3 set_variable OUTPUT_FILE $WORKDIR/matrix\[${ANGLE_DEG}\deg\].root $JPP_DIR/examples/JReconstruction-f"$INPUT_FILES[*]"-o $OUTPUT_FILE-S ${SIGMA_NS}-A ${ANGLE_DEG}-O ${OUTLIERS}-d ${DEBUG}--!fiif[[$OPTION=="plot"]];then if((0));then for H1 in h0 h1;do JPlot1D-f"$WORKDIR/matrix["${^ANGLES_DEG}" deg].root:${H1}"-y"1 2e3"-Y-L TR-T""-\^"number of events [a.u.]"-> o chi2
Definition: JMatrixNZ.sh:106
static const JVector3D JVector3Y_t(0, 1, 0)
unit y-vector
Conjugate gradient fit.
Definition: JGradient.hh:73
double JACOUSTICS::JSydney::operator() ( const int  option) const
inline

Get chi2.

Parameters
optionoption
Returns
chi2/NDF

Definition at line 937 of file JSydney.cc.

938  {
939  using namespace std;
940  using namespace JPP;
941 
942  const JGeometry geometry(setup.detector, setup.hydrophones);
943 
944  JHashMap<int, JEmitter> emitters;
945 
946  for (tripods_container::const_iterator i = setup.tripods.begin(); i != setup.tripods.end(); ++i) {
947  {
948  emitters[i->getID()] = JEmitter(i->getID(), i->getUTMPosition() - setup.detector.getUTMPosition());
949  }
950  }
951 
952  for (transmitters_container::const_iterator i = setup.transmitters.begin(); i != setup.transmitters.end(); ++i) {
953  try {
954  emitters[i->getID()] = JEmitter(i->getID(), i->getPosition() + router->getModule(i->getLocation()).getPosition());
955  }
956  catch(const exception&) {} // if no module available, discard transmitter
957  }
958 
959  if (option == 0 || // step wise improvement of the chi2
960  option == 1) { // evaluation of the chi2 before the determination of the gradient of the chi2
961 
962  this->output.clear();
963 
964  JSTDObjectWriter<JSuperEvt> out(this->output); // write data for subsequent use
965 
966  JFremantle::output = (option == 1 ? &out : NULL);
967 
968  {
969  JFremantle fremantle(geometry, V, parameters, threads, 2 * threads);
970 
971  for (const input_type& superevt : input) {
972 
973  const JWeight getWeight(superevt.begin(), superevt.end());
974 
975  set<int> counter;
977 
978  for (input_type::const_iterator evt = superevt.begin(); evt != superevt.end(); ++evt) {
979 
980  if (emitters.has(evt->getID())) {
981 
982  const JEmitter& emitter = emitters [evt->getID()];
983  const double weight = getWeight(evt->getID());
984 
985  for (JEvent::const_iterator i = evt->begin(); i != evt->end(); ++i) {
986 
987  if (geometry.hasLocation(receivers[i->getID()])) {
988 
989  data.push_back(JHit(emitter,
990  distance(superevt.begin(), evt),
991  receivers[i->getID()],
992  i->getToA(),
994  weight));
995 
996  counter.insert(evt->getID());
997  }
998  }
999  }
1000  }
1001 
1002  if (counter.size() >= parameters.Nmin) {
1003  fremantle.enqueue(data);
1004  }
1005  }
1006  }
1007 
1008  return JFremantle::Q.getMean(numeric_limits<float>::max());
1009 
1010  } else if (option == 2) { // evaluation of the derivative of the chi2 to each fit parameter
1011 
1012  {
1014 
1015  JPlatypus platypus(geometry, emitters, V, parameters, in, threads);
1016  }
1017 
1018  return JPlatypus::Q.getMean(numeric_limits<float>::max());
1019 
1020  } else {
1021 
1022  return numeric_limits<float>::max();
1023  }
1024  }
JDetector detector
detector
Definition: JSydney.cc:108
double getWeight(T __begin, T __end)
Get total weight of data points.
Definition: JKatoomba_t.hh:61
const JUTMPosition & getUTMPosition() const
Get UTM position.
Definition: JUTMPosition.hh:84
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
JVector3D getPosition(T __begin, T __end, const JPredicate< JTypename_t, JComparator_t > &predicate)
Get position from element in data which corresponds to given predicate.
General purpose class for hash map of unique keys.
Definition: JHashMap.hh:72
Auxiliary data structure to unify weights of acoustics data according to the number of pings per emit...
tripods_container tripods
tripods
Definition: JSydney.cc:109
transmitters_container transmitters
transmitters
Definition: JSydney.cc:126
Acoustics hit.
size_t Nmin
minimum number of emitters
hydrophones
hydrophones
Implementation of object output from STD container.
Acoustic emitter.
Definition: JEmitter.hh:27
JSoundVelocity V
Definition: JSydney.cc:1232
std::vector< input_type > input
Definition: JSydney.cc:1242
static JQuantile Q
chi2/NDF
Definition: JPlatypus_t.hh:134
std::vector< JSuperEvt > output
Definition: JSydney.cc:1245
static JQuantile Q
chi2/NDF
Thread pool for global fits using super events.
Definition: JPlatypus_t.hh:32
then fatal The output file must have the wildcard in the e g root fi eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:48
static output_type * output
optional output
JFitParameters parameters
Definition: JSydney.cc:1248
JTOOLS::JHashMap< int, JLocation > receivers
Definition: JSydney.cc:1238
Thread pool for global fits.
Definition: JFremantle_t.hh:31
double sigma_s
time-of-arrival resolution [s]
long double getMean() const
Get mean value.
Definition: JKatoomba_t.hh:113
std::unique_ptr< JLocationRouter > router
Definition: JSydney.cc:1239
void JACOUSTICS::JSydney::run ( const std::string script)
inline

Run.

Parameters
scriptsteering script

Definition at line 1032 of file JSydney.cc.

1033  {
1034  using namespace std;
1035  using namespace JPP;
1036 
1037  ifstream in(script.c_str());
1038 
1039  while (in) {
1040 
1041  string buffer, key;
1042 
1043  if (getline(in, buffer)) {
1044 
1045  if (buffer.empty() || buffer[0] == skip_t) {
1046  continue;
1047  }
1048 
1049  istringstream is(buffer);
1050 
1051  is >> key;
1052 
1053  if (key == initialise_t) { // set object identifiers
1054 
1056 
1057  } else if (key == fix_t) { // fix object identifiers
1058 
1059  string type; // type of object
1060  ids_t id; // identifiers
1061 
1062  if (is >> type >> id) {
1063  if (type == string_t) {
1064  fits.strings .fix(id);
1065  fits.hydrophones .fix(id);
1066  fits.transmitters.fix(id);
1067  } else if (type == tripod_t) {
1068  fits.tripods .fix(id);
1069  } else {
1070  THROW(JValueOutOfRange, "Invalid type <" << type << ">");
1071  }
1072  }
1073 
1074  } else if (key == stage_t) { // stage
1075 
1076  string stage;
1077  JParameters_t input;
1078 
1079  if (is >> stage >> input) {
1080 
1081  STATUS("stage " << setw(3) << stage << " {" << input << "}" << endl);
1082 
1083  JTimer timer;
1084 
1085  timer.start();
1086 
1087  ofstream out(MAKE_CSTRING("stage-" << stage << ".log"));
1088 
1089  {
1090  JRedirectStream redirect(cout, out);
1091 
1092  switch (stage[stage.size() - 1]) {
1093 
1094  case '0':
1095  stage_0(input);
1096  break;
1097 
1098  case 'a':
1099  case 'A':
1100  stage_a(input);
1101  break;
1102 
1103  case 'b':
1104  case 'B':
1105  stage_b(input);
1106  break;
1107 
1108  case 'c':
1109  case 'C':
1110  stage_c(input);
1111  break;
1112 
1113  case 'd':
1114  case 'D':
1115  stage_d(input);
1116  break;
1117 
1118  case 'x':
1119  case 'X':
1120  stage_x(input);
1121  break;
1122 
1123  default:
1124  THROW(JValueOutOfRange, "Invalid stage <" << stage << ">");
1125  break;
1126  }
1127  }
1128 
1129  out.close();
1130 
1131  store(stage);
1132  store();
1133 
1134  timer.stop();
1135 
1136  STATUS("Elapsed time " << FIXED(12,3) << timer.usec_wall * 1.0e-6 << " s." << endl);
1137  }
1138 
1139  } else {
1140  THROW(JValueOutOfRange, "Invalid key <" << key << ">");
1141  }
1142  }
1143  }
1144 
1145  in.close();
1146  }
void initialise(const JSetup &setup)
Initialise.
Definition: JSydney.cc:245
void stage_x(const JParameters_t &parameters)
Fit procedure to determine the (x,y,z) positions of the modules.
Definition: JSydney.cc:908
void stage_b(const JParameters_t &parameters)
Fit procedure to determine the stretching and z-positions of individual strings.
Definition: JSydney.cc:788
void stage_a(const JParameters_t &parameters)
Fit procedure to determine the positions of the strings and tripods.
Definition: JSydney.cc:744
static const std::string fix_t
fix objects
Definition: JSydney.cc:87
#define STATUS(A)
Definition: JMessage.hh:63
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
#define MAKE_CSTRING(A)
Make C-string.
Definition: JPrint.hh:136
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
is
Definition: JDAQCHSM.chsm:167
void stop()
Stop timer.
Definition: JTimer.hh:113
static const std::string stage_t
fit stage
Definition: JSydney.cc:90
ids_t strings
identifiers of strings
Definition: JSydney.cc:255
then set_variable PMT_FILE set_variable DAQ_FILE set_variable OUTPUT_FILE set_variable DETECTOR else fatal Wrong number of arguments fi JPrintTree f $DAQ_FILE type
static const std::string tripod_t
tripod
Definition: JSydney.cc:89
void store(const std::string &dir=".")
Store data in given directory.
Definition: JSydney.cc:1154
This class can be used to temporarily redirect one output (input) stream to another output (input) st...
void fix(const ids_t &B)
Fix.
Definition: JSydney.cc:180
std::vector< input_type > input
Definition: JSydney.cc:1242
ids_t transmitters
identifiers of strings with transmitter
Definition: JSydney.cc:258
Auxiliary class for CPU timing and usage.
Definition: JTimer.hh:32
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
Definition: JString.hh:478
void stage_c(const JParameters_t &parameters)
Fit procedure to determine the z-positions of the modules.
Definition: JSydney.cc:854
then fatal The output file must have the wildcard in the e g root fi eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:48
ids_t hydrophones
identifiers of strings with hydrophone
Definition: JSydney.cc:257
ids_t tripods
identifiers of tripods
Definition: JSydney.cc:256
*fatal Wrong number of arguments esac for INPUT_FILE in eval ls rt $DIR stage
static const char skip_t
Script commands.
Definition: JSydney.cc:85
void stage_d(const JParameters_t &parameters)
Fit procedure to determine the z-positions of anchors.
Definition: JSydney.cc:880
static const std::string initialise_t
initialise
Definition: JSydney.cc:86
Exception for accessing a value in a collection that is outside of its range.
Definition: JException.hh:178
void stage_0(const JParameters_t &parameters)
Fit procedure to determine the positions of tripods and transmitters using strings that are fixed...
Definition: JSydney.cc:671
unsigned long long usec_wall
Definition: JTimer.hh:224
void start()
Start timer.
Definition: JTimer.hh:89
static const std::string string_t
string
Definition: JSydney.cc:88
void JACOUSTICS::JSydney::store ( const std::string dir = ".")
inline

Store data in given directory.

Parameters
dirdirectory

Definition at line 1154 of file JSydney.cc.

1155  {
1156  using namespace JPP;
1157 
1158  if (getFileStatus(dir.c_str()) || (mkdir(dir.c_str(), S_IRWXU | S_IRWXG) != -1)) {
1159 
1160  // attach PMTs
1161 
1162  for (JDetector::iterator module = detector.begin(); module != detector.end(); ++module) {
1163  module->set(router->getModule(module->getLocation()).getPosition());
1164  }
1165 
1167 
1168  setup.tripods.store(getFilename(dir, filenames.tripod).c_str());
1169 
1170  if (filenames.hydrophone != "") { setup.hydrophones .store(getFilename(dir, filenames.hydrophone) .c_str()); }
1172 
1173  } else {
1174 
1175  THROW(JValueOutOfRange, "Invalid directory <" << dir << ">");
1176  }
1177  }
std::string detector
detector
Definition: JSydney.cc:97
JVector3D getPosition(T __begin, T __end, const JPredicate< JTypename_t, JComparator_t > &predicate)
Get position from element in data which corresponds to given predicate.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
tripods_container tripods
tripods
Definition: JSydney.cc:109
transmitters_container transmitters
transmitters
Definition: JSydney.cc:126
hydrophones
hydrophones
std::string hydrophone
hydrophone
Definition: JSydney.cc:99
Detector file.
Definition: JHead.hh:226
JFilenames filenames
Definition: JSydney.cc:1231
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file.
static JStat getFileStatus
Function object for file status.
Definition: JStat.hh:173
void store(const char *file_name) const
Store to output file.
std::string tripod
tripod
Definition: JSydney.cc:98
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
Definition: JeepToolkit.hh:128
Exception for accessing a value in a collection that is outside of its range.
Definition: JException.hh:178
std::string transmitter
transmitter
Definition: JSydney.cc:100
std::unique_ptr< JLocationRouter > router
Definition: JSydney.cc:1239
ids_t JACOUSTICS::JSydney::getReceivers ( ) const
inline

Get list of identifiers of receivers.

Returns
list of identifiers

Definition at line 1185 of file JSydney.cc.

1186  {
1187  ids_t buffer;
1188 
1189  for (JDetector::const_iterator i = setup.detector.begin(); i != setup.detector.end(); ++i) {
1190  if ((i->getFloor() != 0 && !i->has(PIEZO_DISABLE)) || (setup.hydrophones.hasString(i->getString()) && !i->has(HYDROPHONE_DISABLE))) {
1191  buffer.insert(i->getID());
1192  }
1193  }
1194 
1195  return buffer;
1196  }
JDetector detector
detector
Definition: JSydney.cc:108
hydrophones
hydrophones
static const int PIEZO_DISABLE
Enable (disable) use of piezo if this status bit is 0 (1);.
static const int HYDROPHONE_DISABLE
Enable (disable) use of hydrophone if this status bit is 0 (1);.
ids_t JACOUSTICS::JSydney::getEmitters ( ) const
inline

Get list of identifiers of emitters.

Returns
list of identifiers

Definition at line 1204 of file JSydney.cc.

1205  {
1206  using namespace std;
1207 
1208  ids_t buffer;
1209 
1210  for (tripods_container::const_iterator i = setup.tripods.begin(); i != setup.tripods.end(); ++i) {
1211  buffer.insert(i->getID());
1212  }
1213 
1214  for (transmitters_container::const_iterator i = setup.transmitters.begin(); i != setup.transmitters.end(); ++i) {
1215 
1216  try {
1217 
1218  const JModule& module = router->getModule(i->getLocation());
1219 
1220  if (!module.has(TRANSMITTER_DISABLE)) {
1221  buffer.insert(i->getID());
1222  }
1223  }
1224  catch(const exception&) {}
1225  }
1226 
1227  return buffer;
1228  }
Data structure for a composite optical module.
Definition: JModule.hh:67
tripods_container tripods
tripods
Definition: JSydney.cc:109
transmitters_container transmitters
transmitters
Definition: JSydney.cc:126
bool has(const int bit) const
Test PMT status.
Definition: JStatus.hh:120
static const int TRANSMITTER_DISABLE
Enable (disable) use of transmitter if this status bit is 0 (1);.
std::unique_ptr< JLocationRouter > router
Definition: JSydney.cc:1239

Member Data Documentation

constexpr double JACOUSTICS::JSydney::RADIUS_M = 1.0
static

maximal horizontal distance between T-bar and emitter/hydrophone

Definition at line 135 of file JSydney.cc.

JFilenames JACOUSTICS::JSydney::filenames

Definition at line 1231 of file JSydney.cc.

JSoundVelocity JACOUSTICS::JSydney::V

Definition at line 1232 of file JSydney.cc.

size_t JACOUSTICS::JSydney::threads

Definition at line 1233 of file JSydney.cc.

int JACOUSTICS::JSydney::debug

Definition at line 1234 of file JSydney.cc.

JSetup JACOUSTICS::JSydney::setup

Definition at line 1235 of file JSydney.cc.

fits_t JACOUSTICS::JSydney::fits

Definition at line 1236 of file JSydney.cc.

JTOOLS::JHashMap<int, JLocation> JACOUSTICS::JSydney::receivers

Definition at line 1238 of file JSydney.cc.

std::unique_ptr<JLocationRouter> JACOUSTICS::JSydney::router

Definition at line 1239 of file JSydney.cc.

std::vector<input_type> JACOUSTICS::JSydney::input

Definition at line 1242 of file JSydney.cc.

std::vector<JSuperEvt> JACOUSTICS::JSydney::output
mutableprivate

Definition at line 1245 of file JSydney.cc.

JDetector JACOUSTICS::JSydney::detector
private

PMTs.

Definition at line 1247 of file JSydney.cc.

JFitParameters JACOUSTICS::JSydney::parameters
private

Definition at line 1248 of file JSydney.cc.


The documentation for this struct was generated from the following file: