Esempio n. 1
0
 def draw_pdf(self, k=9, n=10, **dkw):
     (med, e0, e1), m = calc_eff(k, n) / 100, (k + 1) / (n + 2)
     f_str = 'TMath::Factorial([1] + 1) / (TMath::Factorial([0]) * TMath::Factorial([1] - [0])) * x ** [0] * (1 - x) ** ([1] - [0])'
     f = self.Draw(self.Draw.make_f('epdf', f_str, pars=[k, n], npx=1000),
                   'Efficiency PDF',
                   **prep_kw(dkw, x_tit='Efficiency', y_tit='Probability'))
     ff = self.Draw(self.Draw.make_f(None,
                                     f_str,
                                     med - e0,
                                     med + e1,
                                     pars=[k, n],
                                     lw=0,
                                     npx=1000,
                                     fill_style=1001,
                                     fill_color=1,
                                     opacity=.3),
                    draw_opt='same')
     ls = [
         Draw.vertical_line(m, 0, f(m), style=7),
         Draw.vertical_line(med, 0, f(med))
     ]
     _ = [
         Draw.arrow(med - e0, med, *[f(med) / 4] * 2, size=.01),
         Draw.arrow(med + e1, med, *[f(med) / 4] * 2, size=.01),
         f.Draw('same')
     ]
     Draw.legend(ls + [ff], ['mean', 'mode', 'CL = 1#sigma'],
                 ['l', 'l', 'f'],
                 left=True)
Esempio n. 2
0
 def draw_chi2_cross(self, bw=.25, col=20, row=40, **dkw):
     (x, y), zz = [
         f(cut=self.Cut.make_cross(col, row))
         for f in [self.get_txy, self.get_chi2]
     ]
     self.Draw.prof2d(x, y, zz, bins.get_local(self.Plane, bw),
                      **prep_kw(dkw, **self.ax_tits(), z_tit='#chi^{2}'))
Esempio n. 3
0
 def draw_y(self, trk=0, **dkw):
     """draw track in y-z plane."""
     trk = where(self.Tel.Cut.make_all_cluster())[0][trk]
     x, y = self.get_z() / 10, self.Tel.get_vs(
         self.Cut.make_trk(trk)).reshape(-1)
     self.Draw.graph(
         x, y,
         **prep_kw(dkw, x_tit='Z Position [cm]', y_tit='Y Position [mm]'))
Esempio n. 4
0
 def draw_n(self, cut=None, **dkw):
     return self.Draw.distribution(
         self.get_n(cut),
         **prep_kw(dkw,
                   title='NTracks',
                   x0=-.5,
                   w=1,
                   x_tit='Number of Tracks'))
Esempio n. 5
0
 def get_fid(self, surface=False, name=None, **dkw):
     x, y = self.get_fid_config(surface, name)
     return None if x is None else Draw.polygon(
         x, y,
         **prep_kw(dkw,
                   show=False,
                   line_color=2,
                   width=2,
                   name=choose(name, f'fid{surface:d}')))
Esempio n. 6
0
 def draw_n_ev(self, **dkw):
     return self.Draw.distribution(
         self.get_n_ev(),
         **prep_kw(dkw,
                   title='NTracks',
                   x0=-.5,
                   w=1,
                   rf=1,
                   x_tit='Number of Tracks'))
Esempio n. 7
0
 def draw_vs_angle(self, **dkw):
     x, y, e = self.get_tree_vec(
         ['angle_x', 'angle_y', self.get_var()],
         self.Cut.exclude('track angle x', 'track angle y'))
     self.Draw.prof2d(
         x, y, e * 100,
         **prep_kw(dkw,
                   x_tit='Angle X',
                   y_tit='Angle Y',
                   z_tit='Efficiency [%]'))
Esempio n. 8
0
 def draw_vs_chi2(self, n=2, **dkw):
     x, e = self.get_tree_vec(['chi2_tracks', self.get_var()],
                              self.Cut.exclude('chi2_x', 'chi2_y'))
     self.Draw.efficiency(x,
                          e,
                          find_bins(x, n=n, lfac=0, lq=0),
                          title='Efficiency vs Chi2',
                          **prep_kw(dkw,
                                    x_tit='Track #chi^{2}',
                                    file_name='EffChi'))
