52 int main(
int argc,
char **argv)
59 JLimit_t& numberOfEvents = inputFile.getLimit();
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));
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;