13 #include "evt/Head.hh"
52 int main(
int argc,
char **argv)
58 JTriggeredFileScanner<> inputFile;
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);
91 load(detectorFile, detector);
93 catch(
const JException& error) {
97 const JModuleRouter router(detector);
99 detector -= get<JPosition3D>(
getHeader(inputFile));
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));
123 JSuperFrame2D <JHit> buffer;
124 const JBuildL0<JHitL0> buildL0;
125 const JBuildL2<JHitL2> buildL2(JL2Parameters(2, Tmax_ns, ctMin));
128 while (inputFile.hasNext()) {
130 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
132 JTriggeredFileScanner<>::multi_pointer_type ps = inputFile.next();
135 const Evt*
event = ps;
137 const JTimeConverter converter(*event, *tev);
141 if (muon != event->mc_trks.end()) {
145 const JTrack3D trk =
getTrack(*muon);
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;