Esempio n. 9
0
 def draw_map(self,
              res=None,
              fid=False,
              cut=None,
              local=False,
              redo=False,
              **dkw):
     return self.Draw(
         self.get_map(res, fid, cut, local, _redo=redo),
         **prep_kw(dkw, leg=self.Cut.get_fid(), file_name='EfficiencyMap'))
Esempio n. 10
0
 def get_x_args(vs_time=False,
                rel_time=False,
                vs_irrad=False,
                draw=False,
                **kwargs):
     kw = prep_kw(kwargs,
                  x_tit=AScan.get_x_tit(vs_time),
                  t_ax_off=AnalysisCollection.get_tax_off(
                      vs_time, rel_time),
                  x_off=None if vs_time or vs_irrad else 1.1)
     return {**kw, **AScan.get_x_draw(vs_time)} if draw else kw
Esempio n. 11
0
 def draw_in_cell(self,
                  nbins=None,
                  ox=0,
                  oy=0,
                  cut=None,
                  max_angle=None,
                  **dkw):
     """ in 3D cell"""
     return self.draw_in(
         self.DUT.PX, self.DUT.PY, ox, oy, nbins, cut, max_angle,
         **prep_kw(dkw, title='In Cell Efficiency', z_tit='Efficiency [%]'))
Esempio n. 12
0
 def draw_vs_trigphase(self, **kwargs):
     x, e = self.get_tree_vec(
         ['trigger_phase[1]', self.get_var()],
         self.Cut.exclude('trigger_phase'))
     return self.Draw.efficiency(
         x, e, make_bins(-.5, 10),
         **prep_kw(kwargs,
                   title='Trigger Phase Efficiency',
                   x_tit='Trigger Phase',
                   x_range=[-1, 10],
                   draw_opt='bap',
                   file_name='EffVsTP'))
Esempio n. 13
0
 def draw_in_pixel(self,
                   nbins=None,
                   ox=0,
                   oy=0,
                   cut=None,
                   max_angle=None,
                   **dkw):
     """ in pixel of ROC"""
     return self.draw_in(
         Plane.PX, Plane.PY, ox, oy, nbins, cut, max_angle,
         **prep_kw(dkw, title='In Pixel Efficiency',
                   z_tit='Efficiency [%]'))
Esempio n. 14
0
 def draw_vs_chi2_cut(self, step=5, **dkw):
     cx, cy, e = self.get_tree_vec(
         ['chi2_x', 'chi2_y', self.get_var()],
         self.Cut.exclude('chi2_x', 'chi2_y'))
     x = arange(100, step=step) + step
     qx, qy = [quantile(c, x / 100) for c in [cx, cy]]
     y = [
         calc_eff(values=e[(cx < qx[i]) & (cy < qy[i])])
         for i in range(qx.size)
     ]
     return self.Draw.graph(
         x, y, 'Efficiency vs Chi2 Cut',
         **prep_kw(dkw, x_tit='Cut Quantile [%]', y_tit='Efficiency [%]'))
Esempio n. 15
0
 def draw_map(self,
              bw=.3,
              local=True,
              cut=None,
              dut_plane=True,
              trans=True,
              **dkw):
     binning = bins.get_xy(local,
                           self.Plane if dut_plane else self.Tel.Plane,
                           bw,
                           aspect_ratio=True)
     return self.Draw.histo_2d(
         *self.get_xy(local, cut, trans=trans), binning,
         **prep_kw(dkw, title='Track Map', **self.ax_tits(local)))
Esempio n. 16
0
 def draw_vs_cuts(self, cuts=None, short=False, redo=False, **dkw):
     cuts = choose(cuts, self.Cut.get_consecutive(short))
     self.PBar.start(len(cuts), counter=True) if redo or not file_exists(
         self.make_simple_pickle_path(
             suf=f'{[*cuts.values()][-1].GetName()}_{self.UseRhit}')
     ) else do_nothing()
     x, y = arange(len(cuts)), array(
         [self.get(cut, _redo=redo) for cut in cuts.values()])
     return self.Draw.graph(x,
                            y,
                            title='Efficiency for Consecutive Cuts',
                            y_tit='Efficiency [%]',
                            **prep_kw(dkw,
                                      draw_opt='ap',
                                      gridy=True,
                                      x_range=[-1, len(y)],
                                      bin_labels=cuts.keys()))
