44int main(
int argc,
char **argv)
51 JLimit_t& numberOfEvents = inputFile.getLimit();
55 int numberOfTimeslices;
57 double binWidth_min_timeEvolution;
63 JParser<> zap(
"Example program to search for out of sync shifts around integral timeslices evolving over time.");
70 zap[
'N'] =
make_field(numberOfTimeslices) = 40;
72 zap[
'M'] =
make_field(binWidth_min_timeEvolution) = 2;
78 catch(
const exception& error) {
79 FATAL(error.what() << endl);
86 const int WR = 0x80000000;
88 MASK[808969848] = 0x00000020;
89 MASK[809544061] = 0x00000080;
90 MASK[808432835] = 0x00004000;
109 vector <hit_type> data;
117 if (selector ==
"") {
125 FATAL(
"No timeslice data." << endl);
128 NOTICE(
"Selected class " << ps->getClassName() << endl);
134 ps->configure(inputFile);
140 const Double_t ymin = -(numberOfTimeslices + 0.5);
141 const Double_t ymax = +(numberOfTimeslices + 0.5);
142 const Int_t ny = (Int_t) (ymax - ymin);
144 const Double_t xmin = inputFile.getLimit().min()*
getFrameTime()*1e-9;
145 const Double_t xmax = min(inputFile.getLimit().max(), ps->getEntries())*
getFrameTime()*1e-9;
146 const Int_t nx = (Int_t) ((xmax - xmin) / (60*binWidth_min_timeEvolution)) + 1;
148 JManager_t manager(
new TH2D(
"M2D_%",
";time [s];shift [timeslices]", nx, xmin, xmax, ny, ymin, ymax));
156 STATUS(
"event: " << setw(10) << in.getCounter() <<
'\r');
DEBUG(endl);
171 buffer[
event->getFrameIndex()].push_back(t0);
176 while (ps->hasNext()) {
178 STATUS(
"event: " << setw(10) << ps->getCounter() <<
'\r');
DEBUG(endl);
182 map_type::const_iterator p = buffer.lower_bound(timeslice->
getFrameIndex() - numberOfTimeslices);
183 map_type::const_iterator q = buffer.upper_bound(timeslice->
getFrameIndex() + numberOfTimeslices);
185 int number_of_events = 0;
187 for (map_type::const_iterator i = p; i != q; ++i) {
188 number_of_events += i->second.size();
191 if (number_of_events == 0) {
195 for (JDAQTimeslice::const_iterator frame = timeslice->begin(); frame != timeslice->end(); ++frame) {
199 if ((frame->getStatus() & ~MASK[frame->getModuleID()] & ~WR) == 0) {
203 buildL1(*frame, router.
getModule(frame->getModuleID()), back_inserter(data));
205 TH2D* h2 = manager[frame->getModuleID()];
207 for (vector<hit_type>::const_iterator hit = data.begin(); hit != data.end(); ++hit) {
209 const double t1 = *hit + frame->getFrameIndex() *
getFrameTime();
211 for (map_type::const_iterator i = p; i != q; ++i) {
212 for (map_type::mapped_type::const_iterator
j = i->second.begin();
j != i->second.end(); ++
j) {
214 const double t0 = *
j;
218 if ( abs(timeFromInt)*
getFrameTime() < binWidth_ns/2. ){