79 disable_container disable;
87 JParser<> zap(
"Application to fit position calibration model to acoustic data.");
89 zap[
'f'] =
make_field(inputFile,
"output of JAcousticEventBuilder[.sh]");
91 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
101 "Precede name of data structure by a '+' or '-' "
102 "to add or remove data types in the output, respectively."
105 zap[
'q'] =
make_field(squash,
"squash meta data");
110 catch(
const exception &error) {
111 FATAL(error.what() << endl);
130 receivers[
i->getID()] =
i->getLocation();
133 for (tripods_container::const_iterator
i =
tripods.begin();
i !=
tripods.end(); ++
i) {
134 emitters[
i->getID()] =
JEmitter(
i->getID(),
i->getUTMPosition() -
detector.getUTMPosition());
137 for (transmitters_container::const_iterator
i = transmitters.begin();
i != transmitters.end(); ++
i) {
141 catch(
const exception&) {}
156 TH1D h0(
"chi2/NDF", NULL, 50000, 0.0, 1000.0);
157 TH1D h1(
"h1", NULL, 51, -0.5, 50.5);
158 TH1D hn(
"hn", NULL, 100, 0.0, 6.0);
162 range.getLength() + 1,
range.getLowerLimit() - 0.5,
range.getUpperLimit() + 0.5));
166 range.getLength() + 1,
range.getLowerLimit() - 0.5,
range.getUpperLimit() + 0.5));
168 for (Int_t
i = 1;
i <= HA->GetXaxis()->GetNbins(); ++
i) {
169 HA->GetXaxis()->SetBinLabel(
i,
MAKE_CSTRING(geometry.at(
i-1).first));
170 HB->GetXaxis()->SetBinLabel(
i,
MAKE_CSTRING(geometry.at(
i-1).first));
173 if (inputFile.size() > 1
u) {
177 for (
const string& file_name : inputFile) {
190 zmap[evt->begin()->getToE()] = file_name;
199 inputFile.push_back(
i->second);
211 catch(
const exception&) {}
213 int counter[] = { 0, 0 };
219 STATUS(inputFile.getFilename() <<
'\r');
DEBUG(endl);
223 for (
const string file_name = inputFile.getFilename(); inputFile.hasNext() && file_name == inputFile.getFilename(); ) {
225 const JEvent* evt = inputFile.next();
227 if (!evt->empty() && emitters.has(evt->
getID())) {
228 if (utc(evt->begin()->getToA()) && utc(evt->rbegin()->getToA())) {
229 zbuf.push_back(*evt);
234 sort(zbuf.begin(), zbuf.end());
236 for (buffer_type::iterator p = zbuf.begin(), q; p != zbuf.end(); p = q) {
238 for (q = p; ++q != zbuf.end() && q->begin()->getToE() <= p->rbegin()->getToE() +
parameters.Tmax_s; ) {}
240 if (q == zbuf.end()) {
242 if (inputFile.hasNext()) {
244 zbuf.erase(zbuf.begin(), p);
260 for (buffer_type::iterator evt = p; evt != q; ++evt) {
269 for (JEvent::const_iterator
i = evt->begin();
i != __end; ++
i) {
274 if (receivers.has(
i->getID()) && geometry.hasLocation(receivers[
i->getID()]) &&
i->getQ() >=
parameters.Qmin * (
parameters.Qmin <= 1.0 ?
i->getW() : 1.0)) {
276 data.push_back(
JHit(emitter,
278 receivers[
i->getID()],
289 for (data_type::const_iterator hit = data.begin(); hit != data.end(); ++hit) {
290 HA[hit->getID()]->Fill(geometry.getIndex(hit->getString()), hit->getFloor(), 1.0);
295 const auto result = katoomba(data.begin(), data.end());
297 for (data_type::const_iterator hit =
result.begin; hit !=
result.end; ++hit) {
298 HB[hit->getID()]->Fill(geometry.getIndex(hit->getString()), hit->getFloor(), 1.0);
303 cout <<
"result:" <<
' '
307 for (data_type::const_iterator hit =
result.begin; hit !=
result.end; ++hit) {
308 cout <<
"hit: " << *hit <<
' ' <<
FIXED(9,3) << katoomba.evaluator(
result.value, *hit) << endl;
312 hn.Fill(
log10(katoomba.gandalf.numberOfIterations));
331 if (selection.is_valid<
JEvent>()) {
333 for (buffer_type::iterator
i = p;
i != q; ++
i) {
339 for (JEvent::iterator hit = out.begin(); hit != out.end(); ++hit) {
368 STATUS(
"Number of events written / rejected: " << counter[0] <<
" / " << counter[1] << endl);
Utility class to parse command line options.
const int getDetectorID() const
Get detector identifier.
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
std::vector< event_type > data_type
double getWeight(T __begin, T __end)
Get total weight of data points.
size_t getMinimumNumberOfEmitters(T __begin, T __end)
Get minimum number of emitters for any string in data.
JContainer< std::vector< JTransmitter > > transmitters_container
static JDetectorMechanics getMechanics
Function object to get string mechanics.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Auxiliary data structure to unify weights of acoustics data according to the number of pings per emit...
Auxiliary class for ROOT class selection.
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
#define MAKE_CSTRING(A)
Make C-string.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Auxiliary data structure for floating point format specification.
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
floor_range getRangeOfFloors(const JDetector &detector)
Get range of floors.
std::vector< JHitW0 > buffer_type
hits
Global fit of prameterised detector geometry to acoustics data.
size_t getNumberOfEmitters(T __begin, T __end)
Get number of emitters.
Auxiliary class for defining the range of iterations of objects.
static const JSoundVelocity getSoundVelocity(1541.0,-17.0e-3,-2000.0)
Function object for velocity of sound.
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
JContainer< std::vector< JHydrophone > > hydrophones_container
Auxiliary wrapper for I/O of container with optional comment (see JComment).
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
set_variable E_E log10(E_{fit}/E_{#mu})"
JPosition3D getPosition(const Vec &pos)
Get position.
JTreeWriter object output.
JContainer< std::vector< JTripod > > tripods_container
static const JStringCounter getNumberOfStrings
Function object to count unique strings.
Implementation for depth dependend velocity of sound.
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
JTreeWriter< T > & getTreeWriter()
Get TreeWriter.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
General purpose class for object reading from a list of file names.
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
Data structure for measured coincidence rates of all pairs of PMTs in optical module.
JEvt getEvt(const JHead &header, const JModel &model)
Get event.
Object reading from a list of files.
const JLimit & getLimit() const
Get limit.
do set_variable DETECTOR_TXT $WORKDIR detector
int getID() const
Get emitter identifier.
Acoustic transmission identifier.
Template definition of fit function of acoustic model.
#define DEBUG(A)
Message macros.