59 using namespace KM3NETDAQ;
71 JParser<> zap(
"Example program to determine time slewing of L1 hits.");
76 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
83 catch(
const exception& error) {
84 FATAL(error.what() << endl);
109 const double xmin = -25.0;
110 const double xmax = +25.0;
116 os <<
"M[" << setfill(
'0') << setw(2) <<
i <<
"]";
118 H1D.push_back(
new TH1D(os.str().c_str(), NULL, nx,
xmin,
xmax));
130 while (inputFile.hasNext()) {
132 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
137 const Evt*
event = ps;
143 if (muon != event->mc_trks.end()) {
152 buildL0(*tev, router,
true, back_inserter(dataL0));
153 buildL2(*tev, router,
true, back_inserter(dataL2));
157 sort(dataL2.begin(), dataL2.end(), timeSorter<JHitL2>);
159 dataL2.erase(unique(dataL2.begin(), dataL2.end(), equal_to<JDAQModuleIdentifier>()), dataL2.end());
161 for (JDataL0_t::const_iterator hit = dataL0.begin(); hit != dataL0.end(); ++hit) {
163 const double t0 = trk.
getT(*hit);
164 const double t1 = converter.getTime(hit->getT());
166 H1D[1]->Fill(t1 - t0);
170 for (JDataL2_t::const_iterator hit = dataL2.begin(); hit != dataL2.end(); ++hit) {
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);
176 H1D[index]->Fill(t1 - t0);
183 TF1
f1(
"f1",
"[0]*exp(-0.5*(x-[1])*(x-[1])/([2]*[2])) + [3]");
185 string option =
"LL";
198 Double_t
sigma = 2.0;
201 for (
int i = 1; i != (*h1)->GetNbinsX(); ++
i) {
203 const Double_t
x = (*h1)->GetBinCenter (i);
204 const Double_t
y = (*h1)->GetBinContent(i);
212 f1.SetParameter(0, ymax);
213 f1.SetParameter(1, x0);
214 f1.SetParameter(2, sigma);
215 f1.FixParameter(3, ymin);
217 for (Int_t i = 0; i !=
f1.GetNpar(); ++
i) {
218 f1.SetParError(i, 0.0);
224 (*h1)->Fit(&
f1, option.c_str(),
"same", x0 - 3 *
sigma, x0 + 3 *
sigma);
227 cout <<
"\tt0.push_back(" << showpos <<
FIXED(4,2) <<
f1.GetParameter(1) <<
");" << endl;
Utility class to parse command line options.
Vec getOffset(const JHead &header)
Get offset.
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)...
Auxiliary class to convert DAQ hit time to/from Monte Carlo hit time.
Auxiliary data structure for floating point format specification.
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
const JPolynome f1(1.0, 2.0, 3.0)
Function.
Auxiliary class for defining the range of iterations of objects.
The Vec class is a straightforward 3-d vector, which also works in pyroot.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Template specialisation of L2 builder for JHitL2 data type.
JPosition3D getPosition(const Vec &pos)
Get position.
double getT(const JVector3D &pos) const
Get arrival time of Cherenkov light at given position.
Data structure for L2 parameters.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
2-dimensional frame with time calibrated data from one optical module.
const JLimit & getLimit() const
Get limit.
do set_variable DETECTOR_TXT $WORKDIR detector
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.