Esempio n. 17
0
 def draw(self, cut=None, bin_size=None, rel_time=False, **dkw):
     x, e = self.get_tree_vec(
         [self.get_t_var(), self.get_var()], choose(cut, self.Cut()))
     g = self.Draw.efficiency(
         x,
         e,
         self.Bins.get_time(
             choose(
                 bin_size, 1000 if x.size // 20 < 1000 or x.size / 1000 < 20
                 else x.size // 20)),
         show=False)  # min bin size of 1000 max 20 points
     fit, tit = FitRes(g.Fit('pol0', 'qs')), 'Hit Efficiency'
     self.Draw(
         g,
         **prep_kw(dkw,
                   title=tit,
                   **self.get_t_args(rel_time),
                   y_range=[-5, 115],
                   gridy=True,
                   draw_opt='apz',
                   stats=set_statbox(fit=True, form='.2f', center_y=True),
                   file_name='HitEff'))
     return fit if fit.Parameter(0) is not None else 0
Esempio n. 18
0
 def draw_fid(self, surface=False, name=None, **dkw):
     self.get_fid(surface, name, **prep_kw(dkw, show=True))
Esempio n. 19
0
 def get_res(self, **dkw):
     r, mx, my = append(self.get_config('residuals', dtype=float),
                        uarr2n(self.Ana.Residuals.get_means(cut=0))) * 1e3
     return Draw.circle(r, mx, my, **prep_kw(dkw, show=False))
Esempio n. 20
0
 def draw_grid(self, off=-.5, **dkw):
     self.get_grid(off, **prep_kw(dkw, show=True))
Esempio n. 21
0
 def draw_y(self, **dkw):
     return self.Residuals.draw_y(**prep_kw(
         dkw, lf=.5, rf=.5, stats=set_statbox(all_stat=True, form='.2f')))
Esempio n. 22
0
 def draw_cross(self, bw=.25, col=20, row=40, **dkw):
     self.draw_hit_map(bw,
                       cut=self.Cut.make_cross(col, row),
                       **prep_kw(dkw, leg=self.Plane.get_grid()))
Esempio n. 23
0
 def get_grid(self, off=-.5, **dkw):
     return Draw.grid(
         arange(self.NCols + 1) + off,
         arange(self.NRows + 1) + off, **prep_kw(dkw, show=False))
Esempio n. 24
0
 def draw_slope_x(self, col=20, **dkw):
     x, y = [
         f(cut=self.Cut.make_col(col))
         for f in [self.Residuals.tx, self.get_slope_x]
     ]  # noqa
     self.Draw.profile(x, y, **prep_kw(dkw))
Esempio n. 25
0
 def draw_slope_y(self, cut=None, **dkw):
     return self.Draw.distribution(
         rad2deg(self.get_slope_y(cut)),
         **prep_kw(dkw, title='Track Slope Y', x_tit='Track Slope [deg]'))
Esempio n. 26
0
 def draw_slopes(self, cut=None, **dkw):
     g = [
         getattr(self, f'draw_slope_{m}')(cut, lf=1, rf=1, show=False)
         for m in self.M
     ]
     return self.Draw.stack(g, 'TrackSlopes', self.M, **prep_kw(dkw))
Esempio n. 27
0
 def draw_chi2(self, cut=None, **dkw):
     return self.Draw.distribution(
         self.get_chi2(cut),
         **prep_kw(dkw, x0=0, title='Chi2', x_tit='#chi^{2}'))
Esempio n. 28
0
 def draw_res(self, **dkw):
     self.get_res(**prep_kw(dkw, show=True))
Esempio n. 29
0
 def make_pickle_path(self, *args, **kwargs):
     return self.Ana.make_pickle_path(
         *args, **prep_kw(kwargs, sub_dir=self.MetaSubDir))
Esempio n. 30
0
 def draw_sim(self, res=.5, n=1e6, noise=None, cut_off=410, **kwargs):
     x = self.sim_signal(res, n, noise)
     self.Draw.distribution(x[x < cut_off],
                            self.Ana.Bins.get_pad_ph(2),
                            x_tit='Pulse Height [mV]',
                            **prep_kw(kwargs, y_off=1.65, lm=.15))