From 9f4057de866cbb83a6edec52b58c1a963bfed267 Mon Sep 17 00:00:00 2001 From: Carsten Schwarz Date: Tue, 9 Apr 2019 14:07:36 +0200 Subject: [PATCH] cleaned up thresholds --- thresholds/determine_noiseband_dirich.pl | 174 ++ thresholds/trb_dirich_threshold/.gitignore | 5 + .../trb_dirich_threshold/HADESthreshscan_v1 | Bin 0 -> 391784 bytes .../trb_dirich_threshold/HADESthreshscan_v1.C | 2683 +++++++++++++++++ .../trb_dirich_threshold/HADESthreshscan_v1.o | Bin 0 -> 691904 bytes thresholds/trb_dirich_threshold/Makefile | 39 + thresholds/trb_dirich_threshold/README.md | 27 + thresholds/trb_dirich_threshold/dirich_v13.C | 1433 +++++++++ .../obsolete/dirich_v11.C | 1378 +++++++++ .../obsolete/systemthreshscan_v11 | Bin 0 -> 783178 bytes .../obsolete/systemthreshscan_v11.C | 1478 +++++++++ .../trb_dirich_threshold/obsolete/test_trbnet | Bin 0 -> 113808 bytes .../obsolete/test_trbnet.cc | 7 + thresholds/trb_dirich_threshold/setLD | 1 + thresholds/trb_dirich_threshold/trbnetcom.h | 87 + users/gsi_dirc/EventBuilder.xml | 2 +- users/gsi_dirc/EventBuilderNew.xml | 4 +- .../dirich_set_standard_thresholds.pl | 67 + users/gsi_dirc/dirich_voltages.sh | 11 + users/gsi_dirc/readout.pl | 13 +- users/gsi_dirc/register_config_tdc.db | 4 +- users/gsi_dirc/register_configgbe.db | 2 +- users/gsi_dirc/register_configgbe_ip.db | 2 +- users/gsi_dirc/startup.sh | 37 +- 24 files changed, 7435 insertions(+), 19 deletions(-) create mode 100755 thresholds/determine_noiseband_dirich.pl create mode 100644 thresholds/trb_dirich_threshold/.gitignore create mode 100755 thresholds/trb_dirich_threshold/HADESthreshscan_v1 create mode 100644 thresholds/trb_dirich_threshold/HADESthreshscan_v1.C create mode 100644 thresholds/trb_dirich_threshold/HADESthreshscan_v1.o create mode 100644 thresholds/trb_dirich_threshold/Makefile create mode 100644 thresholds/trb_dirich_threshold/README.md create mode 100644 thresholds/trb_dirich_threshold/dirich_v13.C create mode 100644 thresholds/trb_dirich_threshold/obsolete/dirich_v11.C create mode 100755 thresholds/trb_dirich_threshold/obsolete/systemthreshscan_v11 create mode 100644 thresholds/trb_dirich_threshold/obsolete/systemthreshscan_v11.C create mode 100755 thresholds/trb_dirich_threshold/obsolete/test_trbnet create mode 100644 thresholds/trb_dirich_threshold/obsolete/test_trbnet.cc create mode 100644 thresholds/trb_dirich_threshold/setLD create mode 100644 thresholds/trb_dirich_threshold/trbnetcom.h create mode 100755 users/gsi_dirc/dirich_set_standard_thresholds.pl create mode 100755 users/gsi_dirc/dirich_voltages.sh diff --git a/thresholds/determine_noiseband_dirich.pl b/thresholds/determine_noiseband_dirich.pl new file mode 100755 index 0000000..d17e20b --- /dev/null +++ b/thresholds/determine_noiseband_dirich.pl @@ -0,0 +1,174 @@ +#!/usr/bin/perl +use warnings; +use strict; +use HADES::TrbNet; +use Time::HiRes qw(usleep); +use Data::Dumper; + +use lib "/home/hadaq/trbsoft/daqtools/dmon/code"; +use Dmon; + +my $dirich = 0x1234; + +$dirich = $ARGV[0]; + +unless ($ARGV[0]) { + print "usage: $0 \n"; + exit; +} + +$dirich = hex($dirich); + +my $throffset = 0xa000; +#my $monitor = 0xdfc0; +my $monitor = 0xc001; + +my $first_channel = 0; +my $last_channel = 31; + +my $default_threshold = 0x6000; + +#my $absolute_max_threshold = 0x8000; +my $absolute_min_threshold = 0x1000; + +my @res; my $res; my $rh_res; + +trb_init_ports() or die trb_strerror(); + +# enable monitor counters +$res = trb_register_write($dirich, 0xdf80 , 0xffffffff); +if(!defined $res) { + $res = trb_strerror(); + print "error output: $res\n"; +} + + +my $fixed_bits = 0x00800000; +my $shift_bits = 0; +my $channel_shift = 24; +my $command; +my $chain=0; + +my $READ = 0x0<<20; # bits to set for a read command +my $WRITE = 0x8<<20; # bits to set for a write command +my $REGNR = 24; # number of bits to shift for the register number + + +for my $channel (0 .. 31) { + $chain = ($channel <16) ? 0 : 1; + #($channel<<$REGNR | $WRITE | ($data&0xffff)); + # sendcmd($channel<<$REGNR | $WRITE | ($data&0xffff)); + #$command = $fixed_bits | ((0x10| ($channel&0xf)) << $channel_shift) | (($default_threshold+$channel) << $shift_bits); + $command = ($channel&0xf)<<$REGNR | $WRITE | ($default_threshold&0xffff); + #print "$command\n"; + Dmon::PadiwaSendCmd($command,$dirich, $chain); + usleep(10E3); + #trb_register_write($dirich, $throffset + $channel , $default_threshold); + #$rh_res = trb_register_read($dirich, $throffset + $channel); +} +#exit; +usleep (1E5); + +my $boundaries = {}; + +for my $channel ($first_channel .. $last_channel) { +#for my $channel (30 .. 31) { + + my $hit_zero_diff_flag = 0; + + my $lower_threshold = 0x6f80; + my $upper_threshold = 0x9000; + my $reasonable_upper_threshold = 0x7800; + my $thresh_increment = 0x8; + + THRESH_LOOP: for (my $thresh = $lower_threshold ; $thresh <= $upper_threshold; $thresh += $thresh_increment) { + $chain = ($channel <16) ? 0 : 1; + #$command = $fixed_bits | ( (0x10|($channel&0xf)) << $channel_shift) | ($thresh << $shift_bits); + $command = ($channel & 0xf)<<$REGNR | $WRITE | ($thresh&0xffff); + #print "chain: $chain\n"; + Dmon::PadiwaSendCmd($command,$dirich, $chain); + ##trb_register_write($dirich, $throffset + $channel , $thresh); + undef $rh_res; + my @hits = (); + foreach (1..2) { + $rh_res = trb_register_read($dirich, $monitor + $channel); + #$res = trb_strerror(); + #print "error output: $res\n"; + #print Dumper $rh_res; + push @hits ,$rh_res->{$dirich}; + #if ($_==1) { + usleep(40E3); + #} + } + + my $diff = $hits[1] - $hits[0]; + #printf "channel: $channel: cur thresh: %.4x diff: $diff\n",$thresh ; + #sleep 0.2; + $hit_zero_diff_flag = 1 if($diff == 0); + + if($diff != 0 && !$hit_zero_diff_flag ) { + print "channel: $channel, backup threshold a bit (by 0x800)..., thresh: "; printf "0x%x\n",$thresh; + if($thresh <= $absolute_min_threshold) { + print "reached abs min threshold\n"; + $boundaries->{$channel}->{'lower'} = $thresh; + last THRESH_LOOP; + } + else { + $thresh -= 0x800; + $lower_threshold -= 0x800; + $thresh_increment *= 4 if($thresh_increment <= 0x100); + next THRESH_LOOP; + } + } + + $thresh_increment *= 4 if($thresh_increment <= 0x100 && $thresh >= $reasonable_upper_threshold ); + + #my $thrstr = sprintf("0x%x", $thresh); + #print "channel: $channel: thresh: $thrstr : diff: $diff, a=$hits[0] b=$hits[1]\n"; + + my $thrstr = sprintf("0x%x", $thresh); + if($diff >= 50) { + if( ! exists $boundaries->{$channel}->{'lower'} ) { + print "channel: $channel, lower thresh: $thrstr\n"; + $boundaries->{$channel}->{'lower'} = $thresh; + } + } + elsif ($diff == 0 && exists $boundaries->{$channel}->{'lower'} && ($thresh - $boundaries->{$channel}->{'lower'} ) > 0x40 ) { + print "channel: $channel, upper thresh: $thrstr\n"; + $boundaries->{$channel}->{'upper'} = $thresh; + last THRESH_LOOP; + } + + } # THRESH_LOOP + + if ( ! exists $boundaries->{$channel}->{'upper'}) { + $boundaries->{$channel}->{'upper'} = $upper_threshold; + print "strange setting of upper thresh.\n"; + } + + $chain = ($channel <16) ? 0 : 1; + #$command = $fixed_bits | ( (0x10|($channel&0xf)) << $channel_shift) | ($default_threshold << $shift_bits); + $command = ($channel & 0xf)<<$REGNR | $WRITE | ($default_threshold&0xffff); + Dmon::PadiwaSendCmd($command,$dirich, $chain); + #trb_register_write($dirich, $throffset + $channel , $default_threshold); +} + + +printf "\nresult for 0x%.4x:\n",$dirich; +#print Dumper $boundaries; +print "channel | noiseband [mV]\n"; +print "------------------------\n"; +foreach my $cur_channel (sort {$a <=> $b} keys %$boundaries) { + my $diff = $boundaries->{$cur_channel}->{upper} - $boundaries->{$cur_channel}->{lower}; + my $width = $diff * 38E-6 * 1000; + printf "%2d | %02.0f\n", $cur_channel , $width; +} + +printf "\nsummary for 0x%.4x:\n", $dirich; +foreach my $cur_channel (sort {$a <=> $b} keys %$boundaries) { + my $diff = $boundaries->{$cur_channel}->{upper} - $boundaries->{$cur_channel}->{lower}; + my $width = $diff * 38E-6 * 1000; + printf "%02.0f ", $width; +} +print "\n"; + diff --git a/thresholds/trb_dirich_threshold/.gitignore b/thresholds/trb_dirich_threshold/.gitignore new file mode 100644 index 0000000..d9eb8ea --- /dev/null +++ b/thresholds/trb_dirich_threshold/.gitignore @@ -0,0 +1,5 @@ + +*.root +*.thr +*~ + diff --git a/thresholds/trb_dirich_threshold/HADESthreshscan_v1 b/thresholds/trb_dirich_threshold/HADESthreshscan_v1 new file mode 100755 index 0000000000000000000000000000000000000000..2b4bbe73ec14dee28c9f33ce0dcf3a2ee7bd9533 GIT binary patch literal 391784 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 literal 0 HcmV?d00001 diff --git a/thresholds/trb_dirich_threshold/HADESthreshscan_v1.C b/thresholds/trb_dirich_threshold/HADESthreshscan_v1.C new file mode 100644 index 0000000..d7bc18b --- /dev/null +++ b/thresholds/trb_dirich_threshold/HADESthreshscan_v1.C @@ -0,0 +1,2683 @@ +// #include "trbnetcom.h" +// #include "dirich_sim.C" + +#include "TROOT.h" +#include "TError.h" +#include "TGraph.h" +#include "TGraph2D.h" +#include "TMultiGraph.h" +#include "TCanvas.h" +#include "TH1.h" +#include "TH2.h" +#include "TLegend.h" +#include "TStyle.h" +#include "TLine.h" +#include "TFile.h" +#include "TText.h" +#include "TMath.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include + +#include +#include +#include +// #include + +#include "dirich_v13.C" + +namespace po = boost::program_options; +namespace fs = boost::filesystem; + +int gcheck_thresholds = 1; +std::mutex gcheck_thresholds_mutex; +// #define 0 0 +// #define LASTCHANNEL 31 + +// #ifndef NCH +// const int NRCHANNELS = 32; //Nr of TDC ichannels in dirich +// const int CHPCHAIN = 16; //Nr of TDC ichannels pre dirich-chain +// #define NCH +// #endif + +// #ifndef THC +// const int OFFTHRESH = 1; //Value to switch off channel +// const int THRESHDELAY = 100000; //Delay [mus] for thresh change to succeed +// #define THC +// #endif + +const uint16_t BROADCAST = 0xfe51; + +std::map> dirichlist ={}; + +std::map canvaslist; + +std::vector canvasvector; + +TH2* get_2D_rate_histo(std::shared_ptr dirichptr) +{ + TH2D* histo; + gStyle->SetOptStat(0); + if(dirichptr==NULL){ + histo = new TH2D( + "2D Rate vs. Threshold of all diriches","2D Rate vs. Threshold of all diriches", + dirichlist.size()*NRCHANNELS,-.5,dirichlist.size()*NRCHANNELS-.5, + ( + dirichlist.begin()->second->gUpperEdge.at(0) + -dirichlist.begin()->second->gLowerEdge.at(0) + )/dirichlist.begin()->second->gStepsize, + dirichlist.begin()->second->gLowerEdge.at(0), + dirichlist.begin()->second->gUpperEdge.at(0) + ); + int idirich=0; + // std::map::iterator dirichlistiterator = dirichlist.begin(); + TLine* dirich_line_left = new TLine( + histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1), + histo->GetYaxis()->GetBinLowEdge(1), + histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1), + histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()) + ); + dirich_line_left->SetLineWidth(2); + dirich_line_left->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_left); + for (auto& dirichitem : dirichlist){ + TLine* dirich_line_right = new TLine( + histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1), + histo->GetYaxis()->GetBinLowEdge(1), + histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1), + histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()) + ); + dirich_line_right->SetLineWidth(2); + dirich_line_right->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_right); + TText* dirich_name = new TText( + histo->GetXaxis()->GetBinCenter((idirich+1./2)*NRCHANNELS+1), + histo->GetYaxis()->GetBinLowEdge(1) + -(0.1*( + histo->GetYaxis()->GetBinLowEdge(1) + -histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()) + )), + Form("0x%x",dirichitem.first) + ); + dirich_name->SetTextAlign(22); + dirich_name->SetTextColor(kRed+2); + dirich_name->SetTextFont(43); + dirich_name->SetTextSize(20); + histo->GetListOfFunctions()->Add(dirich_name); + for(int ichannel=0;ichannelgRateGraphs[ichannel]->GetN();++ipoint){ + histo->Fill( + idirich*NRCHANNELS+ichannel, + dirichitem.second->gRateGraphs[ichannel]->GetX()[ipoint], + dirichitem.second->gRateGraphs[ichannel]->GetY()[ipoint] + ); + if(ichannel%8==0) + histo->GetXaxis()->SetBinLabel( + idirich*NRCHANNELS+ichannel+1,Form("%i",ichannel) + ); + else histo->GetXaxis()->SetBinLabel(idirich*NRCHANNELS+ichannel+1,""); + } + TLine* baseline_line = new TLine( + histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+ichannel+1), + dirichitem.second->GetSingleBaseline(ichannel), + histo->GetXaxis()->GetBinUpEdge(idirich*NRCHANNELS+ichannel+1), + dirichitem.second->GetSingleBaseline(ichannel) + ); + baseline_line->SetLineColor(kRed); + baseline_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(baseline_line); + TLine* baseline_line_old = new TLine( + histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+ichannel+1), + dirichitem.second->GetSingleBaseline_old(ichannel), + histo->GetXaxis()->GetBinUpEdge(idirich*NRCHANNELS+ichannel+1), + dirichitem.second->GetSingleBaseline_old(ichannel) + ); + baseline_line_old->SetLineColor(kBlack); + baseline_line_old->SetLineWidth(2); + histo->GetListOfFunctions()->Add(baseline_line_old); + } + // ++dirichlistiterator; + ++idirich; + } + } + else{ + histo = new TH2D( + Form("2D Rate vs. Threshold of %x",dirichptr->GetBoardAddress()), + Form("2D Rate vs. Threshold of %x",dirichptr->GetBoardAddress()), + NRCHANNELS, + -.5, + NRCHANNELS-.5, + (dirichptr->gUpperEdge.at(0)-dirichptr->gLowerEdge.at(0))/dirichptr->gStepsize, + dirichptr->gLowerEdge.at(0), + dirichptr->gUpperEdge.at(0) + ); + for(int ichannel=0;ichannelgRateGraphs[ichannel]->GetN();++ipoint){ + histo->Fill( + ichannel, + dirichptr->gRateGraphs[ichannel]->GetX()[ipoint], + dirichptr->gRateGraphs[ichannel]->GetY()[ipoint] + ); + } + TLine* baseline_line = new TLine( + histo->GetXaxis()->GetBinLowEdge(ichannel+1), + dirichptr->GetSingleBaseline(ichannel), + histo->GetXaxis()->GetBinUpEdge(ichannel+1), + dirichptr->GetSingleBaseline(ichannel) + ); + baseline_line->SetLineColor(kRed); + baseline_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(baseline_line); + TLine* baseline_line_old = new TLine( + histo->GetXaxis()->GetBinLowEdge(ichannel+1), + dirichptr->GetSingleBaseline_old(ichannel), + histo->GetXaxis()->GetBinUpEdge(ichannel+1), + dirichptr->GetSingleBaseline_old(ichannel) + ); + baseline_line_old->SetLineColor(kBlack); + baseline_line_old->SetLineWidth(2); + histo->GetListOfFunctions()->Add(baseline_line_old); + } + } + // std::cout << "finished histo" << std::endl; + + histo->SetMinimum(0); + histo->GetXaxis()->SetTitle("Channel Nr"); + // histo->GetXaxis()->SetTitleOffset(); + histo->GetYaxis()->SetTitle("Threshold"); + histo->GetZaxis()->SetTitle("Rate"); + return histo; +} + +TMultiGraph* get_2D_mgr_diff_over_thr_histo(std::shared_ptr dirichptr) +{ + TMultiGraph* multig = new TMultiGraph(); + if(dirichptr==NULL){ + multig->SetTitle( + "Differentiated rate graph over baseline of all dirich;Threshold;Differentiated rate" + ); + multig->SetName( + "Differentiated rate graph over baseline of all dirich (Mutligraph)" + ); + for (auto& dirichitem : dirichlist){ + for(auto& gDiffRateGraphsOverBaseIT : dirichitem.second->gDiffRateGraphsOverBase){ + multig->Add(gDiffRateGraphsOverBaseIT,"PL"); + } + } + } + else{ + multig->SetTitle(Form( + "Differentiated rate graph over baseline of dirich 0x%x;Threshold;Differentiated rate" + ,dirichptr->GetBoardAddress() + )); + multig->SetName(Form( + "Differentiated rate graph over baseline of dirich 0x%x (Multigraph)" + ,dirichptr->GetBoardAddress() + )); + for(auto& gDiffRateGraphsOverBaseIT : dirichptr->gDiffRateGraphsOverBase){ + multig->Add(gDiffRateGraphsOverBaseIT,"PL"); + } + } + // multig->SetMinimum(0); + // multig->GetHistogram()->GetYaxis()->SetRangeUser(0,100); + return multig; +} + +TGraph2D* get_2D_gr_diff_over_thr_histo(std::shared_ptr dirichptr) +{ + TGraph2D* g2d = new TGraph2D(); + if(dirichptr==NULL){ + g2d->SetTitle( + "Differentiated rate graph over baseline of all dirich;" + "Channel Nr;" + "Threshold;" + "Differentiated rate" + ); + g2d->SetName("Differentiated rate graph over baseline of all dirich (2D_Graph)"); + int idirich=0; + for (auto& dirichitem : dirichlist){ + int ichannel=0; + for(auto& gDiffRateGraphsOverBaseIT : dirichitem.second->gDiffRateGraphsOverBase){ + for(int ipoint=0;ipointGetN();++ipoint){ + g2d->SetPoint( + g2d->GetN(), + idirich*NRCHANNELS+ichannel, + gDiffRateGraphsOverBaseIT->GetX()[ipoint], + gDiffRateGraphsOverBaseIT->GetY()[ipoint] + ); + } + ichannel++; + } + idirich++; + } + } + else{ + g2d->SetTitle(Form( + "Differentiated rate graph over baseline of dirich 0x%x;" + "Channel Nr;" + "Threshold;" + "Differentiated rate" + ,dirichptr->GetBoardAddress()) + ); + g2d->SetName(Form( + "Differentiated rate graph over baseline of dirich 0x%x (2D_Graph)" + ,dirichptr->GetBoardAddress()) + ); + int ichannel=0; + for(auto& gDiffRateGraphsOverBaseIT : dirichptr->gDiffRateGraphsOverBase){ + for(int ipoint=0;ipointGetN();++ipoint){ + g2d->SetPoint( + g2d->GetN(), + ichannel, + gDiffRateGraphsOverBaseIT->GetX()[ipoint], + gDiffRateGraphsOverBaseIT->GetY()[ipoint] + ); + } + ichannel++; + } + } + g2d->SetMinimum(0); + g2d->GetZaxis()->SetRangeUser(0,100); + return g2d; +} + +TH2* get_2D_diff_over_thr_histo(std::shared_ptr dirichptr) +{ + TH2D* histo; + TH2D* divided_histo; + // divided_histo->SetDirectory(0); + gStyle->SetOptStat(0); + if(dirichptr==NULL){ + double max_value=-9999; + // double min_value=9999; + double min_width=1000; + for (auto& dirichitem : dirichlist){ + for(auto& gDiffRateGraphsOverBaseIT : dirichitem.second->gDiffRateGraphsOverBase){ + if( + gDiffRateGraphsOverBaseIT->GetN()!=0 + && max_valueGetX()[gDiffRateGraphsOverBaseIT->GetN()-1] + ) + max_value = gDiffRateGraphsOverBaseIT->GetX()[gDiffRateGraphsOverBaseIT->GetN()-1]; + if( + gDiffRateGraphsOverBaseIT->GetN()!=0 + && max_valueGetX()[gDiffRateGraphsOverBaseIT->GetN()-1] + ) + max_value = gDiffRateGraphsOverBaseIT->GetX()[gDiffRateGraphsOverBaseIT->GetN()-1]; + if( + gDiffRateGraphsOverBaseIT->GetN()>=2 + && min_width>abs(gDiffRateGraphsOverBaseIT->GetX()[0]-gDiffRateGraphsOverBaseIT->GetX()[1]) + ) + min_width = abs(gDiffRateGraphsOverBaseIT->GetX()[0]-gDiffRateGraphsOverBaseIT->GetX()[1]); + } + } + histo = new TH2D( + "2D Differentiated Rate vs. Threshold over baseline of all diriches", + "2D Differentiated Rate vs. Threshold over baseline of all diriches", + dirichlist.size()*NRCHANNELS, + -.5, + dirichlist.size()*NRCHANNELS-.5, + max_value/min_width/2,0, + max_value + ); + divided_histo = new TH2D( + "temp_diff", + "temp_diff", + dirichlist.size()*NRCHANNELS, + -.5,dirichlist.size()*NRCHANNELS-.5, + max_value/min_width/2, + 0, + max_value + ); + int idirich=0; + TLine* dirich_line_left = new TLine( + histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1), + histo->GetYaxis()->GetBinLowEdge(1), + histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1), + histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()) + ); + dirich_line_left->SetLineWidth(2); + dirich_line_left->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_left); + for (auto& dirichitem : dirichlist){ + TLine* dirich_line_right = new TLine( + histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1), + histo->GetYaxis()->GetBinLowEdge(1), + histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1), + histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()) + ); + dirich_line_right->SetLineWidth(2); + dirich_line_right->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_right); + TText* dirich_name = new TText( + histo->GetXaxis()->GetBinCenter((idirich+1./2)*NRCHANNELS+1), + histo->GetYaxis()->GetBinLowEdge(1) + -( + 0.1*(histo->GetYaxis()->GetBinLowEdge(1) + -histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()) + )), + Form("0x%x",dirichitem.first) + ); + dirich_name->SetTextAlign(22); + dirich_name->SetTextColor(kRed+2); + dirich_name->SetTextFont(43); + dirich_name->SetTextSize(20); + histo->GetListOfFunctions()->Add(dirich_name); + for(int ichannel=0;ichannelgDiffRateGraphsOverBase[ichannel]->GetN();++ipoint){ + histo->Fill( + idirich*NRCHANNELS+ichannel, + dirichitem.second->gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint], + dirichitem.second->gDiffRateGraphsOverBase[ichannel]->GetY()[ipoint] + ); + divided_histo->Fill( + idirich*NRCHANNELS+ichannel, + dirichitem.second->gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint] + ); + // std::cout << ichannel << " " << int(dirichlist.size()*NRCHANNELS/20+1) << std::endl; + if(ichannel%8==0) histo->GetXaxis()->SetBinLabel( + idirich*NRCHANNELS+ichannel+1,Form("%i",ichannel) + ); + else histo->GetXaxis()->SetBinLabel(idirich*NRCHANNELS+ichannel+1,""); + } + TLine* thr_line = new TLine( + histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+ichannel+1), + -1*dirichitem.second->GetSingleThresholdmV(ichannel), + histo->GetXaxis()->GetBinUpEdge(idirich*NRCHANNELS+ichannel+1), + -1*dirichitem.second->GetSingleThresholdmV(ichannel) + ); + thr_line->SetLineColor(kRed); + thr_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(thr_line); + } + ++idirich; + } + idirich=0; + } + else{ + double max_value=0; + double min_width=10000; + for(auto& gDiffRateGraphsOverBaseIT : dirichptr->gDiffRateGraphsOverBase){ + if( + gDiffRateGraphsOverBaseIT->GetN()!=0 + && max_valueGetX()[gDiffRateGraphsOverBaseIT->GetN()-1] + ) + max_value = gDiffRateGraphsOverBaseIT->GetX()[gDiffRateGraphsOverBaseIT->GetN()-1]; + if( + gDiffRateGraphsOverBaseIT->GetN()>=2 + && min_width>abs(gDiffRateGraphsOverBaseIT->GetX()[0]-gDiffRateGraphsOverBaseIT->GetX()[1]) + ) + min_width = abs(gDiffRateGraphsOverBaseIT->GetX()[0]-gDiffRateGraphsOverBaseIT->GetX()[1]); + } + histo = new TH2D( + Form("2D Differentiated Rate vs. Threshold over baseline of %x",dirichptr->GetBoardAddress()), + Form("2D Differentiated Rate vs. Threshold over baseline of %x",dirichptr->GetBoardAddress()), + NRCHANNELS, + -.5, + NRCHANNELS-.5, + max_value/min_width/2,0, + max_value + ); + divided_histo = new TH2D( + "temp_diff","temp_diff", + NRCHANNELS, + -.5, + NRCHANNELS-.5, + max_value/min_width/2,0, + max_value + ); + for(int ichannel=0;ichannelgDiffRateGraphsOverBase[ichannel]->GetN();++ipoint){ + histo->Fill( + ichannel, + dirichptr->gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint], + dirichptr->gDiffRateGraphsOverBase[ichannel]->GetY()[ipoint] + ); + divided_histo->Fill( + ichannel, + dirichptr->gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint] + ); + } + TLine* thr_line = new TLine( + histo->GetXaxis()->GetBinLowEdge(ichannel+1), + -1*dirichptr->GetSingleThresholdmV(ichannel), + histo->GetXaxis()->GetBinUpEdge(ichannel+1), + -1*dirichptr->GetSingleThresholdmV(ichannel) + ); + thr_line->SetLineColor(kRed); + thr_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(thr_line); + } + } + + histo->Divide(divided_histo); + + histo->Divide(divided_histo); + for(int ibin=1;ibin<(histo->GetNbinsX()+2)*(histo->GetNbinsY()+2);++ibin){ + // if(histo->GetBinContent(ibin)<-1.)histo->SetBinContent(ibin,0); + histo->SetBinError(ibin,0); + } + histo->SetMinimum(0.); + // histo->GetZaxis()->SetRangeUser(0.,30.); + histo->GetXaxis()->SetTitle("Channel Nr"); + // histo->GetXaxis()->SetTitleOffset(); + histo->GetYaxis()->SetTitle("Threshold"); + histo->GetZaxis()->SetTitle("Differentiated rate"); + return histo; +} + +TH2* get_2D_rate_over_thr_histo(std::shared_ptr dirichptr) +{ + TH2D* histo; + TH2D* divided_histo; + // divided_histo->SetDirectory(0); + gStyle->SetOptStat(0); + if(dirichptr==NULL){ + double max_value=-9999; + // double min_value=9999; + double min_width=1000; + for (auto& dirichitem : dirichlist){ + for(auto& gRateGraphsOverBaseIT : dirichitem.second->gRateGraphsOverBase){ + if( + gRateGraphsOverBaseIT->GetN()!=0 + && max_valueGetX()[gRateGraphsOverBaseIT->GetN()-1] + ){ + max_value = gRateGraphsOverBaseIT->GetX()[gRateGraphsOverBaseIT->GetN()-1]; + // min_value = gRateGraphsOverBaseIT->GetX()[0]; + } + if( + gRateGraphsOverBaseIT->GetN()>=2 + && min_width>abs(gRateGraphsOverBaseIT->GetX()[0]-gRateGraphsOverBaseIT->GetX()[1]) + ) + min_width = abs(gRateGraphsOverBaseIT->GetX()[0]-gRateGraphsOverBaseIT->GetX()[1]); + } + } + histo = new TH2D( + "2D Rate vs. Threshold over baseline of all diriches", + "2D Rate vs. Threshold over baseline of all diriches", + dirichlist.size()*NRCHANNELS, + -.5, + dirichlist.size()*NRCHANNELS-.5, + max_value/min_width/2,0, + max_value + ); + divided_histo = new TH2D( + "temp_diff", + "temp_diff", + dirichlist.size()*NRCHANNELS, + -.5, + dirichlist.size()*NRCHANNELS-.5, + max_value/min_width/2,0, + max_value + ); + int idirich=0; + TLine* dirich_line_left = new TLine( + histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1), + histo->GetYaxis()->GetBinLowEdge(1), + histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1), + histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()) + ); + dirich_line_left->SetLineWidth(2); + dirich_line_left->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_left); + for (auto& dirichitem : dirichlist){ + TLine* dirich_line_right = new TLine( + histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1), + histo->GetYaxis()->GetBinLowEdge(1), + histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1), + histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()) + ); + dirich_line_right->SetLineWidth(2); + dirich_line_right->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_right); + TText* dirich_name = new TText( + histo->GetXaxis()->GetBinCenter((idirich+1./2)*NRCHANNELS+1), + histo->GetYaxis()->GetBinLowEdge(1) + -(0.1*( + histo->GetYaxis()->GetBinLowEdge(1) + -histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()) + )), + Form("0x%x",dirichitem.first) + ); + dirich_name->SetTextAlign(22); + dirich_name->SetTextColor(kRed+2); + dirich_name->SetTextFont(43); + dirich_name->SetTextSize(20); + histo->GetListOfFunctions()->Add(dirich_name); + for(int ichannel=0;ichannelgRateGraphsOverBase[ichannel]->GetN();++ipoint){ + histo->Fill( + idirich*NRCHANNELS+ichannel, + dirichitem.second->gRateGraphsOverBase[ichannel]->GetX()[ipoint], + dirichitem.second->gRateGraphsOverBase[ichannel]->GetY()[ipoint] + ); + divided_histo->Fill( + idirich*NRCHANNELS+ichannel, + dirichitem.second->gRateGraphsOverBase[ichannel]->GetX()[ipoint] + ); + if(ichannel%8==0) + histo->GetXaxis()->SetBinLabel( + idirich*NRCHANNELS+ichannel+1, + Form("%i",ichannel) + ); + else + histo->GetXaxis()->SetBinLabel( + idirich*NRCHANNELS+ichannel+1,"" + ); + } + TLine* thr_line = new TLine( + histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+ichannel+1), + -1*dirichitem.second->GetSingleThresholdmV(ichannel), + histo->GetXaxis()->GetBinUpEdge(idirich*NRCHANNELS+ichannel+1), + -1*dirichitem.second->GetSingleThresholdmV(ichannel) + ); + thr_line->SetLineColor(kRed); + thr_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(thr_line); + } + ++idirich; + } + idirich=0; + } + else{ + double max_value=0; + double min_width=1000; + for(auto& gRateGraphsOverBaseIT : dirichptr->gRateGraphsOverBase){ + if( + gRateGraphsOverBaseIT->GetN()!=0 + && max_valueGetX()[gRateGraphsOverBaseIT->GetN()-1] + ) + max_value = gRateGraphsOverBaseIT->GetX()[gRateGraphsOverBaseIT->GetN()-1]; + if( + gRateGraphsOverBaseIT->GetN()>=2 + && min_width>abs(gRateGraphsOverBaseIT->GetX()[0]-gRateGraphsOverBaseIT->GetX()[1]) + ) + min_width = abs(gRateGraphsOverBaseIT->GetX()[0]-gRateGraphsOverBaseIT->GetX()[1]); + } + histo = new TH2D( + Form("2D Rate vs. Threshold over baseline of %x",dirichptr->GetBoardAddress()), + Form("2D Rate vs. Threshold over baseline of %x",dirichptr->GetBoardAddress()), + NRCHANNELS, + -.5, + NRCHANNELS-.5, + max_value/min_width/2,0, + max_value + ); + divided_histo = new TH2D( + "temp_diff", + "temp_diff", + NRCHANNELS, + -.5, + NRCHANNELS-.5, + max_value/min_width/2,0, + max_value + ); + for(int ichannel=0;ichannelgRateGraphsOverBase[ichannel]->GetN();++ipoint){ + histo->Fill( + ichannel, + dirichptr->gRateGraphsOverBase[ichannel]->GetX()[ipoint], + dirichptr->gRateGraphsOverBase[ichannel]->GetY()[ipoint] + ); + divided_histo->Fill(ichannel,dirichptr->gRateGraphsOverBase[ichannel]->GetX()[ipoint]); + } + TLine* thr_line = new TLine( + histo->GetXaxis()->GetBinLowEdge(ichannel+1), + -1*dirichptr->GetSingleThresholdmV(ichannel), + histo->GetXaxis()->GetBinUpEdge(ichannel+1), + -1*dirichptr->GetSingleThresholdmV(ichannel) + ); + thr_line->SetLineColor(kRed); + thr_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(thr_line); + } + } + + histo->Divide(divided_histo); + + histo->SetMinimum(0); + histo->GetXaxis()->SetTitle("Channel Nr"); + // histo->GetXaxis()->SetTitleOffset(); + histo->GetYaxis()->SetTitle("Threshold"); + histo->GetZaxis()->SetTitle("Rate"); + return histo; +} + +TH1* get_noisewidth_histo(std::shared_ptr dirichptr) +{ + TH1* histo; + if(dirichptr==NULL){ + histo = new TH1D( + "Noisewidthhistogram of all diriches", + "Noisewidthhistogram of all diriches", + dirichlist.size()*NRCHANNELS, + -.5, + dirichlist.size()*NRCHANNELS-.5 + ); + int idirich=0; + for (auto& dirichitem : dirichlist){ + TText* dirich_name = new TText( + histo->GetXaxis()->GetBinCenter((idirich+1./2)*NRCHANNELS+1), + histo->GetYaxis()->GetBinLowEdge(1) + -( + 0.1*histo->GetYaxis()->GetBinLowEdge(1) + -histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()) + ), + Form("0x%x",dirichitem.first) + ); + dirich_name->SetTextAlign(22); + dirich_name->SetTextColor(kRed+2); + dirich_name->SetTextFont(43); + dirich_name->SetTextSize(20); + histo->GetListOfFunctions()->Add(dirich_name); + for(int ichannel=0;ichannelSetBinContent( + idirich*NRCHANNELS+ichannel+1, + dirich::Thr_DtomV(dirichitem.second->GetSingleNoisewidth(ichannel)) + ); + if(ichannel%8==0) + histo->GetXaxis()->SetBinLabel( + idirich*NRCHANNELS+ichannel+1, + Form("%i",ichannel) + ); + else + histo->GetXaxis()->SetBinLabel( + idirich*NRCHANNELS+ichannel+1, + "" + ); + } + ++idirich; + } + TLine* dirich_line_left = new TLine( + histo->GetXaxis()->GetBinLowEdge(1), + histo->GetYaxis()->GetBinLowEdge(1), + histo->GetXaxis()->GetBinLowEdge(1), + histo->GetMaximum()*1.05 + ); + dirich_line_left->SetLineWidth(2); + dirich_line_left->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_left); + for(int i=0;iGetXaxis()->GetBinLowEdge((i+1)*NRCHANNELS+1), + histo->GetYaxis()->GetBinLowEdge(1), + histo->GetXaxis()->GetBinLowEdge((i+1)*NRCHANNELS+1), + histo->GetMaximum()*1.05 + ); + dirich_line_right->SetLineWidth(2); + dirich_line_right->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_right); + } + } + else{ + histo = new TH1D( + Form("Noisewidthhistogram of %x",dirichptr->GetBoardAddress()), + Form("Noisewidthhistogram of %x",dirichptr->GetBoardAddress()), + NRCHANNELS, + -.5, + NRCHANNELS-.5 + ); + for(int ichannel=0;ichannelSetBinContent( + ichannel+1, + (dirich::Thr_DtomV(dirichptr->GetSingleNoisewidth(ichannel))) + ); + } + } + + histo->GetYaxis()->SetTitle("NoisewidthinmV"); + histo->SetMinimum(0); + histo->GetXaxis()->SetTitle("Channel Nr"); + return histo; +} + +TH1* get_diff_histo(std::shared_ptr dirichptr, bool baseline1_noisewidth0) +{ + TH1* histo; + if(dirichptr==NULL){ + if(baseline1_noisewidth0==1) histo = new TH1D( + "Difference in baseline of all diriches", + "Difference in baseline of all diriches", + dirichlist.size()*200, + -300, + +300 + ); + else + histo = new TH1D( + "Difference in noisewidth of all diriches", + "Difference in noisewidth of all diriches", + dirichlist.size()*200, + -300, + +300 + ); + int idirich=0; + for (auto& dirichitem : dirichlist){ + for(int ichannel=0;ichannelFill( + dirichitem.second->GetSingleBaseline(ichannel) + -dirichitem.second->GetSingleBaseline_old(ichannel) + ); + else + histo->Fill( + dirichitem.second->GetSingleNoisewidth(ichannel) + -dirichitem.second->GetSingleNoisewidth_old(ichannel) + ); + } + } + ++idirich; + } + else{ + if(baseline1_noisewidth0==1) + histo = new TH1D( + Form("Difference in baseline of %x",dirichptr->GetBoardAddress()), + Form("Difference in baseline of %x",dirichptr->GetBoardAddress()), + 200, + -300, + +300 + ); + else + histo = new TH1D( + Form("Difference in noisewidth of %x",dirichptr->GetBoardAddress()), + Form("Difference in noisewidth of %x",dirichptr->GetBoardAddress()), + 200, + -300, + +300 + ); + for(int ichannel=0;ichannelFill( + dirichptr->GetSingleBaseline(ichannel) + -dirichptr->GetSingleBaseline_old(ichannel) + ); + else + histo->Fill( + dirichptr->GetSingleNoisewidth(ichannel) + -dirichptr->GetSingleNoisewidth_old(ichannel) + ); + } + } + + histo->GetYaxis()->SetTitle("Number of"); + if(baseline1_noisewidth0==1) + histo->GetXaxis()->SetTitle("Difference between old and new baseline"); + else + histo->GetXaxis()->SetTitle("Difference between old and new noisewidth"); + return histo; +} + +void clear_canvas_vector() +{ + while(canvasvector.size()!=0){ + if(canvasvector.back()==NULL){ + std::cout << "1" << std::endl; + canvasvector.pop_back(); + } + else{ + std::cout << "2" << std::endl; + canvasvector.back()->Clear(); + std::cout << "3" << std::endl; + canvasvector.back()->Close(); + std::cout << "4" << std::endl; + canvasvector.back()->Closed(); + std::cout << "5" << std::endl; + delete canvasvector.back(); + std::cout << "6" << std::endl; + canvasvector.back()=NULL; + std::cout << "7" << std::endl; + canvasvector.pop_back(); + std::cout << "8" << std::endl; + } + } +} + +void draw_multigraph2D(TMultiGraph* multigraph,TCanvas* canvas) +{ + if(canvas==0){ + canvasvector.emplace_back( + new TCanvas( + Form("Canvas%i",(int)canvasvector.size()), + Form("Canvas%i",(int)canvasvector.size()), + 1920, + 1080 + ) + ); + canvasvector.back()->cd(0); + } + else{ + canvas->cd(0); + } + multigraph->Draw("a fb l3d"); + gPad->SetTheta(0); + gPad->SetPhi(-90); + gPad->Update(); + if(canvas==0){ + canvasvector.back()->Modified(); + canvasvector.back()->Update(); + } + else{ + canvas->Modified(); + canvas->Update(); + } +} + +void draw_multigraph(TMultiGraph* multigraph,TCanvas* canvas) +{ + if(canvas==0){ + canvasvector.emplace_back( + new TCanvas( + Form("Canvas%i",(int)canvasvector.size()), + Form("Canvas%i",(int)canvasvector.size()), + 1920, + 1080 + ) + ); + canvasvector.back()->cd(0); + } + else{ + canvas->cd(0); + } + multigraph->Draw("alp"); + double max_value = 0; + for(auto&& graph : (*multigraph->GetListOfGraphs())){ + for(int i=10 ; i < ((TGraph*)graph)->GetN() ; ++i){ + max_value = + ((TGraph*)graph)->GetY()[i] > max_value ? + ((TGraph*)graph)->GetY()[i] : max_value; + } + } + // std::cout << "max_value" << max_value << std::endl; + multigraph->GetHistogram()->GetYaxis()->SetRangeUser( + 0, + max_value==0 ? + 100 : max_value*1.05 + ); + if(canvas==0){ + canvasvector.back()->Modified(); + canvasvector.back()->Update(); + } + else{ + canvas->Modified(); + canvas->Update(); + } +} + +void draw_graph2D(TGraph2D* graph2d,TCanvas* canvas) +{ + if(canvas==0){ + canvasvector.emplace_back( + new TCanvas( + Form("Canvas%i",(int)canvasvector.size()), + Form("Canvas%i",(int)canvasvector.size()), + 1920, + 1080 + ) + ); + canvasvector.back()->cd(0); + } + else{ + canvas->cd(0); + } + graph2d->Draw("surf1"); + gPad->SetTheta(0); + gPad->SetPhi(-90); + gPad->Update(); + if(canvas==0){ + canvasvector.back()->Modified(); + canvasvector.back()->Update(); + } + else{ + canvas->Modified(); + canvas->Update(); + } +} + +void draw_histo(TH1* histo,TCanvas* canvas) +{ + if(canvas==0){ + canvasvector.emplace_back( + new TCanvas( + Form("Canvas%i",(int)canvasvector.size()), + Form("Canvas%i",(int)canvasvector.size()), + 1920, + 1080 + ) + ); + canvasvector.back()->cd(0); + } + else{ + canvas->cd(0); + } + histo->Draw(); + if(canvas==0){ + canvasvector.back()->Modified(); + canvasvector.back()->Update(); + } + else{ + canvas->Modified(); + canvas->Update(); + } +} + +void draw_histo(TH2* histo,TCanvas* canvas) +{ + if(canvas==0){ + canvasvector.emplace_back( + new TCanvas( + Form("Canvas%i",(int)canvasvector.size()), + Form("Canvas%i",(int)canvasvector.size()), + 1920, + 1080 + ) + ); + canvasvector.back()->cd(0); + } + else{ + canvas->cd(0); + } + histo->Draw("COLZ"); + if(canvas==0){ + canvasvector.back()->Modified(); + canvasvector.back()->Update(); + } + else{ + canvas->Modified(); + canvas->Update(); + } +} + +void set_thresholds(std::shared_ptr dirichptr, double thrinmV=30.) +{ + if(thrinmV<0.){ + std::cerr + << "negative thresholds are not \"allowed\"!\ninverting value" + << std::endl; + thrinmV = -1*thrinmV; + } + if(dirichptr==0){ + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 2; + gcheck_thresholds_mutex.unlock(); + + std::vector threads; + for(auto& dirichlistitem : dirichlist) + threads.push_back( + std::thread( + [&dirichlistitem, &thrinmV](){ + dirichlistitem.second->SetThresholdsmV(thrinmV); + } + ) + ); + + for(auto& thread : threads) + thread.join(); + + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 1; + gcheck_thresholds_mutex.unlock(); + } + else if(dirichlist.find(dirichptr->GetBoardAddress())!=dirichlist.end()){ + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 2; + gcheck_thresholds_mutex.unlock(); + + dirichptr->SetThresholdsmV(thrinmV); + + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 1; + gcheck_thresholds_mutex.unlock(); + } + else{ + std::cerr + << "No DiRICH 0x" << std::hex << dirichptr->GetBoardAddress() + << " found" + << std::endl; + } +} + +void set_thresholds_to_noise(std::shared_ptr dirichptr, double part_of_noisewidth=1.5) +{ + if(dirichptr==0){ + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 2; + gcheck_thresholds_mutex.unlock(); + + std::vector threads; + for(auto& dirichlistitem : dirichlist){ + + std::array thresholdvals; + std::array noisevalues = dirichlistitem.second->GetNoisewidths(); + for(int ichannel=0;ichannelSetThresholdsmV(thresholdvals); + } + ) + ); + } + + for(auto& thread : threads) + thread.join(); + + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 1; + gcheck_thresholds_mutex.unlock(); + } + else if(dirichlist.find(dirichptr->GetBoardAddress())!=dirichlist.end()){ + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 2; + gcheck_thresholds_mutex.unlock(); + + std::array thresholdvalues; + std::array noisevalues = dirichptr->GetNoisewidths(); + for(int ichannel=0;ichannelSetThresholdsmV(thresholdvalues); + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 1; + gcheck_thresholds_mutex.unlock(); + } + else{ + std::cerr + << "No DiRICH 0x" << std::hex << dirichptr->GetBoardAddress() + << " found" + << std::endl; + } +} + +void set_pattern(std::shared_ptr dirichptr, uint32_t pattern=4294967295) +{ + if(dirichptr==0){ + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 2; + gcheck_thresholds_mutex.unlock(); + + std::vector threads; + for(auto& dirichlistitem : dirichlist){ + + std::array thresholdvals; + std::array baselines = dirichlistitem.second->GetBaselines(); + for(int ichannel=0;ichannel> ichannel) % 2 == 1 ? + 0 : dirich::Thr_DtomV(OFFTHRESH_low-baselines.at(ichannel)); + } + + threads.push_back( + std::thread( + [&dirichlistitem, &thresholdvals](){ + dirichlistitem.second->SetThresholdsmV(thresholdvals); + } + ) + ); + } + + for(auto& thread : threads) + thread.join(); + + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 1; + gcheck_thresholds_mutex.unlock(); + } + else if(dirichlist.find(dirichptr->GetBoardAddress())!=dirichlist.end()){ + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 2; + gcheck_thresholds_mutex.unlock(); + + std::array thresholdvals; + std::array baselines = dirichptr->GetBaselines(); + for(int ichannel=0;ichannel> ichannel) % 2 == 1 ? + 0 : dirich::Thr_DtomV(OFFTHRESH_low-baselines.at(ichannel)); + } + dirichptr->SetThresholdsmV(thresholdvals); + + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 1; + gcheck_thresholds_mutex.unlock(); + } + else{ + std::cerr << "No DiRICH 0x" << std::hex << dirichptr->GetBoardAddress() + << " found" + << std::endl; + } +} + +void measure_rate(std::shared_ptr dirichptr, std::string filename, double measure_time) +{ + if(dirichptr==NULL){ + std::ofstream file; + file.open(filename, std::ios_base::app); + if(!file) std::cerr << "File for saving (" << filename << ") could not be opened!" << std::endl; + + std::unordered_map> rates; + for(auto& dirich : dirichlist){ + rates.insert(std::pair>( + dirich.first, + std::async(std::launch::async, + &dirich::GetRates, dirich.second.get(), measure_time + ) + )); + } + for(auto& one_rates : rates){ + file + << "# Scan-Data\n# dirich\tchannel\trate\terror\t" + << std::endl; + one_rates.second.wait(); + double* temp_rate_arr = one_rates.second.get(); + for (int ichannel=0; ichannelGetRates(measure_time); + + file + << "# Scan-Data\n# dirich\tchannel\trate\terror\t" + << std::endl; + for (int ichannel=0; ichannelGetBoardAddress() << std::dec << "\t" + << ichannel << "\t" + << rates[ichannel] << "\t" + << sqrt(rates[ichannel])/sqrt(measure_time) << "\t" + << std::endl; + } + if(file) + file.close(); + } +} + +void save_base(std::shared_ptr dirichptr, std::string filename, bool append) +{ + std::ofstream file; + if(append) file.open(filename+".thr", std::ios_base::app); + else file.open(filename+".thr"); + + if(!file) std::cerr << "File for saving (" << filename+".thr" << ") could not be opened!" << std::endl; + + if(dirichptr==NULL){ + std::cout << "saving minimal_data" << std::endl; + int counter=0; + for (auto& dirichlistitem: dirichlist){ + std::cout + << "\r" + << std::setw(10) << std::setprecision(2) << std::fixed + << 1.*((counter+1)*100)/(dirichlist.size()) + << "%" << std::flush; + file + << "# Scan-Settings for 0x" + << std::hex << dirichlistitem.first + << std::dec + << "\n# gMeasureTime\tgLowerEdge(0)\tgUpperEdge(0)\tgStepsize\tgNrPasses\tgMeasureTime_over" + "\tgUpperEdge_over\tgStepsize_over\tgNrPasses_over" + << std::endl; + file + << "# " + << dirichlistitem.second->gMeasureTime + << "\t" << dirichlistitem.second->gLowerEdge.at(0) + << "\t" << dirichlistitem.second->gUpperEdge.at(0) + << "\t" << dirichlistitem.second->gStepsize + << "\t" << dirichlistitem.second->gNrPasses + << "\t" << dirichlistitem.second->gMeasureTime_over + << "\t" << dirichlistitem.second->gUpperEdge_over + << "\t" << dirichlistitem.second->gStepsize_over + << "\t" << dirichlistitem.second->gNrPasses_over + << std::endl; + file + << "# Scan-Data\n# dirich\tchannel\tbaseline\twidth in mV\tthreshold in mV over baseline" + << std::endl; + for (int ichannel=0; ichannelGetSingleBaseline(ichannel) << "\t" + << dirich::Thr_DtomV(dirichlistitem.second->GetSingleNoisewidth(ichannel)) << "\t" + << dirichlistitem.second->GetSingleThresholdmV(ichannel) + << std::endl; + } + counter++; + } + std::cout << std::endl; + } + else{ + file + << "# Scan-Settings for 0x" << std::hex << dirichptr->GetBoardAddress() + << std::dec + << "\n# gMeasureTime\tgLowerEdge(0)\tgUpperEdge(0)\tgStepsize\tgNrPasses\tgMeasureTime_over" + "\tgUpperEdge_over\tgStepsize_over\tgNrPasses_over" + << std::endl; + file + << "# " + << dirichptr->gMeasureTime + << "\t" << dirichptr->gLowerEdge.at(0) + << "\t" << dirichptr->gUpperEdge.at(0) + << "\t" << dirichptr->gStepsize + << "\t" << dirichptr->gNrPasses + << "\t" << dirichptr->gMeasureTime_over + << "\t" << dirichptr->gUpperEdge_over + << "\t" << dirichptr->gStepsize_over + << "\t" << dirichptr->gNrPasses_over + << std::endl; + file + << "# Scan-Data\n# dirich\tchannel\tbaseline\twidth in mV\tthreshold in mV over baseline" + << std::endl; + for (int ichannel=0; ichannelGetBoardAddress() << std::dec << "\t" + << ichannel << "\t" + << dirichptr->GetSingleBaseline(ichannel) << "\t" + << dirich::Thr_DtomV(dirichptr->GetSingleNoisewidth(ichannel)) << "\t" + << dirichptr->GetSingleThresholdmV(ichannel) + << std::endl; + } + } +} + +void load_base(std::shared_ptr dirichptr, + std::string filename, + bool uselast, + bool set_base, + bool set_thr + ) +{ + std::string dirichaddress_string=""; + uint16_t dirichaddress=0; + int channel=0; + int baseline=0; + double width=0; + double thresholdinmV=0; + for (auto& dirichlistitem: dirichlist){ + if(dirichlistitem.second==NULL){ + std::cerr + << "dirich 0x" << std::hex << dirichlistitem.first + << std::dec << " was found uninitialized\nRun initialize_diriches(1/0) first!" + << std::endl; + return; + } + } + std::ifstream file; + file.open(filename); + if(!file) std::cerr << "File for loading (" << filename << ") could not be opened!" << std::endl; + if(dirichptr==NULL){ + std::unordered_map> thresholds; + while(!file.eof()){ + std::string line; + std::getline(file, line); + std::istringstream iss(line); + iss >> dirichaddress_string; + if(dirichaddress_string=="#"){ + std::string dummy; + std::getline(iss,dummy); + continue; + } + // if(dirichaddress_string=="") continue; + iss >> channel >> baseline >> width >> thresholdinmV; + if(iss.tellg()!=-1) + std::cerr + << "Error reading line:\n" << line + << "\nRead in:" + << "\ndirichaddress:0x" << dirichaddress_string + << "\nchannel:" << channel + << "\nbaseline:" << baseline + << "\nwidth:" << width + << "\nthresholdinmV:" << thresholdinmV + << std::endl; + else{ + dirichaddress = (uint16_t)stoi(dirichaddress_string,0,16); + if(dirichlist.count(dirichaddress)!=0){ + if(set_base!=0){ + dirichlist.at(dirichaddress)->SetSingleBaseline_old( + channel, + dirichlist.at(dirichaddress)->GetSingleBaseline(channel) + ); + dirichlist.at(dirichaddress)->SetSingleBaseline( + channel, + baseline + ); + + dirichlist.at(dirichaddress)->SetSingleNoisewidth_old( + channel, + dirichlist.at(dirichaddress)->GetSingleNoisewidth(channel) + ); + dirichlist.at(dirichaddress)->SetSingleNoisewidth( + channel, + dirich::Thr_mVtoD(width) + ); + } + if(set_thr!=0){ + if(thresholds.find(dirichaddress)==thresholds.end()){ + std::array temp_array; + temp_array.fill(0); + thresholds.insert(std::make_pair(dirichaddress,temp_array)); + } + thresholds.at(dirichaddress).at(channel) = thresholdinmV; + } + } + else{ + std::cerr + << "dirich 0x" + << std::hex << dirichaddress + << std::dec << " was not found in list of initialized diriches" + << std::endl; + continue; + } + } + } + std::vector threads; + if(set_thr!=0){ + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 2; + gcheck_thresholds_mutex.unlock(); + + for(auto& one_threshold : thresholds) + threads.push_back(std::thread( + [&one_threshold](){ + dirichlist.at(one_threshold.first)->SetThresholdsmV( + one_threshold.second + ); + } + )); + for(auto& one_thread : threads) + one_thread.join(); + + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 1; + gcheck_thresholds_mutex.unlock(); + } + for (auto& dirichlistitem: dirichlist){ + for(int ichannel=0;ichannelGetSingleBaseline(ichannel)==0) + std::cerr + << "No Baseline for dirich 0x" << std::hex << dirichlistitem.first + << std::dec << "'s channel " << ichannel + << " found in loading-file" + << std::endl; + } + } + } + else if(uselast){ + if(set_base!=0){ + for(int ichannel=0;ichannel<32;++ichannel){ + dirichptr->SetSingleBaseline_old(ichannel, dirichptr->GetSingleBaseline(ichannel)); + dirichptr->SetSingleNoisewidth_old(ichannel, dirichptr->GetSingleNoisewidth(ichannel)); + } + } + std::unordered_map> thresholds; + while(!file.eof()){ + std::string line; + std::getline(file, line); + std::istringstream iss(line); + iss >> dirichaddress_string; + if(dirichaddress_string=="#"){ + std::string dummy; + std::getline(iss,dummy); + continue; + } + iss >> channel >> baseline >> width >> thresholdinmV; + if(iss.tellg()!=-1) + std::cerr + << "Error reading line:\n" << line + << "\nRead in:" + << "\ndirichaddress:0x" << dirichaddress_string + << "\nchannel:" << channel + << "\nbaseline:" << baseline + << "\nwidth:" << width + << "\nthresholdinmV:" << thresholdinmV + << std::endl; + else{ + if(set_base!=0){ + dirichptr->SetSingleBaseline(channel, baseline); + dirichptr->SetSingleNoisewidth(channel, dirich::Thr_mVtoD(width)); + } + if(set_thr!=0){ + if(thresholds.find(dirichaddress)==thresholds.end()){ + std::array temp_array; + temp_array.fill(0); + thresholds.insert(std::make_pair(dirichaddress,temp_array)); + } + thresholds.at(dirichaddress).at(channel) = thresholdinmV; + } + } + } + std::vector threads; + if(set_thr!=0){ + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 2; + gcheck_thresholds_mutex.unlock(); + + for(auto& one_threshold : thresholds) + threads.push_back(std::thread( + [&one_threshold](){ + dirichlist.at(one_threshold.first)->SetThresholdsmV( + one_threshold.second + ); + } + )); + for(auto& one_thread : threads) + one_thread.join(); + + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 1; + gcheck_thresholds_mutex.unlock(); + } + } + else{ + if(set_base!=0){ + for(int ichannel=0;ichannel<32;++ichannel){ + dirichptr->SetSingleBaseline_old( + ichannel, + dirichptr->GetSingleBaseline(ichannel) + ); + dirichptr->SetSingleNoisewidth_old( + ichannel, + dirichptr->GetSingleNoisewidth(ichannel) + ); + } + } + while(!file.eof()){ + std::string line; + std::getline(file, line); + std::istringstream iss(line); + iss >> dirichaddress_string; + if(dirichaddress_string=="#"){ + std::string dummy; + std::getline(iss,dummy); + continue; + } + iss >> channel >> baseline >> width >> thresholdinmV; + dirichaddress = (uint16_t)stoi(dirichaddress_string,0,16); + if(iss.tellg()!=-1) + std::cerr + << "Error reading line:\n" << line + << "\nRead in:" + << "\ndirichaddress:0x" << dirichaddress_string + << "\nchannel:" << channel + << "\nbaseline:" << baseline + << "\nwidth:" << width + << "\nthresholdinmV:" << thresholdinmV + << std::endl; + else if(dirichaddress==dirichptr->GetBoardAddress()){ + if(set_base!=0){ + dirichptr->SetSingleBaseline(channel, baseline); + dirichptr->SetSingleNoisewidth(channel, dirich::Thr_mVtoD(width)); + } + if(set_thr!=0) dirichptr->SetSingleThresholdmV(channel, thresholdinmV); + } + } + } +} + +void save_graphs(std::shared_ptr dirichptr, std::string filename){ + TFile* file=new TFile(Form("%s.root", filename.c_str()),"RECREATE"); + if(dirichptr==NULL){ + file->cd(); + // get_noisewidth_histo(0)->Write(); + // get_2D_rate_histo(0)->Write(); + // get_2D_rate_over_thr_histo(0)->Write(); + // get_2D_diff_over_thr_histo(0)->Write(); + // get_2D_gr_diff_over_thr_histo(0)->Write(); + // get_2D_mgr_diff_over_thr_histo(0)->Write(); + std::cout << "saving graphs" << std::endl; + int counter=0; + for (auto& dirichlistitem: dirichlist) { + std::cout + << "\r" + << std::setw(10) << std::setprecision(2) << std::fixed + << 1.*((counter+1)*100)/(dirichlist.size()) + << "%" << std::flush; + TDirectory *dirich_dir = file->mkdir(Form("dirich_0x%x",dirichlistitem.first)); + dirich_dir->cd(); + get_noisewidth_histo(dirichlistitem.second)->Write(); + get_2D_rate_histo(dirichlistitem.second)->Write(); + get_2D_rate_over_thr_histo(dirichlistitem.second)->Write(); + get_2D_diff_over_thr_histo(dirichlistitem.second)->Write(); + // get_2D_gr_diff_over_thr_histo(dirichlistitem.second)->Write(); + // get_2D_mgr_diff_over_thr_histo(dirichlistitem.second)->Write(); + // TDirectory *channels = dirich_dir->mkdir("channels"); + // channels->cd(); + for(int ichannel=0;ichannelmkdir(Form("ch:%i",ichannel)); + // ch->cd(); + dirichlistitem.second->gRateGraphs[ichannel]->Write(); + dirichlistitem.second->gRateGraphsOverBase[ichannel]->Write(); + dirichlistitem.second->gDiffRateGraphsOverBase[ichannel]->Write(); + } + counter++; + } + std::cout << std::endl; + } + else{ + file->cd(); + TDirectory *dirich_dir = file->mkdir(Form("dirich_0x%x",dirichptr->GetBoardAddress())); + dirich_dir->cd(); + get_noisewidth_histo(dirichptr)->Write(); + get_2D_rate_histo(dirichptr)->Write(); + get_2D_rate_over_thr_histo(dirichptr)->Write(); + get_2D_diff_over_thr_histo(dirichptr)->Write(); + // get_2D_gr_diff_over_thr_histo(dirichptr)->Write(); + // get_2D_mgr_diff_over_thr_histo(dirichptr)->Write(); + // TDirectory *channels = dirich_dir->mkdir("channels"); + // channels->cd(); + for(int ichannel=0;ichannelmkdir(Form("ch:%i",ichannel)); + // ch->cd(); + dirichptr->gRateGraphs[ichannel]->Write(); + dirichptr->gRateGraphsOverBase[ichannel]->Write(); + dirichptr->gDiffRateGraphsOverBase[ichannel]->Write(); + } + } + file->Close(); + // gROOT->GetListOfFiles()->Remove(file); // to get a faster closing time +} + +void save() +{ + std::array buffer; + buffer.fill(0); + time_t rawtime; + time(&rawtime); + const auto timeinfo = localtime(&rawtime); + strftime(buffer.data(), sizeof(buffer), "%Y%m%d_%H%M%S", timeinfo); + std::string str = std::string(buffer.data()) + "_std_save"; + + save_base(NULL,str,0); + save_graphs(NULL,str); +} + +void* scanthread_nrml(void* dirichptr) //Argument is pointer to DiRICH class instance +{ + if(((dirich*)dirichptr)->gdirich_reporting_level>=1) + std::cout + << "Starting threshscan for Dirich at address 0x" + << std::hex << ((dirich*)dirichptr)->GetBoardAddress() + << std::endl; + // std::cout << "DoThreshScan" << std::endl; + ((dirich*)dirichptr)->DoThreshScan(); + // std::cout << "AnalyzeBaseline" << std::endl; + ((dirich*)dirichptr)->AnalyzeBaseline(); + // std::cout << "FineScan" << std::endl; + ((dirich*)dirichptr)->DoFineThreshScan(); + // std::cout << "AnalyzeBaseline" << std::endl; + ((dirich*)dirichptr)->AnalyzeBaseline(); + // std::cout << "MakeGraphsOverBase" << std::endl; + ((dirich*)dirichptr)->MakeGraphsOverBase(); + // std::cout << "MakeDiffGraphsOverBase" << std::endl; + ((dirich*)dirichptr)->MakeDiffGraphsOverBase(); + if(((dirich*)dirichptr)->gdirich_reporting_level>=1) + std::cout + << "Threshscan for Dirich at address 0x" + << std::hex << ((dirich*)dirichptr)->GetBoardAddress() + << " done" + << std::endl; + return 0; +} + +void* scanthread_over(void* dirichptr) //Argument is pointer to DiRICH class instance +{ + if(((dirich*)dirichptr)->gdirich_reporting_level>=1) + std::cout + << "Starting threshscan_over for Dirich at address 0x" + << std::hex << ((dirich*)dirichptr)->GetBoardAddress() + << std::endl; + ((dirich*)dirichptr)->DoThreshScanOverBase(); + ((dirich*)dirichptr)->MakeDiffGraphsOverBase(); + if(((dirich*)dirichptr)->gdirich_reporting_level>=1) + std::cout + << "Threshscan_over for Dirich at address 0x" + << std::hex << ((dirich*)dirichptr)->GetBoardAddress() + << " done" + << std::endl; + return 0; +} + +void system_thr_scan(int type=0) +{ + if(type==0){ + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 1; + gcheck_thresholds_mutex.unlock(); + } + else{ + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 2; + gcheck_thresholds_mutex.unlock(); + } + std::vector threadlist; + // Initialize instances of dirich class for each module + for (auto& dirichlistitem: dirichlist){ + if(dirichlistitem.second==NULL){ + std::cerr + << "DiRICH " << std::hex << dirichlistitem.first + << std::dec << " not initialized!" + << std::endl; + continue; + } + switch(type){ + case 1: + threadlist.push_back( + new std::thread( + scanthread_over, + (void*) dirichlistitem.second.get() + ) + ); + break; + case 0: + default: + threadlist.push_back( + new std::thread( + scanthread_nrml, + (void*) dirichlistitem.second.get() + ) + ); + break; + } + } + usleep(1000); + + for(auto& thread : threadlist){ + thread->join(); + delete thread; + } + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 1; + gcheck_thresholds_mutex.unlock(); + // threadlist.clear(); + // printf("System scan done ! \n"); + switch(type){ + case 1: + save(); + break; + case 0: + default: + save(); + break; + } + +} + +void* check_thresholds(){ + // return 0; + if(self_check_threshold==true) return 0; + int ret = 0; + int break_counter=0; + std::map> thresholds; + std::array temp_array; + temp_array.fill(0); + for(auto& dirichlistitem : dirichlist){ + thresholds.insert(std::make_pair(dirichlistitem.first,temp_array)); + } + uint32_t temp_buffer4mb[BUFFER_SIZE4mb]; + while(true){ + gcheck_thresholds_mutex.lock(); + int temp_gcheck_thresholds = gcheck_thresholds; + gcheck_thresholds_mutex.unlock(); + switch(temp_gcheck_thresholds){ + case 0: + default: + return 0; + case 1: + std::this_thread::sleep_for(std::chrono::microseconds(10*THRESHDELAY)); + break; + case 2: + for(int ichannel=0;ichannel100) return 0; + else break; + } + std::this_thread::sleep_for(std::chrono::microseconds(SPICOMDELAY)); + ret=Ttrb_register_read(BROADCAST,0xd412,temp_buffer4mb,BUFFER_SIZE4mb); + if(ret<0){ + std::cerr << "Can't retreive Thresholds (2)!!!" << std::endl; + break_counter++; + if(break_counter>100) return 0; + else break; + } + for(int i=0;iCurrent_Thr_Mutex.lock(); + dirichlist.at(threshold.first)->gCurrent_Threshold = threshold.second; + dirichlist.at(threshold.first)->gCurrent_Threshold_time = std::chrono::steady_clock::now(); + dirichlist.at(threshold.first)->Current_Thr_Mutex.unlock(); + } + // std::cout << "done checking" << std::endl; + std::this_thread::sleep_for(std::chrono::microseconds(SPICOMDELAY)); + break; + } + } + return 0; +} + +dirich* make_new_dirich(uint16_t uid){ + return new dirich(uid); +} + +void initialize_diriches(bool search_dirich) +{ +// void initialize_diriches(bool search_dirich, std::vector ranges, int NrPasses, double meas_time){ + TH1::AddDirectory(0); + gErrorIgnoreLevel = kError; + int ret=0; + ret=init_ports(); + + if(ret==-1){ + std::cerr << "failed to initialize trb-net ports" << std::endl; + } + dirichlist.clear(); + + if(search_dirich){ + int dirich_counter=0; + ret=Ttrb_read_uid(BROADCAST, buffer4mb, BUFFER_SIZE4mb); + if(ret<4){ + std::cerr << "No TRB3 Modules found!!!" << std::endl; + return; + } + std::unordered_map> inited_diriches; + for(int i=0;i0x1200 && buffer[i+3]<0x1200) + inited_diriches.insert( + std::make_pair( + uint16_t(buffer4mb[i+3]), + std::async( + std::launch::async, + [](uint16_t uid) ->dirich* { + return new dirich(uid); + }, + uint16_t(buffer4mb[i+3]) + ) + ) + ); + ++dirich_counter; + } + for(auto& one_dirich : inited_diriches){ + one_dirich.second.wait(); + dirich* temp_dirich_prt = one_dirich.second.get(); + if(temp_dirich_prt->WhichDirichVersion()!=3){ + //pls change it according to your initialization... Sure one should rather throw during init... but well I am lazy + std::cerr + << "DiRICH 0x" << std::hex << one_dirich.first + << " not correclty initialized. Deleting!" + << std::endl; + delete one_dirich.second.get(); + } + else + dirichlist.insert( + std::make_pair(one_dirich.first,std::shared_ptr(temp_dirich_prt)) + ); + } + std::cout + << "Found " << std::dec << inited_diriches.size() + << " different diriches\nInitialized " << dirichlist.size() + << " out of those" + << std::endl; + } + if(dirichlist.size()==0) exit(EXIT_FAILURE); + // for(auto& dirichlistitem : dirichlist){ + // dirichlistitem.second->gdirich_reporting_level=3; + // } + dirichlist.begin()->second->gdirich_reporting_level=1; + // std::cout << dirichlist.end()->first << std::endl; + // dirichlist.end()->second->gdirich_reporting_level=1; +} + +void setup_scan_parameters( + std::shared_ptr dirichptr, + double gMeasureTime, + int gLowerEdge, + int gUpperEdge, + int gStepsize, + int gNrPasses +) +{ + if(dirichptr==NULL){ + for (auto& dirichlistitem: dirichlist) { + if(dirichlistitem.second==NULL){ + std::cerr + << "dirich 0x" << std::hex << dirichlistitem.first + << std::dec << " not initialized" + << std::endl; + continue; + } + dirichlistitem.second->gMeasureTime = gMeasureTime; + dirichlistitem.second->gLowerEdge.fill(gLowerEdge); + dirichlistitem.second->gUpperEdge.fill(gUpperEdge); + dirichlistitem.second->gStepsize = gStepsize; + dirichlistitem.second->gNrPasses = gNrPasses; + } + } + else{ + dirichptr->gMeasureTime = gMeasureTime; + dirichptr->gLowerEdge.fill(gLowerEdge); + dirichptr->gUpperEdge.fill(gUpperEdge); + dirichptr->gStepsize = gStepsize; + dirichptr->gNrPasses = gNrPasses; + } +} + +void setup_scan_parameters_over_thr_mV( + std::shared_ptr dirichptr, + double gMeasureTime, + double gUpperEdgemV, + double gStepsizemV, + int gNrPasses +) +{ + if(dirichptr==NULL){ + for (auto& dirichlistitem: dirichlist) { + if(dirichlistitem.second==NULL){ + std::cerr + << "dirich 0x" << std::hex << dirichlistitem.first + << std::dec << " not initialized" + << std::endl; + continue; + } + dirichlistitem.second->gMeasureTime_over = gMeasureTime; + dirichlistitem.second->gUpperEdge_over = gUpperEdgemV; + dirichlistitem.second->gStepsize_over = gStepsizemV; + dirichlistitem.second->gNrPasses_over = gNrPasses; + } + } + else{ + dirichptr->gMeasureTime_over = gMeasureTime; + dirichptr->gUpperEdge_over = gUpperEdgemV; + dirichptr->gStepsize_over = gStepsizemV; + dirichptr->gNrPasses_over = gNrPasses; + } +} + + +int main(int argc, char* argv[]){ + std::string loading_file = ""; + std::string loading_file_threshold = ""; + std::string save_file = ""; + // Declare the supported options. + po::options_description desc("Allowed options"); + desc.add_options() + ( + "help,h", + "produce help message" + ) + ( + "verbosity,v", + po::value(), + "Set verbosity level" + ) + // ( + // "use-dirich,u", + // po::value>()->multitoken(), + // "Add diriches to the dirichlist. If dirich does not exist it will be simulated" + // ) + // ( + // "dont-search-dirich", + // "Dont't search for active diriches during startup." + // ) + ( + "scan-baseline,b", + po::value>()->multitoken(), + "Do standard baselinescan. " + "Six parameters need to be given:" + "dirich (if 0, all diriches), " + "measure-time (s), " + "threshold-start-value, " + "threshold-end-value, " + "threshold-step-width, " + "number of cycles (two refers to every second channel measured at a time). " + "Values will be set for all diriches!" + ) + ( + "draw-scan-baseline,d", + po::value>()->multitoken(), + "Draw the results of the baselinescan. " + "Dirich can be specified using this options parameter. " + "Obviously this function fails if no scan was done!" + ) + ( + "draw-scan-above-noise", + po::value>()->multitoken(), + "Draw the results of the thresholdscan above the diriches noiseband. " + "Dirich can be specified using this options parameter. " + "Obviously this function fails if no scan was done!" + ) + ( + "draw-scan-above-noise-diff-gr", + po::value>()->multitoken(), + "Draw the results of the baselinescan above the diriches noiseband as differential plot. " + "Dirich can be specified using this options parameter. " + "Obviously this function fails if no scan was done!" + ) + ( + "draw-noisewidth,w", + po::value>()->multitoken(), + "Draw the noisewidth. " + "Dirich can be specified using this options parameter. " + "Obviously this function fails if neither a scan was done nor a threshold-setting was loaded!" + ) + ( + "measure-rate,r", + po::value>()->multitoken(), + "measure the rate for given dirich (if 0, all diriches)" + ) + // ( + // "find-threshold,i", + // po::value(), + // " + // Find the perfect threshold for the given dirich/maptm-channel-combination. + // The parameter specifies the method to find the perfect threshold: + // \n0: searches for the minimum in the differentiated spectrum or for the minimal gradient + // \n0>()->multitoken(), + "Do scan for threshold-values greater than the diriches noiseband. " + "Five parameters need to be given:" + "dirich (if 0, all diriches), " + "measure-time (s), " + "threshold-end-value (mV), " + "threshold-step-width (mV), " + "number of cycles (two refers to every second channel measured at a time" + ) + ( + "load-baseline,l", + po::value>()->multitoken(), + "This option loads the baseline from the file specified in --loading-file. " + "If no file was specified, the latest produced file is choosen. " + "One can specify a certain dirich by using this options parameter. " + "Be aware that this option overwrites the baseline retreived from the baselinescan" + ) + ( + "load-threshold", + po::value>()->multitoken(), + "This option loads the threshold from the file specified in --loading-file-threshold. " + "If no file was specified, the latest produced file is choosen. " + "One can specify a certain dirich by using this options parameter. " + "Be aware that the thresholds are overwriten by --set-threshold" + ) + ( + "loading-file,f", + po::value(&loading_file)->default_value(""), + "File to load thresholds and/or baseline from" + ) + ( + "loading-file-threshold", + po::value(&loading_file_threshold)->default_value(""), + "File to load thresholds from. If no file is specified, the normal loading-file is used" + ) + ( + "set-to-noise,n", + po::value>()->multitoken(), + "Set threshold to a certain distance in terms of noisewidth for specified diriches. " + "First Parameter specifies the dirich (0 equals all DiRICHes), " + "the second the part of the half-noisebandwidth." + ) + ( + "set-threshold,t", + po::value>()->multitoken(), + "Set threshold for specified diriches in mV. " + "First Parameter specifies the dirich (0 equals all DiRICHes), " + "the second the threshold. " + "Only positive threshold values are accepted, as the minus-sign induces errors." + ) + ( + "set-pattern,p", + po::value>()->multitoken(), + "Set pattern for specified diriches. " + "First Parameter specifies the dirich (0 equals all DiRICHes), the second the pattern. " + "The pattern is derived by interpreting the second parameter " + " as bitpattern and disabling each channel where the corresponding bit equals 0. " + "To disable one or many diriches completely you need to put the pattern 00!. " + "And... What you are searching for is 1431655765/2863311530" + ) + ( + "save,s", + po::value>()->multitoken(), + "Save histograms and data of specified dirich after everything else is executed! " + "Autosaves will be still produced and saved via \"DATE_std_save{.thr,.root}\". " + "Savefile can be set via --save-file" + ) + ( + "save-file", + po::value(&save_file)->default_value(""), + "Save histograms and data. If no file specified, a std. filename will be produced" + ) + ; +// implicit_value(std::vector{"0"},"0") + po::variables_map vm; + po::store(po::parse_command_line(argc, argv, desc), vm); + po::notify(vm); + + if (vm.count("help")) { + std::cout << desc << std::endl; + return 0; + } + if(loading_file==""){ + fs::path latest; + std::time_t latest_tm {}; + for (auto&& entry : boost::make_iterator_range(fs::directory_iterator("."), {})) { + fs::path p = entry.path(); + if (is_regular_file(p) && p.extension() == ".thr") + { + std::time_t timestamp = fs::last_write_time(p); + if (timestamp > latest_tm) { + latest = p; + latest_tm = timestamp; + } + } + } + loading_file = latest.filename().string(); + } + + // if(vm.count("use-diriches")){ + // for(auto& use_diriches_options : vm["use-diriches"].as>()){ + // dirichlist.emplace( + // std::stoi( + // use_diriches_options.substr(use_diriches_options.find("0x")!=std::string::npos ? + // use_diriches_options.find("0x")+2 : 0),NULL,16) + // ,(dirich*)NULL + // ); + // } + // } + + // if(!vm.count("dont-search-dirich")) initialize_diriches(1); + // else initialize_diriches(0); + + initialize_diriches(1); + std::cout << "All set and done" << std::endl; + std::thread* threshold_checker= new std::thread(check_thresholds); + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 1; + gcheck_thresholds_mutex.unlock(); + + if(vm.count("verbosity")){ + for(auto& dirich : dirichlist){ + dirich.second->gdirich_reporting_level=vm["verbosity"].as(); + } + } + + if(vm.count("scan-baseline")){ + if(vm["scan-baseline"].empty() || (vm["scan-baseline"].as>()).size() < 6){ + std::cout + << "no or less than six arguments were provided for option --scan-baseline:" + "\nrunning scan with std. parameters" + << std::endl; + } + else{ + std::vector> each_scan_base_opt; + std::vector temp_vec; + for(auto& scan_base_opt : vm["scan-baseline"].as>()){ + std::cout << scan_base_opt << std::endl; + if(scan_base_opt.find("0x")!=std::string::npos || scan_base_opt=="0"){ + // std::cout << "0 or 0x" <>()){ + // std::cout << "input for draw-scan-baseline: " << draw_scan_baseline_options << std::endl; + if(draw_scan_baseline_options=="0") + draw_histo(get_2D_rate_histo(NULL),NULL); + else + draw_histo( + get_2D_rate_histo( + dirichlist.at( + std::stoi( + draw_scan_baseline_options.substr(draw_scan_baseline_options.find("0x")!=std::string::npos ? + draw_scan_baseline_options.find("0x")+2 : 0 + ), + NULL, + 16 + ) + ) + ), + NULL + ); + } + } + if(vm.count("draw-noisewidth")){ + if(vm["draw-noisewidth"].empty()){ + draw_histo(get_noisewidth_histo(NULL),NULL); + } + for(auto& draw_noisewidth_options : vm["draw-noisewidth"].as>()){ + if(draw_noisewidth_options=="0") + draw_histo(get_noisewidth_histo(NULL),NULL); + else + draw_histo( + get_noisewidth_histo( + dirichlist.at( + std::stoi( + draw_noisewidth_options.substr(draw_noisewidth_options.find("0x")!=std::string::npos ? + draw_noisewidth_options.find("0x")+2 : 0 + ), + NULL, + 16 + ) + ) + ), + NULL + ); + } + } + } + + if(vm.count("load-baseline")){ + // std::cout << "inside load baseline" << std::endl; + if(loading_file==""){ + std::cout << "no loading-file found!\n! aborting !" << std::endl; + } + else{ + std::cout << "loading_file: " << loading_file << std::endl; + for(auto& load_baseline_opt : vm["load-baseline"].as>()){ + if(load_baseline_opt=="0") + load_base(NULL, loading_file, 0, 1, 0); + else + load_base( + dirichlist.at( + std::stoi( + load_baseline_opt.substr(load_baseline_opt.find("0x")!=std::string::npos ? + load_baseline_opt.find("0x")+2 : 0), + NULL, + 16) + ), + loading_file, + 0, + 1, + 0 + ); + } + if(vm.count("draw-noisewidth")){ + if(vm["draw-noisewidth"].empty()){ + draw_histo(get_noisewidth_histo(NULL),NULL); + } + for(auto& draw_noisewidth_options : vm["draw-noisewidth"].as>()){ + if(draw_noisewidth_options=="0") + draw_histo(get_noisewidth_histo(NULL),NULL); + else + draw_histo( + get_noisewidth_histo( + dirichlist.at( + std::stoi(draw_noisewidth_options.substr(draw_noisewidth_options.find("0x")!=std::string::npos ? + draw_noisewidth_options.find("0x")+2 : 0), + NULL, + 16 + ) + ) + ), + NULL + ); + } + } + } + } + + if(vm.count("scan-above-noise")){ + if(vm["scan-above-noise"].empty() || (vm["scan-above-noise"].as>()).size() < 5){ + std::cout + << "no or less than five arguments were provided for option --scan-above-noise:\nrunning scan with std. parameters" + << std::endl; + } + else{ + std::vector> each_scan_above_noise_opt; + std::vector temp_vec; + for(auto& scan_above_noise_opt : vm["scan-above-noise"].as>()){ + if(scan_above_noise_opt.find("0x")!=std::string::npos || scan_above_noise_opt=="0"){ + if(temp_vec.size()==5){ + each_scan_above_noise_opt.push_back(temp_vec); + } + temp_vec.clear(); + } + temp_vec.push_back(scan_above_noise_opt); + } + if(temp_vec.size()==5){ + each_scan_above_noise_opt.push_back(temp_vec); + } + for(auto& one_scan_above_noise_opt : each_scan_above_noise_opt){ + std::cout + << std::stoi(one_scan_above_noise_opt.at(0).substr( + one_scan_above_noise_opt.at(0).find("0x")!=std::string::npos ? + one_scan_above_noise_opt.at(0).find("0x")+2 : 0), + NULL, + 16 + ) << "\t" + << std::stod(one_scan_above_noise_opt.at(1)) << "\t" + << std::stod(one_scan_above_noise_opt.at(2)) << "\t" + << std::stod(one_scan_above_noise_opt.at(3)) << "\t" + << std::stoi(one_scan_above_noise_opt.at(4)) + << std::endl; + setup_scan_parameters_over_thr_mV( + one_scan_above_noise_opt.at(0) == "0" ? + 0 : dirichlist.at( + std::stoi(one_scan_above_noise_opt.at(0).substr(one_scan_above_noise_opt.at(0).find("0x")!=std::string::npos ? + one_scan_above_noise_opt.at(0).find("0x")+2 : 0), + NULL, + 16 + ) + ) + , std::stod(one_scan_above_noise_opt.at(1)) + , std::stod(one_scan_above_noise_opt.at(2)) + , std::stod(one_scan_above_noise_opt.at(3)) + , std::stoi(one_scan_above_noise_opt.at(4)) + ); + } + } + system_thr_scan(1); + } + + if(vm.count("load-threshold")){ + if(loading_file_threshold=="") + loading_file_threshold=loading_file; + for(auto& load_threshold_options : vm["load-threshold"].as>()){ + std::cout << "loading_file_threshold: " << loading_file_threshold << std::endl; + if(load_threshold_options=="0") + load_base(NULL, loading_file_threshold,0, 0, 1); + else + load_base( + dirichlist.at( + std::stoi( + load_threshold_options.substr( + load_threshold_options.find("0x")!=std::string::npos ? load_threshold_options.find("0x")+2 : 0 + ), + NULL, + 16 + ) + ), + loading_file_threshold, + 0, + 0, + 1 + ); + } + } + + if(vm.count("scan-above-noise")){ + if(vm.count("draw-scan-above-noise")){ + if(vm["draw-scan-above-noise"].empty()){ + draw_histo(get_2D_rate_over_thr_histo(NULL),NULL); + } + for(auto& draw_scan_above_noise_options : vm["draw-scan-above-noise"].as>()){ + if(draw_scan_above_noise_options=="0") + draw_histo(get_2D_rate_over_thr_histo(NULL),NULL); + else + draw_histo( + get_2D_rate_over_thr_histo( + dirichlist.at( + std::stoi( + draw_scan_above_noise_options.substr(draw_scan_above_noise_options.find("0x")!=std::string::npos ? + draw_scan_above_noise_options.find("0x")+2 : 0), + NULL, + 16 + ) + ) + ), + NULL + ); + } + } + if(vm.count("draw-scan-above-noise-diff-gr")){ + if(vm["draw-scan-above-noise-diff-gr"].empty()){ + draw_multigraph(get_2D_mgr_diff_over_thr_histo(NULL),NULL); + } + for(auto& draw_scan_above_noise_diff_options : vm["draw-scan-above-noise-diff-gr"].as>()){ + if(draw_scan_above_noise_diff_options=="0") + draw_multigraph(get_2D_mgr_diff_over_thr_histo(NULL),NULL); + else + draw_multigraph( + get_2D_mgr_diff_over_thr_histo( + dirichlist.at( + std::stoi( + draw_scan_above_noise_diff_options.substr(draw_scan_above_noise_diff_options.find("0x")!=std::string::npos ? + draw_scan_above_noise_diff_options.find("0x")+2 : 0), + NULL, + 16 + ) + ) + ), + NULL + ); + } + } + } + + if(vm.count("set-to-noise")){ + if(vm["set-to-noise"].empty() || (vm["set-to-noise"].as>()).size() < 2){ + std::cout + << "no or less than two arguments were provided for option --set-to-noise:\nno thresholds will be set" + << std::endl; + } + else{ + std::vector> each_set_threshold_noise_opt; + std::vector temp_vec; + for(auto& set_threshold_noise_opt : vm["set-to-noise"].as>()){ + if(set_threshold_noise_opt.find("0x")!=std::string::npos || set_threshold_noise_opt=="0"){ + if(temp_vec.size()==2){ + each_set_threshold_noise_opt.push_back(temp_vec); + } + temp_vec.clear(); + } + temp_vec.push_back(set_threshold_noise_opt); + } + if(temp_vec.size()==2){ + each_set_threshold_noise_opt.push_back(temp_vec); + } + for(auto& one_set_threshold_noise_opt : each_set_threshold_noise_opt){ + std::cout << "Setting Threshold of: " + << std::stoi( + one_set_threshold_noise_opt.at(0).substr(one_set_threshold_noise_opt.at(0).find("0x")!=std::string::npos ? + one_set_threshold_noise_opt.at(0).find("0x")+2 : 0), + NULL, + 16 + ) << "\t" + << " to: " + << std::stod(one_set_threshold_noise_opt.at(1)) + << " times the noisebandwidth" << std::endl; + set_thresholds_to_noise( + one_set_threshold_noise_opt.at(0) == "0" ? + 0 : dirichlist.at( + std::stoi( + one_set_threshold_noise_opt.at(0).substr(one_set_threshold_noise_opt.at(0).find("0x")!=std::string::npos ? + one_set_threshold_noise_opt.at(0).find("0x")+2 : 0), + NULL, + 16 + ) + ), + std::stod(one_set_threshold_noise_opt.at(1)) + ); + } + } + } + + if(vm.count("set-threshold")){ + if(vm["set-threshold"].empty() || (vm["set-threshold"].as>()).size() < 2){ + std::cout + << "no or less than two arguments were provided for option --set-threshold:\nno thresholds will be set" + << std::endl; + } + else{ + std::vector> each_set_threshold_opt; + std::vector temp_vec; + for(auto& set_threshold_opt : vm["set-threshold"].as>()){ + if(set_threshold_opt.find("0x")!=std::string::npos || set_threshold_opt=="0"){ + if(temp_vec.size()==2){ + each_set_threshold_opt.push_back(temp_vec); + } + temp_vec.clear(); + } + temp_vec.push_back(set_threshold_opt); + } + if(temp_vec.size()==2){ + each_set_threshold_opt.push_back(temp_vec); + } + for(auto& one_set_threshold_opt : each_set_threshold_opt){ + std::cout << "Setting Threshold of: " + << std::stoi( + one_set_threshold_opt.at(0).substr(one_set_threshold_opt.at(0).find("0x")!=std::string::npos ? + one_set_threshold_opt.at(0).find("0x")+2 : 0), + NULL, + 16 + ) + << "\t" << " to: " + << std::stod(one_set_threshold_opt.at(1)) + << std::endl; + set_thresholds( + one_set_threshold_opt.at(0) == "0" ? + 0 : dirichlist.at( + std::stoi( + one_set_threshold_opt.at(0).substr(one_set_threshold_opt.at(0).find("0x")!=std::string::npos ? + one_set_threshold_opt.at(0).find("0x")+2 : 0), + NULL, + 16 + ) + ), + std::stoi(one_set_threshold_opt.at(1)) + ); + } + } + } + + if(vm.count("set-pattern")){ + if(vm["set-pattern"].empty() || (vm["set-pattern"].as>()).size() < 2){ + std::cout + << "no or less than two arguments were provided for option --set-pattern:\nno thresholds will be set" + << std::endl; + } + else{ + std::vector> each_set_pattern_opt; + std::vector temp_vec; + for(auto& set_pattern_opt : vm["set-pattern"].as>()){ + if(set_pattern_opt.find("0x")!=std::string::npos || set_pattern_opt=="0"){ + if(temp_vec.size()==2){ + each_set_pattern_opt.push_back(temp_vec); + } + temp_vec.clear(); + } + temp_vec.push_back(set_pattern_opt); + } + if(temp_vec.size()==2){ + each_set_pattern_opt.push_back(temp_vec); + } + for(auto& one_set_pattern_opt : each_set_pattern_opt){ + std::cout << "Setting Threshold of: " + << std::stoi( + one_set_pattern_opt.at(0).substr(one_set_pattern_opt.at(0).find("0x")!=std::string::npos ? + one_set_pattern_opt.at(0).find("0x")+2 : 0),NULL,16) + << "\t" << " to: "; + for(int ichannel=0;ichannel> ichannel) % 2; + std::cout << std::endl; + set_pattern( + one_set_pattern_opt.at(0) == "0" ? + 0 : dirichlist.at( + std::stoi( + one_set_pattern_opt.at(0).substr(one_set_pattern_opt.at(0).find("0x")!=std::string::npos ? + one_set_pattern_opt.at(0).find("0x")+2 : 0), + NULL, + 16 + ) + ), + std::stol(one_set_pattern_opt.at(1)) + ); + } + } + } + + if(save_file==""){ + std::array buffer; + buffer.fill(0); + time_t rawtime; + time(&rawtime); + const auto timeinfo = localtime(&rawtime); + strftime(buffer.data(), sizeof(buffer), "%Y%m%d_%H%M%S", timeinfo); + save_file = std::string(buffer.data()) + "_std_save"; + } + else{ + save_file=vm["save-file"].as(); + } + + if(vm.count("save")){ + for(auto& save_options : vm["save"].as>()){ + if(save_options=="0"){ + save_base(NULL,save_file,1); + save_graphs(NULL,save_file); + } + else{ + save_base( + dirichlist.at( + std::stoi( + save_options.substr(save_options.find("0x")!=std::string::npos ? + save_options.find("0x")+2 : 0), + NULL, + 16 + ) + ), + save_file, + 1 + ); + save_graphs( + dirichlist.at( + std::stoi( + save_options.substr(save_options.find("0x")!=std::string::npos ? + save_options.find("0x")+2 : 0), + NULL, + 16 + ) + ), + save_file + ); + } + } + } + + std::string rate_file = save_file + "_rate.dat"; + if(vm.count("measure-rate")){ + if(vm["measure-rate"].empty() || (vm["measure-rate"].as>()).size() < 2){ + std::cout + << "no or less than two arguments were provided for option --measure-rate:\nno thresholds will be set" + << std::endl; + } + else{ + std::vector> each_measure_rate_options; + std::vector temp_vec; + for(auto& measure_rate_options : vm["measure-rate"].as>()){ + if(measure_rate_options.find("0x")!=std::string::npos || measure_rate_options=="0"){ + if(temp_vec.size()==2){ + each_measure_rate_options.push_back(temp_vec); + } + temp_vec.clear(); + } + temp_vec.push_back(measure_rate_options); + } + if(temp_vec.size()==2){ + each_measure_rate_options.push_back(temp_vec); + } + for(auto& one_measure_rate_options : each_measure_rate_options){ + std::cout << "Measuring rate of: " + << std::stoi( + one_measure_rate_options.at(0).substr(one_measure_rate_options.at(0).find("0x")!=std::string::npos ? + one_measure_rate_options.at(0).find("0x")+2 : 0), + NULL, + 16 + ) << "\t" + << " over: " + << std::stod(one_measure_rate_options.at(1)) + << " seconds" << std::endl; + measure_rate( + one_measure_rate_options.at(0) == "0" ? + 0 : dirichlist.at( + std::stoi( + one_measure_rate_options.at(0).substr(one_measure_rate_options.at(0).find("0x")!=std::string::npos ? + one_measure_rate_options.at(0).find("0x")+2 : 0), + NULL, + 16 + ) + ), + rate_file, + std::stod(one_measure_rate_options.at(1)) + ); + } + } + } + + std::string str = save_file + "_all_canvases.pdf"; + uint counter=0; + for(auto& canvases : canvasvector){ + if(counter==0 && canvasvector.size()>1) canvases->Print(Form("%s(",str.c_str())); + else if(counter==canvasvector.size()-1) canvases->Print(Form("%s)",str.c_str())); + else canvases->Print(str.c_str()); + counter++; + } + + usleep(100000); + gcheck_thresholds_mutex.lock(); + gcheck_thresholds = 0; + gcheck_thresholds_mutex.unlock(); + threshold_checker->join(); + + return 0; +} diff --git a/thresholds/trb_dirich_threshold/HADESthreshscan_v1.o b/thresholds/trb_dirich_threshold/HADESthreshscan_v1.o new file mode 100644 index 0000000000000000000000000000000000000000..b714f38d9d071c5fa6ab777901f0a05a18de332c GIT binary patch literal 691904 zcmeFa3t(MUmH(f#0RmJ{il|XgB3?AbDvjbyE1o6x&v4KGf^H9=_3$|lpZD+u;9oqx z(Zd%#?D4SI!t}pwr1n^X@uW)_UhfM~a=JC^kXL!5@cqZ3bTxa{RTHq9}|Hbt+ zA65rEhwJNH=lZazz-e6H;5yHTO$UCHtDfsOT)*W~oxTM;pKAu!-CP}93cmo@!1Zl^ z{~h2=u12o!`mhUu7jZRl{f=t^m)>m#Ud;7RTtD<-vw+{@`o6!v6nL4(F9*)%y29Vj z0ba?qAN_uR-}kTLey)F>_Ampy+T(4&c^t@t**%E^dLXZCu_$QD58F;hDZvo!w z@kPMfJbpWHvB&QK-s$nXfJ;2S6xiwUWgaf~aD|5}fn6S71zhd%dw}s6CxK6S{Au7b9`6P|>+$D+&wKm@;9or6 z1MKzqOTa#lzYN^s@mGM`JpL;1HIKgz-0txmz?~l71>EiNH-K+?{4L+t|s;_=bILp=UI;GrIWKkx${{~)l`;~xTk*yD!* z5BK;-fFJev5x_E!e++n}$3G5?dHg8gCp`X1U^&+quA_a}r+{O*KF#$RA9f6I9M=h4 zU-V%Wz|V4hj_X(-_IcpnamBe#^kIJw9PjZ7z%O|GINS#j zLyuPjPx1JdfeDYF3jB)4zY3h}@za2(d;APwjmOUfp5^hgfwdl=0{mYd{~EB)Z1DKEf#31?OkktOzYDz3;}-#& zJl+hv*yEP~XLu#G5U2pcDt@L`WX0({itj{(KJ4?rzvKFQuJK$GxW2%pcaH-e@9`6WU*!4{SEUb&15f0d z$W_HPiR&aTy?e5Up@-ETo&x-`#}gi&3jB)4zv|&+;AtK|-NQ40H6B0H!?S>Ad%PAn z#pD0W!>3JX%Yc`Ae71*I09!mh$HOauNsp&I zYz6+n<5zh&7nt_=KYEw}UhVNV59a}|@p!w3{{;M@$N$;GYk@!V_>VpO3Gh0P|J1{O z0shS6*L(PL;4eJ>OAqG*|JCFF=Hb5sZ}9l9Jp2#fuRVUFhra>-*5kkPZ~^f59{+=f zHvt!V{Er^~3HWD^-weFPET_#B_6*U*x~V|9(Dqkd3?Et zD}XCK-sRyc;A)TGGD=QyzaB_>9N9fzNvUIpFgie*yRxk8cFN=25#~AR^Tfh z-v)fuyv=0`BMW{ecH~ zycl?(#}5J?%r%PZJwEKcz<{fSYc$s(T<_yj`iBDF@9_@+Kj`sN;D@+A%ypO#I~@2C zu8(pZ!BxifF)pQZB=F-Nj{%SJ_$Pp$^msXNjK`1m@KYX+_3+ake#XONJRIj?1u*~b z%&_ey>0oDsZNJo9I81IT4!aIel;DUe?lZ@Qt^G~=hnWNVCzphoI|>vjFC@9FIGoVe z{8*S=Ui`IlmL+!=HXYWwuIZD>-6NV0cr}>0e=z!hijHN$5h=?yO#eN1^`FV!ySx-; z`7LX&&pix|C>VS%8)re@`@KrFJ@?AHy+1QdzjcOHdd}NQs_DouGrKsP({DHLuh`J? zrK6h;S)#ih{j_#87lm!-l&HF4dObBBSl<8a^n6=bwSprmX{YoXKFrD!rl0wmud{0} zN6-J?#6M&4fwW5c4Qrvh)j~98i6c#0Q!J1TyuiZe*2Mw~U;JKzEPj|?7N)x*Iy#tK zUQ*HVwJg8>Ez??O$svyRt1X=s;@e( zy141@xl`ydiOk8xeIJPWV|{$WuBOBMv-bsy;>8u~pi%XXt>J`6o1U#$9i~_1vwXZJ z;`kiV=@?t8GG$#VPXRP`pE)?W>&T|qVsdC%($8O5*cndPcF7^F ztD~Bg`j*M%nZvUE(<&6Ub~JrdO`nSZf!?FmjoNjY=TpZjUT9J6?alkCvX>{uJQt=P z3ez=|I=MTzgyx+DGwd#GJ}MsEdT4Aevb&CF3QeC=yt1fN%;Sh}d;$SC_I;$C*7h}b zt(H-OX}xr2Ntk{jk=~f?F;RMbf5;WP9a2i1lH1AUR4bUPg{1mm%j#`maP+Ee!Ibx? zQMLso)~vu!>%KlHf1GP+eNgj6eejvS;Hns}Z41V(4>L1M!}B(Tts8=QUmz?@_7#Td z9tMkOJn2%?sV- zTi@C-dzMmV{DGB)xs=l@LK1K8BZaD1@wT9LQW-U}5jBsPEvgaK9ZPk#Y#{DY3aAgx zTq_!^-xhQ(+n>Cb^FD*#S)KX$UNM&rTnIZ{AN6PDzbrrh!sfo-OJO)SUPk$JD18x2 zd2nONuJ@F?X64)c{fV~oM7bdKA~*T;t4=P@r(bpQO>Q0idhZ~vlSApwWOtz&GFr`{vuIZ$fOUD;9eK=Th(Zn3Hd<|Ce9RWH& z;~8$`l7sY8rgEI`zz^`Oe@(DtYu|ErKQM-^o12a`PS2Etb9So? z&EF!y5|?1}m&2|}3RL6zhV?LWDasGpkP6-3^ga`w>L&=<{%%JHyOFXI@!yvIHGL}w z+^_4q71`^a=gOD7Vq8Jkb#jSPZ*B}T7gP>c&MWfDdEOq&nY>hKO>}8N>q|?cJC*z6 z!-JK7C1rGO zW>gwL^!=o1diCm=ubq?SkG3nyT=`R;A64#Kto-Zxe*aF(JANQr1g)2;t#f6b`i{zc z+MqI{GcwBNF-m1YIJmryZ#=#KIEdc=I!yU9Gsi{jG90Dr^Gbcn9!oulGe!?Cs4w$i ze(oAnzD2|Eb7rso?d-hb9k-X_<@dMYn%?o}ql3z`GFP6k?c}mE!a1Afsv*;eWdh2> zwnS{)tHEsDy0EI)2Q{#j>6XV;vC^=uAyyf-)x@T*GI|{ivluUh)njNkfJ+$PN>s{t>w&Ngs96R%0M{aO=5r{?)dVl+X7&)>oPuzJFi&5t4Mx1i|_ z&LVzxu&Ap#y(4~Bb^1}1v6?gQ65YfijC4Zj7&cyH*}y`v=*TbWG;)1 zs!G3-Nbg>9$ise$7Edo%?1OT#C$+v1q^}~u#Tr_2Qw5`fr#bxElgQl2^MX@bHwUSI z1&Oy@&ZyN850*6N4O@`{R3FT=)>7-0^p(J(RlWqt@kPyth}}xU^bX4;xwF6N1!)wm zpOdbbTwY$4?socN{Oj>^bNw&jhoov0wLt@6kebE2M6kiI_X2J#ZQp(_|M=NPO!WL6 zqGtR~Rp`vSL`~^srKh&OFqn>8RMXoI;Wv@qRk3bK0femb<&LLU=#2ri-2A=E_d&

IB!BMZYD&3PuJ=4?ns6S*P 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�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 z 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 literal 0 HcmV?d00001 diff --git a/thresholds/trb_dirich_threshold/Makefile b/thresholds/trb_dirich_threshold/Makefile new file mode 100644 index 0000000..3ec61e9 --- /dev/null +++ b/thresholds/trb_dirich_threshold/Makefile @@ -0,0 +1,39 @@ +# Makefile for compiling the HADESthreshscan + +VERSION = v1 +TRBNETDIR = /home/hadaq/trbsoft/trbnettools/ +ROOTDIR = $(ROOTSYS) +BOOSTDIR = /usr + +# Use this compiler +CC = g++ + +# Includes +TRBNETINCDIR = -I$(TRBNETDIR)/include +ROOTINCDIR = -I$(ROOTDIR)/include +BOOSTINCDIR = -I$(BOOSTDIR)/include + +INCLUDEDIRS = $(TRBNETINCDIR) $(ROOTINCDIR) $(BOOSTINCDIR) + +# Libraries +TRBNETLIBDIR = -L$(TRBNETDIR)/trbnetd +TRBNETLIB = -ltrbnet +ROOTLIBDIR = -L$(ROOTDIR)/lib +ROOTLIB = -lCore -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -lGui +BOOSTLIBDIR = -L$(BOOSTDIR)/lib +BOOSTLIB = -lboost_program_options -lboost_filesystem -lboost_system + +LIBS = $(TRBNETLIB) $(ROOTLIB) $(BOOSTLIB) +LIBDIRS = $(TRBNETLIBDIR) $(ROOTLIBDIR) $(BOOSTLIBDIR) + +# Options +OPT = -c -Wall -Wextra -pedantic -O3 -std=c++11 + +# Make rules +HADESthreshscan_$(VERSION): HADESthreshscan_$(VERSION).o + $(CC) -o HADESthreshscan_$(VERSION) HADESthreshscan_$(VERSION).o $(LIBDIRS) $(LIBS) + $(shell echo 'export LD_LIBRARY_PATH=$(ROOTDIR)/lib:$(TRBNETDIR)/lib:$(BOOSTDIR)/lib:"$$LD_LIBRARY_PATH"' > setLD) +clean: + /bin/rm -f *.o HADESthreshscan_$(VERSION) setLD +.C.o: $*.C + $(CC) $*.C $(INCLUDEDIRS) $(OPT) diff --git a/thresholds/trb_dirich_threshold/README.md b/thresholds/trb_dirich_threshold/README.md new file mode 100644 index 0000000..73f4c9b --- /dev/null +++ b/thresholds/trb_dirich_threshold/README.md @@ -0,0 +1,27 @@ +# trb_dirich_threshold +Program to set DiRICH thresholds at the HADES RICH + +To compile the HADESthreshscan you need a version of ROOT (tested with >5.34), trbnet and boost-libraries. +The ROOT, boost and trbnet libraries should be filled in the Makefile: TRBNETDIR, ROOTDIR, BOOSTDIR. +The current setting of all of these varibles forsees a compilation on lxhadeb06 as hadaq. + +Before using the program you need to set the correct LD_LIBRARY_PATH via ". setLD" + +The usage of the program can be seen by using the --help /-h command +Examples of standard tasks are: + +./HADESthreshscan_v1 -b 0 -t 0 50 +./HADESthreshscan_v1 -l 0 -t 0 50 +./HADESthreshscan_v1 -f path/to/threshold.thr -l 0 -t 0 50 +The -b/--baseline-scan performs a standard baselinescan. +The option-parameter specifies which DiRICHes shall be scanned. +Here 0 specifies, that all DiRICHes shall be scanned. + +The -t/--set-threshold sets the thresholds to a certain mV threshold above threshold. +Here the first option-parameter (here 0) specifies the thresholds of which DiRICHes should be set (here 0 equals all DiRICHes). +The second parameter equals the threshold to set in mV above threshold. + +The -l/--load-baseline loads the baselines from a file which can be specified by the -f/--loading-file. +If no file is specified the latest produced *.thr-file in the same directory is used. +The option again defines which DiRICHes shall load baselines. +Here 0 lets all DiRIChes load baselines if they exist in the specified file. diff --git a/thresholds/trb_dirich_threshold/dirich_v13.C b/thresholds/trb_dirich_threshold/dirich_v13.C new file mode 100644 index 0000000..2ece5d3 --- /dev/null +++ b/thresholds/trb_dirich_threshold/dirich_v13.C @@ -0,0 +1,1433 @@ +#include "trbnetcom.h" +#include "stdint.h" +#include "unistd.h" +#include +#include +#include "TGraph.h" +#include "TGraphErrors.h" +#include +#include +#include +#include +#include +#include +#include + +//************************************** +//dirich handling routines +//************************************** +// Channel Numbers: +// 0-31: TDC input ichannels (same index as for threshold setting) + +#ifndef MB4 + // const size_t BUFFER_SIZE4mb = 4194304; /* 4MByte */ + const size_t BUFFER_SIZE4mb = 1048576; // 1MByte holds space for 260k DiRICHes (UID-request) + static uint32_t buffer4mb[BUFFER_SIZE4mb]; + #define MB4 +#endif + +static std::mt19937_64 rnd; + +#ifndef NCH + const int NRCHANNELS = 32; //Nr of TDC ichannels in dirich + const int CHPCHAIN = 16; //Nr of TDC ichannels pre dirich-chain + #define NCH +#endif + +#ifndef THC + const int OFFTHRESH_high = 65535; //Value to switch off ichannel + const int OFFTHRESH_low = 1; //Value to switch off ichannel + const int THRESHDELAY = 100000; //Delay [mus] for thresh change to succeed + const int SPICOMDELAY = 30000; //Delay [mus] for std SPI request to be completed + #define THC +#endif + +#ifndef REFV + const double REF_VOLT = 2500.; + #define REFV +#endif + +const bool self_check_threshold = false; +const uint16_t MAXTHROFFSET = 5; //Maximal difference between wanted and set threshold + +std::mutex GetRateMutex; + +class dirich +{ + +private: +// public: + uint16_t gBoardAddress; //Board gBoardAddress + uint64_t gBoardUID; //UID of Board + + std::array fbaseline; + std::array fbaseline_old; + std::array fnoisewidth; + std::array fnoisewidth_old; + std::array fthresholdmV; + std::array forientation; + + inline int ReadSingleThreshold(uint8_t ichannel, uint16_t &thrvalue); + inline int ReadThresholds(std::array& thrarray); + inline int WriteSingleThreshold(uint8_t ichannel, uint16_t thrvalue, bool check, int nof_checks); + inline int WriteThresholds(std::array thrarray, bool check, int nof_checks); + inline int WriteThresholds(uint16_t thrvalue, bool check, int nof_checks); + inline int ReadSingleScaler( + uint8_t ichannel, + uint32_t &scalervalue, + std::chrono::system_clock::time_point& access_time + ); + inline int ReadScalers(uint32_t* scalervalues, std::chrono::system_clock::time_point& access_time); + // int GetRates(uint32_t* ratevalues, double delay=1); + + int gdirichver; + +public: + // constructor and destructor + dirich(); + dirich(uint16_t gBoardAddress); + virtual ~dirich(); + + + // converter functions + static double Thr_DtomV(uint32_t value) {return (double)value *REF_VOLT / 65536; } + static uint32_t Thr_mVtoD(double value) {return value /REF_VOLT *65536+.5; } + + + // setter functions + //threshold + void SetSingleThresholdmV(uint8_t ichannel, double thrinmV); + void SetThresholdsmV(std::array thrarrayinmV); + void SetThresholdsmV(double thrinmV); + //baseline + void SetSingleBaseline(uint8_t ichannel, uint16_t baseline) { + if(ichannel setting); + + // getter functions + + uint16_t GetBoardAddress() {return gBoardAddress;} //board address + uint64_t GetBoardUID() {return gBoardUID;} //board address + + double GetSingleRate(double delay=1, uint8_t ichannel=0); //rates from scaler + double* GetRates(double delay=1); //rates from scaler + + + double GetSingleThresholdmV(uint8_t ichannel) { + if(ichannel GetThresholdsmV() {return fthresholdmV;} + + uint16_t GetSingleBaseline(uint8_t ichannel) { + if(ichannel GetBaselines() {return fbaseline;} + + uint16_t GetSingleBaseline_old(uint8_t ichannel) { + if(ichannel GetBaselines_old() {return fbaseline_old;} + + uint16_t GetSingleNoisewidth(uint8_t ichannel) { + if(ichannel GetNoisewidths() {return fnoisewidth;} + + uint16_t GetSingleNoisewidth_old(uint8_t ichannel) { + if(ichannel GetNoisewidths_old() {return fnoisewidth_old;} + int GetTDCSetting(); + + // threshold functions + void DoBaselineScan ( ); + void DoBaselineScan ( + uint32_t SearchedNoise, + uint16_t MaxStepSize, + double MeasureTime, + int NrPasses + ); + void AnalyzeBaseline ( ); + void AnalyzeBaseline ( uint32_t NoiseThreshold); + void DoThreshScan ( ); + void DoThreshScan ( + uint8_t FirstChannel, + uint8_t LastChannel, + std::array FromThr, + std::array ToThr, + double MeasureTime, + uint16_t StepSize, + int NrPasses, + int clear_graph + ); + void DoFineThreshScan ( ); + void DoThreshSearch ( ); + void DoThreshSearch ( + double Perc, + bool SPP_SPV /*1==SPP*/, + double MeasureTime, + int16_t StepSize, + int NrPasses + ); + void DoThreshScanOverBase ( ); + void DoThreshScanOverBase ( + uint8_t FirstChannel, + uint8_t LastChannel, + std::array ToThrmV, + double MeasureTime, + double StepSize, + int NrPasses + ); + void MakeGraphsOverBase ( ); + void MakeDiffGraphsOverBase ( ); + void MakeDiffGraphsOverBase (int case_type); + // void MakeDiffGraphsOverBase ( uint16_t FromThr, uint16_t ToThr); + void FindMinThreshScanOverBase(double gThreshold_finding_method); + + int WhichDirichVersion (){return gdirichver;} + + // threshold visualization items + std::array gRateGraphs; + std::array gRateGraphsOverBase; + std::array gDiffRateGraphsOverBase; + // void ClearGraphs(); + + + // settings for threshold measurement + double gMeasureTime; //Time [s] to determine rate + std::array gLowerEdge; //start of thresholdscan + std::array gUpperEdge; //end of thresholdscan + int gStepsize; //stepsize fr thresholdscan + int gNrPasses; //Nr of passes to scan all ichannels + + double gMeasureTime_over; //Time [s] to determine rate + int gLowerEdge_over; //end of thresholdscan over baseline + int gUpperEdge_over; //end of thresholdscan over baseline + int gStepsize_over; //stepsize for thresholdscan + int gNrPasses_over; //Nr of passes to scan all ichannels + + double gThreshold_finding_method; //Method to find perfect threshold: + //0: searches for the minimum in the differentiated spectrum or for the minimal gradient + //0 gTDC_setting{{0x0}}; + + std::array gCurrent_Threshold; + std::mutex Current_Thr_Mutex; + std::chrono::steady_clock::time_point gCurrent_Threshold_time; + +}; + + +dirich::dirich() +{ + dirich(0); +} + +dirich::dirich(uint16_t BoardAddress) + { + + int ret=0; + for(int tries=0;tries<100;++tries){ + ret=Ttrb_read_uid(BoardAddress, buffer4mb, BUFFER_SIZE4mb); + if(ret!=4) continue; + if(buffer4mb[0]==0 || buffer4mb[1]==0 || buffer4mb[3] ==0) continue; + else break; + } + if(ret<=0){ + std::cerr + << "No DiRICH found with Address:" + << std::hex << BoardAddress + << "\nNot adding DiRICH" + << std::endl; + return; + } + else if(ret!=4){ + std::cerr + << "Too many DiRICH found with Address:" + << std::hex << BoardAddress + << "(Amount: "<< ret/4 << ")\nNot adding DiRICH" + << std::endl; + return; + } + else{ + gBoardAddress = buffer4mb[3]; + uint64_t temp_store = buffer4mb[0]; + uint64_t temp_store2 = buffer4mb[1]; + gBoardUID = temp_store << 32 | temp_store2; + } + + uint32_t cmd = 0x0 | 0xff << 24; + uint32_t c[] = {cmd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0x10001}; + + std::array ret_c; + ret=0; + for(int failed=0;failed<100;++failed){ + // std::cout << gBoardAddress << " " << failed << std::endl; + ret=Ttrb_register_write_mem(gBoardAddress,0xd400,0,c,CHPCHAIN+2); + if(ret<0) return; + std::this_thread::sleep_for(std::chrono::microseconds(SPICOMDELAY)); + ret=Ttrb_register_read(gBoardAddress,0xd412,ret_c.data(),2); + if(ret<0) return; + if(ret==2 && (ret_c.at(1) & 0xff00) == 0x100) break; + //check if correct version (for dirich 0x100) is on the side FPGA + } + if(ret!=2 || (ret_c.at(1) & 0xff00) != 0x100){ + std::cerr + << "No DiRICH2 Threshold FPGA of newest version detected (Version:0x" + << std::hex << (ret_c.at(1) & 0xff00) + << ")\nNot adding DiRICH" << std::dec << std::endl; + return; + } + else{ + gdirichver = 3; + } + + // gBoardAddress=BoardAddress; + gdirich_reporting_level=0; + gMeasureTime=.3; + gLowerEdge.fill(28000); + gUpperEdge.fill(32000); + gStepsize=75; + // gStepsize=25; + gNrPasses=1; + gMeasureTime_over=30.; + gLowerEdge_over=0; + gUpperEdge_over=600; + gStepsize_over=10; + gNrPasses_over=1; + gThreshold_finding_method=0; + for (int ichannel=0; ichannelSetTitle( + Form( + "Rate graph of dirich 0x%x's ichannel %i;Threshold;Rate", + gBoardAddress, + ichannel + ) + ); + gRateGraphs.at(ichannel)->SetName( + Form( + "Rate graph of dirich 0x%x's ichannel %i", + gBoardAddress, + ichannel + ) + ); + + gRateGraphsOverBase.at(ichannel)=new TGraphErrors(); + gRateGraphsOverBase.at(ichannel)->SetTitle( + Form( + + + "Rate graph over baseline of dirich 0x%x's ichannel %i;Threshold in mV;Rate", + gBoardAddress, + ichannel + ) + ); + gRateGraphsOverBase.at(ichannel)->SetName( + Form( + "Rate graph over baseline of dirich 0x%x's ichannel %i", + gBoardAddress, + ichannel + ) + ); + + gDiffRateGraphsOverBase.at(ichannel)=new TGraph(); + gDiffRateGraphsOverBase.at(ichannel)->SetTitle( + Form( + "Differentiated rate graph over baseline of dirich 0x%x's ichannel %i;" + "Threshold in mV;Differentiated rate", + gBoardAddress, + ichannel + ) + ); + gDiffRateGraphsOverBase.at(ichannel)->SetName( + Form( + "Differentiated rate graph over baseline of dirich 0x%x's ichannel %i", + gBoardAddress, + ichannel + ) + ); + + fbaseline.at(ichannel) = 0; + fbaseline_old.at(ichannel) = 0; + fnoisewidth.at(ichannel) = 0; + fnoisewidth_old.at(ichannel) = 0; + fthresholdmV.at(ichannel) = 0.; + forientation.at(ichannel) = + ichannel%2==0 ? + 1 : 1; //to cope with different polarities in PADIWA + } + return; +} + +dirich::~dirich() +{ + for (int ichannel=0; ichannelNRCHANNELS-1) + return -1; + int ret; + int reg=0; + uint8_t real_ichannel=0; + if(gdirichver==0){ + reg=0xa000+31-ichannel; //old firwmare + } + if(gdirichver==1){ + reg=0xa000+ichannel; //new firwmare + } + if(gdirichver==2){ + real_ichannel = ichannel%CHPCHAIN+CHPCHAIN; + } + if(gdirichver==3){ + real_ichannel = ichannel%CHPCHAIN; + } + if(gdirichver<=1){ + uint32_t buffer[2]; + ret=Ttrb_register_read(gBoardAddress,reg, buffer, 2); + + if((gBoardAddress != buffer[0]) || (ret != 2)) return -1; + + thrvalue=(buffer[1] & 0xffff); + return 0; + } + else{ + uint32_t cmd = 0x0 << 20 | real_ichannel << 24 | thrvalue << 0; + //evtl. sind auch mehrere Kanäle auf einmal lesbar. + uint32_t c[] = {cmd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(uint32_t)ichannel/CHPCHAIN+1,0x10001}; + ret=Ttrb_register_write_mem(gBoardAddress,0xd400,0,c,CHPCHAIN+2); + std::this_thread::sleep_for(std::chrono::microseconds(SPICOMDELAY)); + uint32_t ret_c[2]; + ret=Ttrb_register_read(gBoardAddress,0xd412,ret_c,2); + if((gBoardAddress != ret_c[0]) || (ret != 2)) return -1; + thrvalue=(ret_c[1] & 0xffff); + if(gdirich_reporting_level>3) + std::cout + << std::hex << gBoardAddress + << " " << std::dec << (int)ichannel + << " " << (int)real_ichannel << std::hex + << " " << ret_c[0] + << " " << ret_c[1] + << " " << thrvalue + << std::endl; + return 0; + } + } + else{ + auto temp_set_time = std::chrono::steady_clock::now(); + while(true){ + Current_Thr_Mutex.lock(); + if(gCurrent_Threshold_time>temp_set_time) + break; + Current_Thr_Mutex.unlock(); + std::this_thread::sleep_for(std::chrono::microseconds(2*SPICOMDELAY)); + } + // std::this_thread::sleep_until( + // gCurrent_Threshold_time + // +std::chrono::microseconds((NRCHANNELS+1)*SPICOMDELAY) + // ); + thrvalue = gCurrent_Threshold.at(ichannel); + Current_Thr_Mutex.unlock(); + return 0; + } +} + +int dirich::ReadThresholds(std::array& thrarray){ + int ret=0; + if(self_check_threshold){ + for(uint8_t ichannel=0;ichanneltemp_set_time) + break; + Current_Thr_Mutex.unlock(); + std::this_thread::sleep_for(std::chrono::microseconds(2*SPICOMDELAY)); + // std::cout << "NOPE" << std::endl; + } + // std::this_thread::sleep_until( + // gCurrent_Threshold_time + // +std::chrono::microseconds((NRCHANNELS+1)*SPICOMDELAY) + // ); + thrarray = gCurrent_Threshold; + Current_Thr_Mutex.unlock(); + return 0; + } +} + +int dirich::WriteSingleThreshold(uint8_t ichannel, uint16_t thrvalue, bool check, int nof_checks) +{ + if (ichannel>NRCHANNELS-1) + return -1; + int ret=0; + + if(gdirichver==1){ +// int reg=0xa000+31-ichannel; old firwmare + int reg=0xa000+ichannel; //new firwmare + ret=Ttrb_register_write(gBoardAddress, reg, (uint32_t)thrvalue); + return ret; + } + else{ + uint8_t real_ichannel = ichannel%CHPCHAIN+CHPCHAIN*abs(gdirichver-3); + uint32_t cmd = 0x8 << 20 | real_ichannel << 24 | thrvalue <<0; + std::array c = {{ + cmd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + (uint32_t)( 1 << ((int)ichannel/CHPCHAIN)), + 0x00001 | ((unsigned int)check) << 16 + }}; + ret=Ttrb_register_write_mem(gBoardAddress,0xd400,0,c.data(),CHPCHAIN+2); + if(ret==-1) return ret; + std::this_thread::sleep_for(std::chrono::microseconds(THRESHDELAY)); + if(check){ + uint32_t temp[18]; + ret=Ttrb_register_read(gBoardAddress,0xd412, temp,18); + if(ret==-1) return ret; + } + int failed=0; + for(failed=0;failed3) + std::cout + << "wanted " << thrvalue + << " set " << set_threshold + << std::endl; + if(abs(set_threshold-thrvalue) < MAXTHROFFSET) break; + else{ + if(gdirich_reporting_level>2) + std::cout + << "Thresholds not matching: wanted " << thrvalue + << " set " << set_threshold + << std::endl; + } + ret=Ttrb_register_write_mem(gBoardAddress,0xd400,0,c.data(),CHPCHAIN+2); + if(ret==-1) break; + std::this_thread::sleep_for(std::chrono::microseconds(THRESHDELAY)); + if(check){ + uint32_t temp[18]; + ret=Ttrb_register_read(gBoardAddress,0xd412, temp,18); + if(ret==-1) break; + } + } + if(failed==nof_checks-1) return -1; + else return ret; + } +} + +int dirich::WriteThresholds(std::array thrarray, bool check, int nof_checks) +{ + int ret; + std::array,NRCHANNELS/CHPCHAIN> cmd; + if(gdirichver==1){ + uint16_t reg=0xa000+32-NRCHANNELS; + uint32_t buffer[NRCHANNELS]; + for (int i=0;i counter; + counter.fill(0); + for(int ichannel=0;ichannel set_thresholds; + ret=ReadThresholds(set_thresholds); + if(ret==-1) break; + int equal_it=0; + for(int ichannel=0;ichannel3){ + std::cout + << thrarray.at(ichannel+CHPCHAIN*ichain) << "/" + << set_thresholds.at(ichannel) << "\t"; + } + if( + thrarray.at(ichannel+CHPCHAIN*ichain)==0 + || abs( + thrarray.at(ichannel+CHPCHAIN*ichain) + -set_thresholds.at(ichannel+CHPCHAIN*ichain) + )2){ + std::cout + << "Threshold not equal at channel " + << ichannel << " " + << CHPCHAIN*ichain << " " + << thrarray.at(ichannel+CHPCHAIN*ichain) << "/" + << set_thresholds.at(ichannel+CHPCHAIN*ichain) << std::endl; + } + } + if(gdirich_reporting_level>2) + std::cout << std::endl; + if(equal_it==CHPCHAIN) break; + ret=Ttrb_register_write_mem(gBoardAddress,0xd400,0,cmd.at(ichain).data(),CHPCHAIN+2); + if(ret==-1) break; + std::this_thread::sleep_for(std::chrono::microseconds(THRESHDELAY)); + if(check){ + uint32_t temp[18]; + ret=Ttrb_register_read(gBoardAddress,0xd412, temp,18); + if(ret==-1) break; + } + } + } + if(failed==nof_checks-1) return -1; + else return ret; + } +} + +int dirich::WriteThresholds(uint16_t thrvalue, bool check, int nof_checks) +{ + int ret; + std::array thrarray; + thrarray.fill(thrvalue); + ret=WriteThresholds(thrarray, check, nof_checks); + return ret; +} + +void dirich::SetSingleThresholdmV(uint8_t ichannel ,double thrinmV=30.) +{ + if(ichannel>=NRCHANNELS){ + std::cerr << "Channel: " << std::dec << ichannel << " not specified" << std::endl; + return; + } + int baseline=fbaseline[ichannel]; + if(baseline==0){ + std::cerr + << "dirich 0x" + << std::hex << gBoardAddress + << "'s ichannel: " << std::dec << unsigned(ichannel) + << " has no baseline! (baseline==0)" + << std::endl; + return; + } + int newthreshold = thrinmV==0 ? 0 : baseline+forientation.at(ichannel)+Thr_mVtoD(thrinmV); + + int ret=WriteSingleThreshold(ichannel, newthreshold, true, 100); + if(ret<0){ + std::cerr + << "dirich 0x" << std::hex << gBoardAddress + << "'s setting Thresholds failed" + << std::endl; + } + fthresholdmV.at(ichannel) = thrinmV; + +} + +void dirich::SetThresholdsmV(std::array thrarrayinmV) +{ + std::array thrarrayD; + for(int ichannel=0; ichannel thrarray; + thrarray.fill(thrinmV); + SetThresholdsmV(thrarray); +} + +int dirich::SetTDCSetting(){ + if(gTDC_read==false){ + std::cerr << "no setting for TDC saved" << std::endl; + return -1; + } + else{ + return SetTDCSetting(gTDC_setting); + } +} +int dirich::SetTDCSetting(uint32_t setting){ + std::array temp_arr; + temp_arr.fill(setting); + return SetTDCSetting(temp_arr); +} +int dirich::SetTDCSetting(std::array setting){ + int ret = 0; + for(int i=0;iNRCHANNELS) + return -1; + uint16_t reg=0xc000+ichannel; + // else reg=0xc000+ichannel; + uint32_t buffer[2]; + for(int tries=0;tries=5){ + std::cout << "scalers:" << std::endl; + } + for (int i=0;i=5){ + std::cout << std::dec <=5){ + std::cout << std::endl; + } + return 0; + } + else + return -1; +} + +double dirich::GetSingleRate(double delay, uint8_t ichannel) +{ + int ret=-1; + uint32_t scaler1=0; + uint32_t scaler2=0; + + std::chrono::system_clock::time_point start1; + ret=ReadSingleScaler(ichannel,scaler1,start1); + if(ret<0){ + std::cerr << "Error reading start_scalers" << std::endl; + return -1; + } + + std::this_thread::sleep_for(std::chrono::microseconds((int)(1e6*delay))); + + ret=-1; + std::chrono::system_clock::time_point stop1; + ret=ReadSingleScaler(ichannel,scaler2,stop1); + if(ret<0){ + std::cerr << "Error reading end_scalers" << std::endl; + return -2; + } + + double exactdelay1 = + 1.0e-6*std::chrono::duration_cast(stop1-start1).count(); + uint32_t scaler_diff=scaler2=5){ + std::cout + << exactdelay1 << std::dec + << " " << scaler2 + << " " << scaler1 + << " " << scaler_diff + << " " << rate + << std::endl; + } + return rate; +} + +double* dirich::GetRates(double delay) +{ + // std::cout << "Getting rates" << std::endl; + + int ret=-1; + uint32_t scaler1[NRCHANNELS]; + uint32_t scaler2[NRCHANNELS]; + double* ratevalues = (double*) calloc(NRCHANNELS, sizeof(double)); + + std::chrono::system_clock::time_point start1; + ret=ReadScalers(scaler1,start1); + if(ret<0){ + std::cerr << "Error reading start_scalers" << std::endl; + for(int i=0;i(stop1-start1).count(); + for (int i=0; i=4){ + std::cout + << exactdelay1 << std::dec + << " " << scaler2[i] + << " " << scaler1[i] + << " " << scaler_diff + << " " << rate + << std::endl; + } + } + // std::cout << "DONE Getting rates" << std::endl; + return ratevalues; +} + +int dirich::GetTDCSetting(){ + int ret = 0; + for(int i=0;i TDC for that dirich will be left switched off" + << std::endl; + gTDC_read = false; + return -1; + } + gTDC_setting.at(i) = temp_tdc_setting[1]; + gTDC_read = true; + } + return ret; + +} + +void dirich::DoThreshScan(){ + DoThreshScan( + 0, + NRCHANNELS, + gLowerEdge, + gUpperEdge, + gMeasureTime, + gStepsize, + gNrPasses, + 1 + ); +} +void dirich::DoFineThreshScan(){ + std::array gLowerEdge_array; + std::array gUpperEdge_array; + for(int ichannel=0;ichannel FromThr, + std::array ToThr, + double MeasureTime, + uint16_t StepSize, + int NrPasses, + int clear_graph +) +{ + if(gdirich_reporting_level>=1){ + std::cout + << std::dec << (int)FirstChannel + << " " << (int)LastChannel + << " " << FromThr.at(0) + << " " << ToThr.at(0) + << " " << MeasureTime + << " " << StepSize + << " " << NrPasses + << " " << clear_graph + << std::endl; + } + int ret; + + if(clear_graph==1){ + for (int ichannel=0; ichannelSet(0); + gRateGraphsOverBase.at(ichannel)->Set(0); + } + } + + GetTDCSetting(); //Get TDC values + SetTDCSetting(0x0); //SwitchTDC off + + for(int ipass=0;ipassmax_diff ? temp_diff : max_diff; + } + for (int addthresh=0; addthresh<=max_diff; addthresh+=StepSize){ + if(gdirich_reporting_level==1){ + // if((addthresh/StepSize*100)%(max_diff/StepSize)==0) + std::cout + << "\r" + << std::setw(10) << std::setprecision(2) << std::fixed + << 1.*((addthresh/StepSize+ipass*max_diff/StepSize)*100)/(max_diff/StepSize*NrPasses) + << "%" << std::flush; + } + std::array threshold_value; + for (int ichannel=0; ichannelSetPoint( + gRateGraphs.at(ichannel)->GetN(), + 1.*threshold_value.at(ichannel), + 1.*rates[ichannel] + ); + gRateGraphs.at(ichannel)->SetPointError( + gRateGraphs.at(ichannel)->GetN()-1, + 1, + sqrt(1.*rates[ichannel])/sqrt(MeasureTime) + ); + if(gdirich_reporting_level>3){ + std::cout + << 1.*threshold_value.at(ichannel) + << " " << 1.*rates[ichannel] + << std::endl; + } + } + } + } + + SetTDCSetting(); //Set TDC back to original values + + for (int ichannel=FirstChannel; ichannelSort(); + } + if(gdirich_reporting_level==1){ + std::cout << std::endl; + } +} + +void dirich::DoThreshScanOverBase(){ + if(std::all_of(fbaseline.cbegin(), fbaseline.cend(), [](int i){ return i==0; })){ + std::cerr + << "dirich 0x" << std::hex << gBoardAddress + << std::dec << " has no baseline yet. Please load or scan one (load_base, system_thr_scan)" + << std::endl; + return; + } + std::array UpperEdge_over_array; + for(auto& UpperEdge_over_array_element : UpperEdge_over_array){ + UpperEdge_over_array_element=gUpperEdge_over; + } + DoThreshScanOverBase( + 0, + NRCHANNELS, + UpperEdge_over_array, + gMeasureTime_over, + gStepsize_over, + gNrPasses_over + ); +} +void dirich::DoThreshScanOverBase( + uint8_t FirstChannel, + uint8_t LastChannel, + std::array ToThrmV, + double MeasureTime, + double StepSize, + int NrPasses +) +{ + if(gdirich_reporting_level>=1){ + std::cout + << std::dec << (int)FirstChannel + << " " << (int)LastChannel + << " " << ToThrmV.at(0) + << " " << MeasureTime + << " " << StepSize + << " " << NrPasses + << std::endl; + } + double gMeasureTime_over_temp=3.; + int gMeasures = MeasureTime/gMeasureTime_over_temp; + int ret; + + GetTDCSetting(); //Get TDC values + SetTDCSetting(0x0); //SwitchTDC off + + for(int ipass=0;ipassmax ? ToThrmV.at(i) : max; + } + + for (int addthresh=0; addthresh<=max; addthresh+=StepSize){ + if(gdirich_reporting_level==1){ + std::cout + << "\r" + << std::setw(10) << std::setprecision(2) << std::fixed + << 1.*(addthresh/StepSize*100)/(max/StepSize) + << "%" << std::flush; + } + std::array threshold_value; + for (int ichannel=0; ichannelSetPoint( + gRateGraphsOverBase.at(ichannel)->GetN(), + 1.*Thr_DtomV(threshold_value.at(ichannel)-fbaseline.at(ichannel)), + 1.*rates[ichannel] + ); + if(gdirich_reporting_level>2){ + std::cout + << 1.*threshold_value.at(ichannel) + << " " << 1.*rates[ichannel] + << std::endl; + } + } + } + + int finish_counter=0; + for (int ichannel=FirstChannel+ipass; ichannelGetN(); + if(number_of_points>3.*gMeasures){ + if( + gRateGraphsOverBase.at(ichannel)->GetY()[number_of_points-1]< 3. + && gRateGraphsOverBase.at(ichannel)->GetY()[number_of_points-2] < 3. + && gRateGraphsOverBase.at(ichannel)->GetY()[number_of_points-3] < 3. + ) + finish_counter++; + } + } + if(finish_counter==(LastChannel-(FirstChannel+ipass))/NrPasses){ + if(gdirich_reporting_level>=1){ + std::cout + << "Stopped Scan above Threshold at threshold of " << addthresh + << " as no larger Rate than 3 Hz was observed in any ichannel for the last three thresholds" + << std::endl; + } + break; + } + } + } + + SetTDCSetting(); //Set TDC back to original values + + for (int ichannel=FirstChannel; ichannelSort(); + } +} + +void dirich::MakeDiffGraphsOverBase(){ + MakeDiffGraphsOverBase(1); +} +void dirich::MakeDiffGraphsOverBase(int case_type){ + auto get_med = [](std::multiset input_set) { + return 1.*( + *std::next(input_set.begin(), (int)floor(1.*input_set.size()/2)) + +(*std::next(input_set.begin(), (int)ceil(1.*input_set.size()/2)-1)) + // input_set.at((int)floor(1.*input_set.size()/2)) + // +input_set.at((int)ceil(1.*input_set.size()/2)-1) + )/2; + }; + + for(int ichannel=0;ichannelSet(0); + if(fbaseline.at(ichannel)==0) continue; + + if(gRateGraphsOverBase.at(ichannel)->GetN()<2) continue; + std::map> points_per_x; + double* x_val = gRateGraphsOverBase.at(ichannel)->GetX(); + double* y_val = gRateGraphsOverBase.at(ichannel)->GetY(); + + std::vector > val_med; + for (int ipoint=0; ipointGetN(); ++ipoint) { + // std::cout << std::dec << "\t\t" << ipoint << std::endl; + if(points_per_x.count(x_val[ipoint])==0){ + std::multiset temp; + points_per_x.insert(std::pair>(x_val[ipoint],temp)); + // std::cout << "\t\tnew" << std::endl; + } + points_per_x.at(x_val[ipoint]).insert(y_val[ipoint]); + // std::cout << std::dec << "\t\t" << points_per_x.size() << std::endl; + } + + switch(case_type){ + case 0: + for (int ipoint=0;ipointSetPoint( + gDiffRateGraphsOverBase.at(ichannel)->GetN(), + (*iterator).first, + ( + get_med((*iterator).second) + ) + ); + } + break; + case 1: + for (int ipoint=2;ipointSetPoint( + gDiffRateGraphsOverBase.at(ichannel)->GetN(), + ((*std::prev(iterator,1)).first+(*std::next(iterator,1)).first) * 0.5, + ( + -1.*get_med((*std::prev(iterator,2)).second) + +8.*get_med((*std::prev(iterator,1)).second) + -8.*get_med((*std::next(iterator,1)).second) + +1.*get_med((*std::next(iterator,2)).second) + )/( + 6*fabs((*std::prev(iterator,1)).first-(*std::next(iterator,1)).first) + ) + ); + } + break; + case 2: + case 3: + default: + for (int ipoint=0;ipointSetPoint( + gDiffRateGraphsOverBase.at(ichannel)->GetN(), + (*iterator).first, + ( + -1.*get_med((*std::next(iterator,1)).second) + +get_med((*iterator).second) + )/( + fabs((*iterator).first-(*std::next(iterator,1)).first) + ) + ); + } + if(case_type==3){ + //smoothing the graph + double* x_values = gDiffRateGraphsOverBase.at(ichannel)->GetX(); + double* y_values = gDiffRateGraphsOverBase.at(ichannel)->GetY(); + int number = gDiffRateGraphsOverBase.at(ichannel)->GetN(); + gDiffRateGraphsOverBase.at(ichannel)->Set(0); + for (int ipoint=1; ipointSetPoint( + ipoint-1,x_values[ipoint], + 1.*(y_values[ipoint-1]+y_values[ipoint]+y_values[ipoint+1])/3 + ); + } + } + break; + } + } +} + +void dirich::MakeGraphsOverBase(){ + for (int ichannel=0; ichannelGetN(); ++ipoint){ + if(gRateGraphs.at(ichannel)->GetX()[ipoint]SetPoint( + gRateGraphsOverBase.at(ichannel)->GetN(), + Thr_DtomV((gRateGraphs.at(ichannel)->GetX()[ipoint])-fbaseline.at(ichannel)), + gRateGraphs.at(ichannel)->GetY()[ipoint] + ); + } + } +} + +void dirich::AnalyzeBaseline(){ + AnalyzeBaseline(50000); +} +void dirich::AnalyzeBaseline(uint32_t NoiseThreshold) +{ + for (int ichannel=0; ichannelGetN(); + int noiseedgeleft=-1; + int noiseedgeright=-1; + double max=0; + double max_x=0; + + for (int ibin=0; ibinGetY()[ibin] < NoiseThreshold) && + (gRateGraphs.at(ichannel)->GetY()[ibin+1] >= NoiseThreshold) + ){ + // linear interpolation + double y1=gRateGraphs.at(ichannel)->GetY()[ibin]; + double y2=gRateGraphs.at(ichannel)->GetY()[ibin+1]; + double x1=gRateGraphs.at(ichannel)->GetX()[ibin]; + double x2=gRateGraphs.at(ichannel)->GetX()[ibin+1]; + noiseedgeleft=x1+(NoiseThreshold-y1)/(y2-y1)*(x2-x1); + } + + if( + (noiseedgeright==-1) && + (gRateGraphs.at(ichannel)->GetY()[NrBins-ibin-1] < NoiseThreshold) && + (gRateGraphs.at(ichannel)->GetY()[NrBins-ibin-2] >= NoiseThreshold) + ){ + // linear interpolation + double y1=gRateGraphs.at(ichannel)->GetY()[NrBins-ibin-2]; + double y2=gRateGraphs.at(ichannel)->GetY()[NrBins-ibin-1]; + double x1=gRateGraphs.at(ichannel)->GetX()[NrBins-ibin-2]; + double x2=gRateGraphs.at(ichannel)->GetX()[NrBins-ibin-1]; + noiseedgeright=x2-(NoiseThreshold-y2)/(y1-y2)*(x2-x1); + } + if(gRateGraphs.at(ichannel)->GetY()[ibin]>max){ + max=gRateGraphs.at(ichannel)->GetY()[ibin]; + max_x=gRateGraphs.at(ichannel)->GetX()[ibin]; + } + // if(gRateGraphs.at(ichannel)->GetY()[NrBins-ibin-1]>max){ + // max=gRateGraphs.at(ichannel)->GetY()[NrBins-ibin-1]; + // max_x=gRateGraphs.at(ichannel)->GetX()[NrBins-ibin-1]; + // } + if(noiseedgeleft!=-1 && noiseedgeright!=-1) break; + } + if(noiseedgeleft==-1 || noiseedgeright==-1){ + if(max==0 || NrBins<2){ + fbaseline_old.at(ichannel) = fbaseline.at(ichannel); + fbaseline.at(ichannel) = 0; + fnoisewidth_old.at(ichannel) = fnoisewidth.at(ichannel); + fnoisewidth.at(ichannel) = 0; + std::cout + << "No baseline found for ichannel " + << ichannel << "on dirich 0x" << std::hex << gBoardAddress + << std::dec << std::endl; + } + else{ + fbaseline_old.at(ichannel) = fbaseline.at(ichannel); + fbaseline.at(ichannel) = max_x; + fnoisewidth_old.at(ichannel) = fnoisewidth.at(ichannel); + fnoisewidth.at(ichannel) = + 2*( + abs(gRateGraphs.at(ichannel)->GetX()[0]-gRateGraphs.at(ichannel)->GetX()[1]) + ); + } + } + else { + fbaseline_old.at(ichannel) = fbaseline.at(ichannel); + fbaseline.at(ichannel)=(noiseedgeleft+noiseedgeright) / 2.; + fnoisewidth_old.at(ichannel) = fnoisewidth.at(ichannel); + fnoisewidth.at(ichannel)=(noiseedgeright-noiseedgeleft); + TLine* baseline_line = new TLine(fbaseline.at(ichannel), + gRateGraphs.at(ichannel)->GetHistogram()->GetMinimum(), + fbaseline.at(ichannel),gRateGraphs.at(ichannel)->GetHistogram()->GetMaximum() + ); + baseline_line->SetLineWidth(2); + baseline_line->SetLineColor(kRed); + gRateGraphs.at(ichannel)->GetListOfFunctions()->Add(baseline_line); + } + } +} diff --git a/thresholds/trb_dirich_threshold/obsolete/dirich_v11.C b/thresholds/trb_dirich_threshold/obsolete/dirich_v11.C new file mode 100644 index 0000000..f1cb2ca --- /dev/null +++ b/thresholds/trb_dirich_threshold/obsolete/dirich_v11.C @@ -0,0 +1,1378 @@ +#include "trbnet.h" +// #include "dirich_sim.C" +#include "stdint.h" +#include "unistd.h" +#include +#include +#include "TGraph.h" +#include +#include "TThread.h" +#include "TMutex.h" +#include + +#include +#include + +//************************************** +//dirich handling routines +//************************************** +// Channel Numbers: +// 0-31: TDC input channels (same index as for threshold setting) + +const size_t BUFFER_SIZE4mb = 4194304; /* 4MByte */ +static uint32_t buffer4mb[4194304]; + + +static std::mt19937_64 rnd; + +#ifndef NCH + const int NRCHANNELS = 32; //Nr of TDC channels in dirich + // const int NRCHANNELS = 4; //Nr of TDC channels in dirich + #define NCH +#endif +// const int OFFTHRESH = 28000; //Value to switch off channel +const int OFFTHRESH = 1000; //Value to switch off channel +// const int THRESHDELAY = 1000; //Delay [mus] for thresh change to succeed +const int THRESHDELAY = 100000; //Delay [mus] for thresh change to succeed +const int MAXWIDTH = 1000; //Maximal width of Noisepeak in DAC units +const int MINTHRESHOLD = 23000; //Minimum Threshold to search baseline in +const int MAXTHRESHOLD = 34000; //Maximum Threshold to search baseline in + +TMutex TRBAccessMutex; +TMutex GetRateMutex; + +// bool find_min_wo_zero(uint16_t i, uint16_t j) { return (i!=0 && i fbaseline; + std::array fbaseline_old; + std::array fnoisewidth; + std::array fnoisewidth_old; + std::array fthresholdmV; + + std::array fsim_baseline; + std::array fsim_noise_sigma; + std::array fsim_noise_width; + std::array fsim_current_threshold; + std::array fsim_singlephotonpeakposition; + std::array fsim_distro; + + int ReadSingleThreshold(uint8_t channel, uint16_t &thrvalue); + int WriteSingleThreshold(uint8_t channel, uint16_t thrvalue); + int ReadThresholds(uint16_t* thrarray); + int WriteThresholds(uint16_t* thrarray); + int WriteThresholds(uint16_t thrvalue); + int ReadSingleScaler(uint8_t channel, uint32_t &scalervalue, std::chrono::high_resolution_clock::time_point& access_time); + int ReadScalers(uint32_t* scalervalues, std::chrono::high_resolution_clock::time_point& access_time); + // int GetRates(uint32_t* ratevalues, double delay=1); + + bool fsimulate = true; + bool fjans_readout = false; + int gdirichver = 3; + +public: + // constructor and destructor + dirich(); + dirich(uint16_t gBoardAddress); + virtual ~dirich(); + + + // converter functions + // static double Thr_DtomV(uint16_t value) {return (double)value *2500. / 65536; }//ugly but still better than using unions + static double Thr_DtomV(uint32_t value) {return (double)value *2500. / 65536; } + static uint32_t Thr_mVtoD(double value) {return value /2500. *65536+.5; } + + + // setter functions + //threshold + void SetSingleThresholdmV(uint8_t channel, double thrinmV); + // void SetThresholdsmV(double* thrinmV); + // void SetThresholdsmV(double thrinmV); + //baseline + void SetSingleBaseline(uint8_t channel, uint16_t baseline) {if(channel=NRCHANNELS){std::cerr << "Channel: " << channel << " not specified" << std::endl; return 0;} uint16_t thrarray[32]={0}; if(ReadThresholds(thrarray)!=-1) return thrarray[channel]; else{std::cerr << "Threshold could not be read" << std::endl; return 0;}};//read threshold from !dirich! + uint16_t* ReadThresholds() {uint16_t* thrarray = (uint16_t*) calloc(NRCHANNELS, sizeof(uint16_t*)); if(ReadThresholds(thrarray)!=-1) return thrarray; else{uint16_t* errthrarray = (uint16_t*) calloc(NRCHANNELS, sizeof(uint16_t*)); return errthrarray;}}; + + double GetSingleThresholdmV(uint8_t channel) {if(channel GetThresholdsmV() {return fthresholdmV;} + + uint16_t GetSingleBaseline(uint8_t channel) {if(channel GetBaselines() {return fbaseline;} + + uint16_t GetSingleBaseline_old(uint8_t channel) {if(channel GetBaselines_old() {return fbaseline_old;} + + uint16_t GetSingleNoisewidth(uint8_t channel) {if(channel GetNoisewidths() {return fnoisewidth;} + + uint16_t GetSingleNoisewidth_old(uint8_t channel) {if(channel GetNoisewidths_old() {return fnoisewidth_old;} + + // threshold functions + void DoBaselineScan ( ); + void DoBaselineScan ( uint32_t SearchedNoise, uint16_t MaxStepSize, double MeasureTime, int NrPasses); + void AnalyzeBaseline ( ); + void AnalyzeBaseline ( uint32_t NoiseThreshold); + void DoThreshScan ( ); + void DoThreshScan ( uint8_t FirstChannel, uint8_t LastChannel, uint16_t FromThr, uint16_t ToThr, double MeasureTime, uint16_t StepSize, int NrPasses); + void DoThreshSearch ( ); + void DoThreshSearch ( double Perc, bool SPP_SPV /*1==SPP*/, double MeasureTime, int16_t StepSize, int NrPasses); + void DoThreshScanOverBase ( ); + void DoThreshScanOverBase ( uint8_t FirstChannel, uint8_t LastChannel, double FromThrmV, double ToThrmV, double MeasureTime, double StepSize, int NrPasses); + void MakeGraphsOverBase ( ); + void MakeGraphsOverBase ( uint16_t ToThr); + void MakeDiffGraphsOverBase ( ); + // void MakeDiffGraphsOverBase ( uint16_t FromThr, uint16_t ToThr); + void FindMinThreshScanOverBase(double gThreshold_finding_method); + + bool IsSim (){return fsimulate;} + bool IsJansReadout (){return fjans_readout;} + int WhichDirichVersion (){return gdirichver;} + + // threshold visualization items + std::array gRateGraphs; + std::array gRateGraphsOverBase; + std::array gDiffRateGraphsOverBase; + // void ClearGraphs(); + + + // settings for threshold measurement + double gMeasureTime; //Time [s] to determine rate + int gLowerEdge; //start of thresholdscan + int gUpperEdge; //end of thresholdscan + int gStepsize; //end of thresholdscan + int gNrPasses; //Nr of passes to scan all channels + + double gMeasureTime_over; //Time [s] to determine rate + int gLowerEdge_over; //end of thresholdscan + int gUpperEdge_over; //end of thresholdscan + int gStepsize_over; //end of thresholdscan + int gNrPasses_over; //Nr of passes to scan all channels + + double gThreshold_finding_method; //Method to find perfect threshold: + //0: searches for the minimum in the differentiated spectrum or for the minimal gradient + //00) break; + } + if(ret<=0){ + std::cerr << "No DiRICH found with Address:" << BoardAddress << "\nNot adding DiRICH" << std::endl; + return; + } + else if(ret!=4){ + std::cerr << "Too many DiRICH found with Address:" << BoardAddress << "(Amount: "<< ret << ")\nNot adding DiRICH" << std::endl; + return; + } + else{ + gBoardAddress = buffer4mb[3]; + uint64_t temp_store = buffer4mb[0]; + uint64_t temp_store2 = buffer4mb[1]; + gBoardUID = temp_store << 32 | temp_store2; + } + // std::cout << ret << " " << std::hex << buffer4mb[0] << " " << buffer4mb[1] << " " << gBoardUID << " " << gBoardAddress << std::endl; + + uint32_t cmd = 0x0 << 20 | 0xff << 24; + uint32_t c[] = {cmd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0x10001}; + + for(int failed=0;failed<100;++failed){ + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xd400,0,c,18); + TRBAccessMutex.UnLock(); + if(ret!=-1) break; + usleep(1000); + } + // std::cout << ret << std::endl; + + std::array ret_c; + TRBAccessMutex.Lock(); + ret=trb_register_read(gBoardAddress,0xd412,ret_c.data(),18); + TRBAccessMutex.UnLock(); + if(ret!=2 || (ret_c.at(1) & 0xff00)!=0x100){ + std::cerr << "No DiRICH2 Threshold FPGA of newest version detected\nNot adding DiRICH" << std::endl; + return; + } + else{ + gdirichver = 3; + } + + // gBoardAddress=BoardAddress; + gMeasureTime=.3; + gLowerEdge=28000; + gUpperEdge=32000; + // gStepsize=10; + gStepsize=50; + gNrPasses=2; + gMeasureTime_over=30.; + gLowerEdge_over=0; + gUpperEdge_over=600; + gStepsize_over=10; + gNrPasses_over=1; + gThreshold_finding_method=0; + for (int ichannel=0; ichannelSetTitle(Form("Rate graph of dirich 0x%x's channel %i;Threshold;Rate",gBoardAddress,ichannel)); + gRateGraphs[ichannel]->SetName(Form("Rate graph of dirich 0x%x's channel %i",gBoardAddress,ichannel)); + + gRateGraphsOverBase[ichannel]=new TGraph(); + gRateGraphsOverBase[ichannel]->SetTitle(Form("Rate graph over baseline of dirich 0x%x's channel %i;Threshold in mV;Rate",gBoardAddress,ichannel)); + gRateGraphsOverBase[ichannel]->SetName(Form("Rate graph over baseline of dirich 0x%x's channel %i",gBoardAddress,ichannel)); + + gDiffRateGraphsOverBase[ichannel]=new TGraph(); + gDiffRateGraphsOverBase[ichannel]->SetTitle(Form("Differentiated rate graph over baseline of dirich 0x%x's channel %i;Threshold in mV;Differentiated rate",gBoardAddress,ichannel)); + gDiffRateGraphsOverBase[ichannel]->SetName(Form("Differentiated rate graph over baseline of dirich 0x%x's channel %i",gBoardAddress,ichannel)); + + fbaseline[ichannel]=0; + fbaseline_old[ichannel]=0; + fnoisewidth[ichannel]=0; + fnoisewidth_old[ichannel]=0; + fthresholdmV[ichannel]=0.; + } + + fsimulate=false; + + if(fsimulate==true){ + std::cout << "dirich " << std::hex << BoardAddress << std::dec << " not found -> simulating" << std::endl; + rnd.seed(gBoardAddress); + + for(auto& fsim_baseline_it : fsim_baseline){ + std::uniform_int_distribution dist( 29600 , 30400 ); + fsim_baseline_it = dist(rnd); + std::cout << "fsim_baseline_it " << fsim_baseline_it << std::endl; + } + + for(auto& fsim_noise_sigma_it : fsim_noise_sigma){ + std::uniform_int_distribution dist( 50 , 800 ); + fsim_noise_sigma_it = dist(rnd); + std::cout << "fsim_noise_sigma_it " << fsim_noise_sigma_it << std::endl; + } + + for(int ichannel=0;ichannel dist( fsim_baseline.at(ichannel)+2500 , fsim_baseline.at(ichannel)+8000 ); + fsim_singlephotonpeakposition.at(ichannel) = dist(rnd); + std::cout << "fsim_singlephotonpeakposition.at(ichannel) " << fsim_singlephotonpeakposition.at(ichannel) << std::endl; + } + + for(auto& fsim_current_threshold_it : fsim_current_threshold){ + fsim_current_threshold_it=0; + } + + for(int ichannel=0;ichannel=0) break; + // // ret=ReadScalers(scaler1,start1); + // // // std::cout << iterator << "\t"; + // // if(iterator==99)fjans_readout=true; + // // } + // // GetRateMutex.UnLock(); + // // } + // if(fjans_readout==true){ + // std::cout << "using jans scaler implementation for dirich " << std::hex << BoardAddress << std::dec << std::endl; + // } + + } + // std::cout << "Initialization of DiRICH " << std::hex << gBoardAddress << " complete" << std::endl; + return; +} + +dirich::~dirich() +{ + for (int i=0; iNRCHANNELS-1) + return -1; + int ret; + if(gBoardAddress<=0x1210){ +// int reg=0xa000+31-channel; old firwmare + int reg=0xa000+channel; //new firwmare + uint32_t buffer[2]; + TRBAccessMutex.Lock(); + ret=trb_register_read(gBoardAddress,reg, buffer, 2); + TRBAccessMutex.UnLock(); + + if((gBoardAddress != buffer[0]) || (ret != 2)) return -1; + + thrvalue=buffer[1]; + return 0; + } + else{ + // uint8_t real_channel = channel%16+16; + uint8_t real_channel = channel%16; + uint32_t cmd = 0x0 << 20 | real_channel << 24 | thrvalue << 0; + + uint32_t c[] = {cmd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(uint32_t)channel/16+1,0x10001}; //evtl. sind auch mehrere Kanäle auf einmal lesbar. + for(int failed=0;failed<100;++failed){ + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xd400,0,c,18); + TRBAccessMutex.UnLock(); + if(ret!=-1) break; + usleep(1000); + } + uint32_t ret_c[18]; + TRBAccessMutex.Lock(); + ret=trb_register_read(gBoardAddress,0xd412,ret_c,18); + TRBAccessMutex.UnLock(); + // if((gBoardAddress != ret_c[0]) || (ret != 2)) return -1; + + thrvalue=ret_c[1]; + return 0; + } +} + +int dirich::WriteSingleThreshold(uint8_t channel, uint16_t thrvalue) +{ + if (channel>NRCHANNELS-1) + return -1; + if(fsimulate) + fsim_current_threshold.at(channel) = thrvalue; + else{ + int ret=0; + + if(gdirichver==1){ + // int reg=0xa000+31-channel; old firwmare + int reg=0xa000+channel; //new firwmare + TRBAccessMutex.Lock(); + ret=trb_register_write(gBoardAddress, reg, (uint32_t)thrvalue); + TRBAccessMutex.UnLock(); + // std::cout << ret << std::endl; + return ret; + } + else{ + for(int failed=0;failed<100;++failed){ + uint8_t real_channel = channel%16+16*abs(gdirichver-3); + // uint8_t real_channel = channel%16+16; + uint32_t cmd = 0x8 << 20 | real_channel << 24 | thrvalue <<0; + // uint32_t c[] = {cmd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(uint32_t)(channel/16+1),0x10001}; //evtl. sind auch mehrere Kanäle auf einmal setzbar. + std::array c = {cmd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(uint32_t)(channel/16+1),0x10001}; //evtl. sind auch mehrere Kanäle auf einmal setzbar. + + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xd400,0,c.data(),18); + TRBAccessMutex.UnLock(); + if(ret!=-1) break; + usleep(1000); + } + uint32_t ret_c[18]; + TRBAccessMutex.Lock(); + ret=trb_register_read(gBoardAddress,0xd412,ret_c,18); + TRBAccessMutex.UnLock(); + + return ret; + } + } +} + +int dirich::ReadThresholds(uint16_t* thrarray) +{ + int ret; + uint16_t reg=0xa000+32-NRCHANNELS; + uint32_t buffer[NRCHANNELS+1]; + + TRBAccessMutex.Lock(); + ret=trb_register_read_mem(gBoardAddress,reg,0,NRCHANNELS,buffer,NRCHANNELS+1); + TRBAccessMutex.UnLock(); + if (ret != NRCHANNELS+1) return -1; + + for (int i=0;i c1; + std::array c2; + if(gdirichver==1){ + uint16_t reg=0xa000+32-NRCHANNELS; + uint32_t buffer[NRCHANNELS]; + for (int i=0;i cmd; + for(int channel=0;channel ret_c1; + TRBAccessMutex.Lock(); + if(ret!=-1) ret=trb_register_read(gBoardAddress,0xd412,ret_c1.data(),18); + TRBAccessMutex.UnLock(); + + if(ret==-1) return ret; + + // std::cout << "done setting first fpga" << std::endl; + // for(auto& c_iterator : c1){ + // std::cout << c_iterator << " "; + // } + // std::cout << std::endl; + // for(auto& c_iterator : ret_c1){ + // std::cout << c_iterator << " "; + // } + // std::cout << std::endl; + + c2 = {{cmd.at(16+0),cmd.at(16+1),cmd.at(16+2),cmd.at(16+3),cmd.at(16+4),cmd.at(16+5),cmd.at(16+6),cmd.at(16+7),cmd.at(16+8),cmd.at(16+9),cmd.at(16+10),cmd.at(16+11),cmd.at(16+12),cmd.at(16+13),cmd.at(16+14),cmd.at(16+15),(uint32_t)2,0x10010}}; + for(int failed=0;failed<100;++failed){ + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xd400,0,c2.data(),18); + TRBAccessMutex.UnLock(); + if(ret!=-1) break; + usleep(1000); + } + + std::array ret_c2; + TRBAccessMutex.Lock(); + if(ret!=-1) ret=trb_register_read(gBoardAddress,0xd412,ret_c2.data(),18); + TRBAccessMutex.UnLock(); + + // if(ret==-1) return ret; + // std::cout << "done setting second fpga" << std::endl; + // for(auto& c_iterator : c2){ + // std::cout << c_iterator << " "; + // } + // std::cout << std::endl; + // if(ret_c1!=c1 || ret_c2!=c2){ + // std::cout << "return values not equal!" << std::endl; + // ret=-1; + // } + return ret; + } + } +} + +int dirich::WriteThresholds(uint16_t thrvalue) +{ + int ret; + uint16_t thrarray[NRCHANNELS]; + for (int i=0; i=NRCHANNELS){ + std::cerr << "Channel: " << std::dec << channel << " not specified" << std::endl; + return; + } + int baseline=fbaseline[channel]; + if(baseline==0){ + std::cerr << "dirich 0x" << std::hex << gBoardAddress << "'s channel: " << std::dec << unsigned(channel) << " has no baseline! (baseline==0)" << std::endl; + return; + } + int thrinD=Thr_mVtoD(thrinmV); + int newthreshold=baseline+thrinD; + + WriteSingleThreshold(channel,newthreshold); + fthresholdmV[channel]=thrinmV; + + // printf("Setting threshold for channel %i \n",channel); + // printf("Baseline: %i \n",baseline); + // printf("Threshold %3.0f in digits: %i \n",thrinmV, thrinD); + // printf("New threshold value %i set \n\n",newthreshold); + // DrawGraphs(dirichptr,cc.at(dirichptr.first),Form("Threshold: %3.0f mV",thrinmV)); +} + +int dirich::ReadSingleScaler(uint8_t channel, uint32_t& scalervalue, std::chrono::high_resolution_clock::time_point& access_time) +{ + int ret; + if (channel>NRCHANNELS) + return -1; + uint16_t reg=0xc000+channel; + if(fjans_readout) reg=0xdfc0+channel; //readout of Jans implementation!!!! + // else reg=0xc000+channel; + uint32_t buffer[2]; + TRBAccessMutex.Lock(); + access_time = std::chrono::high_resolution_clock::now(); + ret=trb_register_read(gBoardAddress,reg, buffer, 2); + TRBAccessMutex.UnLock(); + if ( (gBoardAddress != buffer[0]) || (ret != 2) ) + return -1; + + scalervalue=buffer[1] & 0x7fffffff; + return 0; +} + +int dirich::ReadScalers(uint32_t* scalervalues, std::chrono::high_resolution_clock::time_point& access_time) +{ + int ret; + uint16_t reg=0xc000+1; + if(fjans_readout) reg=0xdfc0; //readout of Jans implementation!!!! + // else reg=0xc000+1; + uint32_t buffer[NRCHANNELS+1]; + for (int i=0;i is_spp_dist(0,1); + std::normal_distribution noise_dist(fsim_baseline.at(channel),fsim_noise_sigma.at(channel)); + std::normal_distribution spp_dist(fsim_singlephotonpeakposition.at(channel),2000); + if(fsim_current_threshold.at(channel)>fsim_baseline.at(channel)){ + double spp_pulse_prob = is_spp_dist(rnd); + // std::cout << "spp_pulse_prob" << spp_pulse_prob << std::endl; + if(is_spp_dist(rnd)<=4E-9){ + if(noise_dist(rnd)+spp_dist(rnd)>fsim_current_threshold.at(channel)){ + counter++; + itime+=20000-1; + } + } + } + else{ + double val_1 = noise_dist(rnd); + if((val_1>fsim_current_threshold.at(channel) && fsim_current_threshold.at(channel)>fsim_baseline.at(channel)) || (val_1=0) break; + ret=ReadSingleScaler(channel,scaler1,start1); + // std::cout << iterator << "\t"; + if(iterator==99) printf("Error reading start_scalers !\n"); + } + GetRateMutex.UnLock(); + // std::cout << scaler1 << "\n"; + + usleep(1e6*delay); + ret=-1; + GetRateMutex.Lock(); + std::chrono::high_resolution_clock::time_point stop1; + for(int iterator=0;iterator<100;++iterator){ + if(ret>=0) break; + ret=ReadSingleScaler(channel,scaler2,stop1); + // std::cout << iterator << "\t"; + if(iterator==99) printf("Error reading end_scalers !\n"); + } + GetRateMutex.UnLock(); + // std::cout << scaler2 << "\n"; + + double exactdelay1=std::chrono::duration_cast(stop1-start1).count() * 1e-6; + double rate=scaler2 counter; + counter.fill(0); + for(int ichannel=0;ichannel is_spp_dist(0,1); + std::normal_distribution noise_dist(fsim_baseline.at(ichannel),fsim_noise_sigma.at(ichannel)); + std::normal_distribution spp_dist(fsim_singlephotonpeakposition.at(ichannel),2000); + if(fsim_current_threshold.at(ichannel)>fsim_baseline.at(ichannel)){ + double spp_pulse_prob = is_spp_dist(rnd); + // std::cout << "spp_pulse_prob" << spp_pulse_prob << std::endl; + if(is_spp_dist(rnd)<=4E-9){ + if(noise_dist(rnd)+spp_dist(rnd)>fsim_current_threshold.at(ichannel)){ + counter.at(ichannel)++; + itime+=20000-1; + } + } + } + else{ + double val_1 = noise_dist(rnd); + if((val_1>fsim_current_threshold.at(ichannel) && fsim_current_threshold.at(ichannel)>fsim_baseline.at(ichannel)) || (val_1 counter_d; + counter_d.fill(0); + for(int ichannel=0;ichannel=0) break; + ret=ReadScalers(scaler1,start1); + // std::cout << iterator << "\t"; + if(iterator==99) printf("Error reading start_scalers !\n"); + } + GetRateMutex.UnLock(); + + usleep(1e6*delay); + ret=-1; + GetRateMutex.Lock(); + std::chrono::high_resolution_clock::time_point stop1; + for(int iterator=0;iterator<100;++iterator){ + if(ret>=0) break; + ret=ReadScalers(scaler2,stop1); + // std::cout << iterator << "\t"; + if(iterator==99) printf("Error reading end_scalers !\n"); + } + GetRateMutex.UnLock(); + + double exactdelay1=std::chrono::duration_cast(stop1-start1).count() * 1e-6; + for (int i=0; iSet(0); + } + int ret=0; + if(fjans_readout){ + uint32_t scaler_switch[] = {0xffffffff}; + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xdf80,0,scaler_switch,1); //switching on scaler for this dirich .... only needed when using jan's readout + TRBAccessMutex.UnLock(); + if(ret<0) std::cerr << "Error switching on scalers" << std::endl; + } + + int number_of_checks=2; + + std::array low_edge; + low_edge.fill(0); + std::array high_edge; + high_edge.fill(0); + + for(int ipass=0;ipass step_size; + std::array threshold_value; + std::array rate; + std::array old_rate; + std::array status; + status.fill(0); + rate.fill(0); + old_rate.fill(0); + for(int ichannel = 0; ichannelSetPoint(gRateGraphs.at(ichannel)->GetN(),1.*threshold_value.at(ichannel),1.*rate.at(ichannel)); + if(status.at(ichannel) SearchedNoise){ + status.at(ichannel)++; + threshold_value.at(ichannel)-=2*step_size.at(ichannel); + } + else if(status.at(ichannel)%2==1 && old_rate.at(ichannel) > SearchedNoise && rate.at(ichannel) < SearchedNoise){ + status.at(ichannel)++; + // threshold_value.at(ichannel)-=step_size.at(ichannel); + } + else{ + status.at(ichannel)=0; + } + if(status.at(ichannel)==number_of_checks*2-1){ + step_size.at(ichannel)/=3; + if(step_size.at(ichannel)!=0){ + status.at(ichannel)=0; + } + else{ + step_size.at(ichannel)= ichannel%NrPasses==ipass ? -StartStepSize : 0; + threshold_value.at(ichannel)= ichannel%NrPasses==ipass ? MAXTHRESHOLD : OFFTHRESH; + rate.at(ichannel)==0; + low_edge.at(ichannel)=threshold_value.at(ichannel); + } + } + } + if(status.at(ichannel)<4*number_of_checks-2){ + if(status.at(ichannel)%2==0 && old_rate.at(ichannel) < SearchedNoise && rate.at(ichannel) > SearchedNoise){ + status.at(ichannel)++; + threshold_value.at(ichannel)-=2*step_size.at(ichannel); + } + else if(status.at(ichannel)%2==1 && old_rate.at(ichannel) > SearchedNoise && rate.at(ichannel) < SearchedNoise){ + status.at(ichannel)++; + // threshold_value.at(ichannel)-=step_size.at(ichannel); + } + else{ + status.at(ichannel)=0; + } + if(status.at(ichannel)==number_of_checks*2-1){ + step_size.at(ichannel)/=3; + if(step_size.at(ichannel)!=0){ + status.at(ichannel)=0; + } + else{ + high_edge.at(ichannel)=threshold_value.at(ichannel); + } + } + } + threshold_value.at(ichannel)+=step_size.at(ichannel); + } + old_rate=rate; + } + } + + if(fjans_readout){ + usleep(THRESHDELAY); + uint32_t scaler_switch[] = {0x0}; + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xdf80,0,scaler_switch,1); //switching off scaler for this dirich .... only needed when using jan's readout + TRBAccessMutex.UnLock(); + if(ret<0) std::cerr << "Error switching off scalers" << std::endl; + } + for(int ichannel=0;ichannelSort(); + } +} + +void dirich::DoThreshScan(){ + DoThreshScan(0, NRCHANNELS, gLowerEdge, gUpperEdge, gMeasureTime, gStepsize, gNrPasses); +} +void dirich::DoThreshScan(uint8_t FirstChannel, uint8_t LastChannel, uint16_t FromThr, uint16_t ToThr, double MeasureTime, uint16_t StepSize, int NrPasses) +{ + // std::cout << std::dec << (int)FirstChannel << " " << (int)LastChannel << " " << FromThr << " " << ToThr << " " << MeasureTime << " " << StepSize << " " << NrPasses << std::endl; + int ret; + if(fjans_readout){ + uint32_t scaler_switch[] = {0xffffffff}; + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xdf80,0,scaler_switch,1); //switching on scaler for this dirich .... only needed when using jan's readout + TRBAccessMutex.UnLock(); + if(ret<0) std::cerr << "Error switching on scalers" << std::endl; + } + // std::cout << "Set0" << std::endl; + // TGraph* temp[NRCHANNELS]; + for (int ichannel=0; ichannelSetTitle(Form("Rate graph of dirich 0x%x's channel %i;Threshold;Rate",gBoardAddress,ichannel)); + // gRateGraphs[ichannel]->SetName(Form("Rate graph of dirich 0x%x's channel %i",gBoardAddress,ichannel)); + // temp[ichannel] = new TGraph(); + gRateGraphs[ichannel]->Set(0); + } + for(int ipass=0;ipassGetN() << " thr " << thresh << " rate " << rates[ichannel] << std::endl; + gRateGraphs[ichannel]->SetPoint(gRateGraphs[ichannel]->GetN(),1.*thresh,1.*rates[ichannel]); + // temp[ichannel]->SetPoint(temp[ichannel]->GetN(),1.*thresh,1.*rates[ichannel]); + // std::cout << std::dec << "2Channel " << ichannel << " PointIndex " << gRateGraphs[ichannel]->GetN() << " thr " << thresh << " rate " << rates[ichannel] << std::endl; + // gRateGraphs[ichannel]->Sort(); + } + std::cout << std::endl; + } + } + for (int ichannel=FirstChannel; ichannelGetN(); ++ipoint){ + // gRateGraphs[ichannel]->SetPoint(ipoint,temp[ichannel]->GetX()[ipoint],temp[ichannel]->GetY()[ipoint]); + // } + // std::cout << ichannel << " 2" << std::endl; + gRateGraphs[ichannel]->Sort(); + // std::cout << ichannel << " 3" << std::endl; + // delete temp[ichannel]; + // std::cout << ichannel << " 4" << std::endl; + } + if(fjans_readout){ + usleep(THRESHDELAY); + uint32_t scaler_switch[] = {0x0}; + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xdf80,0,scaler_switch,1); //switching off scaler for this dirich .... only needed when using jan's readout + TRBAccessMutex.UnLock(); + if(ret<0) std::cerr << "Error switching off scalers" << std::endl; + } + +} + +void dirich::DoThreshSearch(){ + if(std::all_of(fbaseline.cbegin(), fbaseline.cend(), [](int i){ return i==0; })){ + std::cerr << "dirich 0x" << std::hex << gBoardAddress << std::dec << " has no baseline yet. Please load or scan one (load_base, system_thr_scan)" << std::endl; + return; + } + if(gThreshold_finding_method==0){ + DoThreshSearch(1., 0, 30., 100, 1); + } + else if(gThreshold_finding_method>0 && gThreshold_finding_method<5){ + DoThreshScanOverBase( 0, NRCHANNELS, 0., 999., 30., 10, 1); + MakeDiffGraphsOverBase(); + FindMinThreshScanOverBase(gThreshold_finding_method); + std::cout << "currently this method is not implemented" << std::endl; + } + else if(gThreshold_finding_method>5 && gThreshold_finding_method<100){ + DoThreshSearch(gThreshold_finding_method, 1, 30., 400, 1); + } +} +void dirich::DoThreshSearch(double Perc, bool SPP_SPV /*1==SPP*/, double MeasureTime, int16_t StepSize, int NrPasses){ + int ret; + if(fjans_readout){ + uint32_t scaler_switch[] = {0xffffffff}; + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xdf80,0,scaler_switch,1); //switching on scaler for this dirich .... only needed when using jan's readout + TRBAccessMutex.UnLock(); + if(ret<0) std::cerr << "Error switching on scalers" << std::endl; + } + // std::cout << "Set0" << std::endl; + for (int ichannel=0; ichannelSet(0); + gDiffRateGraphsOverBase[ichannel]->Set(0); + } + + std::array SPP_SPV_value; + for(int ipass=0;ipass step_size; + std::array threshold_value; + std::array, NRCHANNELS> rate; + std::array, NRCHANNELS> diff_rate; + for(int ichannel = 0; ichannel i){ return i.back()< 3.;}) + && std::all_of(step_size.cbegin(), step_size.cend(), [StepSize](int i){ return i==StepSize || i==0;}) + ) + ) + ){ + + ++n_of_iterations; + std::cout << "n_of_iterations " << n_of_iterations << std::endl; + ret=WriteThresholds(threshold_value.data()); + if(n_of_iterations==1)usleep(1000000); + usleep(2*THRESHDELAY); + double* temp_rate; + temp_rate = GetRates(MeasureTime); + for(int ichannel=0;ichannelSetPoint(gRateGraphsOverBase.at(ichannel)->GetN(),Thr_DtomV(threshold_value.at(ichannel)-fbaseline.at(ichannel)),rate.at(ichannel).back()); + std::cout << "rate.at(ichannel).size() " << rate.at(ichannel).size() << std::endl; + if(step_size.at(ichannel)==StepSize && rate.at(ichannel).size()>5){ + diff_rate.at(ichannel).push_back(-1.*rate.at(ichannel).at(rate.at(ichannel).size()-5)+16.*rate.at(ichannel).at(rate.at(ichannel).size()-4)+32.*rate.at(ichannel).at(rate.at(ichannel).size()-3)-16.*rate.at(ichannel).at(rate.at(ichannel).size()-2)+1.*rate.at(ichannel).at(rate.at(ichannel).size()-1)); + diff_rate.at(ichannel).back()/=(12.*step_size.at(ichannel)*step_size.at(ichannel)); + } + if(rate.at(ichannel).size()>=15){ + double left_side_derivative=-1.*rate.at(ichannel).at(rate.at(ichannel).size()-15)+8.*rate.at(ichannel).at(rate.at(ichannel).size()-14)-8.*rate.at(ichannel).at(rate.at(ichannel).size()-12)+1.*rate.at(ichannel).at(rate.at(ichannel).size()-11); + double middle_derivative=-1.*rate.at(ichannel).at(rate.at(ichannel).size()-10)+8.*rate.at(ichannel).at(rate.at(ichannel).size()-9)-8.*rate.at(ichannel).at(rate.at(ichannel).size()-7)+1.*rate.at(ichannel).at(rate.at(ichannel).size()-6); + double right_side_derivative=-1.*rate.at(ichannel).at(rate.at(ichannel).size()-5)+8.*rate.at(ichannel).at(rate.at(ichannel).size()-4)-8.*rate.at(ichannel).at(rate.at(ichannel).size()-2)+1.*rate.at(ichannel).at(rate.at(ichannel).size()-1); + std::cout << "threshold_value.at(ichannel) " << threshold_value.at(ichannel) << " threshold_value.at(ichannel)-13*step_size.at(ichannel)-fbaseline.at(ichannel) " << threshold_value.at(ichannel)-13*step_size.at(ichannel)-fbaseline.at(ichannel) << std::endl; + gDiffRateGraphsOverBase.at(ichannel)->SetPoint(gDiffRateGraphsOverBase.at(ichannel)->GetN(),Thr_DtomV(threshold_value.at(ichannel)-13*step_size.at(ichannel)-fbaseline.at(ichannel)),left_side_derivative/(12.*step_size.at(ichannel))); + std::cout << "left_side_derivative " << left_side_derivative << " middle_derivative " << middle_derivative << " right_side_derivative " << right_side_derivative << std::endl; + if((SPP_SPV==1 && left_side_derivativemiddle_derivative && right_side_derivative>middle_derivative)){ + rate.at(ichannel).clear(); + if(step_size.at(ichannel)/10==0){ + gDiffRateGraphsOverBase.at(ichannel)->SetPoint(gDiffRateGraphsOverBase.at(ichannel)->GetN(),Thr_DtomV(threshold_value.at(ichannel)-8*step_size.at(ichannel)-fbaseline.at(ichannel)),middle_derivative/(12.*step_size.at(ichannel))); + gDiffRateGraphsOverBase.at(ichannel)->SetPoint(gDiffRateGraphsOverBase.at(ichannel)->GetN(),Thr_DtomV(threshold_value.at(ichannel)-3*step_size.at(ichannel)-fbaseline.at(ichannel)),right_side_derivative/(12.*step_size.at(ichannel))); + // SPP_SPV_value.at(ichannel)=Perc*Thr_DtomV(threshold_value.at(ichannel)-step_size.at(ichannel)*5.5-fbaseline.at(ichannel)); + SPP_SPV_value.at(ichannel)=Perc*Thr_DtomV(threshold_value.at(ichannel)-step_size.at(ichannel)*5.5-fbaseline.at(ichannel)); + threshold_value.at(ichannel)=OFFTHRESH; + } + else{ + threshold_value.at(ichannel)=threshold_value.at(ichannel)-step_size.at(ichannel)*6; + } + step_size.at(ichannel)/=10; + } + } + threshold_value.at(ichannel)=threshold_value.at(ichannel)+step_size.at(ichannel); + } + } + if(SPP_SPV==0){ + for(int ichannel=0;ichannelSort(); + gRateGraphsOverBase.at(ichannel)->Sort(); + SetSingleThresholdmV(ichannel,-1*SPP_SPV_value.at(ichannel)); + } + std::cout << std::endl; + if(fjans_readout){ + usleep(THRESHDELAY); + uint32_t scaler_switch[] = {0x0}; + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xdf80,0,scaler_switch,1); //switching off scaler for this dirich .... only needed when using jan's readout + TRBAccessMutex.UnLock(); + if(ret<0) std::cerr << "Error switching off scalers" << std::endl; + } +} +void dirich::DoThreshScanOverBase(){ + if(std::all_of(fbaseline.cbegin(), fbaseline.cend(), [](int i){ return i==0; })){ + std::cerr << "dirich 0x" << std::hex << gBoardAddress << std::dec << " has no baseline yet. Please load or scan one (load_base, system_thr_scan)" << std::endl; + return; + } + DoThreshScanOverBase(0, NRCHANNELS, gLowerEdge_over, gUpperEdge_over, gMeasureTime_over, gStepsize_over, gNrPasses_over); + // DoThreshScanOverBase(0, NRCHANNELS, Thr_DtomV(gUpperEdge-*min_element(fbaseline.begin(),fbaseline.end(),find_min_wo_zero)), gMeasureTime, Thr_DtomV(gStepsize), gNrPasses); + // std::cout << "minimal baseline = " << *min_element(fbaseline.begin(),fbaseline.end(),find_min_wo_zero) << std::endl; +} +void dirich::DoThreshScanOverBase(uint8_t FirstChannel, uint8_t LastChannel, double FromThrmV, double ToThrmV, double MeasureTime, double StepSize, int NrPasses){ + int ret; + if(fjans_readout){ + uint32_t scaler_switch[] = {0xffffffff}; + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xdf80,0,scaler_switch,1); //switching on scaler for this dirich .... only needed when using jan's readout + TRBAccessMutex.UnLock(); + if(ret<0) std::cerr << "Error switching on scalers" << std::endl; + } + + // std::cout << "Set0" << std::endl; + for (int ichannel=0; ichannelSet(0); + } + for(int ipass=0;ipassSetPoint(gRateGraphsOverBase[ichannel]->GetN(),thresh,1.*rates[ichannel]); + } + + int finish_counter=0; + for (int ichannel=FirstChannel+ipass; ichannelGetN(); + if(number_of_points>3){ + if(gRateGraphsOverBase[ichannel]->GetY()[number_of_points-1]< 3. && gRateGraphsOverBase[ichannel]->GetY()[number_of_points-2] < 3. && gRateGraphsOverBase[ichannel]->GetY()[number_of_points-3] < 3.) finish_counter++; + // std::cout << "gRateGraphsOverBase[ichannel]->GetY()[number_of_points-1] " << gRateGraphsOverBase[ichannel]->GetY()[number_of_points-1] << " gRateGraphsOverBase[ichannel]->GetY()[number_of_points-2] " << gRateGraphsOverBase[ichannel]->GetY()[number_of_points-2] << " gRateGraphsOverBase[ichannel]->GetY()[number_of_points-3] " << gRateGraphsOverBase[ichannel]->GetY()[number_of_points-3] << std::endl; + } + } + std::cout << "thresh " << thresh << " finish_counter " << finish_counter << " (FirstChannel-(FirstChannel+ipass))/NrPasses " << std::dec << (LastChannel-(FirstChannel+ipass))/NrPasses << std::endl; + if(finish_counter==(LastChannel-(FirstChannel+ipass))/NrPasses) break; + + } + } + for (int ichannel=FirstChannel; ichannel<=LastChannel; ++ichannel){ + gRateGraphsOverBase[ichannel]->Sort(); + } + if(fjans_readout){ + usleep(THRESHDELAY); + uint32_t scaler_switch[] = {0x0}; + TRBAccessMutex.Lock(); + ret=trb_register_write_mem(gBoardAddress,0xdf80,0,scaler_switch,1); //switching off scaler for this dirich .... only needed when using jan's readout + TRBAccessMutex.UnLock(); + if(ret<0) std::cerr << "Error switching off scalers" << std::endl; + } +} + +void dirich::FindMinThreshScanOverBase(double gThreshold_finding_method){ + for (int ichannel=0; ichannelGetN()-2; ++ipoint){ + temp->SetPoint(temp->GetN(), + (gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint-1]+gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint+1]) * 0.5, + (-gDiffRateGraphsOverBase[ichannel]->GetY()[ipoint-2]+8*gDiffRateGraphsOverBase[ichannel]->GetY()[ipoint-1]-8*gDiffRateGraphsOverBase[ichannel]->GetY()[ipoint+1]+gDiffRateGraphsOverBase[ichannel]->GetY()[ipoint+2]) / + (12*fabs(gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint-1]-gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint+1]))); + } + double minimum_value=temp->GetY()[0]; + double minimum=temp->GetX()[0]; + int counter=0; + for (int ipoint=1; ipointGetN(); ++ipoint){ + if(temp->GetY()[ipoint-1]GetY()[ipoint]; + minimum = temp->GetX()[ipoint]; + } + if(temp->GetY()[ipoint-1]>0 && temp->GetY()[ipoint]<0){ + minimum_value = -9999999; + minimum = temp->GetX()[ipoint-1]; + counter++; + } + } + std::cout << "perfect threshold for dirich 0x" << std::hex << gBoardAddress << "'s channel " << ichannel << " is at " << minimum << "lying in the" << counter << "rd valley." << std::endl; + SetSingleThresholdmV(ichannel,minimum); + } + +} + +void dirich::MakeDiffGraphsOverBase(){ + // MakeDiffGraphsOverBase(gLowerEdge, gUpperEdge); +// } +// void dirich::MakeDiffGraphsOverBase(uint16_t FromThr, uint16_t ToThr){ + for (int ichannel=0; ichannelSet(0); + // std::cout << "Set" << gDiffRateGraphsOverBase[ichannel]->GetN() << std::endl; + // doing the derivative (5 point stencil) + for (int ipoint=2; ipointGetN()-2; ++ipoint) { + // gDiffRateGraphsOverBase[ichannel]->SetPoint(gDiffRateGraphsOverBase[ichannel]->GetN(), + // (gRateGraphsOverBase[ichannel]->GetX()[ipoint-1]+gRateGraphsOverBase[ichannel]->GetX()[ipoint+1]) * 0.5, + // (gRateGraphsOverBase[ichannel]->GetY()[ipoint-1]-gRateGraphsOverBase[ichannel]->GetY()[ipoint+1]) / + // fabs(gRateGraphsOverBase[ichannel]->GetX()[ipoint-1]-gRateGraphsOverBase[ichannel]->GetX()[ipoint+1])); + gDiffRateGraphsOverBase[ichannel]->SetPoint(gDiffRateGraphsOverBase[ichannel]->GetN(), + (gRateGraphsOverBase[ichannel]->GetX()[ipoint-1]+gRateGraphsOverBase[ichannel]->GetX()[ipoint+1]) * 0.5, + (-gRateGraphsOverBase[ichannel]->GetY()[ipoint-2]+8*gRateGraphsOverBase[ichannel]->GetY()[ipoint-1]-8*gRateGraphsOverBase[ichannel]->GetY()[ipoint+1]+gRateGraphsOverBase[ichannel]->GetY()[ipoint+2]) / + (12*fabs(gRateGraphsOverBase[ichannel]->GetX()[ipoint-1]-gRateGraphsOverBase[ichannel]->GetX()[ipoint+1]))); + } + //smoothing the graph + double* x_values = gDiffRateGraphsOverBase[ichannel]->GetX(); + double* y_values = gDiffRateGraphsOverBase[ichannel]->GetY(); + for (int ipoint=1; ipointGetN()-1; ipoint+=3) { + gDiffRateGraphsOverBase[ichannel]->SetPoint(ipoint-1,x_values[ipoint],1.*(y_values[ipoint-1]+y_values[ipoint]+y_values[ipoint+1])/3); + } + } +} + +void dirich::MakeGraphsOverBase(){ + MakeGraphsOverBase(gUpperEdge); +} +void dirich::MakeGraphsOverBase(uint16_t ToThr){ + for (int ichannel=0; ichannelSet(0); + // std::cout << "Set" << gRateGraphsOverBase[ichannel]->GetN() << std::endl; + if(fbaseline[ichannel]==0) continue; + for(int ipoint=0; ipointGetN(); ++ipoint){ + if(gRateGraphs[ichannel]->GetX()[ipoint]GetN() << " " << Thr_DtomV((gRateGraphs[ichannel]->GetX()[ipoint])-fbaseline[ichannel]) << " " << gRateGraphs[ichannel]->GetY()[ipoint] << std::endl; + gRateGraphsOverBase[ichannel]->SetPoint(gRateGraphsOverBase[ichannel]->GetN(),Thr_DtomV((gRateGraphs[ichannel]->GetX()[ipoint])-fbaseline[ichannel]),gRateGraphs[ichannel]->GetY()[ipoint]); + } + // std::cout << gBoardAddress << " " << ichannel << " " << gRateGraphsOverBase[ichannel]->GetN() << " " << gRateGraphs[ichannel]->GetN() << " " << fbaseline[ichannel] << " " << gRateGraphs[ichannel]->GetX()[gRateGraphs[ichannel]->GetN()-1] << std::endl; + } +} + +void dirich::AnalyzeBaseline(){ + AnalyzeBaseline(50000); +} +void dirich::AnalyzeBaseline(uint32_t NoiseThreshold) +{ + for (int ichannel=0; ichannelGetN(); + int noiseedgeleft=-1; + int noiseedgeright=-1; + + for (int ibin=0; ibinGetY()[ibin] < NoiseThreshold) && + (gRateGraphs[ichannel]->GetY()[ibin+1] >= NoiseThreshold) + ){ + // linear interpolation + double y1=gRateGraphs[ichannel]->GetY()[ibin]; + double y2=gRateGraphs[ichannel]->GetY()[ibin+1]; + double x1=gRateGraphs[ichannel]->GetX()[ibin]; + double x2=gRateGraphs[ichannel]->GetX()[ibin+1]; + noiseedgeleft=x1+(NoiseThreshold-y1)/(y2-y1)*(x2-x1); + // std::cout << ichannel << " LeftEdge " << ibin << " " << x1 << " " << x2 << " " << y1 << " " << y2 << " " << noiseedgeleft << std::endl; + } + + if( + (noiseedgeright==-1) && + (gRateGraphs[ichannel]->GetY()[NrBins-ibin-1] < NoiseThreshold) && + (gRateGraphs[ichannel]->GetY()[NrBins-ibin-2] >= NoiseThreshold) + ){ + // linear interpolation + double y1=gRateGraphs[ichannel]->GetY()[NrBins-ibin-2]; + double y2=gRateGraphs[ichannel]->GetY()[NrBins-ibin-1]; + double x1=gRateGraphs[ichannel]->GetX()[NrBins-ibin-2]; + double x2=gRateGraphs[ichannel]->GetX()[NrBins-ibin-1]; + noiseedgeright=x2-(NoiseThreshold-y2)/(y1-y2)*(x2-x1); + // std::cout << ichannel << " RightEdge " << ibin << " " << x1 << " " << x2 << " " << y1 << " " << y2 << " " << noiseedgeright << std::endl; + } + + if(noiseedgeleft!=-1 && noiseedgeright!=-1) break; + } + if(noiseedgeleft==-1 || noiseedgeright==-1){ + fbaseline_old[ichannel] = fbaseline[ichannel]; + fbaseline[ichannel] = 0; + fnoisewidth_old[ichannel] = fnoisewidth[ichannel]; + fnoisewidth[ichannel] = 0; + std::cout << "No baseline found for channel " << ichannel << "on dirich 0x" << std::hex << gBoardAddress << std::dec << std::endl; + } + else { + fbaseline_old[ichannel] = fbaseline[ichannel]; + fbaseline[ichannel]=(noiseedgeleft+noiseedgeright) / 2.; + fnoisewidth_old[ichannel] = fnoisewidth[ichannel]; + fnoisewidth[ichannel]=(noiseedgeright-noiseedgeleft); + TLine* baseline_line = new TLine(fbaseline[ichannel],gRateGraphs[ichannel]->GetHistogram()->GetMinimum(),fbaseline[ichannel],gRateGraphs[ichannel]->GetHistogram()->GetMaximum()); + baseline_line->SetLineWidth(2); + baseline_line->SetLineColor(kRed); + gRateGraphs[ichannel]->GetListOfFunctions()->Add(baseline_line); + } + } +} diff --git a/thresholds/trb_dirich_threshold/obsolete/systemthreshscan_v11 b/thresholds/trb_dirich_threshold/obsolete/systemthreshscan_v11 new file mode 100755 index 0000000000000000000000000000000000000000..6befb83c4ae22b4399fd9d41048f288a68e99063 GIT binary patch literal 783178 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%0Ai?5vQxBZt*Jq+(r7IpEtF^rx)@O6ZumPKCD^|z z$SPx_njqURB$kN#ui~lWAT7Q2gARTMFb3;0w?to)C$|z-Ydm=zf5ckt{!zDr^uR#P znr-j*24F@446Y_Jto;qlL8bxb@Yl^|{dyM^OyGdx9_`AyKw$0J-bxI!bCFRRg1=h+bpwY;Gw zVE-b`zg*>dd3MmeZ)9is#{Jr$@@_%p0C(X$H`9x>UL627ajx6NR&n_rY@a2IR{pjC0GKg5aZ%`sJguCO8UL zD4MCN=k%tH!UfO(k(IT`1$__9cL%vPZ`@qy8fnur+x|Q5YU-D}Y6Cnr>K6~?6f4Dw z4EFW`q-QoO)+0M#6cX&YzUKAY2RhoEQ52G;jY5KJqAy5)2_S7<6jB(c#sLm4IgR$5 zn6OnXQBG`Rev`3a?LH#2{X)2MDWw~acP(92y9uvrLwG>!5xd6xp6f4uWgf-WVX^YW zuF+u(PRVa^0O+N+e!{V(Llfw!!N{eFz|X0AbP5W*6PIls1(Lg)7M&i(T7V+a7DADL zn^2%gBcU?q+jipmtz5f+ZpGSF7tl*6MMtaW6y= z^em}KL{Ob_51a)JnuPZqW`85ijnoizsH|G`Q5Nom8faK_UY=rs6FL(y$b8_=j!-)R z2~XS4v!5Wz@%31g4;7x_o2<{Gyg_PH52?u!r1l>WQco_3V?1*A4HGVyki6IQW0rXe zE;!d?Ua^%|yE&OXgQNNAbNM{34(31pSK^bVnMp)0Rb9ugo8nW0oI9_r;`+cAi2DVm zp@bCZyTh-?T!;52p0X;)K@9NQsi~?uy`L>|MQC~A!Y@4E&56L%_--yc2Pn^2Lfg%E zxO+!QvHcP_&6kTbQ)O#?y_H__KqGLIvt>k?B`0T@_6L}A+>AK_UpZS)$*cFzN6NyU zGF$?n?<^5V!Vj8YoIda0WY^Zm%D04hnW%#KHNoH(JJMc1G{NS_F||H3gujo(?^Fwy zWLjfgtub0_$OEOyy&BuFMjbD@7`0gIyhbxmBdcgdBZk@B8%#B=e2m{Ixk4kEI33uz zPa^YWT=GeUbEU$WsBOywZC~TTxl7=%Z95(LQ4XzrsMh9G02cBcc-a^rI|1M8BPy7uWf>70z`q(E1k6+8 zn0c)Lk*rFJhK+=>6O!ip*A=taxe3X+hK9}hdarp+>+9|2RS5#3ZpnF+JdPnb{P*QX zTY=oL1>!0GZTedIZr;Njb<)>G)X(r_)W@Zaq^?F ze2e3@NirWwpC?%{*c3YSuRz;IhaTfTz|lYQv`FoNjQ)xLNt2EN-u(kR^1oq#`VIak z46wx%qI6snXo~+n12h#dfGuDcKnoNwK=n@x8KB8AfEl_?DEx&>M(C`C?1(L)*qw46 ztrm5Fj&*)SkTnrI`h6HwBfib;$5f3Pd^3kc12ipg9P*c^Lq7fj>J z!4-ySKBUxTE!Y%MnQ)V`L?iIW|H?|Jn;M<++_Y2Kp`UbATf!EY>=!tnLu!l-TVR@B zV0#g>AqcrTufV4Wf{bn%>DxR9?JEnnGt5SBrV+SBw1j8f2a5^x#!+KJN* zR~&RB6@Fq>)%Vc0EK_4scJzL_C)+{W+1%CTw5qYQ+qxnpT%Vb6QqG6)2M57yV}2lj zuvZ}jKwOf15kd-|$W>!qg}w-I4m!sp;02M~peCI3*cemavsNNgJ3+by1YbTg;JS9v zC?ik^h<1j_h1n_@3bTN&4*4dEDOs zve2vj1eS8{tam ztOp__7h_;&F%hP{nQt=AoQ6cM$TYl6ltsv-kLw&!lYW{v%P@I-(X9oLAD%&vZ^-fB zwf;q{cFP8JQKM*}j$hTa>Spjg51Y)XwD9-g$c zX4GBequCoHAjBPQ@xVaZ3Ehvoj|!;SBq!EB#Rhy{)^$JDV)@(X?8jF{I0ld*cO#Ea zMt-?-@~H*iJK=HI$;M!IrKg+HXB8>Ejg*F^>`EVk(z*`v68B)DS?YMnTS+o61T4Cm zff41vt{i6}*ab@~I};RmO$zvHk`@%uHOYZ%3j>&2r0Vvr46jaDkW!csWBj0~o2Oy9 zEGG10BQVD%m`gw3$}K&CB;^uCbZ>q;(MAuWOi6w*{>U5)X(OC1fdq3M8xFifBJ`AB zB0-f=8SqY3KO9j;?V^kvfHx~G0Hcex2>?7eqyPYyY&cvZi;f@GKlQPPA@(CEpYB>T z$DtqE&7r&#S{xgD*hu~FWsKC$+9YacrK;Ndm-V<9(5KYrd)t{l9Wi5XrZ;)5Jj^K@ z7WMtL0s$XsL5_ruBCn1?ur%2_DWg-k+G1{PPWT8vF-7mEQ9^lbj@+A1Y`haDR-4w z%UZ_xC5YS*+>T8yRwE6!rRr2W6We>kMYf3+S?{=Lk^l3H<9o?cNI zOMa{B0qIFiry{v8NIl1t9&Ku$WZp-Z_ruJ4g?ZoCybJVG0yx`iI-yStQa27#_Xtu~ zK?oZc`XzPnE>goTn2ZkQb{;I;!(Kjn6e=cYn$qVEF=k#r3h=5UDX1Q@$DdD{B{6WEQjGG`!1#oERBbAc;oC1W+uGg(fIs z8c_-jGt?x8zmyJVbK4;ZtVTySS{1FCdy@>C` zjGla=$Fb_MW0X}(xJ*cK#6zq)r(+t(WMzrwDsjokb2_?huGvZf&t040SRu>q0FOng zID`%5rfSke4*%~s{DHrCzGTH(%}yZT(`wh>J21cS@05AK7Xtpf!m*M!wJ7pL!9(U0g zmAK$ZNx-}Um6Bx9InXAf(PNs7d_tp}*R*+x>t6U6Uwq+xk6znD0fq;x^w!-msL!i( zG4Hy_J6+(NCgGj(#1P3_Mr+?X;VXXy%Gs|NnpByHWys(}ya38B|C&xjfBZRp$V=?V zy|fSUyk%26eMZc%)2CXbp!Cw4h(53QkWMm?j&zXf9Hey%A(^W#JyfzT0Gr&1rrX`r=1k~fdPyy9lj%p(L>n>Z2p~M2iz7bimk|d#|68HR4cj-xH zl}2thv;iE7_ekq5wMSFCI1?6;6u1q6CBRstu!8{=YJ`ybFiQ10Rx*qz$1Q>SL>5D> zwWStRMUYgXfH zFDve7iI;XmzF?;>zdIY*t~GUR7~FHLNk_B~?)E4+5sh5=`K2yKsY3iNCZ zw?i>-Wl?ZN@q6nl?894GdJzs%`)I$8WH!&4*{Z|uk@pGYQrBpSiZn~mZH`Sc*qDVq zSv=;qbJr*%<}0dri$me(Y>p4Nd5X4Kfi|1zF$m|zBWF7?;9^LzY;U3Mx`+$42Nu)=zewPsS*e{Fp=r$DRZf`KifO|xc zMS8UECFl|VutyIaB0b8O@7H0#J1GLzgAmdsnp=U-E{I~1RA4hcXhNE*R~;OwYL=)b zh8?QpV%RrQmdk2%pzXO3<`!%(6z3WvsL;CXFNPgL#Kf>Op9|>`!)7kHLYM?GZ1XC- zgGIb~P4fwJ%e)FDNYvvGBTBQVTuC2!R90ZlPofk_HA_mwL*f^UM~Zp=79F1YZ-HlI z@h(8EBPA;;)hHxtR}Sh=b_9PW6B!*gn|g?*&OvJafgymK))J`DqFE!Q1KRSZ)$9{p zIKe;_i*S=9g}hOVl~}0uKzO6>KWWmj#~?QOKVpwta6}!j{#*9g`%t1ZYlO0gK796& zlqh?6#SDA6Vg>B+J1VaTdq`=^9%ick{BS!QUd($o*na4Rh?v@#caQwmnDkR!IgEwFv?^HuTI5jUd4@BF*MjCe@GTc%-h31A~2~L*g~M7D~1ja z2+~Zn84su0og$dX=T(b@y{`i!y0G_=9~(}Rus16f5hHghpA1tz(T5lOZkCk#aQxeR ztyPLmRx#p=0d26ax(YpL(;~&ZShxqxgu`8 zWy##Cp$H$yAr6QMM_d~K*{To-fX+6d@zzjioE!t*5QPx1j3@*Rjf3wp(xr?T;KSfx zm~c{0q)Q98wOukFS{o8z(~K?okuDX*CR5n_s+ZAPBrv~+m@c~0ryVHC)&m@!@dEQ- z9>Bo7*WbPZ^B>Y^kYOey3Czz`@Z5LhUJ+8qcfC~AL2eE5e^J34~eB%r48 zpkACfhEN3lvzQo|FV+%Hvl~U^&tF8E&Z zXeNxRBI==Dx0cmRK+5LsN2+KnQ$rFPnW*PR!)xuPqHApr+@xaQc8`LSX-40^-{^)Y zW!JJE#2+CUtRoy)Q_!gu9{^KtEz1&tsw}dW#htNztYy76uLo4LDQnq@1#Mm!X_F=T zX%n}0V=Y@Z1R|skYuOTvs9DP%s-W$_?}``-hh*ds>v$Z7MUpT~ZrOOd?ZB2^)0F;t zt-{jxN$DqbfqHsgMi~9!iI?MJjrcWm=~-?$w*n!Kred-Gc+$!pZ>hQ>Sil-(BdZR; zl;>k3!0AEw|CMo^CRne^!txz>>QxYUm>l^36O(zNwdVecO(rYfZIdaP#-8k~coF4w zLNQxFN~<|wiJwG}#?DbO1-iJcTj$xC=%qR06WS#wVALS6VD@ofj4_Z5!2Gx<7_jAb zijVG47$dy5I%a@DqsNmtk0Vf|y)jn6pa6|4-!Il1AB{{g{a-IM#obaDQh8K<8YaZbmb2>Nfp>(oC$?Du6Lg~q3DDB};+G{{4efY;PN|iuKb?wE71{qz; z#3H(u=oito+waSnI%|b=E};)!*GfuM*LuY!aRgJ%u2_Mtok%MnqHCqJ)wMEIrS)%sDcx z2-=`<*TQ3ne}o9wQLt;_h&`i44iz^WTwiP`&-;;0u(cPm&;(m6_Ey~j#}VbVN&R{+ zm%1QGeK$zGOH+I8&V}pDyWP2vH1FWYZ0??*-dO>(YlGBdg4DVoH5R1)0jY?#w1GU) zoeSOpsTNW%IlujT5~A$AC0@kkD_G&-nX3<7?)Nh^)95U73d{i!o*@$VDX5HSM%s% z;C>MWCo*3mE?(84C}kopUh3M#0KU^RVEi@(bva2#q zr&TPZLXs5n#+JWes%MoCgg18lPnvY>asMvt{QrhM4u1WA!XC>-ip&}*e4$?BkPk{S zqU@oieJk4)D`1cHsR1MGA*C&Q7zgFc4OeC0DB&4z*c;AIo*622zBq0@6#4^iomty2_OwoeSTO~|~8kG+t z$UxDMiX^7|kcunjhg7^`CZytuZC^s%H1ZM@vmq5*j3Je0e;Wy@v``sG7*8q~##`-> z3dR#%%nYIU8i&Jx*2)z>N+Z_4VwvIVWv>;)A2f)OgAnq8e2bHG3dDF(_6>k^y;=aI zXb__lgJQ-?6hfe5MIrn^NX5tI3=f<4*vGltM6Jg6J_E!iQ`mg5kjnd_==%++%m!)$ z3aQ*cSTfA*vV6c<#{q>@{H~uf)DDF4?93bFy1v^heT7uEa4iSwr?0pLhbT}%E^gr? z@gV{!8n^i56PoPns|r_}CPG(8gtA+Y4f|52NfRoxE_HU#7$Hi3A(aqnK}f|%?J$Sh zkpn_)tq5vUfSS5_T3!}eLu-bKf%ziLi)4uz7m+{XDZi7mhN+&?hp&JnCFc5ALnTQfEO{@aQldoD2kPLoN1W>CtmWxeFbkqjP@$uXHEO8J=1B4}?d z%MyXAT&<9b*XI7(rmSTr6|^}j(k4sv(`F>3G6Vw?4yo9Ie;c6`4%90M=;~33RxJB8 zq>|j;tZ^KhJY-7WS)}waQrd)6eu`TVF~Xps7s!}VmMYR$mZOx$=b~n0$HU|3^&1A(hXz6>R>Ckcu6uUm}hbG6kl~9y1xfP0`CA z2&q^wAMx;^_|1$l@XG+q;^&Kj!88bkRLoGUh8ZB9Yu#L7(U|O^Ay&Zs+|#U9z@9&d zMkb=CXu7>zB&1?n`)aY?K^4db4kfE|e+Z>eNX4S`K5RfmsaJxzKZMc^hlf#`2$WRU z?(m$QVzZc7MAs7iBD%JF6z9gQmC`vA>GpN4WJGnXmi9dhu2_Mt{f?R;qHCqJ)wTb1 zNF~=#$l}x;EbsIgvRHGgXpw@D#cc&e!UrwAki{6#(*!4u`?(8FY#F5PAEd4qr0yJ~ zegWAD2rgvto_V(+i&xFN2%WFCacy*HIyK2ZgVeSl^>0Dy)j{f`NacNQrG+7jBkTvr zTE&2pGnbfS)1b**aN?d)4NmNbO|c7P3;PpD@%^nVF<|fHs6)fv$th@S0Y6rgJMd}Y za1-IcCUqK+%!U}M!~?JLlncn{JMA*Q)BS|QkF%etz=^nw`lqn<47A#o=;;|wc|Td- z>+*M@)wnss`LHIoV^NR8joI7=+gYCR92iT1!qCYR0|&-)@>?AkbuK;Rz#!%zDIe;} z6!7Pau;9&VBkZp7Dxvd}1%%?Y$Ldrh7!uJu%l-%y8AFDPLEH+HJiu=cC!u|B79AYe zdP76J>Z!hFh3ofn247Jx-V|j`~hSozw*1^TlHNO0j z9wfJ0FU1Ytm*A7EqQ*CPPYp?Y9tjRPt}eY{z;&Z$uVz>2Gu*q#3(mt+hzLNJqmf{H zq~QBAA!B4MkMZ`lM|O|kT0YW5e z_-z$CIY0W26E$?Ec^;A^3iK@-(YbNFYw(9Al{XXfn_4V?xDta3(zVYhQhkG^&*^&r z=87F!y@9ks1Y8fUMctpLx+5bKPrjg+9C`y96mc{8p$XxcJQ1@(?SwU!$ZWw>nZ-mz z7zhck;`E2vU|t1Ok%@HI7Uf%8m)<2#poC9sa9DrSetPP@ zkpPcG-hdAKS)_J9W8(&NtN*0Q|1Tr^_XEQt8+RkS-6A)#OkC}eePOtaY%BN?|0{!o zIMuC?fZ?lXZGpIoNG&i8rk}`vI}HX?V}~t2evd$<8&6c@y6Um9rREcMn_*VxaU>H} z#KNGO&GJAVo{uAntSjTs+{*Y&%uE?qSNb|rI$fmnI4S+4ni8ur1iQHSc0!p5R3*Yc zVZj(#>7?}OJyuE|hUi~`lN+r&yZs$LG8y;a^!A4=w8N*ncM2&Eefpct#YW}W zoQDZzQuoxOY`6Jdy!*T?u*}*>~!oSf0$inX4-)aMkzbI&+d376zvjP5L1DBfy z%!LV2%k__F57^PD0lK&mOy67cTW}Vok%7doHL=}%q%Dtirc&iB$E>P@@VO$Twg^g%_=oWH_~Zwp7V&Gv+hwE`@ZZb5XAYpjS8=q^G*|^teKa^H zD0NHU4a(=&rZ2Tt!&(rEmMHUif-w!jCPWgyZ6lIsF)aC>#>I1``SFH*${TJ6$$)zc z$+;VA;yLOKE0NB^V5zU}A3w21ycAu>6#X8~W))sR(Fdid5l2(7d>k+rK1K!(_AZ}F z`vg3gZ}pID`b?2*a4k1EB*%o2JlPaIsz}kHK9bKq{+}bcgcBJ^T8kEKDG#1n$P(7B z6%uA~^ue$LL*U8|p%S+TC1z_Eit^s?f1sh`12C@?Z)ne;#Ev@l#Tw#A7(7cA1a#)- z%^UDHy;#;0alcG+h-Q&e+X#watw%_$P{E8X*t?Z2bX7s2oGrv6y_1Ycz6%P$xFeq5 z*a_-ug4A}TlA-4WxwS#=^+D=ygVYArsb4bLyHFy32V~BIIXuEX2$Z5-U_Plmb^DGD z8tj)D_Sgun1N))e`9FnKDpj^Z6}fw+VXClc*FiMx z;_{CzRi>76bYW8Q{(Y&usjIw+Uzq_gt$aT#W1WkC9htg&;z9-7sz69D=Dx=GIY?6!lHey)tc__`dT?mbm5R&8 z?G1uuh?aT6FXKb%J<|15t7=a%{j@hOS1U=bbkp4u(~J%onJ{mC(j0ec@marQj5njz z_gBAs8W;gaP;DK$P#0o^j}U9rHa#s0%Ryg03a-noJTP)r}pyT1F6d#)!gB#&IZ+UB!F4N%Y|HJPM8At`@7$3Ti-Ca3Efb{dBO{By3b$N{ha!9TF$)trfk%n z;q~e?(TK7f>RreBa^-d-=AedLoom-6FAC4q#&zKDlEWE5iV~oYX_N5F_|qoez`^0^ zHnK)AbLz~*QyHPT!OW@CnRAfQrpJH|X6DohlV)?%&bw>z7O`GR?;HDQ|hsF*MC;hkDcO57FEsCD%-|jUQy|#i!X#>&P?<%iFgB zPN_W>zhs8|ujK6*JI!)SNd^pq4CLsjynRG+2PSX->_hU0J0x$XVA12+>w|G7_+@-Z z|Gm83rrdGOf$Ndx+1x&S7MHgp`(%WR^ASck9n;at+Y_R>2TQJDg!Sh1%?QmyiZDVq zz$qi_f?tk$#pP{=`JTM(U-7EJ#tBE$!YajQb6zuj4APx`ng8t|)nVG0seQXl44h-; zvwq3QBD1ycL3$mB14FYlyS6t-PegO?l3X)LzrU~VL0Yk9kwN+e=%Is@2H^kcAnj#m zYiN*u?l;rNAPw@%{BH+|`o|1X2?)oTw35sl9;CzKGnTiAIV2HFde)`{YR8xY+1w}Z zs-Ngi7R|wd3U#l23HO8h z7GBFei}-rzi^sK(^=|2@zjfKWBn*{o?qGOe_}mZACPtjmp=0b9W0TWYVw_?tU;)Hd zK>a@rn_?k8>l~TG{e4O9&ue&;8wz=thwp=xEsJbpu=**mDu1-QV~!*GA*?!k zlNbmKs}w}njV^72Jcy5D5?l5=SiiTO-snlRVDXEWcF7$z%Oh^|``$*8BJOC<$i)ytLo-6v1ICa8TC|}Md!UB5|z=9T%#}nE;P_;^DrO)ELkH5 z6PhyJGLWZtV#f&NE~vnt+>`e}xu|Jb2=o^UwABDjzHT7C3W@__D;xeZrKZ8PY^Ah{ z{^N#!jQej<2n<(%>>C*3j-`$z&J%EuByuBat_=`7-jl9nbI16D`zGhR@j`FFc2fyb z&dJ}i5vCz?R;_`~M>b_#jXX@qy0~#|cgeemq5Ri_k(Wju`mCevS*%687p-!JJOGJOrE+acc;%EHp4#n7W3WnFjTU5czs~q|rSqr=L74M7V>aV5N$JM+ zXpAm$W@Fb3ey*?`v2yqW;66Sn#2Ee^`ebLoOGtOa*9>yt;%%MZxo^FJy#P6;u^vDD zB%~J^pBp)qEWhlHGDUc5nm^s{#(*;TQa}AU8@9O#o=H2~*F<0AX{%`=07TP150ykm zM(!J^r%xyxRM2o_FGU`o=PwlXWXWNL!`-BTrOopY|2hV1uy2+$k0RL#hx1v%a>{p< zgh5-Ipe-jGMAQjyNvaVIF7-nO8B#_vxYTZ>I>F#l7a`Tkg}BUNmvyIPsaO~v&bnN( zR4P=4v(Az%6$(5i?e*aZWc48vE(TGGj9)vah8^Q$P$o53V1nrPe(hydN|s=PtgHR3 zZ6r(ZN7i|M);f|Uy++ote%43d6y>>*K0eQ)jFAZ={JIZGx=e#1e)V`ajbDC=0^69_1?3m`v9WJ0H!(rPQ@f|oAvr*$9_A{Cx<6~;pjFn*ZL zZI3`9S2HS2j6~oL15A0x6W5@knWLMaDHRAVw-&i%%Tqfft3W_Jjh-3-@jZ6wx>@jm zKb5C~X7GsW^vklCWq_lRV;W!Jr|*OGA_C$9PA6M;bCfB?#~$A(AJ0Y#8o07 zocT2w90Qk)SV>~J{{=%6vH&k-!cVmXtQdU1feAy9U>tW2)~0|3TTy*?SF#JZ+5mJbB9Ls9ZkH?uSMVQ4ZooOLp3Ob*3I*@fqnIJPG`l-) zzQC>=CUW?#XgvoVQPFzW7amg`%ek5}I(9fKSkZbb2EBKjhs3%>BCVflu&9aj?-C@e z8#~eZty1+Yw9~uJ<3u$-y&QE@X$}VOyWF1vQ?r(zP1?bzm0 z+o6lUM7dP6KvB-W7bE9P-$}@J=>L<9lS+^e9JT6~s=2#6{GIu?$SA=#s6Rz>=-mho zh+=4T+a{1g@pRf`j0QX(^&26AoIXr2*HjxU8Ols!&;xeqjI4|niCV#SkaVFoE3aw4 z{%sfwuiW7n4JGC0VtdOzUF3T$o`51ig`8+`I7Cy(izX$lDZ-ITLC${%2i83CNiK{h zyKt*piF7A1gby73k~c00G=;Yjnl->pWR3cj=5SR5Ldh6y-QAeFoz0I=-Ala2r{;3X zbnM}V^q$WJX`!wn^g0Hv;}Ao!G_pI6GB0&nc1qBl`&jlglYIiRjof?$z38Yl=?6%< zXq20nUT4yGMmmJu%CFVJ=944x2Tp=UQ)Vce#LyK+bgnT+0Xe1+cE0Pw5XD-x+YJ(oGy35nAtQz+}1zF2o4N z+c5!K6MBy?e^kbn{+B=izwilI$qL|4AV-uKBR@v6wQb*^k<((>?Iu>R0(c8BnN0cK zvd6&=WG|iV+1x3}s{f{R>ROR}okrQ*&jA$qs3F4G$<&>gP7hOgqLi~4Ut2Uv2?0`k z$5K3n=8Pv}rZ^F+Nh_e?^DzC1M2YZlHn)|KBsRx<<|uzNvQx2Tx)7UV_rzZY0NU+x zjOHnJM+&#T%`qA)i{7iR>n2jh5^NzlsWrdEc5_FtzjE$P(eLTz{)h^x>SZc9GA#DC zA?0BNWl8xe6ij_=85T9m?4ss3>_yO-o!HN`UQ1_FMY(+n$06y3Wznkqtx#HZ^Jz(d ze|R^vo3NijDw|I<<*yJzbgT8LhDbJdG2m!#)&djCWQ|3N9E&1ua=w7DA^h55AbU6< z5B3G*Cq9r%5&7h2k?N;++kT(Ke(WbY#C^}@%jF`3d(@0m{Vko}9Q+8~XELI?uk|yj zCi2+wrc_%?GQzs=?2OZWdQ>}`tJ7xXHB|pjj2*_tmaD<&sqRxLTSWJrEEa^X`wr6- zPxoD=DW2}TSW?`q8bN&e)qPEY?rVYW6XW()a?XFG`{sNo^b_hT2fqn*<8Pm(O43F5-O6;U`*uTm5#4tNCymv8>$AzQ$fHC!(4Sb- zp-}T!;@F8W^_*e~Ma?i){?oG_i%+>9lq)XYe}=5ELJMH*=EK-}j+5w9_b@hxC(VOe zs}Pon^u`GA6gCV+1#B7mRZPI@SY>lhYJP7i{l{S$`wX*G#$E?IH-CmNCMxk_w*g-v zVq$4{hSva16%#$^nTm->k=;;--6nat-2y6u2wOT zp)O#0$6S)WS8s*8;9o9rX2uUuH4QLRw^d$5M!)}nAl6?nJ*@G&=gNh{6SMZF;OEaf@j#ad*DjnwzJCl z@9(2q{fd#+K#a6OjI@%t$AGK;S{wd^nu8BV&vCa))OPAv8)v% zn} z%!9F5V!?gxrSGMgmh&mQca_h~FkrD7B4|i8;O+s6 zoXb%w(sLtnhG9EORODO@aa&B}*xC0R&G_c!EKA+b zkY@Z$u1jhNWpiWx8Fa}Kafy~EHNL`pXUvkGC*zh1h0KL~^J@g@xfA)o2k=Z6el1|0 zTCfsUtGJ7DKLa#wD5`+$&HX(kv>MkA7$uK!)6Tq-%l5DfuVSNE8L-2Ic5&)K+|dqEMHH1_QLg+!K{&+34{gw!Cc z;!1!5{@E(y91vD$g*HO{CLfy*f;1NS%{c>vNg%8+LF>2rFs}{LSY&wH0AUgcE3AY} z0iJVwnENP9rm@ITR}2uQtuR|*lA$bdavuh1gn3eOfG{mrPSpBcKFsTbG{QXf(gDIG z5LWmW0cQv5M2lW(l`8 zxKcNIyn)H$mT=#LL)Dtu^&KSJHShaKcCvpD>IciELuhfNhB?R?Y@pc;uyt;%0&Hql zl%A(M*yujQH;!e0F!u1K*0mnxia5HjeeIULTJ{4S)2l_|wFpUrg=M|3C! z`o$ zTVXWoJHQizdGYZb0$5YBxqqBCK)|-bYpm}8PYM9HC}2&==5B8tAYfbJq7dLI0pPtA zu%^K8I8Yg3D{SKf=FTMHiu~=QgKkv%*NlPTs-<6HO-liKdIa8e3QrtAA6+y+cv3nc z@C=6pl4ee!q-g^q;eUvc+5$$(#&R^k@_WN1b0wXm$%Q1%^UEx|wnZgPE9&BZsFl{B zl~gRJUt>|bHJe)i+b<+&)}*aCkO^G?YN~=NLw%JEkJI$}k3fx5P-{9+Qw9pEK9+-9 zG-utS4^p65nJ|+61L6Z)+3l3ie-DD2LnyDl$#riJrNlRHki^&!s2_$z$_-fIU@5`O zH(h2E;UnduAakM1Y&DrD1evp4<{XnbKFGYxWoAs~wn63}TxOTaTqnq^a+%hK`8T8- z7e41`C#(VTs!2XplS_<*T40i6np|O$+f4FKnmocJUuBYiqRFF8^7$qi?c!dE*Dd`j zP4+RG&CHuz=0uaZSCBcwWm@5~MUeSBmuUsW8bRj%HdCki2e-HZ+tKC7r0oiFHe?Pq zrh*CF##HWd$EMqor(#z^%2ZzoCeS{LtoQ|-QC9ZMWo;vezWO_RjQM3t!>7uksp?!j z`Qp4WuoF5e0hI*!2Pbekb~Arp^$-3wEo5^)W*r#A>FS$N0_f5f&h1GBr9QQIx~gg3 zeqzE%)=Gapjww{IDKIHwaW&B)o7Ym2By<>#YSb(HVd1a`a7p8Qehj_c5+) zoh$nmT9B2`(~GO)$$v$`k91YqU6p%KrQ?0P>T0a&Rd1!$#mR4)zI6*MQ$KU%w(-lg zdFAFDg>q{&T6o{R;=!x)%H4tU6dgZtQI3{`BmcH1`qzrEMgcP)iY&FH_WXIz!ZuBn5)rlxKaG`083u3f@v9jG z2mkzgu;aOh*DF6xBK0Mz;wEo=QQ zasC5csY^Dp>LiN`WBm8`4gCpV=tq49%*#x(j9PYrrx6_H;WUZez|>kki`J z`WL;P{u0R@Lz3FluSf&yxxNtdEt~ij7+_p&Px*?TuHZw(@u7uA=!6N zMNPY&!uP%^|0P>=xL!>>u4)k|pIswTY8=0P#`#rrH z{G3f}3O(%gl&|P%g=l9P(-Urxo=Qrnr%xba-Cs||#Be>uae!6%p{A$8ozM{S;p)fO ze8(V&UG(|icjETe*fPZR2i0zb13;v>W#`Q9i>997-nu(RqF2h?zv9?hLL7||R6;bp z;1Ob93et&&5Noo69r7e(CB7AhrhrH=dorRFEn+k8wur5&Jtv#k6WsxWS_a`O$Tm74 z+jfxU=%A#8$d|~gP7&9%qS3~&pz+*+J{h!%4=Ky&EvJ#s4Xusymmb+SYF!r-6ocRc5{eiU2pFs*Ouw|+B3V}1*?o=Q+*)vp{> z-f#t2ij6jWBR@*Z6DLE)yROq=`z&BVbs>InFrabCd$T^wXv#P@08svzzT18Y6ppmLv)}ggXxl%&!L|Jb zR0<+1bug~+-*5FtZ1rEjwvQekTiEL3P{OXqYeieV`+C=EowkZymDTv~x7q>_y=V8) zWFCVV>1f<fWp$1%LHa8YISRFg|Kb0_o zY4Yw}$c9+qq_U|pV0R&d6Z5Wbai`8J;E~*Lh*fRkN&Iq6&`F}E`qpd;_y6exox=%g ztew$F>a9T)$wT_>Qk0Gpah^Ero_z+8jY9=X`ufa7UD>0cy|+jMVHVJy1O!Q}_-m@* z|DM=PwW$Sf5%-h2u=C7Li>bpgC8n;2Pbk#>DEH3CK&?FY1|LImOZkv(B5LKuT7gX~ zds3#I8=;+(r1dnZ0!euuphf>A8>OqYe=YG;HMSlZ8&U8&4~`fLf;HqKp<1#@OA105 z4^^C2CzaeD=%gx_-QBSg{ZYlZIf&&H<2a0o3aj%l!p=h2&ew(0p)$317S9Cju5>fI z05mmK&^%DcSFYc@vaE)k|8&^c{@|{>tL4>N#4qACkN%bPuG2fDcg@~4dI$AVV)UM2 zJTVh6-{6Vq9nb@p1|&DZgIxK|9H8a( z)0eNR-LzxGpY5<*M*3TounuJE0xk)1HL~}Kps*Y9rYzP<~z|vbhiW(C<0FZ~BCtH$^tbSSZd*G3aiH zeh-Q4AZT9;j*I`3u6wlj``J8DR8hw>prQtG>b~s0PfJVAFXyk>_*Gjb+7u?nxe=(` zZhW;vZIX{#Jw`)Odknnh&+U1X1u2XjgF5^`VFjZ5!@U( zz5AF+dnj@^)%~O7XEw2U_*!`)JHrlc1_Omt(MXDH?r8Lw+cP-zJkMSI@*22maB&#E zcbcrdCt2N=teQPO8KZc%5jT9{=T==)9Y;F@)5|Qy;i${z&O#nostXn5{eFGVDAW^Lfq!|6Ga7r0(HLwTzm}A;3zWw|1Rcqb79rV^_Eu7Dm7&_ntYE2@ z125(;!3?yG65Ca1PwtJPX1zpC92=CF`!;e@)%PTucqGxU)+rfn$tE6S^fT_4jM>R1 z9)0vPu9b||WD}23TQavFfLa0P6LE?B2vSGN!)kgqbWIi3ETih zNgO4K0eX_Skt7DFN#d$j_Rye3VV})af@rw6q{evf4ugMfvf~LbMpYaBpi1qH#Lih1 zzXl{A-cVHvR3kib9P)ggxIy1Dd3@W=5#s|*?6FjHkpFqJ@B~kD74pO-9DK_Yw_}Kv zC*H_-JaGl3kmZR(S;6weQb_9FTH7Lf{~;O+C~Z!{3y(6l3%R@q1SHs@E7@eu&%5jg zOm?egH%55iYGkLXZ%j7HDSa~)o@Ik!9=H}sXoI1jY=(ZEcf-Wwp>)tK`-J*pZWkZv#PMJ9Et~rhWC@HL zdBs{9sqUcQVi4FXdAJ(Izcm$Kp|ndk%PVYFzv7>@qAmF|R7{oqt7SfG0$5?nLu`n!G=m`;B=&M&6&w?PJ~#lJ{(G7xO+=o{5Z-?qY-X%baXDW2v}J zA=(;R`+vlJ34B$>^?y*%xF+ssRe~$H5qI1$sL`mPaY1oGY2CF})ZmT;Ln^P&2vwuh z6?fFCv5H325DF62{Zw9N=FB-~&YW%L z&Yg>^I7F%<71Cda{jt|09VK-nVz+ zS*GDHY-rI2O1){yAGODy*f5QSY(1x_>0{GS&4w;*pf)s3yg_@M#fIr9jL3Z7RDPpY z9?ibi^Oa%dIc6XIR7)JJwBo6G10>uN3T89*?3Vb%7iQjJ}pDR0Yj zULeVW0X#@VdcX0$!Z!`dneuhlX>9z%O43$h2wij;ist2fU@z`g`g>g|P^Bm~eQri^ zEkUvTCJ6WtNO1zYC~y~1Vtpy?b=oc)&mAK3T50Dlo$Z_pt`Es@)URABR4o(Zw6&Oc z`MG$_Rfkbtco8gGOBdLIZGwlbnT)31>#$W*cyODoO?q_^yrcG7Rn`ifx-vkdz`PY%L}2RkO9~3gCoirV z=Fz)~lFgVMl6}fst{wLWx{G{lt#p4X zt05gvOgMo80ESk-BGUZ_3JJ)CY%W+*E5%9`gU8IHFNlUp1F)<@-bA*QA;TG{CvaJq zCF2E`BEb`M6z5>Z3W7_zgrf^c1h@`>gfRjs*42)sj5~}Dey29aIzYrMsr`Q7x0WOz zKsHNzSlq|K!Z9P}<@c_k!qG%S_^&didMRR~oP_^r2w$yeSeGPxmQPqfKzLv6VR3(m z;^c)zlbhBy`ZgSg+3>Z67x*uPG}Z7>4jzWAAI_ivN$RGf=hJbx5U{)FrO5HMCyH;?sUFWa&jOX-j z#-KVD@{|#tUy4=ZP6kc~o@bcis^qh-_HiSI#iEq;QbYvs1@I@Gf7YRcC)G_Z01B|U z2{CgesvTK1O6|a6|CYrpAkZ{ZplfH44^#D$R!u`y$9p>Q(hTUKB35jE$j20ngFg%C z+)CkLa*kGsSWV|bAf&Q%7HaX98$&wMhbMB|v3r z+mNgXpqL<7`xgf7xY`^ryx-(;nv93@@U#ar1TfiIA`mo9^1H8(CUb4kIez_*e{pZf9p%?Amim8^*S%P8*WD+F zjI*tdsim(MRZ!NbUYvY9XX!dSOI9@wPXO*JfKx1>)s8I^fU67OWD95&$=LH?-RH3K9c#QofFj zA#Vh64(MV?l@2JTW4k2)4+G$cx^dJoCF0}l2XNJ~c3;Q7=G@GMi?i>_u{Ek_FO8CS zJwHN&4R5t9xUJ`PD1F5xmt0C_oIQ%@MK>15IV!{CkkKc=#W=ohhz@L z9UQe#;Fie{u$xM^Uso?hq-&^cy1=;pw_r)Y$T~p8lBDN&-o++K0s@|=X%CBgXAFV4 z$}757DEbc&0qWtWgrpRaKcd!=JXH|XvksKK$k~1t$f57g_?5G`0)mRol%&PogdzmF zKYAAvF^9~42QxL+Iu;+p`3%=Kg>Tq|Z7*CZphFC|Khn+A)k_g+w9oAmDm&Iix!uKZ zyUQJLsRCym9Lr zRjf10;A)B4xEQsz)EB~V9U1G0{Gok3A=KO_gRpIlSPXQ0O5rK)sHwI*3a)9Y15%qG zlIG@>%;Ke@?uD@=nVoeR1Gc(-B>BP4aH$*-8l$GT_t9dCr?40H=7e8!&vKpY{?iD{ zq*`oXv91WT23wnZdjos;UO{5p7AYucQU)K%>^h+?)KgrPHyPuPF7Im5Kr6da7d;bA z_eJzs*z;l$nLd7+t})hglVWCF(t0NR36izeBOu`AXzgKfe}f{e=N+}4sfOflm82Bm z9(Q};_nb~$$py{$)syT7*&>|*i@RD#iuFt*VrxBxDm2y+%|X|CZSsN$ zsF}8jRUm~d*%X@^L_ktR4o9R`Ko<+`de%j`U3!{wyOcu0JBym-2^@&;pe$Pgud!(F z&c!fkvu{T2M5{M!d1my*W0Y|%8>43Q z%@G>W*sHGgBjL%I(ZN{6>pHtxs>O`%xJU-3HF&47)*D#Uor1)+O;=FT$4&Va-fD>EKA6 zj3S;*12au@g?05(M65%t8`;Hp@eNI^!|Zt0x^yh(1}id-4u{uN{{;@UJ4m-$OW-vY zvkHXPt8S4#C940@6}2~OZ87z~MZ<_dplP+~(qS}-=uIu5{v&2W|1YtlMTnG9$xN2t zNA7D&I3jBpA9H12H%p+jNjFTN1xZczIINu>lL50Qi$_Q&gE|*bejOVKk1Autu#oB- z_sVF=ZPb+Zcn}TNl#3F`<|Xh;*qmX8WLHd7P_N~c<34aEaQcg*m4I#DIgsYPokwFBFv zYGXQ`Li+uBwXuy%s4~cRlcCj5WD%hXKh6_({8=!w4j5yJ-doIit&Ir?h(D-31R07I zV9gIzhU8p2Fzh}l$!eeEC4!)yby4O2ZVaWF3pO~#hAM+>Hzg^^(Ec|RO`{u7&_E5v^p*NCiJ$tKt zNqmxOlO?bPM}V6lXliJEQ~MOCsoL63t?l}EnDGe&I-GKo5UEg8<&QJfZxMBEs3PN5 z8b|678_W>16TP-2(`7WaZNYEDP(|EP`+Ap#XYDK5{ERgF_SH_3*;&GDXkYt_^Q>iK z)V?YzG*qz{LY44q?CZA49JVaGq*|2x>+@vpnxzJxR=e68*m^oJ+xDe`3PX_Ml7~du ztx!9t-qlJo^EJl>e*(POv4(c?P`?I3390OmTbi zSywy6h@lWYFojY?AoB(Ag3dqdqC+2c0#E?+Fk;p(S_44fPLmjI0zuBsG|IQhbl_d4sqD$6R>XqHoET?#r_9QglzAY(mL$+u57&>d=D*3Z;mSl zJ5D@D9)LJ+ws$|i4OVNncdJM(xp(#`G~2;c3e5fS{k4n_vjaz%+$KK5hbaV%*$W;+ z9_-$3b;va({)A?q5v8byhDMcQ!f=eJwpuo0qk3@;VBNrP23Sll4&}~lR4?}MyPTHR z1y2sNi`9#j{Vt_xT@rfHiYMI8Lp+Q`Ai1SmMki?Xs2lqT9bZ!qV+wXH5JeU24#-my zhh5{aCnaDn6ximK;67U*zRoo&a`K0ejZxYRy;a%9hROyP#EzV+zuo0RU@ak{>Bf8e zYdVhx8}4dPAs(oroV?!VDx#O9UaG}OO*jpe$mUU#oy7?rfe&Tj2ag}>`8y&r%M|Oh znArKfQ2e98`yBf5;M*5Pz*CJ(=F#(D`NJZnlLEG9ur3wZOI=dHV{1Xt3Ygs}nccOA z#r-ad6tFplbC-cSQb|e?IiF9muTD4Xz>T-vP+JLdpis+s&FGt++LyI2s5C5rQ-~$& zF1KGx*1ol6I*Y|-7Pr;fQqH2;ZV(8dyH%SC35i?g@#Fl?E@w+-;%zs~kWq=S-@Q>L zrGX>TdB*q7#&Tw62^7>HP39Us0*Dvl0Os5w17F}_MKx5QD?X{2ir+>0nU9J3B&vc#G z0Xm+@ReEKSj*?$_0nR6 zC)V+NRDK(ipKQJGW2Gu^Td80z-^WO|dJYNF(^`T12{gTRl4a%7>gBVtv$CQyt5+9f z%?$>*pjZXftdi}bydb_3t!EV12xZP|8YDjwI*f3 zcqATHI(Wo?0Ea2JFo+5IyJ~?|?(3_Gv7UO5u39VRHxvytzi&w08Ze&na2wd#JvN;u zNO7vLm{V>*}S5{K_Yp5d`(D zBV{>+FXCMNV2}faLHL#D(gK2tLzJY&9iV77`x}VZD)_kLM9{1wn*SW>wf%)Rg(599 zZJ&=4&^JtR8|7Atm|-Hd0$QlDV_lTnlgpLclQ}OLy;N5FlK4&1t=1CQog>J)n`akm zpBd_3+l_zyS!<`!znbG60s(Xv$^x{uP5mo>oaL_uZ8Mwwtz_Iv<2O1)){&vkBfPfz z_;xHZL(}%&vEgPvaYvm&N7gul0T@BD`DJPLv)cl>yJwa#8)mmh(@`S#Lu1s;Pbw8N z|5+t0KQ_C444V&X;O)Yys7XI?3q)Fj?}qyWdxdvChHV83Dhxpe%NRwVjV5UQNcF}O zF12f|6$%fafp&c*#a&lBfa5{;0vSQQ6k*<|b?>drQp~JNn$exi(QOhdAV7Ap_OQ6u zhX&GejTsFwBxEk>BHR(FeX-{zl^yG%+-_jF-GE23 zGJ0E-_9gL=sx+3sKUvJW3*_(6KGkYQt(-0Nc}8o;d1fRKXxa`>_(7zFkXiY0W;74c z(U?&s8Mo5-l@5`0ME(W7b?w?JE|byNwi}KL&4?tTW^~UK@NO50$>thq_RXl8B(t*! z>K*S`qmDAJWnP**!c;N*Ryw^Z=cgvB~G_?Iot5I*a*)x6p$LipkLLO~iZfU6XX z;>GztEn0TghGaXh27hx5e|5rcy%Z6>Q0v~dJ3zYDvko16`yYnkgVb=b1KG3;U!EC3 zi76(+e5vENxVqA{1Rh~A zt3YTyu}b=kRTm;%QCp?8m2@G4ltF<&)92dMKq6WFqJYi8CnDlP-zUEX-+?hu-@!+_ zj7)T4z$6iV7e{6N%X3`&^j!!&T`h!) zQR4_5Eq&_+3ehVB9)5?=&>DPkoGWs~X#v37bC{5h4Oa3;R1)?bNkS@ysJDBn1`XER zQCQLDdTI8(T_urbXA#u%cAKfXvN7uIwizVe?g)a{)yj|cc9-LEgnGMDw(5z^R-D*@ zn1yxhFAyI*58%YMe?L*sC_HWg7hw0%juv$~I&64DDcb2B8`3D7m`4~7Uelv6rbx3d zjA=xg5JvH}Km$`J^TlA^P3^|piZI|j*e*X-7{5Ku3S(Tz=!=I@7%7*k?{S-8P*9wZ z7dUg-8qSOAWaxHK zMKbfnEONCo!E6IAv4L*!PwM`4YTadOskZiZtu3Xc9*7wQX@Nk8Rn<~wpnuJT`32)Q znnR4ipSk6W&9zJ7n>j~;7=h)!DBOKrMs)Z#1=L0SC%);&34mn(1-2W>X)uNsox$}L zuBWKmvbQ_#MRRt{e5E;5Xa;>M_IgpbhmP=i;FhWsTI(5F|8}(gRh@@cCq9Jc=%-_Q ziBTwx&zkc2eLR^xNzaXaU7bXgq)g%%G;k8J*Q&1rdt#YsLY#S>`jxHva2o7O@Rz7D ziIc*tT&ci%U@{l{7Daq}=(4pzSCUnG^}@YI{%9 z1*Wcvpx>+|xNTdtY5Tf1gr92auJ>?^Gj%U}aP|fAGl};)#fzcNFra^fy;w5MrtTyp z1|1_EXuGMd^03W36rkGOrE z;y%=MJncZM4d{pP=N9`^Q+GK*vkr8cslM+(jI_#C&oI@uc^K?l340p;%t#vy=x>0* z8)>ttKHOCMBW*Wr`$@dfFR^uehl7DCq%PCExkucdc%O~Bj#nLMfjPPO4Wfx1X_2X$ zYOtTLSW8UxY%bA}GMeJE5{KG44>1#Ds&A5oeDou6V@=!dJz}M%?jnPRL+IGS@i)#i zALDhg2aCT#T}K}WT5UiFd7x8G-F$++yQ&q?G*kW6a7@}9S3Sd2{{xwu6^1>Zdkrvf zcI>1X&_{v6pEOg=^E*}rEv9zUHidbiRnG$)@h;PRjz`>{{p?5fHv*{V$BN|vFWxr= zyywRTnCiEr+WN5qQ@bW=JwH}ts_#d2$1~g|)*T{K{n6E-9EO;>D*$S_?=*g_)U-VY zc(xfoR%WU*WodqFtZBU*op`SsXm8*oIcj4j4F>c^oFW2| z8K!sxdJ@W*Nvo+opHM~_>`1#z+o>M0W>a^#K_f%y=lClyTemxSU5ZRy3+g)F?;BB` z64UnMRT1SGVyf%WWn{)GPqC?e1Hhj03^3Ja6aN*!ugX(us_zE09nt=#Za;v!(Hi9` zGi?_Fo^3{XDoynWBpJydIL@^0D=bBor;FJt!qmYC5tae_#Cp@yLveR3SlRMiZP0y* zEneGYs;SF>M8|CobegH2=YiUXAEyv>oCBRVBr0lVnF&V73vyyCR&GjwiUb7cWq3n%mH9 zy9_XORUqE+dk0!#svq@0hnTuU33`$PEwvc-#Yhiw)n%soJP*T>rf${fNGnbCF2Fzm zn9N|Tss5Fz_D5Q6+Sc+%n!|#wb3YyHGy|~Y@^Gv(OkJB-_qeI6Qbg$7Q4KVTq`@>k z=yjN5>JCJQj!_P@*;HTUf!eLG{si65fwmgZqdZW%d-WyiAcBr|tS*&@E(5*6KB%#~ zO}Suw1Ne*sEH>-tB}~A>{hiLs6yx;{u+#v)=w<3w9V$)REcCKPJrpQDpBgoe)JRF zm&%a&=Z+WQ&q?!n2cY?s>+nF-sAE?PdMy@WfzmvB>3;qnM~W-4$}s`GjY_o0L1EvFSwOaMHRjN3|({8D%M?(lRJ59LR3F_Vj4pg1!>in&acdVyk6eiTK>zxDdiRelFI;UkMk z6?58boW9l50%FO98s3ECP!(vdYS*Z4iCzI(&GW=$@ zn~M9*RNyA*={(9dp*UE{;ntbh(Fk}Ya_zyre@|3wa=jts8;AQ#4DLfC-ZrC5ZSiru}b zsFX{jITaz9;~W_k;qktlL$Dz+u+ns}!Wh{9c0x9s9Ti^w30czX37Hpz%s(O1W03!! zCS+$vrpF0cJqDI%LOxy2gzzhv-PEki3-SU(W|kbt&erRXyv7j*kj%V_x!T2=o+nDGCn;X7QM?V$ zgm|?ctFjp0hsEgQ{EiFp4pzKcqj*Pqc(pzkJdZsSUk=P=og8Y;$Ad?F`qoB692$V_ zufS~4J)bTDVjV3v)}PKRlv%a_a=&fFZ+N3W>L9)_-Q8vbGKrQ)dz_tK4ttE zfS?zhAsQCWzu|_?@4Z*TZ-gfQVt}tDJh_rc1Vh4qfTp>1%CTf z)XN?&`WHs%qGvqdzs7(!?+N(!81TPDUGiYQAO<|&0mtLto}7h5Mrh*SP%r)+hvQf& z1McT2smC1?jcwj&7d~l4qmamR@^Jq|4Dx>)2)}#H^0B;^tQ%w(xEqsLI1~CLppTF@lj5&ES6;#)?_8z1_MRaNgb2&4g3m6PN(2hnngNiN5(+0Udso%RSZ;Sj9A0uzBn`C$ISTdnh8JR zQ-*6nfRiTRfjGVvTw8!b(-vFwE11*5b3$LAfbVYom48+I2H#&O`1e@_O)SnCcj18r z!BT8j26u^{?RWNffjH@6S(SDCjp9e>YvY0k7KZb9SGgXoxwoHAguphe46%^ycSYuwCCf}&G zwb`=5qNfY?-EREa5O;S4iun9dA8enPl7)|bGW#A;CUnRZv|=b`8BCio*|Mrw4JP2S zn6R?d)oDG)*`9W0RPdNW*njg-ISt2+?@^E*HVEe63Vr8O1VllS5S(n zM9SG!P&JTqNF4o2m_ug^ik?=18(j8MP(gn{VTd;rlR;;-sEhj52L>!2N)s6H^g44?<)7{-6O#D#5K>K?s&9K{VSz*EWxjoNw$r%k@ALaVfuG zp13^b4K7cB30%KYT$RqaO@=)S&!XaElu_uz5CgRlhAS$R_{M#@G!qO(rOB;WhT%4D zaC0jgX=%HExc3-7AwwOrX*`amw*dbDmleiy$HRm)#SZX!v%f{&AjYXHp!D?G8f&tneuRVvwrVfGZndy3TmIvBrX;QadYBo%lv9(% z$E=oS-Uad(L{Ua{XSiQwNaO{+Dg`)=HW1K;gUtBFc+LXELAI=arW`D{gXAfSC8(&G z*B|R9d|3uBP~sDR?b-6h!qWx`fV~J%{$os=!SL+EV14e6Bb;ofKx4yTjl$7jDR^Wt zKAg4BY*|_8-_rgPTaWuTU`M1Wz2BVQjk$tF$I=z3zqQ_wJ;24&h711PC}1}FrO^)S zB3yv?{4H_F6)GEUgFB86M?gtYGc%(Qg+{iIK;p^S&Cv%I$UMVWmUm_NZ=0)a!|pz( zzBo>wxDY$7L{&dCqq@QoL0=Cw>6%i$)W;Sphdsl;me(iVj*-BRRbPfDQkIfG zuepM*pAe|b6yJ?$l|jd};=SWSnfkq<2@iW(@fQK3R?s8$r%3^GKy~XDA}E#>Gg=Ig zdKUbMh32E-PWW+R$s2GJJg|EV4YKtWprmff0B%V(bQj{}W8i;k=J$t-O4Z|&J&p?; z$JU8}0_~&gK3x1`r1A+N(qi1tKZq`xYvbTv>nn zcdo1iXnTiiW#IDUs6iKFISNwHOb>yU~FLWxlGiNr8^ z9scgz(F^HUvO-T!>rl=mv>wRA_X8kKn9oof;UgX!BxxP|U);Jh1L)$Ije*PGA_5Eq zn!^-mT`})S%DYlpyiqKh2|e~@B3`Ii;La3Fyq|Co$+N!OOk{}w8}$SV2}DRIH3xdq zD3pa{2yGj~Hn)%skcBiu35_Nh5oupSuZ|jlqr6u==uG z+PJ5)rE68=fJ&jqiJ;ij%B5SukNDX0+Q6zS9ns8XBd{F*0j*T|uTel7v{>3cWn1B8 z+V-xtwVSpa+pr3heyiiRR8kL zR9KH-29?C8;x&qf*>YX^R~**%^fz^*zM=&-6&b$%0ou?2>`}o|b-dpkLO4x}pJB7< ze-Z-@L30I__a0o(xxHs=QvqjfO^EG8U=37Ha_IST>4+Y0%bZ;&)7v8OBQYY@J?Y+V zElAsHwci5+_r2Xe4s#K~N=|WFor?8+%X(nMvG1wiQ43RM*&=*{SiXpLz7S6KMi)P~ zI5_0b=OkCqkZ0T*UCSaCXT}VE2!QoAcGJwCYx2)DNkV#g_#Y*VrOL(Ue<#Pk%V2oyqiQ2%GU7Lx zS*3U)6Tmi4kK<@SzIr&h0O9NFCQs0ex}h~r1}q0CSSS0*^`1yKBl{UoSMO*6C(|5yM1I3$wcCJEXr z(9Ug4o(){~w*0Nj3o}1ua2#!!@$WFiWkSvFz%gG$LuD%u)VW|U)M_Pr z2iSRlWZDF`@KOSnvLhD*Wni`mGdPUani<&)BrSmBFGRx(km`=UAZrxkFHUvM&ITyU z$`$Z{!M!K|&^;iuNG#tUH8{b>@e9P`DDP9gBr4<--+>i_)g!ZNxdZVASb!LBPal}R za=QGWyn1!3%1pW+Ent*#7_%8?4W%t%B)n{(7XAPf+eoqK08)oEYUY*jDK~a&PA(UQ zT(>3AR(;^a4?9YA(~c(UH(1y@q}3AYMLI8X6O6ER$iAgoFkdqqm`y_P0K$z$M@Eig z8PCFzR#$lWz(lE*SHzG{LF$(A-=lD7`h%ZAij6`tI2}ZoMK7kjHtH( z;*|M8&o#>uEt>yQeeC>S3s#IyhO*{vqRDYqtuU-IPvQ=vYIrlEj|Djv9N4WxNp%j? zv6A~1C_*atNlqT+K*5-`5aaiw_8jwQ);E%p=#TS}|6G?rNF`=4xqTjlXjo_%OH6y# z`VRG%T^OI3L>n;U@g9O-QqE0`NgU|ZVc;IW&jGjxu+h-7WHUSNP1EGOm%(wh7}O?}s8rkkDEta?%?#skXq(KOr9V9YzLV@IIpt!W_e z+v4Z(n+t9P@Eop6fJi$B{1#K#E0DMH4b$|pK&cOt;DHEgWwV2t?QeHccK8-LJ zyue5JFJWH9WHzGq4u|+QTWaPPyHnsULle8p1#1H~eN-P{vjuCG@dJi8zKlHT*;4qY z*<)`%xS(k){+crx{{-9fiXelj3GhiwPAi|?*IBpYA!&I}3KBOPCJw_(6f2qHs0|`Q z#iFj%&|PDb9oyd+z-6m`T~V}MbLR$(HgA5xmDpuwk0;FK z-?z%&r{M2(U~(EbyZGqP?4h#0n`Qp9*69wqc&)J>mXqc0(Q`p&hi1c}i~5;=Wm>0< zTzn=Xa`lA811>Eodb(VqEO+-!z?cd-@a>N?GsT^I7Ck*?anm#kU6#jRL2pz~{*Bpf zx)lvnf;LpUW$Q`m?6?7GV;4|Q2zsJD+R$FF2ig}q+L!yZPxfgqV*CrUlf2{J(v5r4 zyy>Fk647od%0Kj_P$C`r_t1Vf^bb+(hCVhVFM8A~`fVZo^?RUS<>+7G(;ws0Z&$Ap z?)@4cS@evb{|%Daz-Iem(SZS;Ec#=iW~Sl+-mj4@=-fA^0!#L>a`+l9!O7uosCIG~ z4L&5HhC4K8UA)*GO2zT8spBEk!&SimP8}y0IL|R~q0hjvJ_CP;hA0ExPWW=@S{EbEL2KN&ng>y%<{I4>@XkPSQT* zwovnK#pN1lgZ_ChJLtYX<jTfRi2oqMC}PuYniM7d?P$= z1Nt;V>!3Hxy^v?+f@|e1c}5ttvV~j6?QA(;THdc1JP&IFG_+v13jc9&AbIP~Z0A}b zeCY=MzZA6EK&ur^LSU$%ku?hHar>y2k@?6jb(g`$bDJ*6l+cENK;r6Wa`^(1mOAWw zdg~BY!;QO6#a1e$!Yx;A89qwmb$>E8B6~*L$joQYVN1NAvv@@2t00FQ?$DZ-`d8F+ z;uP->%dnG&+s8laJP=ohjI3Q;RjRW-xUFJt`$`pk__K0FKkh#qTDNK65qo`FwKlo} z`J&)vpz8b*?^ct6T``B^D~F#vd`!$&%gC^gy@mWyH@$#wbaAwMy%=JvAhr(UZZ&Sk zvaspvC*rc^st9kzz}Kz&50JDuNg!FD%-xY2v1<~m$qRog%~YQrB06q-g@}_lFnE03 z)=s9;)E@Ws?XJJ@Y*?6+g56}|F7tRI1;*qoOEyl(#uNQp1*c&`*As%1* z<>iY@jOC6q!52r=fs8jYRxtq1~#3L}<)}4$tk~)(} zB|AoSF1UcXHkJt zjyLdNU3QBg>wU^w#`B3NYI4B|rFhU%g^t;Rn(i&C)~~>cP`Kaft5)Y@|D6bj*r0U^uR0RL%wX60NCiN39)A zlov)tb7CSbguhJjav7@+>w#7t*0bDSMJ2yo`e?r!kM_M$Xbd0)o?~zWD#n0-2mw%@ zr;}Ha!vj10ylieTz#xdQ8F5F$cK>-99)@xgD>=vE)|hpzlm3y+AS`F{Btqvx)0Zw2 zHh$ic<0e`Ex(LbAf=2|QQmBMg+KstS# zSzhOo)#vO+Isb7-ku%BFdI%F*N`Q2VzWu?Da>4ssP*w~UVr;qcZcJ@K=b2&;b(IV) zaQ=N;#beWU<_5zmcBTzMpBi_ZSU+ONrALjHS19!Xh#2dg#M*~Y_zzU7go@@FOldM} z;wU^wF`V%>jG~*lgvbi9Ty-<9up5fn^!aM;m#^gkw7^ixqW$y?Ajboivm=+Pd)yEl zIXGV`5JN85RQLt&bz(K5hQ_aMk0w>XnjO-2@i1cp?2Ii^%kUM%Q7v|^!|(BE*dt|* z&FOa8k;6X>%p+l&ntLPBYe#s*UMbe3jFb4|jo>%&kz%(F`+2?WT}eqmb_;OE%yC{8 znkdxLA188ITOtnJm}UhVvl#9MMplZx4m>p2 z*|~4VM*hEmk4;wMEIK|G(B<`lkAXe%5%XUUg#POnaJVin2@5$qE5_k3z&I8j#KU-4 z45Q_qKHiu8j)R=+Me!^8#LsBNd;EaoK+yX8)tFFK^2q(313)v~^{q|D$SsY_45Bk9E06DxTzJx|XjJ0*}`r+mtJEGd{MV^4NIK`46WJMH#d)ubCVy}5sJ4fY0T(S`P3c}DP9PF_BYFrbo zCj>=gk}@yzqy~F;eXPVWJiD63tDQE_va>E+FYUCcu9L*Ra3-A5jHK6*PKOG zCWf{md@Ss3sghb`{j;VlwIcg~!V&g3enHC&28;*~Td~GqY(TI{x22o%()vfT#m*;m z>$t5Y!H&#PlOx0DYy}+(SJFIQ0;+`80%dj0Ezmu`;k5@rp)B6G$>=++f zkh~`9`qaF4CBGpXN}lG;eJJTW+3TzP>?!=Dc@<1=v0#(^V~j~oulr{RJ4896eT94i z^3xPZH%_`I@e+G(W0g8((^MCr2J)LIAD!>7X&AbGGvx)j#@N2oZwY=4S=@5*BkFpLBs^j<8 zs$4J~z`9K)eHVgP{fuIEWCLIpjmUgq;=w0q5`Klze!}+Th5Y1UbJgl|hH;(y(B=@G z(8>jJZ!b2MJBtLU6MW`^LW~Rv>`=2i=5JqwaxE5V>x@HK`b@#vs*d|k@Dlom#xjiF z^iSQvh-LRrb3($LbuNo3SvBVy)c+o#1tEvAr^IoZ;Y!Y~=45InP!{MeyJ8u&KxKZ* zO+~@n$t*u6p~EF1yotIYrmaRnR`~l5Or{!E$a)XE~T%5&o z4#wK$6u~{04`D~P>RX2R6DA`$6n$oS7m}NB>UBD-S1HAO0M+<*R0{<@jZ(Q-3MXzy zN%ew)#aS$KY$W;e4o>f4b2Dtma0U`N<`6a-6n6^>!M;4}-a>H3touBzOtYk(WJJdK#N`zx-4a@(;!D}rHwyN9Use(Ay*X^*thks;^f0mI%AS6kJZxALyduQMAdKN=(hbe|%>Em?^O++z65}p$r!cAJLxHgc ziqs6fXof+wn!MzJU4+>dsBnL+mSb^qa&X7yG|o}_cf0h|z?chrl>n^WJO)`AOlT2j zcrBY>uh2xMI*wmalqM%lkZ@ekYcsdK%D}PVl7r*K=&~Z zhrUT0S;tP4&Z5DgOJKfP(_BfmpWIc1#BwRiS29?ceDtMH@dSH_&X5B*5diuUoPoLv zP-ftdZ6E^=Pwd4;a)}!wFI{Yd4&c(o3RGrh9YngB`l0euSBjs5GPPy+8Ih?Q#L8^F z{NUPi0g?13;BHb@I%VqwLtX7SG^;7BD>GS7Toqbx6yrTKWb27sr+gU!>*_tk>rpBh zm{={jGu<9$rA3qrex-P|S1!O|$z`28Q&=HLH|xx&jVv7Z#*DZot`Bh;5|idr9QM7m znA{q6Gwd+=i0>WU%|@dteeic^@t9C|HVhV)3uXu&=yY^#@T6A9*9K#E&$l*M0K-ky zNH}l_6L`o98bD}PgmSh+rfk2Lt(sFEE1cdt`jW^kMv;;_7! zmM)pzJn`aVHX6X;f+9L{)3n&fUILkjix$?vVf3WnTZ$4Xi-|8DJoh^i9gGH>4xyX! z9*x{8IQxTB=t3^YO7VZ2xmcfScRzTcMGrfZTj?lurWj#FQYkx=y81_o7^TPz@M=Kdzd<<6WD zr`XVPb55DLh;>d7Dv_!?QROr;oCPS;eSS-tJnj%|y~)8Zc941H@mm3L@)#q<<;uhC zjOCMuF*MIv(Qjb<>Ni(Wwh~L$NH=5Y+W|IRPOl^2X$vQMkT?OFsC(BD4{McPm*`?- z|7&ZYjhu$NRRXJorAyb6w87p(6{-<444R=hLi||}afGg#!U;?)*g%JhVlLPdBqB7o z32CmZH0^sG;^iR$m#0w=AU+u$klE+t5_eE9apyzdXxTvng>J)isY4L!{@4e^Z~#bY zV>~#OJjniyA~(G8!}U#8@5M+ghnuU`kPbPd3yGPsJ`96*x2lL5m|%qbE@J)4i;Y>< zBRSwB9N*!bSf{M?=kx~?!GcvWf%b3?lI%snb?6B;A-VpYJD@2Ld26JdvIe2CExd|E zTqsa3_#@zhAod_;Es(Q;7O(j$fqokZdoRu5Z% z!9O=*UXI2*;0$wYg@oBwRvS5+hU*+R%yCVnjEIuI3@S4n$~XQZkAU7R+)u%<2o-*tZ01PZQwqFIV6Hc zo)#I|Vrl4^T#&Uc4*o3MZTX1`E=7Eq9zKWcP+}Z>D}LK3tTjzTi>;s|5F%d}o!oL} z(ICDlH?kG4%*nZzW(zi3z($uhJFL20bVMO7#~ov}viPOr8w<5+k%hBn-_4phi_6-K z{FX5jo?`DWnB z=50W;`d+QaE`Rj81Vq*afk93ujFi_1QFQ|EBE`Fb5PdrV_|IA=qT888JI%dx!!wJH zZ^mEc?N_Yp{*1l@&yT6>OB0f`(y$yf!Y>h1qcFg?8BZy14|eIt+HidGCKxz5fsa|_ z+!6wn3aJm75&i&#w;WLowZNTV(0n@v>N*~7n3f@E!BEN@EPS_4_!zoKE6en#ydAo_ zmXc@?0%?%l0uWGjXbDbmYUH8~_T1^1WTz9uPH`WZO81f^iU}bK@2XXp9#vSFeK6VS zv9ME=ZnP9z^)!dQVl7XFEl~{7Qmog@VXs)rMXn``lJt%%n7Pyd4Ws~vqq{JX%;j8a zsfN!(`$8wYCq;3tV{;LSl$=#F@2;DA5p!#%Fc95WE?2%1s{xw`NY>EKw1ux~eb>hG zAIUY|GF>h?EQY*`e>N#{fjc$~l?#^Z5CejTe-=5I6Rxm014Er#gE`JV7|#To__UC6 zeT`i3`M7v7ICRZdt2sn{($j`tDr2)4tdQeDeYnY7a2Hqc;o;b}in=uso!DmIe&L=H zkK9OnHob5mD|qJd)s~9vxI+D%ox>$%AWMwQg`}LOUmM_#4G4if5bL->K9X}v~k3}<2n)Di@^aa(-jHN zxjy_e7cBenCukyW$Q!?d(#Zu^eGn6o#Uw%HPKdvA3ky38Zyf1l2B-pNVRH}G%D^!_ z*^##T4D8VbYm*1vShZSu4NnE*necD;Ot>EB&g>f8hlfy^9?$(` zWoWHYJ!cq^)sfAtW2soV?1(IN9HXZopzUEf4!GC6F!L(fIbxLqV#YQ+|`E zD=DKv=9IaoZJnaZOzJc-3t~K5w^&}yg!Te`>GKggLgx$0?5zYbt`_@TMMiRV-j>~% zz+_ZL%4s9HGvmA&T&K%s1p1}7EOoU0D?i_ljP=6L|N3WImt1`+n&_m&RihkXviTq6 zO+_dh6mgz3D*PwUKA;OSSudyv%uZYAbFDS$jI&=f2GqKK7BVsm6P;w>ex24ReL5N_ zL(kD+AANXl`Lfe5Djx}8TgE9tsm5b;l0ZP;aM3F5pYt9G5yh_Gaw5b4jx-q|-qPwe z3~AkP;e?oiUv2yul}QoCD{5#m`kN{ih) z0T4#Dya;jLe-|N2euBbkgt-3){+SCt{5BCGe#D|RBBDry0E%T{gt$qccJ$Uo{UOnG~m(WGZ>?j$uQ>pjACo>B`uUQ6-S!BAA3-%E>S!}kj zyq5%p@^(F25xtZ4O(Z~Arf&lbt%Uuf6)e?fWU~pqwE~4#;wfA}eU4z#*_VALFYH_s z|3Qax!C(I)erc#(w_A%(dX3|CqHNBWI@(jCqa7y2l+hk44dG}f$sDDR_86or{%G%| zUT2K4xY6DsP~m8KzhH8-3%jGEjbsn>ZCz9boGInCvgsKEBe8hjjW7nIbI}L_sUCth z*iOvfhrZ3c8_zEno(XCjZ2%5+$^dVFkbSAikdoPjr(i{T%whFNoib##zNf$A|&sV-CRhfD;B=VJi zNGr`clCONsYLO8l*DuLe+Vk=|XgU0@i}w8dt|F}oe)-gQ#rSpN_A?8ozw!Bl{_0H( z;`E^I+>~Q>hqokQG(}H~Dot_OW)ypJp)dGkDJNTdKEB_k;Nw{VuBdQUK#l-pW|aV{ zB3r8^eEXTj41=<(+DT`&eL?x6KKk`l6V!$4-J}&Rwq7vR)$T7CL_b!MHUwjX%P#HC zhI^e-zNmV_q5|<5f@nNqPAA`{m(nPnBOo7K6KRfHE2?F`p(g}B1r)IqO@4}lvUGC6 zV(Bi29xCeOctS;_WAQ5TJpQ5uwG+W^AM_ONF$?SdodN*QRO9i!9A+y^)j-HjcyNwC zYsd0WU7f5Zt4UL%XDhO`XG?qSX#8}1P9`lMx!^*I$I7jIsxhiJ<=hSg>OK}IaAYYa z#({__SeK1mQ2w|-f=V32OdmnFpe}E~L*~c9K7P5aEK9|ax>Q8bFkU_#f0FCY-4>L8 z1hz+gR8c2~Nzkj=^g2s>p=f)xm|kF(r!=zlf@1B?zMU&|VnT67^lJoxN%N_MHtPKs zIz9!O^uM&3p(*&5YcsoYp%}H9FI3WbY^KXjaf;2%leXk!?}j^r5;k+;PQJ|?h0^kE z<}MIOwVBQPvU`4;sYXYrTZ+x>|4u%Q`<;xY{C{UNThj;=Hd80Z_plGtYZF`S-Nis9?fk@AtGmlq08BQYAK5lL_kG9`dRZ zFT-;f9F=SlaKMs-Agj%@i>LIc4AC8t@?M{>{#6t*F^@ZcNps{X1NtSAe%2Dy82x*V zx+oh3qJ6*RhDT;)+d7x6`b6DUHAg$h4vFcIE914NSc#^57f0p6jJC_B_<9HrMLGU@ z1@Us~>bOfOx~xra$Rp^W9qsX?+{>>$JAl-ozUg_~egFR7#<*is@GUpS-POq%;gq|) za4BCn!}d;kUU-C+c}k2ck+x)vtNc18#!W2oW8A4IEkDK$#5=dCF>VmmsD~K0^j{Jl zQexchZ?Y$NPUMBtG(!CEV%$EWRz_|vFYLrAcF}s57j7gIkQC!;I*52)crmt@(?{^S zp#Hy&aZN!=jH`raLq>@+6mH8#yg{vqoEN|2I8g)ip%G@t-&XuK;>ii-x_}`)zbcwm3J|2Vh<<2&?T?|g*yC3jU`PQV782l1w zr0wMaZL2iVe?>=urZ+s!80jL}K?5qxUgmrMh;kOoV&2a~VFl&%sK-rDaymT5O+2!f zxNJc7ULtau;8;z(iqZEI3{t`qW6BQC#VYZ)MptxDa$2Mljr!4SiS>X)(HyxPXx5X~~sW5v$N(KeS zjQjW7!H=RG#PWt=dnwCrnf3)`LmB@9yqjWv_c6cw$}jMj5q>7d-+8JH+2(4&fgw^M zI^m0-yq6&iXFuNLI4dNk_3dEs_kGjRrhDX*AWKifeZ-$h~#vTi#42lRrO!@5%+MJEZ3TnU}($)J=ds0KnpH3n@#gau@{4wB@j3{37E! z8mds)zjLtd@i+Qd@J?S>cM$-g|8<8I>d7=-nHYMsvtcMRGvn{Wv!m(R^80W^&OEoN znQ&hLjtLb){&*o8|Kc(#I=1Qdhl!J%U=lz3I7!w?9BMTl`D~TLOgQQWQ?(l>l291d z@8Db%K`!_W{1-0^(R`Po`bxOdj9~~MAap5Z)qhArt#~WAfz4I*Tne$!)OtX4gQ@J`T zb$k~PHhgc&9Er3mhGOU0G;4*5h#J?Zw4p!l5PpAemwhzn8R2*ahJgPtVwnc%DsR$d zN6kc_@cEHn;^DK?Ifcr3^hWE$FVac@SGN3iVxgcCOqiXK= zD_1n`b^WJ9`G38L&A`EUXyBsblU2kh<^sm-NT|G67;IzPV~b=0xsZ-TgkDAQV}yA- z+id$pDCS081b4dVOzAf1OIfvePtcw~Ej*Tcf|mYF z>DrGXdLHUEclP1c=nEsyl<1oWi9i@b!}Ip|TU7AihoB>zE`93=b0JH;A*hZ_)j@ZN zHc}`nD-ZU}JqW1g8BMw!1Bv+()3Srh3*&v>aeZR3q-X7Wu1#b} zCxqHp`r&_}efJ9UR{J8dc+8E71EEhUFqmijziHA zYRu(C{4`sZf=QlL7{<&$Z0IC0h7z-!%Leo)abV4!L~ivH+F1cx|~wO zQjR8&IM}wGa)ErUJm_y}o*`X~)yOF+bOp2GW$^i4YB6f8!f2!2<^ylyu96A^xI!f% zi0KJ#2X(B!+ivmA3&cpGX3p+{+SEbdY3B36K{LkAr;Cb zq>Ira6(eQl79MRliBBO&J94x^zU{7@x1$M$ECYHAo8-YdWG9S{&iZVO2Yb7`W{}d6 zhNR^s^)%5T2#~MO)mIW@{l~L*`N4&P)%GZrU5pliPx^wgC^qPvOh4ZEZ&*R z*WYs*cnrP)MGefpZ8gxHxt#w}OhguwsNJ2Ir%>&R?I&GG~d!Aia^`oAK_9w6L)0yAFs%#D#Vu!B6ilMHN)0we2^_g6g;GSYDrRDi%i^K9I zHX*|5!&DDuV!4Sxf)#Q24$?w_XP4o4BaXo94b(6|x66w^%ecr8g7%Z#v6w3yM(`Xe z&&#N$-FAQ11|qwQ?@7(TRTewEC6PFUyDQz-MI%QuN<+Eo^Luy=Nj+ev0@w}?P$$l1 zYackT0FprBk7S`4{Wf%eyM#0Ezwwt#p@@K1O9VX(5yBqZs?PZY}**LlPoe zlxUlFyX%aOJWu}S7Zp2G+1m8`%vEbvG_$*>>V=Q7}pUNWmft>56NgNSs!Xm_MSZwVbi%@Q1v5WUickKaD z`Yfuj8*$e({r;p+jNCA`0wXR6l)*^JZR{3;wdb zzFP+cz_eQUxJMwYL*=3Y^_Yk5!=@w^khmES_MCq#cKo5`4`GWrS!NbrZDw3xsvYRN z@l8BgXTw$FTwTrixSU+x=it|y^&rq90>q*O`2&?*R)h+jF9osEic)#szt|`+-W=m7 zZ{v}|O!>F?(;ExEnfEQf!(+z+dc7ITHF>FI3;2-{O9R)pmIwOXU`wH|N8w{OdpZV5 zrIu`bHj*p_b@W_*kWJNtHACLxXV&t@$xoo3G2KbV>_q|;+J#ySG`d)rbt}j?RjL&9 z>1C~>y*sS33 zHTd>iQ281%J=66mf#q6Jy528ECal=llbco~37Sj-uswXHDW+dT})7ol(l#s}L6Lf$PkL)sAxH9y;*jcw`RrZv?AQ*0_*0{M3 zJ)zIJU?hplZjeZG7>oSqt-J;$`_`4L%J;pZNcMF+Al-DAh^rv08L>)1|Ex=}F~78L z;rJlwCmLX9t0jF+k9+GeN#NY3adHoYLc9+U} zO!Yy~&s?yt@Wjw1Mt!L*3N5L+M#xEAwfzkvHwf^5J)Sd!K&n^1&ZkY2gFg5tye}aK zoFh6*;kK13ZjAq2X{8InzE223dLnOH+AlfbeY!=kyyaZ#n99&Qj~mGwX*LY|gi9Wd z3-e|t*DMsw{Qn6oymt%sQN z0S(l|gir1xtcy8sOED31ig7V>GUhx$;7H6lk&HxQP6cXyam?9~o&A_&^F$SPj}d5B zCljb>F4&62Xaw4WRgnlpO^0>b;1Zd>y#Q^k-%c{Kvnuaxqe99^j(p%9B{SDXJ^0Yw zsYt1{D9LOQHam~8wo|qyn3Avn?}xar-ft{+67^9qV{mFu~UcoyXi0jz~`rpQK&rTv&d&z?J6Ss zHW)tc#K7a9VRa)%Pwd@rN@Se`u`pRPlf)m+FO<#7%IcKy@weivVq|tay~H%ivv$4+ zFG&#EBuHLt-sqI(#8*%Z=IILb-$ujpgh4m+ZrmIwbzp^};aK5`URBiXR9h65rRqc> zmlh4r72y9m8tx|q{zv24#STEnv$HLR6CBpac|4RBL4aei)wUN&Ddp`l>>(U@km;SERz{(Z`4 zR+XU!P`RKJ2^4OTHP=ncgZ?+n#BNSt@otUs>{Y<=w(~b_$y(9sy5o$On+^4A=1Q4vIunbcy zuhV?7D(hSww9xJJX2~Nf<)T~F1m7xY$GKo?6LHgWVSVmf6~1Hvw4Lzhd(g{p1k;-z zD#8lP_Yyh4>EmOKhcCZJb}jTda2%0m+$%88!&hXUw@I7l+mOOz>6?F^2i_B(=l(Ko z`cO=La-QFQu~+l_Zfu^f;uO}*?|Ggde7+a+yh>tT_-#Vxw~Jvw>JOn4OVC1%S?;^+ z*)_TMEOZ`?Kv(yNJjXwC!NjL&JdxG?E);MYCh^r-w0h4%?IFv=!%TNjafm*N#1l&pf<%}Lzv@nQf32c7TVISfs~ zGctZ?3fAtkRTNdTL=^411_0wQfaXG70{{=!0KuE=`sU?Cfq&m+%-u!%rw5Yvyiwq_ z7a(H>h@PYU9$jJzcmlQ@&;KZuAy0%y*te@gE~aupg=j9H=7B|K1mY!k@oNvjg+S`l zCoO3}ZiJcRlviYCi2~R+f02JQvX5Nsa!~}0A;WU>Qoa2!M~dXfj%4tW!q<6wRE!O!*9Khfl*h$@sLCewzPG_Gdp>0*vrbMo+ug#O#cFLQJ{g3Mo{Be2$!%!lVZDwE?*BiU?& z!M*)w`=mY6-|0LrY!yY%B1rK08BU@V;ET?7GmuHhP}o@;qDZU%(D3KG;Hr*;nSaIk z|A2V~pBBP4>PCH~)-U#P!!u~%EklyCihbU{dFUTblV(M-Y9mKn-bx9zB4oGdBk|ih z_hh1D9Lg@}U|)O?(r*%j*&5zwq7&a?Pnc@W!)!tY?TvoxVh@ZXSH1+JF6cZYJ8Fs0 z*2VUDX{xp?(|s4gRT~fCDyZo<{n( zet<(6o9GApD_)>c3y7%1g7UBWsK{`o+8gAbuCr~*rdt`2J*FgiWzkSO68kMNPDYDa z0X0)3=QxQkGTnD%jXCo9xeP>CD0QO%AqsY&Y7>gNpo4?r+5vyx3vTptVl5-GB^JlM zLV-&qA$U59BQhPbvm?)VpOSWt0Z8zbhTT;41bdd))i{^Ha5eiDT2IIV3^s!I$JoLx z`r#)J9}`XO(=8E_#i>$3fQv_$SrNh^iOL;IhNAJU9#wf_>bugkVlnm4ejoLXNgwl& zN0a_VAm}-$8Cb%o4mr>BOZU^S2ASlugli!9Jp1XFO9y{H-PZJaKiw?iVN#m;9VRIK zbq8x)Tqto_hdj=g-E7D}CTql13?NZ^GI8eHBQdiYH(KvKICcIIp3x#eP>IXoz~p!p z&VV5~;qeQIJs0f!NO%g?+N^1MnA&6hUR}VVZqN9cI2V4`E@W>wo>{7O2#A3Yd zYm^1#qCv`39w95Aaq5~;&iXd8Hu08IhTDS&qc?Pk;rq=Q&97ZpNrBn0cd|FZp$b4q6u3}N@JZ~obM7#3N zv*s3VvIgBuzn}li)dvrT^ZX-UE)G@XODQJinYVx?=ee1{k$L`v&LA?+t*H6M^E`{4 z{pa75K;GHJ`^%}9o|S@ooRgA2OE=x zn8Q0-?$#7k-#p+Po^b&AwC7W1L-2Rjx0$HvRv{(PIHG$q$KG$(;8t^5B|p;BdM(&Y z2#^h%S7MKGiXhTERz@jV%<=rwK&?e6Ib|vv1nyB%BVIp8PWl%a?XFO$;94q~<~M6{ zn6RIN?xx;Jj016rar@%jOz>xdhM6_y*omQ2mlWvy;-=sNzk8CKn(}Vu_1)05F3s!P z>}*Y1(ju;F0>4=@9hcJbH2Mtrts6BR#Q@jI~{FfIl+_4Wp0i?hmzZc-|3C-ZNnFp~meYeUS zyH#Ou)S)C$$-pNu89Y|cE-2&p48#yZJW7a<{9u&{7B?ra8Q^)Y-=FerDjzSG&X!xVuBJbKCrMAvr1N{`viW*l$M%){Yzo?2gR9;@c*hduD|3!L8`i4Sj>&v1NL-nQ`k z=8yjR;TS9o&JS=58mWk?#f?1a4aig2XC3{pqW!+2l+doVljc)z(%+CanP@x#7n@y9 zTi7S@msNA>F~o7%Cf4Q9mV37BD_}_`m_$8+>zVYF#(nj@i)!B=lhBTRgE@s5bnt39 z>W~)Vb&>vQ{?Tyw1vn(9xd^9W_FfF6SoiY@YxG4Jn;VtHyp)Xl9%7{(b5&c_FF556 zdI=!nmmNUuBa|b76S*~fNO+iMJQ2j7qIH>g4rey9Tb)kiGg>EvW3cm(T&Min2Z}Qf z%=p&(4C-z?H``PC*-@)AGcp_-qBNR=%`?maN5IpU#qMw2+<}P94Fh4>-Ogq(I9&-T zna#R`uzBZX=eJ@oxd6|j}bQm6pOong!WWVE3TiMX;W zcFJZG3CCPxO6=L#7G-LrYW=*$`+Door8rHClG>O={_43=vY_bO=@ieqrv;%)1EnvQ%#-6izBIdb(f=ju6T-4d$fbJLNd9gWFhJKq62R+E|32I-Y|z zax?osu_2Dj8j z%B?i39g$6W%cB!TxA5p5>55L=7VN+jUy|M%pl>GW-RL&{i9Oq!X=al2f|7WdQeX+5 zA*i<&F_MdMOz+c!#-@&8;Rew$yiD&BF7cMib3A_xud{<2!|TF0c*Pzpw35Hs`otJs z2A1F(g7!Fun5Hy_l}94+=@1ZFoE3?d%#n=2TX`sTJ9 zkQlA_bIZEUvYDn|3Cp3MDTw-+&1HUk8(mu|8$YuhXIvN8kJG<^wa@=ZC5ZSL&T?=h zK_f#?T2Cd$)J`PxJ}??f&LBbcai82FML^NN}Zgz1s3tO&)+V*j{r%*GDWep+7FiSghR7|J%UJ{H`treP;DA6RV0y2&tK$!ZBHFcw^31+IUKovGn z7GSEz%F~|Vr-ZxUB@him68&zQwRyk9yFJ&ZBw;5N@&DA&f!`_=_zT zPHS?Dg(}{&=l^po{NqUK6Ss0e{!<)gdJuyyqnA$BWI3W-Cjk#rh0%$QIC@yH+CdW-a0mM zTiW|wW+ai`k41YcEIcfD!qO*luL8$X|$7Wd4_mV%@pCb%A;@ZiQCuH)qC! z_#ox9ovqmN{l7O|P9SP4uJ1_QVr5%ZB3bh>`U9f9$;pd{ouh_ylc< zXceO(iPYL?t){kWv=#?(iPj}mAph@k&biA>W|9E)^Zwt@ulXq7yPV}Y&w0*smV53U zWn?rfbh}nHk~sc0LQ?idsm_y({Yv6hEq-GpkLirnDDO7&44sTOxX1oBj&J;MQZ|PiI=2 z8t)?Kx;MjR*X)x0#dd&30_@mNE^zN3KXbmpyMbV8ox-+MRVVa$B<|XlQP|A0c5PMHndW&K2v^LYT5c*0-0(+#F!fmR{ne((sq9;F~cGzUq z2ivpiw&`u@lO|9{sE;oo9g|h}p%i&z4&$ruvK5Cwa(*;Hvg(vQ---B`X~brkC~X{O zO3;lKjaGWUbkQy1?3Oz6td_N1MdHfyM|{VR72vBqN)xrxa3Yqc+a#rEKa9TnbgTDz z1=Q;7?E)Wi0`;lctLa2UVMeoR#s9T&y)?UJ4Lis@nthHSMzcQ@Gwxfn$(Krkt>LMT zOvdk_O~=ZVW+#h2Jen;fU(t`f-v1%z5p@%-(ETNWJyqxj2YG5doRn6Jtb6S=6`?i!m2B`g!?uT4#oAFfn;Ot#JC)>cP9t{Ioulr{ zfC9mycGUfkq^>8$x6mj(L&U#a>D;N2JAIq-vC0aZF#>tn^BwVOWTO6#G`>`>sisN) zZ|`3-j@XC(+=i~^<`K`JI#7-4nA^J9EQIX(G$(NJToHb|a;YTpv!0D2>z8=s2b~nj8@(DyRRTX2X0%AeLsS5W6mW z`+cPqAFaua>6AjMQrEMmzx;HS6V}!Z<$O%${mxImUgJn&uLI#alQtm31cRl9>YV#jYD$oYF`;2-j7;!(BB&(C<9y!`ARB)s-{)QE!4p zP9(M2D;p{>NX}z9n zOPNT9kDA%`;Uv>*)Xbzu)zyhkSWoMYOvN207=7S~on7>g93OYJ=%?SLka`#W&2lKQ zW2_b#8P!Z|U)E7l@T@uLWvrc+Cbc(8fRMsLUTc@Y+`n6m%se1N9wd4|o z_cTm&>6DMK0U4rQZ61k&WsggUwBTS1SQSVTXxGq6D4oRAAAicJP zI9|;oS43`aiAqd8)k*6`Xbq}Fp8_dHyBcY;r%N{2tQ{e5Tu`O*xn9S6nGp^8HA&b{ z!F8`mB4+l|dr%`DHoAsA<00D(Kz`y>l^wA~Sn2)P=BF-6u7r@qZq;t@bFLByK_d-1 zMhi}nv@ZD}_9KN;>py(Q-#+JFTFky%VlnED@)4eu7TXi_uE*1qN%po2RiE|(hN@aw zz%XJZNQV3Uz=+B53GF>G_vzRDNc>-5)kg{2Z$rLbB_`@sN=I5>=QzQ4yc`j>x7>d- zt=O)8yM$Wqa(B(6*ZPMkgI~(Mt99kqsc?T%fBXD=~j@Nd6PWR=3yaS*f3mU~Kb zjT3Rl%MxqH3wHgRekr~$N3;-oDP4PB8Gc%Q+gDul?FBN z#xc&#$JVn>iB#yF0*<8iT_fLmH=dOBKR8le;-+lp>5=H*8mHThyzBLd&y$4Iy|JKJ zV-f}k&bs&eD)^#KqR_oRpUpVZ5X3mn&s-ZFd=iWgD>BlX-fmmrSNbm{E*K7^4?c zF2eoXq_%oC)sPEb`f19q-ekQwLkbp8D@s;>l&mRnWxb6%v3gI2-qPX5?Qvtt`s3cR z%FjSYC2y+dm&4t$e58l^54Yj@DkH~VQ4 ztdLJrIF6?DH>#V$d#Dd%NtZ)QW+ASGM<$?&RyNd2}-~oS?)a-@{cDy-?TdYd%xurjmcpzSVml8&Pz; zz51HZr+6*1K)6!e1!DfT6v`5B)mU5d_ZCN~$o?*n>Z&%Qe)nrWlM4x}DpM4W;?=|` zSFYOC<9^NOBX*I5TSNxW+sjd_YRV(Nj$e0%@+#MNexXv7b%VZKR?Iev|5gr3CG>!L zkxM4vW>TOgyXw{r?kzp&cb}TBqA5Sp7>D(>-}yNraf|MFZsEX_sEF=0=PE zz3x;5i`Z)>;}U6C?W$eHd zZ*o2I9jI0KO=EBg;$tzmj1s8E0kVRv;{EAq>|%oijc*s;@z%<>jWL*oiWNsV#$le5 zI@1iTKX;YFc9yQ+I8P@g&t3f@UxKzYS&lGce-52zpK`38eNs7{#)iC)Y?F?pbsT4_ z&?NaQEuT{9TgtR)D7>X!rb_I5Jk%aw8pFB_$K{IOPsPL1jP|rS-sA2^6q!?9^#c2PhV}I42VoWf_ zV9_PQ{yywgjQ!kV)QY2{7%j!UiqX7|Vx+_=h8fmT@-AbpCrI{g+qBE80!B1q2^j4) zdWZT?t$(C8in8=N6$=MqMfT!_z5apN2&i^InQ+c;6xri$wdkp1@4>Y0Y&7rMY6?z< zZdpCvmi`!r(;Chvh_fKu8eS-;?*7zVIdzv}?I~2RRDKqjN=;-c^=>M9tft19h5B!p zXZG40bQmmg;sRJ_AfSHv)= zNG0ZU7045j3NFNq_R#2FFCImXV@;XU-JE+%+$}YDlxWxU>|tY}YDwrOVnL0NW0%@9 zj^3V^+aC;(x=&Uvl+!oVDGTk-u+WYXI1W*?smvG$mK{)s+ORz}sqaT#Fe~Fxc{5UU z$HA`!MfRDUdeJwmR|v(Si|LC)Pcn`DG#0@nAh%M?EzDbWTVu_w#Esb*a;sLMlhbMX zblQ#yZcjjhJU=Fi{gE2g9XzO~O@E`d665Cb1 zt<#ZR2I~FFKIn8?_L$P%`EG=?vSuB=;+v7u`lXe))!K)&_y3!i2<1^0wc+U1hhAxG zw12fWBI_d&57WOxVNFzBnO!7Cgx2s3=Z@a1B`Il7qJPvD^Wy77Jie4&Rc0CbIZmC5 zXbnHcsry-<14xiE>0hBYPEM-b$?@=kqiP}})8vYkg0^J;YIE%

Vt;Z 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

C6>{n%~RXcqNjw^?IY)Q{a}jbl+icAGVx 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 literal 0 HcmV?d00001 diff --git a/thresholds/trb_dirich_threshold/obsolete/systemthreshscan_v11.C b/thresholds/trb_dirich_threshold/obsolete/systemthreshscan_v11.C new file mode 100644 index 0000000..e7fb217 --- /dev/null +++ b/thresholds/trb_dirich_threshold/obsolete/systemthreshscan_v11.C @@ -0,0 +1,1478 @@ +#include "trbnet.h" +// #include "dirich_sim.C" + +#include "TGraph.h" +#include "TGraph2D.h" +#include "TMultiGraph.h" +#include "TCanvas.h" +#include "TH1.h" +#include "TH2.h" +#include "TLegend.h" +#include "TStyle.h" +#include "TLine.h" +#include "TFile.h" +#include "TText.h" +#include "TMath.h" +#include "TThread.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include + +#include "dirich_v11.C" + +namespace po = boost::program_options; +namespace fs = boost::filesystem; + +// #define 0 0 +// #define LASTCHANNEL 31 + +#ifndef NCH + const int NRCHANNELS = 32; //Nr of TDC channels in dirich + // const int NRCHANNELS = 4; //Nr of TDC channels in dirich + #define NCH +#endif + +std::map> dirichlist ={}; + +std::map canvaslist; + +std::vector canvasvector; + +TH2* get_2D_rate_histo(std::shared_ptr dirichptr){ + TH2D* histo; + gStyle->SetOptStat(0); + if(dirichptr==NULL){ + histo = new TH2D("2D Rate vs. Threshold of all diriches","2D Rate vs. Threshold of all diriches",dirichlist.size()*NRCHANNELS,-.5,dirichlist.size()*NRCHANNELS-.5,(dirichlist.begin()->second->gUpperEdge-dirichlist.begin()->second->gLowerEdge)/dirichlist.begin()->second->gStepsize,dirichlist.begin()->second->gLowerEdge,dirichlist.begin()->second->gUpperEdge); + int idirich=0; + // std::map::iterator dirichlistiterator = dirichlist.begin(); + TLine* dirich_line_left = new TLine(histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1),histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1),histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY())); + dirich_line_left->SetLineWidth(2); + dirich_line_left->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_left); + for (auto& dirichitem : dirichlist){ + TLine* dirich_line_right = new TLine(histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1),histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1),histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY())); + dirich_line_right->SetLineWidth(2); + dirich_line_right->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_right); + TText* dirich_name = new TText(histo->GetXaxis()->GetBinCenter((idirich+1./2)*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1)-(0.1*(histo->GetYaxis()->GetBinLowEdge(1)-histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()))),Form("0x%x",dirichitem.first)); + // TText* dirich_name = new TText(histo->GetXaxis()->GetBinCenter((idirich+1./2)*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1)+500,Form("0x%x",dirichitem.first)); + dirich_name->SetTextAlign(22); + dirich_name->SetTextColor(kRed+2); + dirich_name->SetTextFont(43); + dirich_name->SetTextSize(20); + histo->GetListOfFunctions()->Add(dirich_name); + for(int ichannel=0;ichannelsecond->gRateGraphs[ichannel]->GetN() << std::endl; + for(int ipoint=0;ipointgRateGraphs[ichannel]->GetN();++ipoint){ + // std::cout << idirich << " " << std::hex << dirichlistiterator.first << std::dec << " " << ichannel << " " << ipoint << " " << dirichlistiterator->second->gRateGraphs[ichannel]->GetX()[ipoint] << " " << dirichlistiterator->second->gRateGraphs[ichannel]->GetY()[ipoint] << std::endl; + histo->Fill(idirich*NRCHANNELS+ichannel,dirichitem.second->gRateGraphs[ichannel]->GetX()[ipoint],dirichitem.second->gRateGraphs[ichannel]->GetY()[ipoint]); + // std::cout << ichannel << " " << int(dirichlist.size()*NRCHANNELS/20+1) << std::endl; + if(ichannel%8==0) histo->GetXaxis()->SetBinLabel(idirich*NRCHANNELS+ichannel+1,Form("%i",ichannel)); + // if(ichannel%int(dirichlist.size()*NRCHANNELS/20+1)==0) histo->GetXaxis()->SetBinLabel(idirich*NRCHANNELS+ichannel+1,Form("%i",ichannel)); + else histo->GetXaxis()->SetBinLabel(idirich*NRCHANNELS+ichannel+1,""); + } + TLine* baseline_line = new TLine(histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+ichannel+1),dirichitem.second->GetSingleBaseline(ichannel),histo->GetXaxis()->GetBinUpEdge(idirich*NRCHANNELS+ichannel+1),dirichitem.second->GetSingleBaseline(ichannel)); + baseline_line->SetLineColor(kRed); + baseline_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(baseline_line); + TLine* baseline_line_old = new TLine(histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+ichannel+1),dirichitem.second->GetSingleBaseline_old(ichannel),histo->GetXaxis()->GetBinUpEdge(idirich*NRCHANNELS+ichannel+1),dirichitem.second->GetSingleBaseline_old(ichannel)); + baseline_line_old->SetLineColor(kBlack); + baseline_line_old->SetLineWidth(2); + histo->GetListOfFunctions()->Add(baseline_line_old); + } + // ++dirichlistiterator; + ++idirich; + } + } + else{ + histo = new TH2D(Form("2D Rate vs. Threshold of %x",dirichptr->GetBoardAddress()),Form("2D Rate vs. Threshold of %x",dirichptr->GetBoardAddress()),NRCHANNELS,-.5,NRCHANNELS-.5,(dirichptr->gUpperEdge-dirichptr->gLowerEdge)/dirichptr->gStepsize,dirichptr->gLowerEdge,dirichptr->gUpperEdge); + for(int ichannel=0;ichannelgRateGraphs[ichannel]->GetN();++ipoint){ + histo->Fill(ichannel,dirichptr->gRateGraphs[ichannel]->GetX()[ipoint],dirichptr->gRateGraphs[ichannel]->GetY()[ipoint]); + } + TLine* baseline_line = new TLine(histo->GetXaxis()->GetBinLowEdge(ichannel+1),dirichptr->GetSingleBaseline(ichannel),histo->GetXaxis()->GetBinUpEdge(ichannel+1),dirichptr->GetSingleBaseline(ichannel)); + baseline_line->SetLineColor(kRed); + baseline_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(baseline_line); + TLine* baseline_line_old = new TLine(histo->GetXaxis()->GetBinLowEdge(ichannel+1),dirichptr->GetSingleBaseline_old(ichannel),histo->GetXaxis()->GetBinUpEdge(ichannel+1),dirichptr->GetSingleBaseline_old(ichannel)); + baseline_line_old->SetLineColor(kBlack); + baseline_line_old->SetLineWidth(2); + histo->GetListOfFunctions()->Add(baseline_line_old); + } + } + // std::cout << "finished histo" << std::endl; + + histo->SetMinimum(0); + histo->GetXaxis()->SetTitle("Channel Nr"); + // histo->GetXaxis()->SetTitleOffset(); + histo->GetYaxis()->SetTitle("Threshold"); + histo->GetZaxis()->SetTitle("Rate"); + return histo; +} + +TMultiGraph* get_2D_mgr_diff_over_thr_histo(std::shared_ptr dirichptr){ + TMultiGraph* multig = new TMultiGraph(); + if(dirichptr==NULL){ + // multig->SetTitle("Differentiated rate graph over baseline of all dirich;Channel Nr;Threshold;Differentiated rate"); + multig->SetTitle("Differentiated rate graph over baseline of all dirich;Threshold;Differentiated rate"); + multig->SetName("Differentiated rate graph over baseline of all dirich (Mutligraph)"); + for (auto& dirichitem : dirichlist){ + for(auto& gDiffRateGraphsOverBaseIT : dirichitem.second->gDiffRateGraphsOverBase){ + multig->Add(gDiffRateGraphsOverBaseIT,"PL"); + } + } + } + else{ + // multig->SetTitle(Form("Differentiated rate graph over baseline of dirich 0x%x;Channel Nr;Threshold;Differentiated rate",dirichptr->GetBoardAddress())); + multig->SetTitle(Form("Differentiated rate graph over baseline of dirich 0x%x;Threshold;Differentiated rate",dirichptr->GetBoardAddress())); + multig->SetName(Form("Differentiated rate graph over baseline of dirich 0x%x (Multigraph)",dirichptr->GetBoardAddress())); + for(auto& gDiffRateGraphsOverBaseIT : dirichptr->gDiffRateGraphsOverBase){ + multig->Add(gDiffRateGraphsOverBaseIT,"PL"); + } + } + // multig->SetMinimum(0); + // multig->GetHistogram()->GetYaxis()->SetRangeUser(0,100); + return multig; +} + +TGraph2D* get_2D_gr_diff_over_thr_histo(std::shared_ptr dirichptr){ + TGraph2D* g2d = new TGraph2D(); + if(dirichptr==NULL){ + g2d->SetTitle("Differentiated rate graph over baseline of all dirich;Channel Nr;Threshold;Differentiated rate"); + g2d->SetName("Differentiated rate graph over baseline of all dirich (2D_Graph)"); + int idirich=0; + for (auto& dirichitem : dirichlist){ + int ichannel=0; + for(auto& gDiffRateGraphsOverBaseIT : dirichitem.second->gDiffRateGraphsOverBase){ + // std::cout << " " << idirich << " " << dirichitem.first << " " << ichannel << " " << gDiffRateGraphsOverBaseIT->GetN() << std::endl; + for(int ipoint=0;ipointGetN();++ipoint){ + // std::cout << " " << idirich << " " << dirichitem.first << " " << ichannel << " " << ipoint << " " << gDiffRateGraphsOverBaseIT->GetX()[ipoint] << " " << gDiffRateGraphsOverBaseIT->GetY()[ipoint] << std::endl; + g2d->SetPoint(g2d->GetN(),idirich*NRCHANNELS+ichannel,gDiffRateGraphsOverBaseIT->GetX()[ipoint],gDiffRateGraphsOverBaseIT->GetY()[ipoint]); + } + ichannel++; + } + idirich++; + } + } + else{ + g2d->SetTitle(Form("Differentiated rate graph over baseline of dirich 0x%x;Channel Nr;Threshold;Differentiated rate",dirichptr->GetBoardAddress())); + g2d->SetName(Form("Differentiated rate graph over baseline of dirich 0x%x (2D_Graph)",dirichptr->GetBoardAddress())); + int ichannel=0; + for(auto& gDiffRateGraphsOverBaseIT : dirichptr->gDiffRateGraphsOverBase){ + // std::cout << " " << idirich << " " << dirichitem.first << " " << ichannel << " " << gDiffRateGraphsOverBaseIT->GetN() << std::endl; + for(int ipoint=0;ipointGetN();++ipoint){ + // std::cout << " " << idirich << " " << dirichitem.first << " " << ichannel << " " << ipoint << " " << gDiffRateGraphsOverBaseIT->GetX()[ipoint] << " " << gDiffRateGraphsOverBaseIT->GetY()[ipoint] << std::endl; + g2d->SetPoint(g2d->GetN(),ichannel,gDiffRateGraphsOverBaseIT->GetX()[ipoint],gDiffRateGraphsOverBaseIT->GetY()[ipoint]); + } + ichannel++; + } + } + g2d->SetMinimum(0); + g2d->GetZaxis()->SetRangeUser(0,100); + return g2d; +} + +TH2* get_2D_diff_over_thr_histo(std::shared_ptr dirichptr){ + TH2D* histo; + TH2D* divided_histo; + // divided_histo->SetDirectory(0); + gStyle->SetOptStat(0); + if(dirichptr==NULL){ + double max_value=-9999; + double min_value=9999; + double min_width=1000; + for (auto& dirichitem : dirichlist){ + for(auto& gDiffRateGraphsOverBaseIT : dirichitem.second->gDiffRateGraphsOverBase){ + if(gDiffRateGraphsOverBaseIT->GetN()!=0 && max_valueGetX()[gDiffRateGraphsOverBaseIT->GetN()-1]) max_value = gDiffRateGraphsOverBaseIT->GetX()[gDiffRateGraphsOverBaseIT->GetN()-1]; + if(gDiffRateGraphsOverBaseIT->GetN()!=0 && max_valueGetX()[gDiffRateGraphsOverBaseIT->GetN()-1]) max_value = gDiffRateGraphsOverBaseIT->GetX()[gDiffRateGraphsOverBaseIT->GetN()-1]; + if(gDiffRateGraphsOverBaseIT->GetN()>=2 && min_width>abs(gDiffRateGraphsOverBaseIT->GetX()[0]-gDiffRateGraphsOverBaseIT->GetX()[1])) min_width = abs(gDiffRateGraphsOverBaseIT->GetX()[0]-gDiffRateGraphsOverBaseIT->GetX()[1]); + } + } + histo = new TH2D("2D Differentiated Rate vs. Threshold over baseline of all diriches","2D Differentiated Rate vs. Threshold over baseline of all diriches",dirichlist.size()*NRCHANNELS,-.5,dirichlist.size()*NRCHANNELS-.5,max_value/min_width/2,0,max_value); + divided_histo = new TH2D("temp_diff","temp_diff",dirichlist.size()*NRCHANNELS,-.5,dirichlist.size()*NRCHANNELS-.5,max_value/min_width/2,0,max_value); + int idirich=0; + TLine* dirich_line_left = new TLine(histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1),histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1),histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY())); + dirich_line_left->SetLineWidth(2); + dirich_line_left->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_left); + for (auto& dirichitem : dirichlist){ + TLine* dirich_line_right = new TLine(histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1),histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1),histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY())); + dirich_line_right->SetLineWidth(2); + dirich_line_right->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_right); + TText* dirich_name = new TText(histo->GetXaxis()->GetBinCenter((idirich+1./2)*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1)-(0.1*(histo->GetYaxis()->GetBinLowEdge(1)-histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()))),Form("0x%x",dirichitem.first)); + dirich_name->SetTextAlign(22); + dirich_name->SetTextColor(kRed+2); + dirich_name->SetTextFont(43); + dirich_name->SetTextSize(20); + histo->GetListOfFunctions()->Add(dirich_name); + for(int ichannel=0;ichannelgRateGraphs[ichannel]->GetN() << std::endl; + for(int ipoint=0;ipointgDiffRateGraphsOverBase[ichannel]->GetN();++ipoint){ + // std::cout << idirich << " dirich " << std::hex << dirichitem.first << std::dec << " C " << ichannel << " P " << ipoint << " X " << dirichitem.second->gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint] << " Y " << dirichitem.second->gDiffRateGraphsOverBase[ichannel]->GetY()[ipoint] << std::endl; + histo->Fill(idirich*NRCHANNELS+ichannel,dirichitem.second->gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint],dirichitem.second->gDiffRateGraphsOverBase[ichannel]->GetY()[ipoint]); + divided_histo->Fill(idirich*NRCHANNELS+ichannel,dirichitem.second->gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint]); + // std::cout << ichannel << " " << int(dirichlist.size()*NRCHANNELS/20+1) << std::endl; + if(ichannel%8==0) histo->GetXaxis()->SetBinLabel(idirich*NRCHANNELS+ichannel+1,Form("%i",ichannel)); + else histo->GetXaxis()->SetBinLabel(idirich*NRCHANNELS+ichannel+1,""); + } + TLine* thr_line = new TLine(histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+ichannel+1),-1*dirichitem.second->GetSingleThresholdmV(ichannel),histo->GetXaxis()->GetBinUpEdge(idirich*NRCHANNELS+ichannel+1),-1*dirichitem.second->GetSingleThresholdmV(ichannel)); + thr_line->SetLineColor(kRed); + thr_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(thr_line); + } + ++idirich; + } + idirich=0; + // for (auto& dirichitem : dirichlist){ + // for(int ichannel=0;ichannelSetBinContent(idirich*NRCHANNELS+ichannel+1,int(-1*dirichitem.second->GetSingleThresholdmV(ichannel)/histo->GetYaxis()->GetBinWidth(1))+1,-1); + // divided_histo->SetBinContent(idirich*NRCHANNELS+ichannel+1,int(-1*dirichitem.second->GetSingleThresholdmV(ichannel)/histo->GetYaxis()->GetBinWidth(1))+1,1); + // } + // idirich++; + // } + } + else{ + double max_value=0; + double min_width=10000; + for(auto& gDiffRateGraphsOverBaseIT : dirichptr->gDiffRateGraphsOverBase){ + if(gDiffRateGraphsOverBaseIT->GetN()!=0 && max_valueGetX()[gDiffRateGraphsOverBaseIT->GetN()-1]) max_value = gDiffRateGraphsOverBaseIT->GetX()[gDiffRateGraphsOverBaseIT->GetN()-1]; + if(gDiffRateGraphsOverBaseIT->GetN()>=2 && min_width>abs(gDiffRateGraphsOverBaseIT->GetX()[0]-gDiffRateGraphsOverBaseIT->GetX()[1])) min_width = abs(gDiffRateGraphsOverBaseIT->GetX()[0]-gDiffRateGraphsOverBaseIT->GetX()[1]); + } + histo = new TH2D(Form("2D Differentiated Rate vs. Threshold over baseline of %x",dirichptr->GetBoardAddress()),Form("2D Differentiated Rate vs. Threshold over baseline of %x",dirichptr->GetBoardAddress()),NRCHANNELS,-.5,NRCHANNELS-.5,max_value/min_width/2,0,max_value); + divided_histo = new TH2D("temp_diff","temp_diff",NRCHANNELS,-.5,NRCHANNELS-.5,max_value/min_width/2,0,max_value); + for(int ichannel=0;ichannelgDiffRateGraphsOverBase[ichannel]->GetN();++ipoint){ + histo->Fill(ichannel,dirichptr->gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint],dirichptr->gDiffRateGraphsOverBase[ichannel]->GetY()[ipoint]); + divided_histo->Fill(ichannel,dirichptr->gDiffRateGraphsOverBase[ichannel]->GetX()[ipoint]); + } + TLine* thr_line = new TLine(histo->GetXaxis()->GetBinLowEdge(ichannel+1),-1*dirichptr->GetSingleThresholdmV(ichannel),histo->GetXaxis()->GetBinUpEdge(ichannel+1),-1*dirichptr->GetSingleThresholdmV(ichannel)); + thr_line->SetLineColor(kRed); + thr_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(thr_line); + } + // for(int ichannel=0;ichannelSetBinContent(ichannel+1,int(-1*dirichptr->GetSingleThresholdmV(ichannel)/histo->GetYaxis()->GetBinWidth(1))+1,-1); + // divided_histo->SetBinContent(ichannel+1,int(-1*dirichptr->GetSingleThresholdmV(ichannel)/histo->GetYaxis()->GetBinWidth(1))+1,1); + // } + } + // std::cout << "finished histo" << std::endl; + + histo->Divide(divided_histo); + + histo->Divide(divided_histo); + for(int ibin=1;ibin<(histo->GetNbinsX()+2)*(histo->GetNbinsY()+2);++ibin){ + // if(histo->GetBinContent(ibin)<-1.)histo->SetBinContent(ibin,0); + histo->SetBinError(ibin,0); + } + histo->SetMinimum(0.); + // histo->GetZaxis()->SetRangeUser(0.,30.); + histo->GetXaxis()->SetTitle("Channel Nr"); + // histo->GetXaxis()->SetTitleOffset(); + histo->GetYaxis()->SetTitle("Threshold"); + histo->GetZaxis()->SetTitle("Differentiated rate"); + return histo; +} + +TH2* get_2D_rate_over_thr_histo(std::shared_ptr dirichptr){ + TH2D* histo; + TH2D* divided_histo; + // divided_histo->SetDirectory(0); + gStyle->SetOptStat(0); + if(dirichptr==NULL){ + double max_value=-9999; + double min_value=9999; + double min_width=1000; + for (auto& dirichitem : dirichlist){ + for(auto& gRateGraphsOverBaseIT : dirichitem.second->gRateGraphsOverBase){ + if(gRateGraphsOverBaseIT->GetN()!=0 && max_valueGetX()[gRateGraphsOverBaseIT->GetN()-1]) max_value = gRateGraphsOverBaseIT->GetX()[gRateGraphsOverBaseIT->GetN()-1]; + if(gRateGraphsOverBaseIT->GetN()!=0 && max_valueGetX()[gRateGraphsOverBaseIT->GetN()-1]) min_value = gRateGraphsOverBaseIT->GetX()[0]; + if(gRateGraphsOverBaseIT->GetN()>=2 && min_width>abs(gRateGraphsOverBaseIT->GetX()[0]-gRateGraphsOverBaseIT->GetX()[1])) min_width = abs(gRateGraphsOverBaseIT->GetX()[0]-gRateGraphsOverBaseIT->GetX()[1]); + } + } + histo = new TH2D("2D Rate vs. Threshold over baseline of all diriches","2D Rate vs. Threshold over baseline of all diriches",dirichlist.size()*NRCHANNELS,-.5,dirichlist.size()*NRCHANNELS-.5,max_value/min_width/2,0,max_value); + divided_histo = new TH2D("temp_diff","temp_diff",dirichlist.size()*NRCHANNELS,-.5,dirichlist.size()*NRCHANNELS-.5,max_value/min_width/2,0,max_value); + int idirich=0; + TLine* dirich_line_left = new TLine(histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1),histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+1),histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY())); + dirich_line_left->SetLineWidth(2); + dirich_line_left->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_left); + for (auto& dirichitem : dirichlist){ + TLine* dirich_line_right = new TLine(histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1),histo->GetXaxis()->GetBinLowEdge((idirich+1)*NRCHANNELS+1),histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY())); + dirich_line_right->SetLineWidth(2); + dirich_line_right->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_right); + TText* dirich_name = new TText(histo->GetXaxis()->GetBinCenter((idirich+1./2)*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1)-(0.1*(histo->GetYaxis()->GetBinLowEdge(1)-histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()))),Form("0x%x",dirichitem.first)); + dirich_name->SetTextAlign(22); + dirich_name->SetTextColor(kRed+2); + dirich_name->SetTextFont(43); + dirich_name->SetTextSize(20); + histo->GetListOfFunctions()->Add(dirich_name); + for(int ichannel=0;ichannelgRateGraphs[ichannel]->GetN() << std::endl; + for(int ipoint=0;ipointgRateGraphsOverBase[ichannel]->GetN();++ipoint){ + // std::cout << idirich << " dirich " << std::hex << dirichitem.first << std::dec << " C " << ichannel << " P " << ipoint << " X " << dirichitem.second->gRateGraphsOverBase[ichannel]->GetX()[ipoint] << " Y " << dirichitem.second->gRateGraphsOverBase[ichannel]->GetY()[ipoint] << std::endl; + histo->Fill(idirich*NRCHANNELS+ichannel,dirichitem.second->gRateGraphsOverBase[ichannel]->GetX()[ipoint],dirichitem.second->gRateGraphsOverBase[ichannel]->GetY()[ipoint]); + divided_histo->Fill(idirich*NRCHANNELS+ichannel,dirichitem.second->gRateGraphsOverBase[ichannel]->GetX()[ipoint]); + // std::cout << ichannel << " " << int(dirichlist.size()*NRCHANNELS/20+1) << std::endl; + if(ichannel%8==0) histo->GetXaxis()->SetBinLabel(idirich*NRCHANNELS+ichannel+1,Form("%i",ichannel)); + else histo->GetXaxis()->SetBinLabel(idirich*NRCHANNELS+ichannel+1,""); + } + TLine* thr_line = new TLine(histo->GetXaxis()->GetBinLowEdge(idirich*NRCHANNELS+ichannel+1),-1*dirichitem.second->GetSingleThresholdmV(ichannel),histo->GetXaxis()->GetBinUpEdge(idirich*NRCHANNELS+ichannel+1),-1*dirichitem.second->GetSingleThresholdmV(ichannel)); + thr_line->SetLineColor(kRed); + thr_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(thr_line); + } + ++idirich; + } + idirich=0; + // for (auto& dirichitem : dirichlist){ + // for(int ichannel=0;ichannelSetBinContent(idirich*NRCHANNELS+ichannel+1,int(-1*dirichitem.second->GetSingleThresholdmV(ichannel)/histo->GetYaxis()->GetBinWidth(1))+1,-1); + // divided_histo->SetBinContent(idirich*NRCHANNELS+ichannel+1,int(-1*dirichitem.second->GetSingleThresholdmV(ichannel)/histo->GetYaxis()->GetBinWidth(1))+1,1); + // } + // idirich++; + // } + } + else{ + double max_value=0; + double min_width=1000; + for(auto& gRateGraphsOverBaseIT : dirichptr->gRateGraphsOverBase){ + if(gRateGraphsOverBaseIT->GetN()!=0 && max_valueGetX()[gRateGraphsOverBaseIT->GetN()-1]) max_value = gRateGraphsOverBaseIT->GetX()[gRateGraphsOverBaseIT->GetN()-1]; + if(gRateGraphsOverBaseIT->GetN()>=2 && min_width>abs(gRateGraphsOverBaseIT->GetX()[0]-gRateGraphsOverBaseIT->GetX()[1])) min_width = abs(gRateGraphsOverBaseIT->GetX()[0]-gRateGraphsOverBaseIT->GetX()[1]); + } + histo = new TH2D(Form("2D Rate vs. Threshold over baseline of %x",dirichptr->GetBoardAddress()),Form("2D Rate vs. Threshold over baseline of %x",dirichptr->GetBoardAddress()),NRCHANNELS,-.5,NRCHANNELS-.5,max_value/min_width/2,0,max_value); + divided_histo = new TH2D("temp_diff","temp_diff",NRCHANNELS,-.5,NRCHANNELS-.5,max_value/min_width/2,0,max_value); + for(int ichannel=0;ichannelgRateGraphsOverBase[ichannel]->GetN();++ipoint){ + histo->Fill(ichannel,dirichptr->gRateGraphsOverBase[ichannel]->GetX()[ipoint],dirichptr->gRateGraphsOverBase[ichannel]->GetY()[ipoint]); + divided_histo->Fill(ichannel,dirichptr->gRateGraphsOverBase[ichannel]->GetX()[ipoint]); + } + TLine* thr_line = new TLine(histo->GetXaxis()->GetBinLowEdge(ichannel+1),-1*dirichptr->GetSingleThresholdmV(ichannel),histo->GetXaxis()->GetBinUpEdge(ichannel+1),-1*dirichptr->GetSingleThresholdmV(ichannel)); + thr_line->SetLineColor(kRed); + thr_line->SetLineWidth(2); + histo->GetListOfFunctions()->Add(thr_line); + } + // for(int ichannel=0;ichannelSetBinContent(ichannel+1,int(-1*dirichptr->GetSingleThresholdmV(ichannel)/histo->GetYaxis()->GetBinWidth(1))+1,-1); + // divided_histo->SetBinContent(ichannel+1,int(-1*dirichptr->GetSingleThresholdmV(ichannel)/histo->GetYaxis()->GetBinWidth(1))+1,1); + // } + } + // std::cout << "finished histo" << std::endl; + + histo->Divide(divided_histo); + + histo->SetMinimum(0); + histo->GetXaxis()->SetTitle("Channel Nr"); + // histo->GetXaxis()->SetTitleOffset(); + histo->GetYaxis()->SetTitle("Threshold"); + histo->GetZaxis()->SetTitle("Rate"); + return histo; +} + +TH1* get_noisewidth_histo(std::shared_ptr dirichptr){ + TH1* histo; + if(dirichptr==NULL){ + histo = new TH1D("Noisewidthhistogram of all diriches","Noisewidthhistogram of all diriches",dirichlist.size()*NRCHANNELS,-.5,dirichlist.size()*NRCHANNELS-.5); + int idirich=0; + for (auto& dirichitem : dirichlist){ + TText* dirich_name = new TText(histo->GetXaxis()->GetBinCenter((idirich+1./2)*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1)-(0.1*histo->GetYaxis()->GetBinLowEdge(1)-histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY())),Form("0x%x",dirichitem.first)); + dirich_name->SetTextAlign(22); + dirich_name->SetTextColor(kRed+2); + dirich_name->SetTextFont(43); + dirich_name->SetTextSize(20); + histo->GetListOfFunctions()->Add(dirich_name); + for(int ichannel=0;ichannelSetBinContent(idirich*NRCHANNELS+ichannel+1,dirich::Thr_DtomV(dirichitem.second->GetSingleNoisewidth(ichannel))); + if(ichannel%8==0) histo->GetXaxis()->SetBinLabel(idirich*NRCHANNELS+ichannel+1,Form("%i",ichannel)); + else histo->GetXaxis()->SetBinLabel(idirich*NRCHANNELS+ichannel+1,""); + } + ++idirich; + } + TLine* dirich_line_left = new TLine(histo->GetXaxis()->GetBinLowEdge(1),histo->GetYaxis()->GetBinLowEdge(1),histo->GetXaxis()->GetBinLowEdge(1),histo->GetMaximum()*1.05); + dirich_line_left->SetLineWidth(2); + dirich_line_left->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_left); + for(int i=0;iGetXaxis()->GetBinLowEdge((i+1)*NRCHANNELS+1),histo->GetYaxis()->GetBinLowEdge(1),histo->GetXaxis()->GetBinLowEdge((i+1)*NRCHANNELS+1),histo->GetMaximum()*1.05); + dirich_line_right->SetLineWidth(2); + dirich_line_right->SetLineColor(kRed); + histo->GetListOfFunctions()->Add(dirich_line_right); + } + } + else{ + histo = new TH1D(Form("Noisewidthhistogram of %x",dirichptr->GetBoardAddress()),Form("Noisewidthhistogram of %x",dirichptr->GetBoardAddress()),NRCHANNELS,-.5,NRCHANNELS-.5); + for(int ichannel=0;ichannelSetBinContent(ichannel+1,(dirich::Thr_DtomV(dirichptr->GetSingleNoisewidth(ichannel)))); + } + } + + histo->GetYaxis()->SetTitle("NoisewidthinmV"); + histo->SetMinimum(0); + histo->GetXaxis()->SetTitle("Channel Nr"); + return histo; +} + +TH1* get_diff_histo(std::shared_ptr dirichptr, bool baseline1_noisewidth0){ + TH1* histo; + if(dirichptr==NULL){ + if(baseline1_noisewidth0==1) histo = new TH1D("Difference in baseline of all diriches","Difference in baseline of all diriches",dirichlist.size()*200,-300,+300); + else histo = new TH1D("Difference in noisewidth of all diriches","Difference in noisewidth of all diriches",dirichlist.size()*200,-300,+300); + int idirich=0; + for (auto& dirichitem : dirichlist){ + for(int ichannel=0;ichannelFill(dirichitem.second->GetSingleBaseline(ichannel)-dirichitem.second->GetSingleBaseline_old(ichannel)); + else histo->Fill(dirichitem.second->GetSingleNoisewidth(ichannel)-dirichitem.second->GetSingleNoisewidth_old(ichannel)); + } + } + ++idirich; + } + else{ + if(baseline1_noisewidth0==1) histo = new TH1D(Form("Difference in baseline of %x",dirichptr->GetBoardAddress()),Form("Difference in baseline of %x",dirichptr->GetBoardAddress()),200,-300,+300); + else histo = new TH1D(Form("Difference in noisewidth of %x",dirichptr->GetBoardAddress()),Form("Difference in noisewidth of %x",dirichptr->GetBoardAddress()),200,-300,+300); + for(int ichannel=0;ichannelFill(dirichptr->GetSingleBaseline(ichannel)-dirichptr->GetSingleBaseline_old(ichannel)); + else histo->Fill(dirichptr->GetSingleNoisewidth(ichannel)-dirichptr->GetSingleNoisewidth_old(ichannel)); + } + } + + histo->GetYaxis()->SetTitle("Number of"); + if(baseline1_noisewidth0==1) histo->GetXaxis()->SetTitle("Difference between old and new baseline"); + else histo->GetXaxis()->SetTitle("Difference between old and new noisewidth"); + return histo; +} + +void clear_canvas_vector(){ + while(canvasvector.size()!=0){ + if(canvasvector.back()==NULL){ + std::cout << "1" << std::endl; + canvasvector.pop_back(); + } + else{ + std::cout << "2" << std::endl; + canvasvector.back()->Clear(); + std::cout << "3" << std::endl; + canvasvector.back()->Close(); + std::cout << "4" << std::endl; + canvasvector.back()->Closed(); + std::cout << "5" << std::endl; + delete canvasvector.back(); + std::cout << "6" << std::endl; + canvasvector.back()=NULL; + std::cout << "7" << std::endl; + canvasvector.pop_back(); + std::cout << "8" << std::endl; + } + } +} + +void draw_multigraph2D(TMultiGraph* multigraph,TCanvas* canvas){ + if(canvas==0){ + canvasvector.emplace_back(new TCanvas(Form("Canvas%i",(int)canvasvector.size()),Form("Canvas%i",(int)canvasvector.size()),1920,1080)); + canvasvector.back()->cd(0); + } + else{ + canvas->cd(0); + } + multigraph->Draw("a fb l3d"); + gPad->SetTheta(0); + gPad->SetPhi(-90); + gPad->Update(); + if(canvas==0){ + canvasvector.back()->Modified(); + canvasvector.back()->Update(); + } + else{ + canvas->Modified(); + canvas->Update(); + } +} + +void draw_multigraph(TMultiGraph* multigraph,TCanvas* canvas){ + if(canvas==0){ + canvasvector.emplace_back(new TCanvas(Form("Canvas%i",(int)canvasvector.size()),Form("Canvas%i",(int)canvasvector.size()),1920,1080)); + canvasvector.back()->cd(0); + } + else{ + canvas->cd(0); + } + multigraph->Draw("alp"); + double max_value = 0; + for(auto&& graph : (*multigraph->GetListOfGraphs())){ + for(int i=10 ; i < ((TGraph*)graph)->GetN() ; ++i){ + max_value = ((TGraph*)graph)->GetY()[i] > max_value ? ((TGraph*)graph)->GetY()[i] : max_value; + } + } + // std::cout << "max_value" << max_value << std::endl; + multigraph->GetHistogram()->GetYaxis()->SetRangeUser(0,max_value==0 ? 100 : max_value*1.05); + if(canvas==0){ + canvasvector.back()->Modified(); + canvasvector.back()->Update(); + } + else{ + canvas->Modified(); + canvas->Update(); + } +} + +void draw_graph2D(TGraph2D* graph2d,TCanvas* canvas){ + if(canvas==0){ + canvasvector.emplace_back(new TCanvas(Form("Canvas%i",(int)canvasvector.size()),Form("Canvas%i",(int)canvasvector.size()),1920,1080)); + canvasvector.back()->cd(0); + } + else{ + canvas->cd(0); + } + graph2d->Draw("surf1"); + gPad->SetTheta(0); + gPad->SetPhi(-90); + gPad->Update(); + if(canvas==0){ + canvasvector.back()->Modified(); + canvasvector.back()->Update(); + } + else{ + canvas->Modified(); + canvas->Update(); + } +} + +void draw_histo(TH1* histo,TCanvas* canvas){ + if(canvas==0){ + canvasvector.emplace_back(new TCanvas(Form("Canvas%i",(int)canvasvector.size()),Form("Canvas%i",(int)canvasvector.size()),1920,1080)); + canvasvector.back()->cd(0); + } + else{ + canvas->cd(0); + } + histo->Draw(); + if(canvas==0){ + canvasvector.back()->Modified(); + canvasvector.back()->Update(); + } + else{ + canvas->Modified(); + canvas->Update(); + } +} + +void draw_histo(TH2* histo,TCanvas* canvas){ + if(canvas==0){ + canvasvector.emplace_back(new TCanvas(Form("Canvas%i",(int)canvasvector.size()),Form("Canvas%i",(int)canvasvector.size()),1920,1080)); + canvasvector.back()->cd(0); + } + else{ + canvas->cd(0); + } + histo->Draw("COLZ"); + if(canvas==0){ + canvasvector.back()->Modified(); + canvasvector.back()->Update(); + } + else{ + canvas->Modified(); + canvas->Update(); + } +} + +void set_thresholds(std::shared_ptr dirichptr, double thrinmV=30.) +{ + if(dirichptr==0){ + // std::cout << "setting threshold for all diriches: " << std::endl; + for (auto& dirichlistitem: dirichlist){ + set_thresholds(dirichlistitem.second, thrinmV); + } + } + else if(dirichlist.find(dirichptr->GetBoardAddress())!=dirichlist.end()){ + // if(thrinmV>0.){ + // std::cerr << "positive thresholds are not \"allowed\"!\ninverting value" << std::endl; + // thrinmV = -1*thrinmV; + // } + // std::cout << "setting threshold for dirich: " << std::hex << dirichptr->GetBoardAddress() << std::endl; + for (int ichannel=0; ichannelSetSingleThresholdmV(ichannel ,thrinmV); + } + // draw_graphs(dirichptr, canvaslist.at(dirichptr->GetBoardAddress()), makechannelvector(0,31), 1, 1, 1, 1); + } +} + +void set_thresholds(std::shared_ptr dirichptr, double* thrinmV) +{ + if(dirichptr==0){ + std::cout << "setting threshold for all diriches: " << std::endl; + for (auto& dirichlistitem: dirichlist){ + set_thresholds(dirichlistitem.second, thrinmV); + } + } + else if(dirichlist.find(dirichptr->GetBoardAddress())!=dirichlist.end()){ + if (!std::all_of(thrinmV, thrinmV+32, [](double i){ return i > 0.; })) { + std::cerr << "positive thresholds are not \"allowed\"!\ncanceling set_thresholds" << std::endl; + return; + } + std::cout << "setting threshold for dirich: " << std::hex << dirichptr->GetBoardAddress() << std::endl; + for (int ichannel=0; ichannelSetSingleThresholdmV(ichannel ,thrinmV[ichannel]); + } + // draw_graphs(dirichptr, canvaslist.at(dirichptr->GetBoardAddress()), makechannelvector(0,31), 1, 1, 1, 1); + } +} + +void save_base(std::shared_ptr dirichptr, std::string filename, bool append){ + std::ofstream file; + if(append) file.open(filename+".thr", std::ios_base::app); + else file.open(filename+".thr"); + + if(!file) std::cerr << "File for saving (" << filename+".thr" << ") could not be opened!" << std::endl; + + if(dirichptr==NULL){ + for (auto& dirichlistitem: dirichlist){ + file << "# Scan-Settings for 0x" << std::hex << dirichlistitem.first << std::dec << "\n# gMeasureTime\tgLowerEdge\tgUpperEdge\tgStepsize\tgNrPasses\tgMeasureTime_over\tgUpperEdge_over\tgStepsize_over\tgNrPasses_over" << std::endl; + file << "# " << dirichlistitem.second->gMeasureTime << "\t" << dirichlistitem.second->gLowerEdge << "\t" << dirichlistitem.second->gUpperEdge << "\t" << dirichlistitem.second->gStepsize << "\t" << dirichlistitem.second->gNrPasses << "\t" << dirichlistitem.second->gMeasureTime_over << "\t" << dirichlistitem.second->gUpperEdge_over << "\t" << dirichlistitem.second->gStepsize_over << "\t" << dirichlistitem.second->gNrPasses_over << std::endl; + file << "# Scan-Data\n# dirich\tchannel\tbaseline\twidth in mV\tthreshold in mV over baseline" << std::endl; + for (int ichannel=0; ichannelGetSingleBaseline(ichannel) << "\t" + << dirich::Thr_DtomV(dirichlistitem.second->GetSingleNoisewidth(ichannel)) << "\t" + << dirichlistitem.second->GetSingleThresholdmV(ichannel) + << std::endl; + } + } + } + else{ + file << "# Scan-Settings for 0x" << std::hex << dirichptr->GetBoardAddress() << std::dec << "\n# gMeasureTime\tgLowerEdge\tgUpperEdge\tgStepsize\tgNrPasses\tgMeasureTime_over\tgUpperEdge_over\tgStepsize_over\tgNrPasses_over" << std::endl; + file << "# " << dirichptr->gMeasureTime << "\t" << dirichptr->gLowerEdge << "\t" << dirichptr->gUpperEdge << "\t" << dirichptr->gStepsize << "\t" << dirichptr->gNrPasses << "\t" << dirichptr->gMeasureTime_over << "\t" << dirichptr->gUpperEdge_over << "\t" << dirichptr->gStepsize_over << "\t" << dirichptr->gNrPasses_over << std::endl; + file << "# Scan-Data\n# dirich\tchannel\tbaseline\twidth in mV\tthreshold in mV over baseline" << std::endl; + for (int ichannel=0; ichannelGetBoardAddress() << std::dec << "\t" + << ichannel << "\t" + << dirichptr->GetSingleBaseline(ichannel) << "\t" + << dirich::Thr_DtomV(dirichptr->GetSingleNoisewidth(ichannel)) << "\t" + << dirichptr->GetSingleThresholdmV(ichannel) + << std::endl; + } + } +} + +void load_base(std::shared_ptr dirichptr, std::string filename, bool uselast, bool set_base, bool set_thr){ + std::string dirichaddress_string=""; + uint16_t dirichaddress=0; + int channel=0; + int baseline=0; + double width=0; + double thresholdinmV=0; + for (auto& dirichlistitem: dirichlist){ + if(dirichlistitem.second==NULL){ + std::cerr << "dirich 0x" << std::hex << dirichlistitem.first << std::dec << " was found uninitialized\nRun initialize_diriches(1/0) first!" << std::endl; + return; + } + } + std::ifstream file; + file.open(filename); + if(!file) std::cerr << "File for loading (" << filename << ") could not be opened!" << std::endl; + if(dirichptr==NULL){ + while(!file.eof()){ + std::string line; + std::getline(file, line); + std::istringstream iss(line); + iss >> dirichaddress_string; + if(dirichaddress_string=="#"){ + std::string dummy; + std::getline(iss,dummy); + continue; + } + iss >> channel >> baseline >> width >> thresholdinmV; + if(iss.tellg()!=-1) std::cerr << "Error reading line:\n" << line << "\nRead in:" << "\ndirichaddress:0x" << dirichaddress_string << "\nchannel:" << channel << "\nbaseline:" << baseline << "\nwidth:" << width << "\nthresholdinmV:" << thresholdinmV << std::endl; + else{ + dirichaddress = (uint16_t)stoi(dirichaddress_string,0,16); + // std::cout << "0x" << dirichaddress_string << " " << std::hex << dirichaddress << std::dec << " " << channel << " " << baseline << std::endl; + if(dirichlist.count(dirichaddress)!=0){ + if(set_base!=0){ + dirichlist.at(dirichaddress)->SetSingleBaseline_old(channel, dirichlist.at(dirichaddress)->GetSingleBaseline(channel)); + dirichlist.at(dirichaddress)->SetSingleBaseline(channel, baseline); + + dirichlist.at(dirichaddress)->SetSingleNoisewidth_old(channel, dirichlist.at(dirichaddress)->GetSingleNoisewidth(channel)); + dirichlist.at(dirichaddress)->SetSingleNoisewidth(channel, dirich::Thr_mVtoD(width)); + } + if(set_thr!=0) dirichlist.at(dirichaddress)->SetSingleThresholdmV(channel, thresholdinmV); + } + else{ + std::cerr << "dirich 0x" << std::hex << dirichaddress << std::dec << " was not found in list of initialized diriches" << std::endl; + continue; + } + } + } + for (auto& dirichlistitem: dirichlist){ + for(int ichannel=0;ichannelGetSingleBaseline(ichannel)==0) std::cerr << "No Baseline for dirich 0x" << std::hex << dirichlistitem.first << std::dec << "'s channel " << ichannel << " found in loading-file" << std::endl; + } + } + } + else if(uselast){ + if(set_base!=0){ + for(int ichannel=0;ichannel<32;++ichannel){ + dirichptr->SetSingleBaseline_old(ichannel, dirichptr->GetSingleBaseline(ichannel)); + dirichptr->SetSingleNoisewidth_old(ichannel, dirichptr->GetSingleNoisewidth(ichannel)); + } + } + while(!file.eof()){ + std::string line; + std::getline(file, line); + std::istringstream iss(line); + iss >> dirichaddress_string; + if(dirichaddress_string=="#"){ + std::string dummy; + std::getline(iss,dummy); + continue; + } + iss >> channel >> baseline >> width >> thresholdinmV; + if(iss.tellg()!=-1) std::cerr << "Error reading line:\n" << line << "\nRead in:" << "\ndirichaddress:0x" << dirichaddress_string << "\nchannel:" << channel << "\nbaseline:" << baseline << "\nwidth:" << width << "\nthresholdinmV:" << thresholdinmV << std::endl; + else{ + if(set_base!=0){ + dirichptr->SetSingleBaseline(channel, baseline); + dirichptr->SetSingleNoisewidth(channel, dirich::Thr_mVtoD(width)); + } + if(set_thr!=0) dirichptr->SetSingleThresholdmV(channel, thresholdinmV); + } + } + } + else{ + if(set_base!=0){ + for(int ichannel=0;ichannel<32;++ichannel){ + dirichptr->SetSingleBaseline_old(ichannel, dirichptr->GetSingleBaseline(ichannel)); + dirichptr->SetSingleNoisewidth_old(ichannel, dirichptr->GetSingleNoisewidth(ichannel)); + } + } + while(!file.eof()){ + std::string line; + std::getline(file, line); + std::istringstream iss(line); + iss >> dirichaddress_string; + if(dirichaddress_string=="#"){ + std::string dummy; + std::getline(iss,dummy); + continue; + } + iss >> channel >> baseline >> width >> thresholdinmV; + dirichaddress = (uint16_t)stoi(dirichaddress_string,0,16); + if(iss.tellg()!=-1) std::cerr << "Error reading line:\n" << line << "\nRead in:" << "\ndirichaddress:0x" << dirichaddress_string << "\nchannel:" << channel << "\nbaseline:" << baseline << "\nwidth:" << width << "\nthresholdinmV:" << thresholdinmV << std::endl; + else if(dirichaddress==dirichptr->GetBoardAddress()){ + if(set_base!=0){ + dirichptr->SetSingleBaseline(channel, baseline); + dirichptr->SetSingleNoisewidth(channel, dirich::Thr_mVtoD(width)); + } + if(set_thr!=0) dirichptr->SetSingleThresholdmV(channel, thresholdinmV); + } + } + } +} + +void save_graphs(std::shared_ptr dirichptr, std::string filename){ + TFile* file=new TFile(Form("%s.root", filename.c_str()),"RECREATE"); + if(dirichptr==NULL){ + file->cd(); + get_noisewidth_histo(0)->Write(); + get_2D_rate_histo(0)->Write(); + get_2D_rate_over_thr_histo(0)->Write(); + get_2D_diff_over_thr_histo(0)->Write(); + get_2D_gr_diff_over_thr_histo(0)->Write(); + get_2D_mgr_diff_over_thr_histo(0)->Write(); + for (auto& dirichlistitem: dirichlist) { + std::cout << "saving graphs of 0x" << std::hex << dirichlistitem.first << std::dec << std::endl; + TDirectory *dirich_dir = file->mkdir(Form("dirich_0x%x",dirichlistitem.first)); + dirich_dir->cd(); + get_noisewidth_histo(dirichlistitem.second)->Write(); + get_2D_rate_histo(dirichlistitem.second)->Write(); + get_2D_rate_over_thr_histo(dirichlistitem.second)->Write(); + get_2D_diff_over_thr_histo(dirichlistitem.second)->Write(); + get_2D_gr_diff_over_thr_histo(dirichlistitem.second)->Write(); + get_2D_mgr_diff_over_thr_histo(dirichlistitem.second)->Write(); + TDirectory *channels = dirich_dir->mkdir("channels"); + channels->cd(); + for(int ichannel=0;ichannelmkdir(Form("ch:%i",ichannel)); + ch->cd(); + dirichlistitem.second->gRateGraphs[ichannel]->Write(); + dirichlistitem.second->gRateGraphsOverBase[ichannel]->Write(); + dirichlistitem.second->gDiffRateGraphsOverBase[ichannel]->Write(); + } + } + } + else{ + file->cd(); + TDirectory *dirich_dir = file->mkdir(Form("dirich_0x%x",dirichptr->GetBoardAddress())); + dirich_dir->cd(); + get_noisewidth_histo(dirichptr)->Write(); + get_2D_rate_histo(dirichptr)->Write(); + get_2D_rate_over_thr_histo(dirichptr)->Write(); + get_2D_diff_over_thr_histo(dirichptr)->Write(); + get_2D_gr_diff_over_thr_histo(dirichptr)->Write(); + get_2D_mgr_diff_over_thr_histo(dirichptr)->Write(); + TDirectory *channels = dirich_dir->mkdir("channels"); + channels->cd(); + for(int ichannel=0;ichannelmkdir(Form("ch:%i",ichannel)); + ch->cd(); + dirichptr->gRateGraphs[ichannel]->Write(); + dirichptr->gRateGraphsOverBase[ichannel]->Write(); + dirichptr->gDiffRateGraphsOverBase[ichannel]->Write(); + } + } + file->Close(); +} + +void save(){ + std::array buffer; + buffer.fill(0); + time_t rawtime; + time(&rawtime); + const auto timeinfo = localtime(&rawtime); + strftime(buffer.data(), sizeof(buffer), "%Y%m%d_%H%M%S", timeinfo); + std::string str = std::string(buffer.data()) + "_std_save"; + // std::string str = "./save/"+ string(buffer.data()) + "_std_save"; + + // auto t = std::time(nullptr); + // auto tm = *std::localtime(&t); + + // std::ostringstream oss; + // oss << std::put_time(&tm, "%Y%m%d_%H%M%S") << "_std_save.dico"; + // auto str = oss.str(); + save_base(NULL,str,0); + save_graphs(NULL,str); +} + +void* scanthread_baseline(void* dirichptr) //Argument is pointer to DiRICH class instance +{ + TThread::Printf("Starting baseline for Dirich at address 0x%x",((dirich*)dirichptr)->GetBoardAddress()); + ((dirich*)dirichptr)->DoBaselineScan(); + TThread::Printf("Threshold scan for Dirich at address 0x%x done ! ",((dirich*)dirichptr)->GetBoardAddress()); + return 0; +} + +void* scanthread_nrml(void* dirichptr) //Argument is pointer to DiRICH class instance +{ + TThread::Printf("Starting threshscan for Dirich at address 0x%x",((dirich*)dirichptr)->GetBoardAddress()); + std::cout << "DoThreshScan" << std::endl; + ((dirich*)dirichptr)->DoThreshScan(); + std::cout << "AnalyzeBaseline" << std::endl; + ((dirich*)dirichptr)->AnalyzeBaseline(); + std::cout << "MakeGraphsOverBase" << std::endl; + ((dirich*)dirichptr)->MakeGraphsOverBase(); + std::cout << "MakeDiffGraphsOverBase" << std::endl; + ((dirich*)dirichptr)->MakeDiffGraphsOverBase(); + TThread::Printf("Threshold scan for Dirich at address 0x%x done ! ",((dirich*)dirichptr)->GetBoardAddress()); + return 0; +} + +void* scanthread_over(void* dirichptr) //Argument is pointer to DiRICH class instance +{ + TThread::Printf("Starting threshscan_over for Dirich at address 0x%x",((dirich*)dirichptr)->GetBoardAddress()); + ((dirich*)dirichptr)->DoThreshScanOverBase(); + ((dirich*)dirichptr)->MakeDiffGraphsOverBase(); + TThread::Printf("Threshold scan for Dirich at address 0x%x done ! ",((dirich*)dirichptr)->GetBoardAddress()); + return 0; +} + +void* scanthread_thr(void* dirichptr) //Argument is pointer to DiRICH class instance +{ + TThread::Printf("Starting threshsearch for Dirich at address 0x%x",((dirich*)dirichptr)->GetBoardAddress()); + ((dirich*)dirichptr)->DoThreshSearch(); + TThread::Printf("Threshold search for Dirich at address 0x%x done ! ",((dirich*)dirichptr)->GetBoardAddress()); + return 0; +} + +// void* scanthread_std(void* dirichptr) //Argument is pointer to DiRICH class instance +// { +// TThread::Printf("Starting threshscan for Dirich at address 0x%x",((dirich*)dirichptr)->GetBoardAddress()); +// ((dirich*)dirichptr)->DoThreshScan(); +// // ((dirich*)dirichptr)->MakeDiffGraphsOverBase(); +// TThread::Printf("Threshold scan for Dirich at address 0x%x done ! ",((dirich*)dirichptr)->GetBoardAddress()); +// return 0; +// } + +// void single_thr_scan(int type=0, std::shared_ptr dirich_to_scan=NULL){ +// int ret=0; +// if(dirich_to_scan==NULL){ +// std::cerr << "DiRICH not initialized!" << std::endl; +// return; +// } + +// uint32_t TDC_setting[2]; +// ret=trb_register_read(dirich_to_scan->GetBoardAddress(), 0xc802, TDC_setting, 2); //switch off TDC +// if(ret==-1){ +// std::cerr << "Reading TDCs status failed for dirich " << std::hex << dirich_to_scan->GetBoardAddress() << std::dec << " -> TDC for that dirich will be left switched off" << std::endl; +// } + +// ret=trb_register_write(dirich_to_scan->GetBoardAddress(), 0xc802, 0x00000000); //switch off TDC +// if(ret==-1){ +// std::cerr << "Switching off TDCs failed for dirich " << std::hex << dirich_to_scan->GetBoardAddress() << std::dec << " -> Interupting baselinescan" << std::endl; +// // return; +// } + +// TThread* thread; +// switch(type){ +// case 1: +// thread = new TThread(Form("Thread_%i",(int)dirich_to_scan->GetBoardAddress()), scanthread_baseline, (void*) dirich_to_scan); +// break; +// case 2: +// thread = new TThread(Form("Thread_%i",(int)dirich_to_scan->GetBoardAddress()), scanthread_thr, (void*) dirich_to_scan); +// break; +// case 3: +// thread = new TThread(Form("Thread_%i",(int)dirich_to_scan->GetBoardAddress()), scanthread_over, (void*) dirich_to_scan); +// break; +// case 0: +// default: +// thread = new TThread(Form("Thread_%i",(int)dirich_to_scan->GetBoardAddress()), scanthread_nrml, (void*) dirich_to_scan); +// break; +// } +// usleep(1000); +// thread->Run(); +// printf("Waiting: \n"); +// usleep(1000); + +// thread->Join(); +// thread->Delete(); + +// printf("System scan done ! \n"); +// switch(type){ +// case 1: +// save(); +// break; +// case 2: +// save(); +// break; +// case 3: +// save(); +// break; +// case 0: +// default: +// save(); +// break; +// } + +// ret=trb_register_write(dirich_to_scan->GetBoardAddress(), 0xc802, TDC_setting[1]); +// if(ret==-1){ +// std::cerr << "Switching on TDCs failed for dirich: " << std::hex << dirich_to_scan->GetBoardAddress() << std::dec << std::endl; +// } + +// } + +void system_thr_scan(int type=0) +{ + int ret=0; + + std::map TDC_setting; + std::map TDC_set; + for (auto& dirichlistitem: dirichlist) { + if(dirichlistitem.second==NULL){ + std::cerr << "DiRICH " << std::hex << dirichlistitem.first << std::dec << " not initialized! Not switching off TDC" << std::endl; + TDC_set.insert(std::pair(dirichlistitem.first,1)); + continue; + } + if(dirichlistitem.second->IsJansReadout()){ + std::cerr << "DiRICH " << std::hex << dirichlistitem.first << std::dec << " has no TDC" << std::endl; + TDC_set.insert(std::pair(dirichlistitem.first,2)); + continue; + } + if(dirichlistitem.second->IsSim()){ + std::cerr << "DiRICH " << std::hex << dirichlistitem.first << std::dec << " is only simulated" << std::endl; + TDC_set.insert(std::pair(dirichlistitem.first,2)); + continue; + } + uint32_t temp_tdc_setting[2]; + ret=trb_register_read(dirichlistitem.first, 0xc802, temp_tdc_setting, 2); //switch off TDC + // std::cout << std::hex << temp_tdc_setting[0] << "\t" << temp_tdc_setting[1] << std::endl; + if(ret!=2 || temp_tdc_setting[0]!=dirichlistitem.first){ + std::cerr << "Reading TDCs status failed for dirich " << std::hex << dirichlistitem.first << std::dec << " -> TDC for that dirich will be left switched off" << std::endl; + temp_tdc_setting[1] = 0x0; + } + + ret=trb_register_write(dirichlistitem.first, 0xc802, 0x00000000); //switch off TDC + if(ret==-1){ + TDC_set.insert(std::pair(dirichlistitem.first,3)); + continue; + } + TDC_set.insert(std::pair(dirichlistitem.first,4)); + TDC_setting.insert(std::pair(dirichlistitem.first,temp_tdc_setting[1])); + } + + std::vector threadlist; + // Initialize instances of dirich class for each module + for (auto& dirichlistitem: dirichlist){ + if(dirichlistitem.second==NULL){ + std::cerr << "DiRICH " << std::hex << dirichlistitem.first << std::dec << " not initialized!" << std::endl; + continue; + } + if(TDC_set.at(dirichlistitem.first)==3){ + std::cerr << "Switching off TDCs failed for dirich " << std::hex << dirichlistitem.first << std::dec << " -> Skipping" << std::endl; + continue; + } + switch(type){ + case 1: + threadlist.push_back(new TThread(Form("Thread_%i",(int)dirichlistitem.first), scanthread_baseline, (void*) dirichlistitem.second.get())); + break; + case 2: + threadlist.push_back(new TThread(Form("Thread_%i",(int)dirichlistitem.first), scanthread_thr, (void*) dirichlistitem.second.get())); + break; + case 3: + threadlist.push_back(new TThread(Form("Thread_%i",(int)dirichlistitem.first), scanthread_over, (void*) dirichlistitem.second.get())); + break; + case 0: + default: + threadlist.push_back(new TThread(Form("Thread_%i",(int)dirichlistitem.first), scanthread_nrml, (void*) dirichlistitem.second.get())); + break; + } + usleep(1000); + threadlist.back()->Run(); + } + // cout << threadlist.size() << std::endl; + printf("Waiting: \n"); + usleep(1000); + + for(auto& thread : threadlist){ + // cout << thread->GetState() << std::endl; + // thread.second->Join(); + thread->Join(); + thread->Delete(); + } + // threadlist.clear(); + printf("System scan done ! \n"); + switch(type){ + case 1: + save(); + break; + case 2: + break; + case 3: + save(); + break; + case 0: + default: + save(); + break; + } + + for (auto& TDC_setting_item: TDC_setting) { + if(TDC_set.at(TDC_setting_item.first)!=4) continue; + ret=trb_register_write(TDC_setting_item.first, 0xc802, TDC_setting_item.second); //switch off TDC + if(ret==-1){ + std::cerr << "Switching on TDCs failed for dirich: " << std::hex << TDC_setting_item.first << std::dec << std::endl; + } + } +} + +void initialize_diriches(bool search_dirich){ +// void initialize_diriches(bool search_dirich, std::vector ranges, int NrPasses, double meas_time){ + TH1::AddDirectory(0); + int ret=0; + ret=init_ports(); + + if(ret==-1){ + std::cerr << "failed to initialize trb-net ports" << std::endl; + } + dirichlist.clear(); + + if(search_dirich){ + int dirich_counter=0; + // const size_t size4mb = 4194304; + const size_t size4mb = 8000; //sufficient for 2000 DiRICHes + uint32_t buffer[size4mb]; + for(int i=0;i<100;++i){ + TRBAccessMutex.Lock(); + ret=trb_read_uid(0xfe51, buffer, size4mb); + TRBAccessMutex.UnLock(); + if(ret>0) break; + } + if(ret<0){ + std::cerr << "No TRB3 Modules found!!!" << std::endl; + return; + } + for(int i=0;i0x1200 && buffer[i+3]<0x1200) + dirichlist.insert(std::make_pair(uint16_t(buffer[i+3]),std::shared_ptr(new dirich(uint16_t(buffer[i+3]))))); + ++dirich_counter; + std::cout << "Created DiRICH-Object for DiRICH with address: 0x" << std::hex << buffer[i+3] << std::endl; + // std::cout << dirichlist.at(uint16_t(buffer[i+3]))->GetBoardUID() << std::endl; + if(dirichlist.at(uint16_t(buffer[i+3]))->gMeasureTime!=.3){ //pls change it according to your initialization... Sure one should rather throw during init... but well I am lazy + std::cout << "DiRICH 0x" << std::hex << uint16_t(buffer[i+3]) << " not correclty initialized. Deleting!" << std::endl; + // delete dirichlist.at(uint16_t(buffer[i+3])); + dirichlist.erase(uint16_t(buffer[i+3])); + } + // std::cout << dirichlist.at(uint16_t(buffer[i+3]))->gLowerEdge << std::endl; + // std::cout << dirichlist.at(uint16_t(buffer[i+3]))->gUpperEdge << std::endl; + } + std::cout << "Found " << std::dec << dirich_counter << " different diriches\nInitialized " << dirichlist.size() << " out of those" << std::endl; + } +} + +void setup_scan_parameters(std::shared_ptr dirichptr, double gMeasureTime, int gLowerEdge, int gUpperEdge, int gStepsize, int gNrPasses){ + if(dirichptr==NULL){ + for (auto& dirichlistitem: dirichlist) { + if(dirichlistitem.second==NULL){ + std::cerr << "dirich 0x" << std::hex << dirichlistitem.first << std::dec << " not initialized" << std::endl; + continue; + } + dirichlistitem.second->gMeasureTime = gMeasureTime; + dirichlistitem.second->gLowerEdge = gLowerEdge; + dirichlistitem.second->gUpperEdge = gUpperEdge; + dirichlistitem.second->gStepsize = gStepsize; + dirichlistitem.second->gNrPasses = gNrPasses; + } + } + else{ + dirichptr->gMeasureTime = gMeasureTime; + dirichptr->gLowerEdge = gLowerEdge; + dirichptr->gUpperEdge = gUpperEdge; + dirichptr->gStepsize = gStepsize; + dirichptr->gNrPasses = gNrPasses; + } +} + +void setup_scan_parameters_over_thr_mV(std::shared_ptr dirichptr, double gMeasureTime, double gUpperEdgemV, double gStepsizemV, int gNrPasses){ + if(dirichptr==NULL){ + for (auto& dirichlistitem: dirichlist) { + if(dirichlistitem.second==NULL){ + std::cerr << "dirich 0x" << std::hex << dirichlistitem.first << std::dec << " not initialized" << std::endl; + continue; + } + dirichlistitem.second->gMeasureTime_over = gMeasureTime; + dirichlistitem.second->gUpperEdge_over = gUpperEdgemV; + dirichlistitem.second->gStepsize_over = gStepsizemV; + dirichlistitem.second->gNrPasses_over = gNrPasses; + } + } + else{ + dirichptr->gMeasureTime_over = gMeasureTime; + dirichptr->gUpperEdge_over = gUpperEdgemV; + dirichptr->gStepsize_over = gStepsizemV; + dirichptr->gNrPasses_over = gNrPasses; + } +} + + +int main(int argc, char* argv[]){ + std::string loading_file = ""; + std::string save_file = ""; + // Declare the supported options. + po::options_description desc("Allowed options"); + desc.add_options() + ("help,h", "produce help message") + ("info,i", "only initialize diriches") + // ("use-dirich,u", po::value>()->multitoken(), "Add diriches to the dirichlist. If dirich does not exist it will be simulated") + // ("dont-search-dirich", "Dont't search for active diriches during startup.") + // ("scan-baseline-new,n", "Do new baselinescan (Michaels method). No parameters need to be given!") + ("scan-baseline,b", po::value>()->multitoken(), "Do standard baselinescan. Six parameters need to be given:dirich (if 0, all diriches), measure-time (s), threshold-start-value, threshold-end-value, threshold-step-width, number of cycles (two refers to every second channel measured at a time. Values will be set for all diriches!") + ("find-threshold,r", "find the perfect threshold for the given dirich/maptm-channel-combination. No parameters need to be given.") + // ("find-threshold,i", po::value(),"find the perfect threshold for the given dirich/maptm-channel-combination. The parameter specifies the method to find the perfect threshold:\n0: searches for the minimum in the differentiated spectrum or for the minimal gradient\n0>()->multitoken(), "Do scan for threshold-values greater than the diriches noiseband. Five parameters need to be given:dirich (if 0, all diriches), measure-time (s), threshold-end-value (mV), threshold-step-width (mV), number of cycles (two refers to every second channel measured at a time") + ("load-baseline,l", po::value>()->multitoken(), "This option loads the baseline from the file specified in --loading-file. If no file was specified, the latest produced file is choosen. One can specify a certain dirich by using this options parameter. Be aware that this option overwrites the baseline retreived from the baselinescan") + ("load-threshold", po::value>()->multitoken(), "This option loads the threshold from the file specified in --loading-file. If no file was specified, the latest produced file is choosen. One can specify a certain dirich by using this options parameter. Be aware that the thresholds are overwriten by --set-threshold") + ("loading-file,f", po::value(&loading_file)->default_value(""), "File to load thresholds and/or baseline from") + ("save,s", po::value>()->multitoken(), "Save histograms and data of specified dirich after everything else is executed! Autosaves will be still produced and saved via \"DATE_std_save{.thr,.root}\". Savefile can be set via --save-file") + ("save-file", po::value(&save_file)->default_value(""), "Save histograms and data. If no file specified, a std. filename will be produced") + ("draw-scan-baseline,d", po::value>()->multitoken(), "Draw the results of the baselinescan. Dirich can be specified using this options parameter. Obviously this function fails if no scan was done!") + ("draw-scan-above-noise", po::value>()->multitoken(), "Draw the results of the thresholdscan above the diriches noiseband. Dirich can be specified using this options parameter. Obviously this function fails if no scan was done!") + ("draw-scan-above-noise-diff-gr", po::value>()->multitoken(), "Draw the results of the baselinescan above the diriches noiseband as differential plot. Dirich can be specified using this options parameter. Obviously this function fails if no scan was done!") + ("draw-noisewidth,w", po::value>()->multitoken(), "Draw the noisewidth. Dirich can be specified using this options parameter. Obviously this function fails if neither a scan was done nor a threshold-setting was loaded!") + ("set-threshold,t", po::value>()->multitoken(), "Set threshold for specified diriches in mV. First Parameter specifies the dirich (0 equals all dirichs), the second the threshold. Only positive threshold values are accepted, as the minus-sign induces errors.") + ; +// implicit_value(std::vector{"0"},"0") + po::variables_map vm; + po::store(po::parse_command_line(argc, argv, desc), vm); + po::notify(vm); + + if (vm.count("help")) { + std::cout << desc << std::endl; + return 0; + } + if(loading_file==""){ + fs::path latest; + std::time_t latest_tm {}; + for (auto&& entry : boost::make_iterator_range(fs::directory_iterator("."), {})) { + fs::path p = entry.path(); + if (is_regular_file(p) && p.extension() == ".thr") + { + std::time_t timestamp = fs::last_write_time(p); + if (timestamp > latest_tm) { + latest = p; + latest_tm = timestamp; + } + } + } + loading_file = latest.filename().string(); + } + // if(vm.count("use-diriches")){ + // for(auto& use_diriches_options : vm["use-diriches"].as>()){ + // dirichlist.emplace(std::stoi(use_diriches_options.substr(use_diriches_options.find("0x")!=std::string::npos ? use_diriches_options.find("0x")+2 : 0),NULL,16),(dirich*)NULL); + // } + // } + + // if(!vm.count("dont-search-dirich")) initialize_diriches(1); + // else initialize_diriches(0); + + initialize_diriches(1); + if(vm.count("info")){ + return 0; + } + // if(vm.count("scan-baseline-new")){ + // system_thr_scan(1); + + // if(vm.count("draw-scan-baseline")){ + // // std::cout << "draw-scan-baseline" << std::endl; + // if(vm["draw-scan-baseline"].empty()){ + // draw_histo(get_2D_rate_histo(NULL),NULL); + // } + // for(auto& draw_scan_baseline_options : vm["draw-scan-baseline"].as>()){ + // // std::cout << "input for draw-scan-baseline: " << draw_scan_baseline_options << std::endl; + // if(draw_scan_baseline_options=="0") draw_histo(get_2D_rate_histo(NULL),NULL); + // else draw_histo(get_2D_rate_histo(dirichlist.at(std::stoi(draw_scan_baseline_options.substr(draw_scan_baseline_options.find("0x")!=std::string::npos ? draw_scan_baseline_options.find("0x")+2 : 0),NULL,16))),NULL); + // } + // } + // if(vm.count("draw-noisewidth")){ + // if(vm["draw-noisewidth"].empty()){ + // draw_histo(get_noisewidth_histo(NULL),NULL); + // } + // for(auto& draw_noisewidth_options : vm["draw-noisewidth"].as>()){ + // if(draw_noisewidth_options=="0") draw_histo(get_noisewidth_histo(NULL),NULL); + // else draw_histo(get_noisewidth_histo(dirichlist.at(std::stoi(draw_noisewidth_options.substr(draw_noisewidth_options.find("0x")!=std::string::npos ? draw_noisewidth_options.find("0x")+2 : 0),NULL,16))),NULL); + // } + // } + // } + + if(vm.count("scan-baseline")){ + if(vm["scan-baseline"].empty() || (vm["scan-baseline"].as>()).size() < 6){ + std::cout << "no or less than six arguments were provided for option --scan-baseline:\nrunning scan with std. parameters" << std::endl; + } + else{ + std::vector> each_scan_base_opt; + std::vector temp_vec; + for(auto& scan_base_opt : vm["scan-baseline"].as>()){ + std::cout << scan_base_opt << std::endl; + if(scan_base_opt.find("0x")!=std::string::npos || scan_base_opt=="0"){ + // std::cout << "0 or 0x" <>()){ + // std::cout << "input for draw-scan-baseline: " << draw_scan_baseline_options << std::endl; + if(draw_scan_baseline_options=="0") draw_histo(get_2D_rate_histo(NULL),NULL); + else draw_histo(get_2D_rate_histo(dirichlist.at(std::stoi(draw_scan_baseline_options.substr(draw_scan_baseline_options.find("0x")!=std::string::npos ? draw_scan_baseline_options.find("0x")+2 : 0),NULL,16))),NULL); + } + } + if(vm.count("draw-noisewidth")){ + if(vm["draw-noisewidth"].empty()){ + draw_histo(get_noisewidth_histo(NULL),NULL); + } + for(auto& draw_noisewidth_options : vm["draw-noisewidth"].as>()){ + if(draw_noisewidth_options=="0") draw_histo(get_noisewidth_histo(NULL),NULL); + else draw_histo(get_noisewidth_histo(dirichlist.at(std::stoi(draw_noisewidth_options.substr(draw_noisewidth_options.find("0x")!=std::string::npos ? draw_noisewidth_options.find("0x")+2 : 0),NULL,16))),NULL); + } + } + } + + if(vm.count("load-baseline")){ + // std::cout << "inside load baseline" << std::endl; + if(loading_file==""){ + std::cout << "no loading-file found!\n! aborting !" << std::endl; + } + else{ + std::cout << "loading_file: " << loading_file << std::endl; + for(auto& load_baseline_opt : vm["load-baseline"].as>()){ + if(load_baseline_opt=="0") load_base(NULL, loading_file, 0, 1, 0); + else load_base(dirichlist.at(std::stoi(load_baseline_opt.substr(load_baseline_opt.find("0x")!=std::string::npos ? load_baseline_opt.find("0x")+2 : 0),NULL,16)), loading_file, 0, 1, 0); + } + if(vm.count("draw-noisewidth")){ + if(vm["draw-noisewidth"].empty()){ + draw_histo(get_noisewidth_histo(NULL),NULL); + } + for(auto& draw_noisewidth_options : vm["draw-noisewidth"].as>()){ + if(draw_noisewidth_options=="0") draw_histo(get_noisewidth_histo(NULL),NULL); + else draw_histo(get_noisewidth_histo(dirichlist.at(std::stoi(draw_noisewidth_options.substr(draw_noisewidth_options.find("0x")!=std::string::npos ? draw_noisewidth_options.find("0x")+2 : 0),NULL,16))),NULL); + } + } + } + } + + if(vm.count("scan-above-noise")){ + if(vm["scan-above-noise"].empty() || (vm["scan-above-noise"].as>()).size() < 5){ + std::cout << "no or less than five arguments were provided for option --scan-above-noise:\nrunning scan with std. parameters" << std::endl; + } + else{ + std::vector> each_scan_above_noise_opt; + std::vector temp_vec; + for(auto& scan_above_noise_opt : vm["scan-above-noise"].as>()){ + if(scan_above_noise_opt.find("0x")!=std::string::npos || scan_above_noise_opt=="0"){ + if(temp_vec.size()==5){ + each_scan_above_noise_opt.push_back(temp_vec); + } + temp_vec.clear(); + } + temp_vec.push_back(scan_above_noise_opt); + } + if(temp_vec.size()==5){ + each_scan_above_noise_opt.push_back(temp_vec); + } + for(auto& one_scan_above_noise_opt : each_scan_above_noise_opt){ + std::cout << std::stoi(one_scan_above_noise_opt.at(0).substr(one_scan_above_noise_opt.at(0).find("0x")!=std::string::npos ? one_scan_above_noise_opt.at(0).find("0x")+2 : 0),NULL,16) << "\t" + << std::stod(one_scan_above_noise_opt.at(1)) << "\t" + << std::stod(one_scan_above_noise_opt.at(2)) << "\t" + << std::stod(one_scan_above_noise_opt.at(3)) << "\t" + << std::stoi(one_scan_above_noise_opt.at(4)) + << std::endl; + setup_scan_parameters_over_thr_mV(one_scan_above_noise_opt.at(0) == "0" ? 0 : dirichlist.at(std::stoi(one_scan_above_noise_opt.at(0).substr(one_scan_above_noise_opt.at(0).find("0x")!=std::string::npos ? one_scan_above_noise_opt.at(0).find("0x")+2 : 0),NULL,16)) + , std::stod(one_scan_above_noise_opt.at(1)) + , std::stod(one_scan_above_noise_opt.at(2)) + , std::stod(one_scan_above_noise_opt.at(3)) + , std::stoi(one_scan_above_noise_opt.at(4)) + ); + } + } + system_thr_scan(3); + } + + if(vm.count("find-threshold")){ + for(auto& dirich : dirichlist){ + dirich.second->gThreshold_finding_method = 0; + // dirich.second->gThreshold_finding_method = vm["find-threshold"].as(); + std::cout << dirich.second->gThreshold_finding_method << std::endl; + } + system_thr_scan(2); + } + + if(vm.count("load-threshold")){ + for(auto& load_threshold_options : vm["load-threshold"].as>()){ + if(load_threshold_options=="0") load_base(NULL, loading_file,0, 0, 1); + else load_base(dirichlist.at(std::stoi(load_threshold_options.substr(load_threshold_options.find("0x")!=std::string::npos ? load_threshold_options.find("0x")+2 : 0),NULL,16)), loading_file, 0, 0, 1); + } + } + + if(vm.count("set-threshold")){ + if(vm["set-threshold"].empty() || (vm["set-threshold"].as>()).size() < 2){ + std::cout << "no or less than two arguments were provided for option --set-threshold:\nno thresholds will be set" << std::endl; + } + else{ + std::vector> each_set_threshold_opt; + std::vector temp_vec; + for(auto& set_threshold_opt : vm["set-threshold"].as>()){ + if(set_threshold_opt.find("0x")!=std::string::npos || set_threshold_opt=="0"){ + if(temp_vec.size()==2){ + each_set_threshold_opt.push_back(temp_vec); + } + temp_vec.clear(); + } + temp_vec.push_back(set_threshold_opt); + } + if(temp_vec.size()==2){ + each_set_threshold_opt.push_back(temp_vec); + } + for(auto& one_set_threshold_opt : each_set_threshold_opt){ + std::cout << std::stoi(one_set_threshold_opt.at(0).substr(one_set_threshold_opt.at(0).find("0x")!=std::string::npos ? one_set_threshold_opt.at(0).find("0x")+2 : 0),NULL,16) << "\t" + << std::stod(one_set_threshold_opt.at(1)) + << std::endl; + set_thresholds(one_set_threshold_opt.at(0) == "0" ? 0 : dirichlist.at(std::stoi(one_set_threshold_opt.at(0).substr(one_set_threshold_opt.at(0).find("0x")!=std::string::npos ? one_set_threshold_opt.at(0).find("0x")+2 : 0),NULL,16)), std::stod(one_set_threshold_opt.at(1))); + } + } + } + + if(vm.count("scan-above-noise")){ + if(vm.count("draw-scan-above-noise")){ + if(vm["draw-scan-above-noise"].empty()){ + draw_histo(get_2D_rate_over_thr_histo(NULL),NULL); + } + for(auto& draw_scan_above_noise_options : vm["draw-scan-above-noise"].as>()){ + if(draw_scan_above_noise_options=="0") draw_histo(get_2D_rate_over_thr_histo(NULL),NULL); + else draw_histo(get_2D_rate_over_thr_histo(dirichlist.at(std::stoi(draw_scan_above_noise_options.substr(draw_scan_above_noise_options.find("0x")!=std::string::npos ? draw_scan_above_noise_options.find("0x")+2 : 0),NULL,16))),NULL); + } + } + if(vm.count("draw-scan-above-noise-diff-gr")){ + if(vm["draw-scan-above-noise-diff-gr"].empty()){ + draw_multigraph(get_2D_mgr_diff_over_thr_histo(NULL),NULL); + } + for(auto& draw_scan_above_noise_diff_options : vm["draw-scan-above-noise-diff-gr"].as>()){ + if(draw_scan_above_noise_diff_options=="0") draw_multigraph(get_2D_mgr_diff_over_thr_histo(NULL),NULL); + else draw_multigraph(get_2D_mgr_diff_over_thr_histo(dirichlist.at(std::stoi(draw_scan_above_noise_diff_options.substr(draw_scan_above_noise_diff_options.find("0x")!=std::string::npos ? draw_scan_above_noise_diff_options.find("0x")+2 : 0),NULL,16))),NULL); + } + } + } + + if(save_file==""){ + std::array buffer; + buffer.fill(0); + time_t rawtime; + time(&rawtime); + const auto timeinfo = localtime(&rawtime); + strftime(buffer.data(), sizeof(buffer), "%Y%m%d_%H%M%S", timeinfo); + save_file = std::string(buffer.data()) + "_std_save"; + } + else{ + save_file=vm["save-file"].as(); + } + + if(vm.count("save")){ + for(auto& save_options : vm["save"].as>()){ + if(save_options=="0"){ + save_base(NULL,save_file,1); + save_graphs(NULL,save_file); + } + else{ + save_base(dirichlist.at(std::stoi(save_options.substr(save_options.find("0x")!=std::string::npos ? save_options.find("0x")+2 : 0),NULL,16)),save_file,1); + save_graphs(dirichlist.at(std::stoi(save_options.substr(save_options.find("0x")!=std::string::npos ? save_options.find("0x")+2 : 0),NULL,16)),save_file); + } + } + } + + std::string str = save_file + "_all_canvases.pdf"; + uint counter=0; + for(auto& canvases : canvasvector){ + if(counter==0 && canvasvector.size()>1) canvases->Print(Form("%s(",str.c_str())); + else if(counter==canvasvector.size()-1) canvases->Print(Form("%s)",str.c_str())); + else canvases->Print(str.c_str()); + counter++; + } + + return 0; +} diff --git a/thresholds/trb_dirich_threshold/obsolete/test_trbnet b/thresholds/trb_dirich_threshold/obsolete/test_trbnet new file mode 100755 index 0000000000000000000000000000000000000000..4914597988dc43d448a6b47666299e10e1485c9d GIT binary patch literal 113808 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 literal 0 HcmV?d00001 diff --git a/thresholds/trb_dirich_threshold/obsolete/test_trbnet.cc b/thresholds/trb_dirich_threshold/obsolete/test_trbnet.cc new file mode 100644 index 0000000..8dd1c1f --- /dev/null +++ b/thresholds/trb_dirich_threshold/obsolete/test_trbnet.cc @@ -0,0 +1,7 @@ +#include "trbnet.h" +#include "trberror.h" +#include + +int main (int arc, char** argv){ + std::cout << init_ports() << trb_strerror() << std::endl; +} diff --git a/thresholds/trb_dirich_threshold/setLD b/thresholds/trb_dirich_threshold/setLD new file mode 100644 index 0000000..f1c3623 --- /dev/null +++ b/thresholds/trb_dirich_threshold/setLD @@ -0,0 +1 @@ +export LD_LIBRARY_PATH=/home/hadaq/trbsoft/analysis/trb3/rootbuild/lib:/home/hadaq/trbsoft/trbnettools//lib:/usr/lib:"$LD_LIBRARY_PATH" diff --git a/thresholds/trb_dirich_threshold/trbnetcom.h b/thresholds/trb_dirich_threshold/trbnetcom.h new file mode 100644 index 0000000..1bbe014 --- /dev/null +++ b/thresholds/trb_dirich_threshold/trbnetcom.h @@ -0,0 +1,87 @@ +#include "trbnet.h" +#include +#include + +const int NOFCOMTRIES = 100; +const int FAILDELAY = 1000; + +std::mutex TRBAccessMutex; + +inline int Ttrb_read_uid(uint16_t _BoardAddress, uint32_t* _buffer, size_t _buffer_size){ + int ret=-1; + for(int tries=0; + tries=0) break; + std::cout << "FAILED COM" << std::endl; + std::this_thread::sleep_for(std::chrono::milliseconds(FAILDELAY)); + } + return ret; +} + +inline int Ttrb_register_write_mem(uint16_t _BoardAddress, uint16_t _RegisterAddress, uint8_t _option, uint32_t* _buffer, uint32_t _buffer_size){ + int ret=-1; + for(int tries=0; + tries=0) break; + std::cout << "FAILED COM" << std::endl; + std::this_thread::sleep_for(std::chrono::milliseconds(FAILDELAY)); + } + return ret; +} + +inline int Ttrb_register_read_mem(uint16_t _BoardAddress, uint16_t _RegisterAddress, uint8_t _option, uint16_t _size, uint32_t* _buffer, uint32_t _buffer_size){ + int ret=-1; + for(int tries=0; + tries=0) break; + std::cout << "FAILED COM" << std::endl; + std::this_thread::sleep_for(std::chrono::milliseconds(FAILDELAY)); + } + return ret; +} + +inline int Ttrb_register_read(uint16_t _BoardAddress, uint16_t _RegisterAddress, uint32_t* _buffer, size_t _buffer_size){ + int ret=-1; + for(int tries=0; + tries=0) break; + std::cout << "FAILED COM" << std::endl; + std::this_thread::sleep_for(std::chrono::milliseconds(FAILDELAY)); + } + return ret; +} + +inline int Ttrb_register_write(uint16_t _BoardAddress, uint16_t _RegisterAddress, uint32_t _val){ + int ret=-1; + for(int tries=0; + tries - + diff --git a/users/gsi_dirc/EventBuilderNew.xml b/users/gsi_dirc/EventBuilderNew.xml index 6e83f5a..1ad653c 100644 --- a/users/gsi_dirc/EventBuilderNew.xml +++ b/users/gsi_dirc/EventBuilderNew.xml @@ -64,7 +64,7 @@ When starting analysis from the go4 gui, one should specify stream server with p - + @@ -73,7 +73,7 @@ When starting analysis from the go4 gui, one should specify stream server with p - + diff --git a/users/gsi_dirc/dirich_set_standard_thresholds.pl b/users/gsi_dirc/dirich_set_standard_thresholds.pl new file mode 100755 index 0000000..5d472fc --- /dev/null +++ b/users/gsi_dirc/dirich_set_standard_thresholds.pl @@ -0,0 +1,67 @@ +#!/usr/bin/perl +use warnings; +use strict; +use HADES::TrbNet; +use Time::HiRes qw(usleep); +use Data::Dumper; + +use lib "/home/hadaq/trbsoft/daqtools/dmon/code"; +use Dmon; + +my $dirich = 0x1234; +my $std_thresh = 0x6800; + +$dirich = $ARGV[0]; +if($ARGV[1]) { + $std_thresh = $ARGV[1]; + $std_thresh = hex($std_thresh); +} + +unless ($ARGV[0]) { + print "usage: $0 [std_threshold]]\n"; + exit; +} + +$dirich = hex($dirich); + +my $throffset = 0xa000; +#my $monitor = 0xdfc0; +my $monitor = 0xc001; + +my $first_channel = 0; +my $last_channel = 31; + +my $default_threshold = 0x6000; + +#my $absolute_max_threshold = 0x8000; +my $absolute_min_threshold = 0x1000; + +my @res; my $res; my $rh_res; + +trb_init_ports() or die trb_strerror(); + +# enable monitor counters +$res = trb_register_write($dirich, 0xdf80 , 0xffffffff); +if(!defined $res) { + $res = trb_strerror(); + print "error output: $res\n"; +} + + +my $command; +my $chain=0; + +my $READ = 0x0<<20; # bits to set for a read command +my $WRITE = 0x8<<20; # bits to set for a write command +my $REGNR = 24; # number of bits to shift for the register number + + +for my $channel (0 .. 31) { + $chain = ($channel <16) ? 0 : 1; + $command = ($channel&0xf)<<$REGNR | $WRITE | ($std_thresh & 0xffff); + #print "$command\n"; + Dmon::PadiwaSendCmd($command,$dirich, $chain); + usleep(10E3); +} +exit; + diff --git a/users/gsi_dirc/dirich_voltages.sh b/users/gsi_dirc/dirich_voltages.sh new file mode 100755 index 0000000..1dd4aa6 --- /dev/null +++ b/users/gsi_dirc/dirich_voltages.sh @@ -0,0 +1,11 @@ +echo "power voltage " +../frankfurt_test/trb3scadc.pl 0x8005 3 +echo "power current " +../frankfurt_test/trb3scadc.pl 0x8005 4 +echo "concentrator " +../frankfurt_test/trb3scadc.pl 0x8005 2 +echo "drich 2014" +../frankfurt_test/trb3scadc.pl 0x2014 1 +echo "drich 2015" +../frankfurt_test/trb3scadc.pl 0x2015 1 + diff --git a/users/gsi_dirc/readout.pl b/users/gsi_dirc/readout.pl index 7a63a36..0631b00 100755 --- a/users/gsi_dirc/readout.pl +++ b/users/gsi_dirc/readout.pl @@ -4,10 +4,10 @@ use strict; use Getopt::Long; my $help = ""; -my $dataPath = "/d/sep2018/"; +my $dataPath = "/d/apr2019/"; my $label = "cern"; my $time = -1; -my $name = "pilas_"; +my $name = "trb_"; my $old; my $c; @@ -39,7 +39,9 @@ $c=qq|pkill -f "daq_netmem -S $label"|; qx($c); # if any, kill existing daq_ne if(!defined $old) { - $c=qq|pkill -f "dabc_exe"|; + + + $c=qq|pkill -f "dabc_exe"|; qx($c); my $pathandfile = "$dataPath/$name.hld"; @@ -52,10 +54,9 @@ if(!defined $old) { } else { - #$c=qq|xterm -geometry 122x15-0+0 -e bash -c 'daq_evtbuild -S $label -m 9 -x $name --filesize 1536 -d file -o $dataPath'|; - $c=qq|xterm -geometry 122x15-0+0 -e bash -c 'daq_evtbuild -S $label -m 6 -x $name --filesize 1536 -d file -o $dataPath'|; + $c=qq|xterm -geometry 122x15-0+0 -e bash -c 'daq_evtbuild -S $label -m 7 -x $name --filesize 1536 -d file -o $dataPath'|; #2016 $c=qq|xterm -geometry 122x15-0+0 -e bash -c 'daq_evtbuild -S $label -m 10 -x $name --filesize 1536 -d file -o $dataPath'|; #$c=qq|xterm -geometry 122x16-0+0 -e bash -c 'daq_evtbuild -S $label -m 23 -x $name -d file -o $dataPath'|; print "test"; @@ -73,7 +74,7 @@ else { #$c=qq"xterm -geometry 82x45-0+210 -e bash -c 'daq_netmem -S $label -m 10 -i UDP:127.0.0.1:49999 -i UDP:127.0.0.1:50000 -i UDP:127.0.0.1:50001 -i UDP:127.0.0.1:50002 -i UDP:127.0.0.1:50003 -i UDP:127.0.0.1:50004 -i UDP:127.0.0.1:50005 -i UDP:127.0.0.1:50006 -i UDP:127.0.0.1:50007 -i UDP:127.0.0.1:50008'"; - $c=qq"xterm -geometry 82x44-0+234 -e bash -c 'daq_netmem -S $label -m 6 -i UDP:127.0.0.1:49999 -i UDP:127.0.0.1:50000 -i UDP:127.0.0.1:50001 -i UDP:127.0.0.1:50002 -i UDP:127.0.0.1:50003 -i UDP:127.0.0.1:50004; sleep 2 '"; + $c=qq"xterm -geometry 82x44-0+234 -e bash -c 'daq_netmem -S $label -m 7 -i UDP:127.0.0.1:49999 -i UDP:127.0.0.1:50000 -i UDP:127.0.0.1:50001 -i UDP:127.0.0.1:50002 -i UDP:127.0.0.1:50003 -i UDP:127.0.0.1:50004 -i UDP:127.0.0.1:50005; sleep 2 '"; #$c=qq"xterm -geometry 82x44-0+234 -e bash -c 'daq_netmem -S $label -m 23 -i UDP:127.0.0.1:50000 -i UDP:127.0.0.1:50001 -i UDP:127.0.0.1:50002 -i UDP:127.0.0.1:50003 -i UDP:127.0.0.1:50004 -i UDP:127.0.0.1:50005 -i UDP:127.0.0.1:50006 -i UDP:127.0.0.1:50007 -i UDP:127.0.0.1:50008 -i UDP:127.0.0.1:50009 -i UDP:127.0.0.1:50010 -i UDP:127.0.0.1:50011 -i UDP:127.0.0.1:50012 -i UDP:127.0.0.1:50013 -i UDP:127.0.0.1:50014 -i UDP:127.0.0.1:50015 -i UDP:127.0.0.1:50016 -i UDP:127.0.0.1:50017 -i UDP:127.0.0.1:50018 -i UDP:127.0.0.1:50019 -i UDP:127.0.0.1:50020 -i UDP:127.0.0.1:50021 -i UDP:127.0.0.1:50022; sleep 2'"; diff --git a/users/gsi_dirc/register_config_tdc.db b/users/gsi_dirc/register_config_tdc.db index 994186f..dd78ea5 100644 --- a/users/gsi_dirc/register_config_tdc.db +++ b/users/gsi_dirc/register_config_tdc.db @@ -37,8 +37,8 @@ # 0x201f 0 0x00000000 0x00000000 # AUX - 0x2000 0 0xffffffff 0x0000ffff - 0x2001 0 0x0000ffff 0x00000000 + 0x2000 0 0x00000000 0x00000000 + 0x2001 0 0x00000000 0x00000000 0x2002 0 0x00000000 0x00000000 0x2003 0 0x00000000 0x00000000 0x2004 0 0x00000000 0x00000000 diff --git a/users/gsi_dirc/register_configgbe.db b/users/gsi_dirc/register_configgbe.db index d7921a5..3e71469 100755 --- a/users/gsi_dirc/register_configgbe.db +++ b/users/gsi_dirc/register_configgbe.db @@ -17,7 +17,7 @@ 0x8002 0 0x8002 0x00020001 0x00030064 0x1DE8 0x578 1 1 1 1 0x0 0x8003 0 0x8003 0x00020001 0x00030064 0x1DE8 0x578 1 1 1 1 0x0 0x8004 0 0x8004 0x00020001 0x00030064 0x1DE8 0x578 1 1 1 1 0x0 - 0x8005 0 0x8005 0x00020001 0x00030064 0x1DE8 0x578 1 1 1 1 0x0 + 0x8005 0 0x8005 0x00020001 0x00030064 0x1DE8 0x578 0 1 1 1 0x0 # 0x8006 0 0x8006 0x00020001 0x00030064 0x1DE8 0x578 1 1 1 1 0x0 # 0x8007 0 0x8007 0x00020001 0x00030064 0x1DE8 0x578 1 1 1 1 0x0 # 0x8008 0 0x8008 0x00020001 0x00030064 0x1DE8 0x578 1 1 1 1 0x0 diff --git a/users/gsi_dirc/register_configgbe_ip.db b/users/gsi_dirc/register_configgbe_ip.db index a30d0c0..5a08c34 100755 --- a/users/gsi_dirc/register_configgbe_ip.db +++ b/users/gsi_dirc/register_configgbe_ip.db @@ -36,7 +36,7 @@ 0x8002 0 0x1e04f334 0x000e 0xc0a80003 0xc352 0xdead8002 0x001b 0xc0a80003 0xc353 0x0578 0x8003 0 0x1e04f334 0x000e 0xc0a80003 0xc353 0xdead8003 0x001b 0xc0a80004 0xc354 0x0578 0x8004 0 0x1e04f334 0x000e 0xc0a80003 0xc354 0xdead8004 0x001b 0xc0a80005 0xc355 0x0578 - 0x8005 0 0x1e04f330 0x000e 0xc0a80003 0xc355 0xdead8005 0x001b 0xc0a80006 0xc350 0x0578 + 0x8005 0 0x1e04f334 0x000e 0xc0a80003 0xc355 0xdead8005 0x001b 0xc0a80006 0xc356 0x0578 # 0x8006 0 0x1e04f330 0x000e 0xc0a80003 0xc356 0xdead8006 0x001b 0xc0a80007 0xc357 0x0578 # 0x8007 0 0x1e04f330 0x000e 0xc0a80003 0xc357 0xdead8007 0x001b 0xc0a80008 0xc358 0x0578 # 0x8008 0 0x1e04f330 0x000e 0xc0a80003 0xc358 0xdead8008 0x001b 0xc0a80009 0xc359 0x0578 diff --git a/users/gsi_dirc/startup.sh b/users/gsi_dirc/startup.sh index 9786d49..fa1c798 100755 --- a/users/gsi_dirc/startup.sh +++ b/users/gsi_dirc/startup.sh @@ -55,6 +55,9 @@ echo "registers configgbe_ip" # standard TDCs trbcmd clearbit 0xfe4c 0xc800 0x2000 ## clear bit to reset the epoch and coarse counters trbcmd w 0xfe4c 0xc800 0x00002000 ## TDC-Control-Register, RTniceM +# +trbcmd clearbit 0xfe51 0xc800 0x2000 ## clear bit to reset the epoch and coarse counters +trbcmd w 0xfe51 0xc800 0x00002000 ## TDC-Control-Register, RTniceM #trbcmd w 0xfe4c 0xc800 0x00003000 ## Triggerless mode #trbcmd w 0xfe4c 0xc801 0x000f0005 ## trigger window enable & trigger window width #trbcmd w 0xfe4c 0xc800 0x00000001 ## logic analyser control register @@ -62,12 +65,17 @@ trbcmd w 0xfe4c 0xc800 0x00002000 ## TDC-Control-Register, RTniceM #trbcmd w 0xfe4c 0xc801 0x801e0046 ## triggerwindow -350...+150ns ;5ns granularity (Experiment cern2015) trbcmd w 0xfe4c 0xc801 0x80c600c6 ## triggerwindow +/-990ns ;5ns granularity +trbcmd w 0xfe51 0xc801 0x80c600c6 ## triggerwindow +/-990ns ;5ns granularity #trbcmd w 0xfe4c 0xc801 0x8000001e ## triggerwindow +/-150ns ;5ns granularity # Default TDC-channel enable for all channels trbcmd w 0xfe4c 0xc802 0xffffffff ## channel 01-32 enable trbcmd w 0xfe4c 0xc803 0x0000ffff ## channel 33-64 enable trbcmd w 0xfe4c 0xc804 0x0000007c ## data transfer limit +# +trbcmd w 0xfe51 0xc802 0xffffffff ## channel 01-32 enable +trbcmd w 0xfe51 0xc803 0x0000ffff ## channel 33-64 enable +trbcmd w 0xfe51 0xc804 0x0000007c ## data transfer limit # TOFs time windows #trbcmd w 0x2014 0xc801 0x8000008c @@ -105,6 +113,14 @@ trbcmd w 0xfe4a 0xc803 0x00000000 ## channel 33-64 enable trbcmd w 0xfe4a 0xc804 0x0000007c ## data transfer limit + + +#Dirich-Concentrator: enable reference time from RJ45 +trbcmd loadbit 0x8300 0xd580 0x6 0x6 + + + + echo -n "register_config_tdc" ~/trbsoft/daqtools/tools/loadregisterdb.pl register_config_tdc.db @@ -141,12 +157,12 @@ trbcmd i 0xffff | wc -l #20170822 prepare_padiwas_invert_leds.pl --endpoints=0x2000..0x2003 --chains=0..2 --invert=0xffff -prepare_padiwas_invert_leds.pl --endpoints=0x2000..0x200f --chains=0..2 --invert=0xffff +#prepare_padiwas_invert_leds.pl --endpoints=0x2000..0x200f --chains=0..2 --invert=0xffff #Invert erlangen -prepare_padiwas_invert_leds.pl --endpoints=0x2014..0x201d --chains=0..1 --invert=0xffff +#prepare_padiwas_invert_leds.pl --endpoints=0x2014..0x201d --chains=0..1 --invert=0xffff -padiwa_led_off.pl +#padiwa_led_off.pl #invert Erlangen Padiwas #~/trbsoft/daqtools/users/gsi_dirc/setup_erlangen.sh @@ -189,7 +205,8 @@ trbcmd w 0xfffe 0xc5 0x800050ff #trbcmd setbit 0x8000 0xa1d4 0x10000 ## ??? -cd ~/trbsoft/daqtools/thresholds/ +cd ~/trbsoft/daqtools/thresholds/trb_dirich_threshold + # july ./load_thresh_orig.sh # 1mV # switch 8/27 ./load_thresh_aug2014.sh # 4mV for first few days ## ./load_thresh_sep2014-2mV.sh # 2mV starting evening Sep 8 @@ -269,14 +286,14 @@ echo "padiwa_threshold_results loading" #./write_thresholds.pl mcp04.log -o 600 #./write_thresholds.pl mcp05.log -o 600 #./write_thresholds.pl mcp06.log -o 600 -./write_thresholds.pl padiwa_threshold_results.log -o 600 +# ./write_thresholds.pl padiwa_threshold_results.log -o 600 #./write_thresholds.pl mcp08.log -o 900 #20170911 #./write_thresholds.pl mcp09.log -o 600 #20170912 #./write_thresholds.pl mcp10.log -o 600 #./write_thresholds.pl mcp11.log -o 600 - +./HADESthreshscan_v1 -f 20190403_141628_std_save.thr -l 0 -t 0 2300 # 10/26 quick fix to set special threshold for 0x2006/0 = +1mV #grep '0x2006' padiwa_threshold_results_latest.log | grep 'chain: 00' >! padiwa_thresholds_current_0x2006-0.txt #./write_thresholds.pl padiwa_thresholds_current_0x2006-0.txt -o 1000 @@ -317,5 +334,13 @@ trbcmd w 0xc000 0xa155 0x05f5e100 #1Hz pulser # js 20170909 ttrbcmd loadbit 0xc000 0xa159 0x00000f00 0x00000d00 #Pulser 1 is calibration + +trbcmd w 0xfe51 0xdf80 0xffffffff # enable monitor counters + + + + + + # disable all triggers #trbcmd setbit 0xc000 0xa00c 0x80000000 -- 2.43.0