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");
 
  146     zap[
'L'] = 
make_field(livetime_s,    
"livetime of the data, set to positive value") = -1.0; 
 
  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) {
 
  257         if (DOM_OK[i]) { h1->h1l->Fill(i, 
getFrameTime() * 1e-9); } 
 
  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);
 
  282           int xbin = c.getIndex(module_p.
getFloor() - 1, module_q.
getFloor() - 1) + 1;
 
  283           (*manager)[module_p.
getString()]->Fill(xbin, q->t - p->t - time_correction);
 
  293   if (livetime_s > 0.0) {
 
  296       for (
int ibin = 1; ibin <= hl->GetNbinsX(); ++ibin) {
 
  297         hl->SetBinContent(ibin, livetime_s);
 
  298         hl->SetBinError(ibin, 0.0000001);
 
#define DEBUG(A)
Message macros.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
 
int getFloor() const
Get floor number.
 
int getString() const
Get string number.
 
Address of module in detector data structure.
 
int first
index of module in detector data structure
 
Router for direct addressing of module data in detector data structure.
 
Data structure for a composite optical module.
 
const JPosition3D & getPosition() const
Get position.
 
Auxiliary class for multiplexing object iterators.
 
Wrapper class around STL string class.
 
Utility class to parse command line options.
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
 
void Write(TDirectory &out, const bool wm=false)
Write objects to file.
 
General purpose class for object reading from a list of file names.
 
Data structure for hit time and DOM identifier.
 
int getNumberOfFloors(const JDetector &detector)
Get number of floors.
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
 
double getDistance(const JFirst_t &first, const JSecond_t &second)
Get distance between objects.
 
const double getSpeedOfLight()
Get speed of light.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
double getFrameTime()
Get frame time duration.
 
bool comparepair(const pair_type &A, const pair_type &B)
 
Auxiliary class to select ROOT class based on class name.
 
Data structure for L2 parameters.