75 int main(
int argc,
char **argv)
88 transmitters_container transmitters;
94 JParser<> zap(
"Example program to monitor acoustic events.");
96 zap[
'f'] =
make_field(inputFile,
"output of JAcousticEventBuilder[.sh]");
97 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
107 catch(
const exception &error) {
108 FATAL(error.what() << endl);
124 for (JDetector::const_iterator i =
detector.begin(); i !=
detector.end(); ++i) {
125 receivers[i->getID()] = JModule_t(i->getLocation(), i->getPosition());
128 for (tripods_container::const_iterator i =
tripods.begin(); i !=
tripods.end(); ++i) {
129 emitters[i->getID()] = (i->getUTMPosition() -
detector.getUTMPosition());
132 for (transmitters_container::const_iterator i = transmitters.begin(); i != transmitters.end(); ++i) {
134 emitters[i->getID()] = (i->getPosition() +
detector.getModule(i->getLocation()).
getPosition());
136 catch(
const exception&) {
153 string.size(), -0.5,
string.size() - 0.5,
156 for (Int_t i = 1; i <= H2->GetXaxis()->GetNbins(); ++i) {
157 H2->GetXaxis()->SetBinLabel(i,
MAKE_CSTRING(
string.at(i-1)));
160 for (Int_t i = 1; i <= H2->GetYaxis()->GetNbins(); ++i) {
177 for (JTreeScanner_t::iterator event = in.begin();
event != in.end() && counter != inputFile.getLimit(); ++event, ++counter) {
179 if (counter%1000 == 0) {
180 STATUS(
"event " << setw(8) << counter <<
'\r');
DEBUG(endl);
183 const JEvent evt = *event;
187 for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
191 HA[evt.
getID()]->Fill((
double) evt.size());
195 HC[evt.
getID()]->Fill(
log10(evt.begin()->getToE() - toe[evt.
getID()]));
201 toe[evt.
getID()] = evt.begin()->getToE();
203 TH1D* hq = HQ[evt.
getID()];
204 TH2D* hr = HR[evt.
getID()];
205 TH1D* h1 = H1[evt.
getID()];
206 TH2D* h2 = H2[evt.
getID()];
207 TH2D* h3 = H3[evt.
getID()];
209 for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
210 hq->Fill(
log10(i->getQ()));
213 if (emitters.has(evt.
getID())) {
217 for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
218 if (receivers.has(i->getID())) {
227 for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
228 buffer[i->getID()].insert(i->getQ());
231 for (
map<
int,
set<double> >::const_iterator i = buffer.begin(); i != buffer.end(); ++i) {
233 h1->Fill((
double) i->second.size());
235 if (receivers.has(i->first)) {
237 const JLocation& location = receivers[i->first];
241 if (i->second.size() >= 2
u) {
253 out << HA << HB << HC << HD << HE << HQ << HR << *HR << H1 << H2 << H3;
Utility class to parse command line options.
int getOverlays() const
Get overlays.
Q(UTCMax_s-UTCMin_s)-livetime_s
int main(int argc, char *argv[])
int getFloor() const
Get floor number.
General purpose class for hash map of unique elements.
ROOT TTree parameter settings.
#define MAKE_CSTRING(A)
Make C-string.
General purpose class for a hash collection of unique elements.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Long64_t counter_type
Type definition for counter.
Dynamic ROOT object management.
double getDistance(const JVector3D &pos) const
Get distance to point.
Template definition for direct access of elements in ROOT TChain.
Data structure for detector geometry and calibration.
Auxiliary class for defining the range of iterations of objects.
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
I/O formatting auxiliaries.
Data structure for transmitter.
Logical location of module.
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})"
const array_type< JValue_t > & make_array(const JValue_t(&array)[N])
Method to create array of values.
JPosition3D getPosition(const Vec &pos)
Get position.
void Write(TDirectory &out, const bool wm=false)
Write objects to file.
int getIndex()
Get index for user I/O manipulation.
General purpose messaging.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
Base class for JTreeScanner.
int getString() const
Get string number.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
Auxiliary class to define a range between two values.
Utility class to parse command line options.
const JLimit & getLimit() const
Get limit.
Data structure for position in three dimensions.
do set_variable DETECTOR_TXT $WORKDIR detector
int getID() const
Get identifier.
Data structure for tripod.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] 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
#define DEBUG(A)
Message macros.