56{
   60 
   62  JLimit_t&      numberOfEvents = inputFile.getLimit();
 
   64  string         detectorFile;
   65  double         Tmax_ns;
   66  double         ctMin;
   68 
   69  try { 
   70 
   71    JParser<> zap(
"Example program to determine time slewing of L1 hits.");
 
   72    
   80    
   81    zap(argc, argv);
   82  }
   83  catch(const exception& error) {
   84    FATAL(error.what() << endl);
 
   85  }
   86 
   87 
   89 
   90  try {
   92  }
   95  }
   96 
   98 
  100 
  102 
  103 
  105 
  107 
  108  const int    nx   = 100;
  109  const double xmin = -25.0;   
 
  110  const double xmax = +25.0;   
 
  111 
  113      
  114    ostringstream os;
  115    
  116    os << "M[" << setfill('0') << setw(2) << i << "]";
  117    
  118    H1D.push_back(new TH1D(os.str().c_str(), NULL, nx, xmin, xmax));
  119  }
  120 
  121 
  124 
  125  JSuperFrame2D <JHit>       buffer;     
  128 
  129 
  131 
  133 
  135 
  137    const Evt*       
event = ps;
 
  138    
  140        
  141    vector<Trk>::const_iterator muon = find_if(event->mc_trks.begin(), event->mc_trks.end(), 
is_muon);
 
  142 
  143    if (muon != event->mc_trks.end()) {
  144 
  145      
  146 
  148 
  149      JDataL0_t dataL0;
  150      JDataL2_t dataL2;
  151 
  152      buildL0(*tev, router, true, back_inserter(dataL0));
  153      buildL2(*tev, router, true, back_inserter(dataL2));
  154 
  155      
  156 
  158      
  159      dataL2.erase(unique(dataL2.begin(), dataL2.end(), equal_to<JDAQModuleIdentifier>()), dataL2.end());
  160 
  161      for (JDataL0_t::const_iterator hit = dataL0.begin(); hit != dataL0.end(); ++hit) {
  162        
  163        const double t0    = trk.
getT(*hit);
 
  164        const double t1    = converter.getTime(hit->getT());
  165        
  166        H1D[1]->Fill(t1 - t0);
  167      }
  168      
  169 
  170      for (JDataL2_t::const_iterator hit = dataL2.begin(); hit != dataL2.end(); ++hit) {
  171 
  172        const double t0    = trk.
getT(*hit);
 
  173        const double t1    = converter.getTime(hit->begin()->getT());
  174        const size_t index = min(hit->size(), H1D.size() - 1);
  175        
  176        H1D[index]->Fill(t1 - t0);
  177      }
  178    }
  179  }
  181 
  182 
  183  TF1 
f1(
"f1", 
"[0]*exp(-0.5*(x-[1])*(x-[1])/([2]*[2])) + [3]");
 
  184 
  185  string option = "LL";
  186 
  188    option += "Q";
  189  }
  190 
  191 
  193 
  194    
  195    
  196    Double_t ymax  = 0.0;
  197    Double_t x0    = 0.0;    
  198    Double_t 
sigma = 2.0;    
 
  199    Double_t ymin  = 0.0;
  200    
  201    for (int i = 1; i != (*h1)->GetNbinsX(); ++i) {
  202      
  203      const Double_t 
x = (*h1)->GetBinCenter (i);
 
  204      const Double_t 
y = (*h1)->GetBinContent(i);
 
  205      
  206      if (y > ymax) {
  209      }
  210    }
  211    
  212    f1.SetParameter(0, ymax);
 
  213    f1.SetParameter(1, x0);
 
  214    f1.SetParameter(2, sigma);
 
  215    f1.FixParameter(3, ymin);
 
  216 
  217    for (Int_t i = 0; i != 
f1.GetNpar(); ++i) {
 
  218      f1.SetParError(i, 0.0);
 
  219    }
  220    
  221    
  222    
  223    
  224    (*h1)->Fit(&f1, option.c_str(), "same", x0 - 3 * sigma, x0 + 3 * sigma);
  225    
  226 
  227    cout << 
"\tt0.push_back(" << showpos << 
FIXED(4,2) << 
f1.GetParameter(1) << 
");" << endl;
 
  228  }
  229 
  230  out.Write();
  231  out.Close();
  232}
#define DEBUG(A)
Message macros.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Router for direct addressing of module data in detector data structure.
 
double getT(const JVector3D &pos) const
Get arrival time of Cherenkov light at given position.
 
Utility class to parse command line options.
 
counter_type getCounter() const
Get counter.
 
Auxiliary class to convert DAQ hit time to/from Monte Carlo hit time.
 
const JPolynome f1(1.0, 2.0, 3.0)
Function.
 
JTrack3E getTrack(const Trk &track)
Get track.
 
JPosition3D getPosition(const Vec &pos)
Get position.
 
bool is_muon(const Trk &track)
Test whether given track is a (anti-)muon.
 
Vec getOffset(const JHead &header)
Get offset.
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
 
bool timeSorter(const JHit_t &first, const JHit_t &second)
Compare two hits by weight.
 
KM3NeT DAQ data structures and auxiliaries.
 
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
 
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
 
Auxiliary data structure for floating point format specification.
 
General purpose class for multiple pointers.
 
Auxiliary class for defining the range of iterations of objects.
 
static counter_type max()
Get maximum counter value.
 
Auxiliary class to synchronously read DAQ events and Monte Carlo events (and optionally other events)...
 
virtual bool hasNext() override
Check availability of next element.
 
virtual const multi_pointer_type & next() override
Get next element.
 
Data structure for L2 parameters.
 
The Vec class is a straightforward 3-d vector, which also works in pyroot.