56 using namespace KM3NETDAQ;
68 JParser<> zap(
"Example program to determine time slewing of L1 hits.");
73 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
80 catch(
const exception& error) {
81 FATAL(error.what() << endl);
107 const double xmin = -25.0;
108 const double xmax = +25.0;
114 os <<
"M[" << setfill(
'0') << setw(2) << i <<
"]";
116 H1D.push_back(
new TH1D(os.str().c_str(), NULL, nx, xmin, xmax));
128 while (inputFile.hasNext()) {
130 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
135 const Evt*
event = ps;
141 if (muon != event->mc_trks.end()) {
150 buildL0(*tev, router,
true, back_inserter(dataL0));
151 buildL2(*tev, router,
true, back_inserter(dataL2));
155 sort(dataL2.begin(), dataL2.end(), timeSorter<JHitL2>);
157 dataL2.erase(unique(dataL2.begin(), dataL2.end(), equal_to<JDAQModuleIdentifier>()), dataL2.end());
159 for (JDataL0_t::const_iterator hit = dataL0.begin(); hit != dataL0.end(); ++hit) {
161 const double t0 = trk.
getT(*hit);
162 const double t1 = converter.getTime(hit->getT());
164 H1D[1]->Fill(t1 - t0);
168 for (JDataL2_t::const_iterator hit = dataL2.begin(); hit != dataL2.end(); ++hit) {
170 const double t0 = trk.
getT(*hit);
171 const double t1 = converter.getTime(hit->begin()->getT());
172 const size_t index = min(hit->size(), H1D.size() - 1);
174 H1D[index]->Fill(t1 - t0);
181 TF1 f1(
"f1",
"[0]*exp(-0.5*(x-[1])*(x-[1])/([2]*[2])) + [3]");
183 string option =
"LL";
196 Double_t sigma = 2.0;
199 for (
int i = 1; i != (*h1)->GetNbinsX(); ++i) {
201 const Double_t x = (*h1)->GetBinCenter (i);
202 const Double_t y = (*h1)->GetBinContent(i);
210 f1.SetParameter(0, ymax);
211 f1.SetParameter(1, x0);
212 f1.SetParameter(2, sigma);
213 f1.FixParameter(3, ymin);
218 (*h1)->Fit(&f1, option.c_str(),
"same", x0 - 3 * sigma, x0 + 3 * sigma);
221 cout <<
"\tt0.push_back(" << showpos <<
FIXED(4,2) << f1.GetParameter(1) <<
");" << endl;
Utility class to parse command line options.
JTrack3E getTrack(const Trk &track)
Get track.
Template specialisation of L0 builder for JHitL0 data type.
bool is_muon(const Trk &track)
Test whether given track is a (anti-)muon.
Router for direct addressing of module data in detector data structure.
Auxiliary class to synchronously read DAQ events and Monte Carlo events (and optionally other events)...
then for HISTOGRAM in h0 h1
Auxiliary data structure for floating point format specification.
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
Auxiliary class for defining the range of iterations of objects.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Template specialisation of L2 builder for JHitL2 data type.
void load(const JString &file_name, JDetector &detector)
Load detector from input file.
double getT(const JVector3D &pos) const
Get arrival time of Cherenkov light at given position.
Data structure for L2 parameters.
2-dimensional frame with time calibrated data from one optical module.
Auxiliary class to convert DAQ/trigger hit time to/from Monte Carlo hit time.
const JLimit & getLimit() const
Get limit.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
General purpose class for multiple pointers.
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
#define DEBUG(A)
Message macros.