266
void ReduceCppTracker::compute_stations_efficiencies(Json::Value root) {
267
int n_events = root["recon_events"].size();
269
for ( int event_i = 0; event_i < n_events; event_i++ ) {
270
if ( root["recon_events"][event_i]["sci_fi_event"]
271
["sci_fi_space_points"]["tracker0"].isNull() )
273
Json::Value spacepoints = JsonWrapper::GetProperty(
274
root["recon_events"][event_i]["sci_fi_event"]["sci_fi_space_points"],
276
JsonWrapper::arrayValue);
278
int numb_spacepoints = spacepoints.size();
279
for ( int sp_j = 0; sp_j < numb_spacepoints; sp_j++ ) {
280
// looping over spacepoints in an event.
281
bool plane_0_is_hit = false;
282
bool plane_1_is_hit = false;
283
bool plane_2_is_hit = false;
284
double chan_0 = -10.;
285
double chan_1 = -10.;
286
double chan_2 = -10.;
288
int numb_clusters = spacepoints[sp_j]["channels"].size();
289
for ( int clust_k = 0; clust_k < numb_clusters; ++clust_k ) {
290
if ( spacepoints[sp_j]["channels"][clust_k]["plane_number"].asInt() == 0 ) {
291
plane_0_is_hit = true;
292
chan_0 = spacepoints[sp_j]["channels"][clust_k]["channel_number"].asDouble();
294
if ( spacepoints[sp_j]["channels"][clust_k]["plane_number"].asInt() == 1 ) {
295
plane_1_is_hit = true;
296
chan_1 = spacepoints[sp_j]["channels"][clust_k]["channel_number"].asDouble();
298
if ( spacepoints[sp_j]["channels"][clust_k]["plane_number"].asInt() == 2 ) {
299
plane_2_is_hit = true;
300
chan_2 = spacepoints[sp_j]["channels"][clust_k]["channel_number"].asDouble();
303
// Plane 0 efficiencies.
304
if ( plane_1_is_hit && plane_2_is_hit ) {
305
_plane_0_counter += 1;
306
if ( plane_0_is_hit ) {
308
_plane_0_map[static_cast<int>(chan_0+0.5)][0] += 1;
309
_plane_0_map[static_cast<int>(chan_0+0.5)][1] += 1;
311
int chan = 318-chan_1-chan_2;
312
_plane_0_map[chan][1] += 1;
315
// Plane 1 efficiencies.
316
if ( plane_0_is_hit && plane_2_is_hit ) {
317
_plane_1_counter += 1;
318
if ( plane_1_is_hit ) {
320
_plane_1_map[static_cast<int>(chan_1+0.5)][0] += 1;
321
_plane_1_map[static_cast<int>(chan_1+0.5)][1] += 1;
323
int chan = 318-chan_0-chan_2;
324
_plane_1_map[chan][1] += 1;
327
// Plane 2 efficiencies.
328
if ( plane_0_is_hit && plane_1_is_hit ) {
329
_plane_2_counter += 1;
330
if ( plane_2_is_hit ) {
332
_plane_2_map[static_cast<int>(chan_2+0.5)][0] += 1;
333
_plane_2_map[static_cast<int>(chan_2+0.5)][1] += 1;
335
int chan = 318-chan_0-chan_1;
336
_plane_2_map[chan][1] += 1;
225
bool ReduceCppTracker::is_good_event() {
226
int numb_spacepoints = json_spacepoints.size();
227
bool st1_tracker0 = false;
228
bool st5_tracker0 = false;
229
bool st1_tracker1 = false;
230
bool st5_tracker1 = false;
231
for ( int sp_i = 0; sp_i < numb_spacepoints; ++sp_i ) {
232
int tracker = json_spacepoints[sp_i]["tracker"].asInt();
233
int station = json_spacepoints[sp_i]["station"].asInt();
234
if ( station == 1 && tracker == 0 ) st1_tracker0 = true;
235
if ( station == 5 && tracker == 0 ) st5_tracker0 = true;
236
if ( station == 1 && tracker == 1 ) st1_tracker1 = true;
237
if ( station == 5 && tracker == 1 ) st5_tracker1 = true;
239
if ( st1_tracker0 && st5_tracker0 ) {
240
_this_is_tracker0_event = true;
241
} else if ( st1_tracker1 && st5_tracker1 ) {
242
_this_is_tracker1_event = true;
245
if ( _this_is_tracker0_event || _this_is_tracker1_event ) {
252
void ReduceCppTracker::merge_tracker_events(Json::Value &event) {
253
// --------------------------------------------------------------
257
Json::Value digits = event["sci_fi_event"]["sci_fi_digits"];
258
if ( digits.isMember("tracker0") && !digits["tracker0"].isNull() ) {
259
json_digits = JsonWrapper::GetProperty(digits,
261
JsonWrapper::arrayValue);
263
if ( digits.isMember("tracker1") && !digits["tracker1"].isNull() ) {
264
Json::Value tracker1_digits = JsonWrapper::GetProperty(digits,
266
JsonWrapper::arrayValue);
267
for ( unsigned int idig = 0; idig < tracker1_digits.size(); ++idig ) {
268
json_digits[json_digits.size()] = tracker1_digits[idig];
271
// --------------------------------------------------------------
275
Json::Value clusters = event["sci_fi_event"]["sci_fi_clusters"];
276
if ( clusters.isMember("tracker0") && !clusters["tracker0"].isNull() ) {
277
json_clusters = JsonWrapper::GetProperty(clusters,
279
JsonWrapper::arrayValue);
281
if ( clusters.isMember("tracker1") && !clusters["tracker1"].isNull() ) {
282
Json::Value tracker1_clusters = JsonWrapper::GetProperty(clusters,
284
JsonWrapper::arrayValue);
285
for ( unsigned int iclust = 0; iclust < tracker1_clusters.size(); ++iclust ) {
286
json_clusters[json_clusters.size()] = tracker1_clusters[iclust];
289
// --------------------------------------------------------------
291
// Collect spacepoints.
293
Json::Value spacepoints = event["sci_fi_event"]["sci_fi_space_points"];
294
if ( spacepoints.isMember("tracker0") && !spacepoints["tracker0"].isNull() ) {
295
json_spacepoints = JsonWrapper::GetProperty(spacepoints,
297
JsonWrapper::arrayValue);
299
if ( spacepoints.isMember("tracker1") && !spacepoints["tracker1"].isNull() ) {
300
Json::Value tracker1_spacepoints = JsonWrapper::GetProperty(spacepoints,
302
JsonWrapper::arrayValue);
303
for ( unsigned int i_sp = 0; i_sp < tracker1_spacepoints.size(); ++i_sp ) {
304
json_spacepoints[json_spacepoints.size()] = tracker1_spacepoints[i_sp];
307
// --------------------------------------------------------------
308
// std::cerr << "Sizes: " << json_digits.size() << " "
309
// << json_clusters.size() << " " << json_spacepoints.size() << std::endl;
312
void ReduceCppTracker::show_efficiency() {
313
int numb_spacepoints = json_spacepoints.size();
315
bool station_hit[2][6] = { {false, false, false, false, false, false},
316
{false, false, false, false, false, false}};
318
for ( int sp_i = 0; sp_i < numb_spacepoints; sp_i++ ) {
319
// Fill station number.
320
int tracker = json_spacepoints[sp_i]["tracker"].asInt();
321
int station = json_spacepoints[sp_i]["station"].asInt();
322
// _station = station;
324
station_hit[tracker][station]=true;
327
std::string type = json_spacepoints[sp_i][sp_i]["type"].asString();
328
if ( type == "triplet" ) {
331
if ( type == "duplet" ) {
335
// _x = spacepoints_tracker0[sp_i]["position"]["x"].asDouble();
336
// _y = spacepoints_tracker0[sp_i]["position"]["y"].asDouble();
337
// _z = spacepoints_tracker0[sp_i]["position"]["z"].asDouble();
338
// _spacepoints.Fill();
341
for ( int tr = 0; tr < 2; ++tr ) {
342
if ( station_hit[tr][1] && station_hit[tr][3] ) {
343
if ( station_hit[tr][2] ) {
344
map_stations_total[tr][2] += 1;
345
map_stations_hits[tr][2] += 1;
347
map_stations_total[tr][2] += 1;
350
if ( station_hit[tr][2] && station_hit[tr][4] ) {
351
if ( station_hit[tr][3] ) {
352
map_stations_total[tr][3] += 1;
353
map_stations_hits[tr][3] += 1;
355
map_stations_total[tr][3] += 1;
358
if ( station_hit[tr][3] && station_hit[tr][5] ) {
359
if ( station_hit[tr][4] ) {
360
map_stations_total[tr][4] += 1;
361
map_stations_hits[tr][4] += 1;
363
map_stations_total[tr][4] += 1;
369
for ( int tr = 0; tr < 2; tr++ ) {
371
if ( station_hit[tr][1] && station_hit[tr][5] ) {
372
for ( int i = 2; i < 5; i++ ) {
373
if ( station_hit[tr][i] )
376
_station_hits = hit_counter+2;
384
void ReduceCppTracker::compute_stations_efficiencies() {
385
int numb_spacepoints = json_spacepoints.size();
386
for ( int sp_j = 0; sp_j < numb_spacepoints; sp_j++ ) {
387
// looping over spacepoints in an event.
388
bool plane_0_is_hit = false;
389
bool plane_1_is_hit = false;
390
bool plane_2_is_hit = false;
398
int tracker = json_spacepoints[sp_j]["tracker"].asInt();
399
int station = json_spacepoints[sp_j]["station"].asInt();
402
// Fibre efficiencies
404
int numb_clusters = json_spacepoints[sp_j]["channels"].size();
405
for ( int clust_k = 0; clust_k < numb_clusters; ++clust_k ) {
406
if ( json_spacepoints[sp_j]["channels"][clust_k]["plane_number"].asInt() == 0 ) {
407
plane_0_id = 15*tracker + 3*(station-1) + (0);
408
plane_0_is_hit = true;
409
chan_0 = json_spacepoints[sp_j]["channels"][clust_k]["channel_number"].asDouble();
411
if ( json_spacepoints[sp_j]["channels"][clust_k]["plane_number"].asInt() == 1 ) {
412
plane_1_id = 15*tracker + 3*(station-1) + (1);
413
plane_1_is_hit = true;
414
chan_1 = json_spacepoints[sp_j]["channels"][clust_k]["channel_number"].asDouble();
416
if ( json_spacepoints[sp_j]["channels"][clust_k]["plane_number"].asInt() == 2 ) {
417
plane_2_id = 15*tracker + 3*(station-1) + (2);
418
plane_2_is_hit = true;
419
chan_2 = json_spacepoints[sp_j]["channels"][clust_k]["channel_number"].asDouble();
422
// Plane 0 efficiencies.
423
if ( plane_1_is_hit && plane_2_is_hit ) {
424
if ( plane_0_is_hit ) {
425
_map_planes_total[plane_0_id][chan_0] += 1;
426
_map_planes_hit[plane_0_id][chan_0] += 1;
427
// _plane_0_map[static_cast<int>(chan_0+0.5)][0] += 1;
428
// _plane_0_map[static_cast<int>(chan_0+0.5)][1] += 1;
430
int chan = 318-chan_1-chan_2;
431
plane_0_id = 15*tracker + 3*(station-1) + (0);
432
_map_planes_total[plane_0_id][chan] += 1;
435
// Plane 1 efficiencies.
436
if ( plane_0_is_hit && plane_2_is_hit ) {
437
if ( plane_1_is_hit ) {
438
_map_planes_total[plane_1_id][chan_1] += 1;
439
_map_planes_hit[plane_1_id][chan_1] += 1;
441
int chan = 318-chan_0-chan_2;
442
plane_1_id = 15*tracker + 3*(station-1) + (1);
443
_map_planes_total[plane_1_id][chan] += 1;
446
// Plane 2 efficiencies.
447
if ( plane_0_is_hit && plane_1_is_hit ) {
448
if ( plane_2_is_hit ) {
449
_map_planes_total[plane_2_id][chan_2] += 1;
450
_map_planes_hit[plane_2_id][chan_2] += 1;
452
int chan = 318-chan_0-chan_1;
453
plane_2_id = 15*tracker + 3*(station-1) + (2);
454
_map_planes_total[plane_2_id][chan] += 1;
343
460
void ReduceCppTracker::draw_spacepoints(Json::Value root) {
344
462
int n_events = root["recon_events"].size();
346
// root["recon_events"][5]["sci_fi_event"]["sci_fi_space_points"]["single_station"][0];
347
// std::cerr << n_events << std::endl;
348
464
for ( int event_i = 0; event_i < n_events; event_i++ ) {
349
465
// Process tracker 0.
350
if ( root["recon_events"][event_i]["sci_fi_event"]
351
["sci_fi_space_points"]["tracker0"].isNull() ) continue;
352
466
Json::Value spacepoints_tracker0 = JsonWrapper::GetProperty(
353
467
root["recon_events"][event_i]["sci_fi_event"]["sci_fi_space_points"],
355
469
JsonWrapper::arrayValue);
356
// std::cerr << spacepoints.size() << std::endl;
470
if ( spacepoints_tracker0.isNull() ) continue;
357
471
int numb_spacepoints_tracker0 = spacepoints_tracker0.size();
358
472
for ( int sp_j = 0; sp_j < numb_spacepoints_tracker0; sp_j++ ) {
473
if ( spacepoints_tracker0[sp_j].isNull() ) continue;
359
474
_x = spacepoints_tracker0[sp_j]["position"]["x"].asDouble();
360
475
_y = spacepoints_tracker0[sp_j]["position"]["y"].asDouble();
361
476
_z = spacepoints_tracker0[sp_j]["position"]["z"].asDouble();
362
477
_pe = spacepoints_tracker0[sp_j]["npe"].asDouble();
363
_tracker_cop = spacepoints_tracker0[sp_j]["tracker"].asInt();
364
_station_cop = spacepoints_tracker0[sp_j]["station"].asInt();
478
_tracker_sp = spacepoints_tracker0[sp_j]["tracker"].asInt();
479
_station_sp = spacepoints_tracker0[sp_j]["station"].asInt();
365
480
std::string type = spacepoints_tracker0[sp_j]["type"].asString();
366
481
if ( type == "triplet" ) {
404
518
// std::string("SpacePoints branch is corrupted!"),
405
519
// "ReduceCppSingleStation::draw_spacepoints"));
409
void ReduceCppTracker::doublet_clusters_histograms(Json::Value root) {
410
int n_events = root["recon_events"].size();
412
for ( int event_i = 0; event_i < n_events; event_i++ ) {
413
if ( root["recon_events"][event_i]["sci_fi_event"]
414
["sci_fi_clusters"]["tracker0"].isNull() ) continue;
415
Json::Value clusters = JsonWrapper::GetProperty(
416
root["recon_events"][event_i]["sci_fi_event"]["sci_fi_clusters"],
418
JsonWrapper::arrayValue);
420
int numb_clusters = clusters.size();
423
for ( int clust_j = 0; clust_j < numb_clusters; clust_j++ ) {
424
_plane = clusters[clust_j]["plane"].asInt();
425
_channel = clusters[clust_j]["channel"].asDouble();
426
_npe = clusters[clust_j]["npe"].asDouble();
427
_doublet_clusters.Fill();
428
chan_sum += _channel;
430
_hist_plane0->Fill(_channel);
431
_npe_plane0->Fill(_npe);
432
} else if ( _plane == 1 ) {
433
_hist_plane1->Fill(_channel);
434
_npe_plane1->Fill(_npe);
435
} else if ( _plane == 2 ) {
436
_hist_plane2->Fill(_channel);
437
_npe_plane2->Fill(_npe);
440
_chan_sum->Fill(chan_sum);
443
// throw(Squeal(Squeal::recoverable,
444
// std::string("Digits branch is corrupted!"),
445
// "ReduceCppSingleStation::digits_histograms"));
449
void ReduceCppTracker::digits_histograms(Json::Value root) {
450
int n_events = root["recon_events"].size();
452
for ( int event_i = 0; event_i < n_events; event_i++ ) {
453
Json::Value tracker1 = root["recon_events"][event_i]["sci_fi_event"]
454
["sci_fi_digits"]["tracker1"];
455
// if ( tracker0.isNull() ) continue;
456
Json::Value digits = JsonWrapper::GetProperty(
457
root["recon_events"][event_i]["sci_fi_event"]["sci_fi_digits"],
459
JsonWrapper::arrayValue);
461
for ( unsigned int idig = 0; idig < tracker1.size(); ++idig ) {
462
digits[digits.size()] = tracker1[idig];
465
int numb_digits = digits.size();
468
for ( int digit_j = 0; digit_j < numb_digits; digit_j++ ) {
469
_tracker_dig = digits[digit_j]["tracker"].asInt();
470
_station_dig = digits[digit_j]["station"].asInt();
471
_plane_dig = digits[digit_j]["plane"].asInt();
472
_channel_dig = digits[digit_j]["channel"].asDouble();
473
_npe_dig = digits[digit_j]["npe"].asDouble();
474
_adc_dig = digits[digit_j]["adc"].asInt();
475
_time = digits[digit_j]["time"].asDouble();
477
if ( _plane_dig == 0 ) {
524
void ReduceCppTracker::spacepoints_tree() {
525
Json::Value spacepoint_event = json_spacepoints;
526
int numb_spacepoints = spacepoint_event.size();
529
for ( int sp_j = 0; sp_j < numb_spacepoints; sp_j++ ) {
530
Json::Value a_spacepoint = spacepoint_event[sp_j];
531
if ( a_spacepoint.isNull() ) continue;
532
_x = a_spacepoint["position"]["x"].asDouble();
533
_y = a_spacepoint["position"]["y"].asDouble();
534
_z = a_spacepoint["position"]["z"].asDouble();
535
_pe = a_spacepoint["npe"].asDouble();
536
_tracker_sp = a_spacepoint["tracker"].asInt();
537
_station_sp = a_spacepoint["station"].asInt();
538
std::string type = a_spacepoint["type"].asString();
539
if ( type == "triplet" ) {
542
if ( type == "duplet" ) {
548
_hist_plane0->Fill(_channel);
549
_npe_plane0->Fill(_npe);
550
} else if ( _plane == 1 ) {
551
_hist_plane1->Fill(_channel);
552
_npe_plane1->Fill(_npe);
553
} else if ( _plane == 2 ) {
554
_hist_plane2->Fill(_channel);
555
_npe_plane2->Fill(_npe);
559
// _chan_sum->Fill(chan_sum);
562
// throw(Squeal(Squeal::recoverable,
563
// std::string("Digits branch is corrupted!"),
564
// "ReduceCppSingleStation::digits_histograms"));
568
void ReduceCppTracker::doublet_clusters_tree() {
569
Json::Value cluster_event = json_clusters;
570
// if ( cluster_event.isNull() ) continue;
571
int numb_clusters = cluster_event.size();
573
// double chan_sum = 0;
574
for ( int clust_j = 0; clust_j < numb_clusters; clust_j++ ) {
575
Json::Value a_cluster = cluster_event[clust_j];
576
if ( a_cluster.isNull() ) continue;
577
_tracker = a_cluster["tracker"].asInt();
578
_station = a_cluster["station"].asInt();
579
_plane = a_cluster["plane"].asInt();
580
_channel = a_cluster["channel"].asDouble();
581
_npe = a_cluster["npe"].asDouble();
582
_doublet_clusters.Fill();
583
// chan_sum += _channel;
586
_hist_plane0->Fill(_channel);
587
_npe_plane0->Fill(_npe);
588
} else if ( _plane == 1 ) {
589
_hist_plane1->Fill(_channel);
590
_npe_plane1->Fill(_npe);
591
} else if ( _plane == 2 ) {
592
_hist_plane2->Fill(_channel);
593
_npe_plane2->Fill(_npe);
596
// _chan_sum->Fill(chan_sum);
599
// throw(Squeal(Squeal::recoverable,
600
// std::string("Digits branch is corrupted!"),
601
// "ReduceCppSingleStation::digits_histograms"));
605
void ReduceCppTracker::digits_tree() {
606
Json::Value digit_event = json_digits;
608
int numb_digits = digit_event.size();
609
assert(digit_event.isArray());
611
for ( int digit_j = 0; digit_j < numb_digits; digit_j++ ) {
612
Json::Value a_digit = digit_event[digit_j];
613
if ( a_digit.isNull() ) continue;
614
assert(a_digit.isMember("tracker"));
615
assert(a_digit.isMember("station"));
616
assert(a_digit.isMember("plane"));
617
assert(a_digit.isMember("channel"));
618
assert(a_digit.isMember("npe"));
619
assert(a_digit.isMember("time"));
620
_tracker_dig = a_digit["tracker"].asInt();
621
_station_dig = a_digit["station"].asInt();
622
_plane_dig = a_digit["plane"].asInt();
623
_channel_dig = a_digit["channel"].asDouble();
624
_npe_dig = a_digit["npe"].asDouble();
625
_time = a_digit["time"].asDouble();
627
/* if ( _plane_dig == 0 ) {
478
628
_adc_plane0->Fill(_adc_dig);
479
629
_dig_npe_plane0->Fill(_npe_dig);
480
630
} else if ( _plane_dig == 1 ) {
483
633
} else if ( _plane_dig == 2 ) {
484
634
_adc_plane2->Fill(_adc_dig);
485
635
_dig_npe_plane2->Fill(_npe_dig);
490
640
// throw(Squeal(Squeal::recoverable,
491
641
// std::string("Digits branch is corrupted!"),
492
642
// "ReduceCppSingleStation::digits_histograms"));
496
void ReduceCppTracker::show_light_yield(Json::Value const &root) {
497
int n_events = root["recon_events"].size();
499
for (int event_i = 0; event_i < n_events; event_i++) {
500
Json::Value spacepoints_tracker0 = root["recon_events"][event_i]["sci_fi_event"]
501
["sci_fi_space_points"]["tracker0"];
503
Json::Value spacepoints_tracker1 = root["recon_events"][event_i]["sci_fi_event"]
504
["sci_fi_space_points"]["tracker1"];
506
int n_sp_tracker0 = spacepoints_tracker0.size();
507
int n_sp_tracker1 = spacepoints_tracker1.size();
509
for ( int sp_i = 0; sp_i < n_sp_tracker0; sp_i++ ) {
510
int n_digits = spacepoints_tracker0[sp_i]["channels"].size();
511
for ( int digit_j = 0; digit_j < n_digits; digit_j++ ) {
512
_npe = spacepoints_tracker0[sp_i]["channels"][digit_j]["npe"].asDouble();
518
for ( int sp_i = 0; sp_i < n_sp_tracker1; sp_i++ ) {
519
int n_digits = spacepoints_tracker1[sp_i]["channels"].size();
520
for ( int digit_j = 0; digit_j < n_digits; digit_j++ ) {
521
_npe = spacepoints_tracker1[sp_i]["channels"][digit_j]["npe"].asDouble();
529
void ReduceCppTracker::unpacked_data_histograms(Json::Value root) {
530
/* for ( int event_i = 0; event_i < n_events; event_i++ ) {
531
// Json::Value tracker0 = root["recon_events"][event_i]["sci_fi_event"]["sci_fi_digits"]["tracker0"];
532
Json::Value tracker1 = root["recon_events"][event_i]["sci_fi_event"]["sci_fi_digits"]["tracker1"];
533
// if ( tracker0.isNull() ) continue;
534
Json::Value digits = JsonWrapper::GetProperty(
535
root["recon_events"][event_i]["sci_fi_event"]["sci_fi_digits"],
537
JsonWrapper::arrayValue);
539
for ( unsigned int idig = 0; idig < tracker1.size(); ++idig ) {
540
digits[digits.size()] = tracker1[idig];
646
void ReduceCppTracker::unpacked_data_tree(Json::Value root) {
546
647
Json::Value daq_data = JsonWrapper::GetProperty(root,
548
649
JsonWrapper::objectValue);
549
int n_events = daq_data["tracker1"].size();
650
int n_daq_events = daq_data["tracker1"].size();
651
Json::Value tracker2 = daq_data["tracker2"];
550
652
// Loop over events.
551
for (int event_i = 0; event_i < n_events; event_i++) {
653
for (int event_i = 0; event_i < n_daq_events; event_i++) {
552
654
if ( daq_data["tracker1"][event_i].isNull() ) continue;
553
Json::Value i_PartEvent = daq_data["tracker1"][event_i];
554
int number_channels_within = i_PartEvent["VLSB_C"].size();
555
for ( int i = 0; i < number_channels_within; i++ ) {
556
_tdc = i_PartEvent["VLSB_C"][i]["tdc"].asInt();
557
_adc = i_PartEvent["VLSB_C"][i]["adc"].asInt();
558
_bank = i_PartEvent["VLSB_C"][i]["bank_id"].asInt();
559
_chan = i_PartEvent["VLSB_C"][i]["channel"].asInt();
560
int dicrim = _chan = i_PartEvent["VLSB_C"][i]["discriminator"].asInt();
655
Json::Value daq = daq_data["tracker1"][event_i]["VLSB_C"];
656
if ( !daq_data["tracker2"][event_i].isNull() ) {
657
for ( int i = 0; i < daq_data["tracker2"][event_i]["VLSB_C"].size(); ++i ) {
658
daq[daq.size()] = daq_data["tracker2"][event_i]["VLSB_C"][i];
661
json_daq.append(daq);
664
int n_events = json_daq.size();
666
for (int event_i = 0; event_i < n_events; event_i++) {
667
Json::Value daq_event = JsonWrapper::GetItem(json_daq,
669
JsonWrapper::arrayValue);
670
if ( daq_event.isNull() ) continue;
671
int number_channels_within = daq_event.size();
672
// std::cerr << number_channels_within << std::endl;
673
for ( int hit_i = 0; hit_i < number_channels_within; hit_i++ ) {
674
Json::Value a_hit = daq_event[(Json::Value::ArrayIndex)hit_i];
675
if ( a_hit.isNull() ) continue;
676
assert(a_hit.isMember("tdc"));
677
assert(a_hit.isMember("adc"));
678
assert(a_hit.isMember("bank"));
679
assert(a_hit.isMember("channel"));
680
assert(a_hit.isMember("geo"));
681
assert(a_hit.isMember("discriminator"));
682
_tdc = a_hit["tdc"].asInt();
683
_adc = a_hit["adc"].asInt();
684
_bank = a_hit["bank"].asInt();
685
_chan = a_hit["channel"].asInt();
686
_board =a_hit["geo"].asInt()-1;
688
/* int dicrim = a_hit["discriminator"].asInt();
561
689
if ( dicrim != 0 ) {
562
690
std::cerr << "*************** DISCRIMINATOR != 0 ***************" << std::endl;
564
692
_unpacked.Fill();
565
693
// SciFiEvent_DAQ *daq = new SciFiEvent_DAQ(_bank,7,_chan);
566
694
// event->set_daq(daq);
572
void ReduceCppTracker::show_efficiency(Json::Value const &root) {
573
int n_events = root["recon_events"].size();
575
for (int event_i = 0; event_i < n_events; event_i++) {
576
Json::Value spacepoints_tracker0 = root["recon_events"][event_i]["sci_fi_event"]
577
["sci_fi_space_points"]["tracker0"];
579
Json::Value spacepoints_tracker1 = root["recon_events"][event_i]["sci_fi_event"]
580
["sci_fi_space_points"]["tracker1"];
582
int n_sp_tracker0 = spacepoints_tracker0.size();
583
int n_sp_tracker1 = spacepoints_tracker1.size();
585
bool station_hit[2][6] = { {false, false, false, false, false, false},
586
{false, false, false, false, false, false}};
588
for ( int sp_i = 0; sp_i < n_sp_tracker0; sp_i++ ) {
589
// Fill station number.
590
int station = spacepoints_tracker0[sp_i]["station"].asInt();
592
station_hit[0][station]=true;
594
std::string type = spacepoints_tracker0[sp_i]["type"].asString();
595
if ( type == "triplet" ) {
598
if ( type == "duplet" ) {
602
_x = spacepoints_tracker0[sp_i]["position"]["x"].asDouble();
603
_y = spacepoints_tracker0[sp_i]["position"]["y"].asDouble();
604
_z = spacepoints_tracker0[sp_i]["position"]["z"].asDouble();
608
for ( int sp_i = 0; sp_i < n_sp_tracker1; sp_i++ ) {
609
// Fill station number.
610
int station = spacepoints_tracker1[sp_i]["station"].asInt();
612
station_hit[1][station]=true;
614
std::string type = spacepoints_tracker1[sp_i]["type"].asString();
615
if ( type == "triplet" ) {
618
if ( type == "duplet" ) {
622
_x = spacepoints_tracker1[sp_i]["position"]["x"].asDouble();
623
_y = spacepoints_tracker1[sp_i]["position"]["y"].asDouble();
624
_z = spacepoints_tracker1[sp_i]["position"]["z"].asDouble();
629
for ( int tr = 0; tr < 2; tr++ ) {
631
if ( station_hit[tr][1] && station_hit[tr][5] ) {
632
for ( int i = 2; i < 5; i++ ) {
633
if ( station_hit[tr][i] )
636
_station_hits = hit_counter+2;
641
} // ends loop over particle events
645
700
void ReduceCppTracker::display_histograms() {
646
// TCanvas *c1 = reinterpret_cast<TCanvas*> (gROOT->GetListOfCanvases()->FindObject("c1"));
647
// TCanvas *c2 = reinterpret_cast<TCanvas*> (gROOT->GetListOfCanvases()->FindObject("c2"));
648
TCanvas *c3 = reinterpret_cast<TCanvas*> (gROOT->GetListOfCanvases()->FindObject("c3"));
649
// TCanvas *c4 = reinterpret_cast<TCanvas*> (gROOT->GetListOfCanvases()->FindObject("c4"));
650
// TCanvas *c5 = reinterpret_cast<TCanvas*> (gROOT->GetListOfCanvases()->FindObject("c5"));
702
TCanvas *c1 = reinterpret_cast<TCanvas*> (gROOT->GetListOfCanvases()->FindObject("c1"));
704
triplets->SetMarkerStyle(20);
705
triplets->SetMarkerColor(kBlue);
706
triplets_copy->SetMarkerStyle(20);
707
triplets_copy->SetMarkerColor(kBlue);
708
duplets->SetMarkerStyle(20);
709
duplets->SetMarkerColor(kRed);
710
duplets_copy->SetMarkerStyle(20);
711
duplets_copy->SetMarkerColor(kRed);
653
_digits.Draw("channel","tracker==0 && station==1 && plane==0");
714
_spacepoints.Draw("x:y>>duplets", "type==2 && tracker==0");
715
duplets->Draw("same");
716
_spacepoints.Draw("x:y>>triplets", "type==3 && tracker==0", "same");
717
triplets->Draw("same");
720
// draw all stations...
655
_digits.Draw("channel","tracker==0 && station==1 && plane==1");
722
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==0 && station==1");
723
duplets_copy->Draw("same");
724
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==0 && station==1", "same");
725
triplets_copy->Draw("same");
726
duplets_copy->Reset();
727
triplets_copy->Reset();
657
_digits.Draw("channel","tracker==0 && station==1 && plane==2");
729
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==0 && station==2");
730
duplets_copy->Draw("same");
731
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==0 && station==2", "same");
732
triplets_copy->Draw("same");
733
duplets_copy->Reset();
734
triplets_copy->Reset();
659
_digits.Draw("channel","tracker==0 && station==2 && plane==0");
736
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==0 && station==3");
737
duplets_copy->Draw("same");
738
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==0 && station==3", "same");
739
triplets_copy->Draw("same");
740
duplets_copy->Reset();
741
triplets_copy->Reset();
661
_digits.Draw("channel","tracker==0 && station==2 && plane==1");
743
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==0 && station==4");
744
duplets_copy->Draw("same");
745
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==0 && station==4", "same");
746
triplets_copy->Draw("same");
747
duplets_copy->Reset();
748
triplets_copy->Reset();
663
_digits.Draw("channel","tracker==0 && station==2 && plane==2");
750
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==0 && station==5");
751
duplets_copy->Draw("same");
752
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==0 && station==5", "same");
753
triplets_copy->Draw("same");
754
duplets_copy->Reset();
755
triplets_copy->Reset();
665
_digits.Draw("channel","tracker==0 && station==3 && plane==0");
759
_spacepointscopy.Draw("type", "tracker==0");
667
_digits.Draw("channel","tracker==0 && station==3 && plane==1");
763
_spacepoints.Draw("x:y>>duplets", "type==2 && tracker==1");
764
duplets->Draw("same");
765
_spacepoints.Draw("x:y>>triplets", "type==3 && tracker==1", "same");
766
triplets->Draw("same");
669
_digits.Draw("channel","tracker==0 && station==3 && plane==2");
769
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==1 && station==1");
770
duplets_copy->Draw("same");
771
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==1 && station==1", "same");
772
triplets_copy->Draw("same");
773
duplets_copy->Reset();
774
triplets_copy->Reset();
671
_digits.Draw("channel","tracker==0 && station==4 && plane==0");
776
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==1 && station==2");
777
duplets_copy->Draw("same");
778
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==1 && station==2", "same");
779
triplets_copy->Draw("same");
780
duplets_copy->Reset();
781
triplets_copy->Reset();
673
_digits.Draw("channel","tracker==0 && station==4 && plane==1");
783
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==1 && station==3");
784
duplets_copy->Draw("same");
785
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==1 && station==3", "same");
786
triplets_copy->Draw("same");
787
duplets_copy->Reset();
788
triplets_copy->Reset();
675
_digits.Draw("channel","tracker==0 && station==4 && plane==2");
790
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==1 && station==4");
791
duplets_copy->Draw("same");
792
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==1 && station==4", "same");
793
triplets_copy->Draw("same");
794
duplets_copy->Reset();
795
triplets_copy->Reset();
677
_digits.Draw("channel","tracker==0 && station==5 && plane==0");
797
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==1 && station==5");
798
duplets_copy->Draw("same");
799
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==1 && station==5", "same");
800
triplets_copy->Draw("same");
801
duplets_copy->Reset();
802
triplets_copy->Reset();
806
_spacepointscopy.Draw("type", "tracker==1");
808
triplets_copy->Draw("same");
679
_digits.Draw("channel","tracker==0 && station==5 && plane==1");
681
_digits.Draw("channel","tracker==0 && station==5 && plane==2");
685
_digits.Draw("channel","tracker==1 && station==1 && plane==0");
687
_digits.Draw("channel","tracker==1 && station==1 && plane==1");
689
_digits.Draw("channel","tracker==1 && station==1 && plane==2");
691
_digits.Draw("channel","tracker==1 && station==2 && plane==0");
693
_digits.Draw("channel","tracker==1 && station==2 && plane==1");
695
_digits.Draw("channel","tracker==1 && station==2 && plane==2");
697
_digits.Draw("channel","tracker==1 && station==3 && plane==0");
699
_digits.Draw("channel","tracker==1 && station==3 && plane==1");
701
_digits.Draw("channel","tracker==1 && station==3 && plane==2");
703
_digits.Draw("channel","tracker==1 && station==4 && plane==0");
705
_digits.Draw("channel","tracker==1 && station==4 && plane==1");
707
_digits.Draw("channel","tracker==1 && station==4 && plane==2");
709
_digits.Draw("channel","tracker==1 && station==5 && plane==0");
711
_digits.Draw("channel","tracker==1 && station==5 && plane==1");
713
_digits.Draw("channel","tracker==1 && station==5 && plane==2");
717
_spacepoints.Draw("x:y>>duplets", "type==2 && tracker==0");
718
duplets->Draw("same");
719
_spacepoints.Draw("x:y>>triplets", "type==3 && tracker==0", "same");
720
triplets->Draw("same");
721
// draw all stations...
723
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==0 && station==1");
724
duplets_copy->Draw("same");
725
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==0 && station==1", "same");
726
triplets_copy->Draw("same");
728
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==0 && station==2");
729
duplets_copy->Draw("same");
730
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==0 && station==2", "same");
731
triplets_copy->Draw("same");
733
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==0 && station==3");
734
duplets_copy->Draw("same");
735
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==0 && station==3", "same");
736
triplets_copy->Draw("same");
738
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==0 && station==4");
739
duplets_copy->Draw("same");
740
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==0 && station==4", "same");
741
triplets_copy->Draw("same");
743
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==0 && station==5");
744
duplets_copy->Draw("same");
745
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==0 && station==5", "same");
746
triplets_copy->Draw("same");
749
_spacepointscopy.Draw("type", "tracker==0");
752
_spacepoints.Draw("x:y>>duplets", "type==2 && tracker==1");
753
duplets->Draw("same");
754
_spacepoints.Draw("x:y>>triplets", "type==3 && tracker==1", "same");
755
triplets->Draw("same");
758
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==1 && station==1");
759
duplets_copy->Draw("same");
760
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==1 && station==1", "same");
761
triplets_copy->Draw("same");
763
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==1 && station==2");
764
duplets_copy->Draw("same");
765
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==1 && station==2", "same");
766
triplets_copy->Draw("same");
768
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==1 && station==3");
769
duplets_copy->Draw("same");
770
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==1 && station==3", "same");
771
triplets_copy->Draw("same");
773
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==1 && station==4");
774
duplets_copy->Draw("same");
775
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==1 && station==4", "same");
776
triplets_copy->Draw("same");
778
_spacepointscopy.Draw("x:y>>duplets_copy", "type==2 && tracker==1 && station==5");
779
duplets_copy->Draw("same");
780
_spacepointscopy.Draw("x:y>>triplets_copy", "type==3 && tracker==1 && station==5", "same");
781
triplets_copy->Draw("same");
783
_spacepointscopy.Draw("type", "tracker==1");
795
_digits.Draw("time");
797
// c5_1->SetGrid(1,1);
798
// _unpacked.Draw("adc", "bank==0 || bank==2 || bank==5 ||
799
// bank==7 || bank==9|| bank==10|| bank==11 ||bank==12 ||
800
// bank==13|| bank==14");
810
_dig_npe_plane0->Draw();
812
_dig_npe_plane1->Draw();
814
_dig_npe_plane2->Draw();
817
// Display spacepoints type.
819
_spacepoints.Draw("type", "tracker==0 && station==1 ");
822
_spacepoints.Draw("type", "tracker==0 && station==2 ");
825
_spacepoints.Draw("type", "tracker==0 && station==3 ");
828
_spacepoints.Draw("type", "tracker==0 && station==4 ");
831
_spacepoints.Draw("type", "tracker==0 && station==5 ");
835
_spacepoints.Draw("type", "tracker==1 && station==1 ");
838
_spacepoints.Draw("type", "tracker==1 && station==2 ");
841
_spacepoints.Draw("type", "tracker==1 && station==3 ");
844
_spacepoints.Draw("type", "tracker==1 && station==4 ");
847
_spacepoints.Draw("type", "tracker==1 && station==5 ");
850
// Display efficiency.
853
_events.Draw("station_hits", "tracker==0");
855
_events.Draw("station_hits", "tracker==1");
811
_spacepointscopy.Draw("type", "tracker==1");