118   using namespace MONITORL1DT;
 
  124   double             Timewindow_ns;
 
  128   unsigned int       multiplicity;
 
  135     JParser<> zap(
"Program to create L1 hit time difference histograms from raw data.");
 
  137     zap[
'f'] = 
make_field(inputFile,     
"input file");
 
  139     zap[
'a'] = 
make_field(detectorFile,  
"detector file");
 
  140     zap[
't'] = 
make_field(TmaxL1_ns,     
"max time between L1 hits [ns]")               = 1000.0;
 
  141     zap[
'T'] = 
make_field(Timewindow_ns, 
"time window around t=0 [ns]")                 = 2400.0;
 
  142     zap[
'w'] = 
make_field(binwidth,      
"binwidth [ns]")                               = 1;
 
  143     zap[
'C'] = 
make_field(selector,      
"datastream selector")                         = getROOTClassSelection<JDAQTimesliceTypes_t>();
 
  144     zap[
'm'] = 
make_field(multiplicity,  
"minimal multiplicity of the L1 hits")         = 2;
 
  145     zap[
'c'] = 
make_field(correct_time,  
"subtract expected arrival time from delta-t");
 
  149     if (zap.read(argc, argv) != 0)
 
  152   catch(
const exception &error) {
 
  153     FATAL(error.what() << endl);
 
  167     FATAL(
"Empty detector." << endl);
 
  174   const double ctMin = -1; 
 
  181   const double xmin = -0.5;
 
  182   const double xmax = nx - 0.5;
 
  184   const double ymin = -floor(Timewindow_ns) + 0.5;
 
  185   const double ymax = +floor(Timewindow_ns) + 0.5; 
 
  186   const int    ny   = (int) ((ymax - ymin) / binwidth);
 
  191   Int_t npairs = 
c.getNumberOfPairs();
 
  195   manager = 
new JManager <int, TH2D>(
new TH2D(
"h%", 
"", npairs, 0.5, npairs+0.5, ny, ymin, ymax));
 
  197   NOTICE(
"Running JMonitorL1dt: Monitoring L1 time differences and creating histograms." << endl);
 
  198   for (JDetector::iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  200     const JModuleAddress& address = router.getAddress(module->getID());
 
  202     STATUS(
"Booking histograms for module " << module->getID() << endl);
 
  204     const JString title(module->getID());
 
  207     titleString1D = title + 
".1L";
 
  208     titleString2D = title + 
".2S";
 
  211         new TH1D((titleString1D).c_str(), NULL, nx, 
xmin, 
xmax));
 
  213     for (JDetector::iterator mod = 
detector.begin(); mod != 
detector.end(); ++mod) {
 
  214       zmap[address.
first].h2s->GetXaxis()->SetBinLabel(
distance(
detector.begin(), mod)+1, Form(
"%i", mod->getID()));
 
  215       zmap[address.
first].h1l->GetXaxis()->SetBinLabel(
distance(
detector.begin(), mod)+1, Form(
"%i", mod->getID()));
 
  226   for ( ; 
in.hasNext() && counter != inputFile.getLimit(); ++counter) {
 
  228     STATUS(
"event: " << setw(10) << counter << 
'\r'); 
DEBUG(endl);
 
  236     for (JDAQTimeslice::const_iterator super_frame = timeslice->begin(); super_frame != timeslice->end(); ++super_frame) {
 
  237       if (router.hasModule(super_frame->getModuleID()) && !super_frame->empty()) {
 
  239         const JModuleAddress& address  = router.getAddress(super_frame->getModuleID());
 
  244         buildL2(*super_frame, module, back_inserter(frameL1));
 
  246         for (JFrameL1_t::iterator L1hit = frameL1.begin(); L1hit != frameL1.end(); ++L1hit) {
 
  247           buffer.push_back(
JElement(address.
first, L1hit->begin()->getT()));
 
  253       if (!DOM_OK[
distance(zmap.begin(), h1)]) { 
 
  256       for (
unsigned int i = 0; 
i < 
detector.size(); ++
i) {
 
  262     sort(buffer.begin(), buffer.end());
 
  269       while (++q != buffer.end() && q->t - p->t <= Timewindow_ns ) {
 
  275         double time_correction = (correct_time ? (dom_distance / 
getSpeedOfLight()) : 0);
 
  277         zmap[p->id].h2s->Fill(q->id, q->t - p->t - time_correction);
 
  278         zmap[q->id].h2s->Fill(p->id, p->t - q->t + time_correction);
 
  283           (*manager)[module_p.
getString()]->Fill(xbin, q->t - p->t - time_correction);
 
  296       for (
int ibin = 1; ibin <= hl->GetNbinsX(); ++ibin) {
 
  298         hl->SetBinError(ibin, 0.0000001);
 
Utility class to parse command line options. 
 
Wrapper class around STL string class. 
 
int getFloor() const 
Get floor number. 
 
Data structure for a composite optical module. 
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance. 
 
Auxiliary class to select ROOT class based on class name. 
 
Router for direct addressing of module data in detector data structure. 
 
Auxiliary class for multiplexing object iterators. 
 
double getDistance(const JFirst_t &first, const JSecond_t &second)
Get distance between objects. 
 
int first
index of module in detector data structure 
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
Data structure for hit time and DOM identifier. 
 
double getFrameTime()
Get frame time duration. 
 
int getNumberOfFloors(const JDetector &detector)
Get number of floors. 
 
Address of module in detector data structure. 
 
const JPosition3D & getPosition() const 
Get position. 
 
Data structure for L2 parameters. 
 
$WORKDIR ev_configure_dqsimulator txt echo process $DQ_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DQ_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
 
int getString() const 
Get string number. 
 
const double getSpeedOfLight()
Get speed of light. 
 
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
 
bool comparepair(const pair_type &A, const pair_type &B)
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
#define DEBUG(A)
Message macros.