@@ -131,11 +131,17 @@ def _calculate_variables(self, df, verify=False): # pylint: disable=invalid-name
131131 df ['hfPx' ] = df .fPt * np .cos (df .fPhi )
132132 df ['hfPy' ] = df .fPt * np .sin (df .fPhi )
133133 df ['hfPz' ] = df .fPt * np .sinh (df .fEta )
134+ df ['piPx' ] = df .jetPx - df .hfPx
135+ df ['piPy' ] = df .jetPy - df .hfPy
136+ df ['piPz' ] = df .jetPz - df .hfPz
134137 df ['zpar_num' ] = df .jetPx * df .hfPx + df .jetPy * df .hfPy + df .jetPz * df .hfPz
135138 df ['zpar_den' ] = df .jetPx * df .jetPx + df .jetPy * df .jetPy + df .jetPz * df .jetPz
136139 df ['zpar' ] = df .zpar_num / df .zpar_den
137- df [df ['zpar' ] = = 1. ]['zpar' ] = .99999 # move 1 to last bin
140+ df [df ['zpar' ] > = 1. ]['zpar' ] = .99999 # move 1 to last bin
138141 df ['nsub21' ] = df .fNSub2 / df .fNSub1
142+ df ['E_D' ] = np .sqrt (1.86 ** 2 + df .hfPx ** 2 + df .hfPy ** 2 + df .hfPz ** 2 )
143+ df ['E_pi' ] = np .sqrt (.139 ** 2 + df .piPx ** 2 + df .piPy ** 2 + df .piPz ** 2 )
144+ df ['M_D_pi' ] = np .sqrt ((df .E_D + df .E_pi )** 2 - df .jetPx ** 2 - df .jetPy ** 2 - df .jetPz ** 2 )
139145
140146 self .logger .debug ('zg' )
141147 df ['zg_array' ] = np .array (.5 - abs (df .fPtSubLeading / (df .fPtLeading + df .fPtSubLeading ) - .5 ))
@@ -223,6 +229,8 @@ def process_histomass_single(self, index):
223229 dfquery (df , 'idx_match >= 0' , inplace = True )
224230
225231 self ._calculate_variables (df )
232+ # FIXME: suppress D*, move to DB
233+ df = df [(abs (df .M_D_pi - 2.01 ) > .01 ) & (df .fJetNConstituents == 2 )]
226234
227235 for obs , spec in self .cfg ('observables' , {}).items ():
228236 self .logger .debug ('preparing histograms for %s' , obs )
@@ -272,7 +280,8 @@ def process_efficiency_single(self, index):
272280 h_response_fd = {var :
273281 create_hist (
274282 f'h_response_fd_{ var } ' ,
275- f";p_{{T}}^{{jet}} (GeV/#it{{c}});{ var } ;p_{{T}}^{{jet}} (GeV/#it{{c}});{ var } ;p_{{T}} (GeV/#it{{c}})" ,
283+ f";p_{{T}}^{{jet}} (GeV/#it{{c}});p_{{T}}^{{HF}} (GeV/#it{{c}});{ var } ;" +
284+ f"p_{{T}}^{{jet}} (GeV/#it{{c}});p_{{T}}^{{HF}} (GeV/#it{{c}});{ var } " ,
276285 self .binarrays_ptjet ['det' ][var ], self .binarrays_obs ['det' ]['fPt' ], self .binarrays_obs ['det' ][var ],
277286 self .binarrays_ptjet ['gen' ][var ], self .binarrays_obs ['gen' ]['fPt' ], self .binarrays_obs ['gen' ][var ])
278287 for var in self .cfg ('observables' , []) if not '-' in var }
@@ -371,7 +380,8 @@ def process_efficiency_single(self, index):
371380
372381 if cat in dfmatch and dfmatch [cat ] is not None :
373382 self ._prepare_response (dfmatch [cat ], h_effkine , h_response , cat , var )
374- self ._prepare_response_fd (dfmatch [cat ], h_effkine_fd , h_response_fd , var )
383+ if cat == 'np' :
384+ self ._prepare_response_fd (dfmatch [cat ], h_effkine_fd , h_response_fd , var )
375385 f = self .cfg ('frac_mcana' , .2 )
376386 _ , df_mccorr = self .split_df (dfmatch [cat ], f if f < 1. else 0. )
377387 self ._prepare_response (df_mccorr , h_effkine_frac , h_response_frac , cat , var )
@@ -419,24 +429,24 @@ def _prepare_response_fd(self, dfi, h_effkine, h_response, var):
419429 axis_var_gen = get_axis (h_response [var ], 5 )
420430
421431 df = dfi
432+ fill_hist (h_response [var ], df [['fJetPt_gen' , 'fPt_gen' , f'{ var } _gen' , 'fJetPt_gen' , 'fPt_gen' , f'{ var } _gen' ]])
433+
422434 # TODO: the first cut should be taken care of by under-/overflow bins, check their usage in analyzer
423- df = df .loc [(df .fJetPt >= axis_ptjet_det .GetXmin ()) & (df .fJetPt < axis_ptjet_det .GetXmax ()) &
424- (df .fPt >= axis_pthf_det .GetXmin ()) & (df .fPt < axis_pthf_det .GetXmax ()) &
425- (df [var ] >= axis_var_det .GetXmin ()) & (df [var ] < axis_var_det .GetXmax ())]
435+ # df = df.loc[(df.fJetPt >= axis_ptjet_det.GetXmin()) & (df.fJetPt < axis_ptjet_det.GetXmax()) &
436+ # (df.fPt >= axis_pthf_det.GetXmin()) & (df.fPt < axis_pthf_det.GetXmax()) &
437+ # (df[var] >= axis_var_det.GetXmin()) & (df[var] < axis_var_det.GetXmax())]
426438 fill_hist (h_effkine [('det' , 'nocuts' , var )], df [['fJetPt' , 'fPt' , var ]])
427- df = df .loc [(df .fJetPt_gen >= axis_ptjet_gen .GetXmin ()) & (df .fJetPt_gen < axis_ptjet_gen .GetXmax ()) &
428- (df .fPt_gen >= axis_pthf_gen .GetXmin ()) & (df .fPt_gen < axis_pthf_gen .GetXmax ()) &
429- (df [f'{ var } _gen' ] >= axis_var_gen .GetXmin ()) & (df [f'{ var } _gen' ] < axis_var_gen .GetXmax ())]
439+ # df = df.loc[(df.fJetPt_gen >= axis_ptjet_gen.GetXmin()) & (df.fJetPt_gen < axis_ptjet_gen.GetXmax()) &
440+ # (df.fPt_gen >= axis_pthf_gen.GetXmin()) & (df.fPt_gen < axis_pthf_gen.GetXmax()) &
441+ # (df[f'{var}_gen'] >= axis_var_gen.GetXmin()) & (df[f'{var}_gen'] < axis_var_gen.GetXmax())]
430442 fill_hist (h_effkine [('det' , 'cut' , var )], df [['fJetPt' , 'fPt' , var ]])
431443
432- fill_hist (h_response [var ], df [['fJetPt_gen' , 'fPt_gen' , f'{ var } _gen' , 'fJetPt_gen' , 'fPt_gen' , f'{ var } _gen' ]])
433-
434444 df = dfi
435- df = df .loc [(df .fJetPt_gen >= axis_ptjet_gen .GetXmin ()) & (df .fJetPt_gen < axis_ptjet_gen .GetXmax ()) &
436- (df .fPt_gen >= axis_pthf_gen .GetXmin ()) & (df .fPt_gen < axis_pthf_gen .GetXmax ()) &
437- (df [f'{ var } _gen' ] >= axis_var_gen .GetXmin ()) & (df [f'{ var } _gen' ] < axis_var_gen .GetXmax ())]
438- fill_hist (h_effkine [('gen' , 'nocuts' , var )], df [['fJetPt_gen' , 'fPt ' , f'{ var } _gen' ]])
439- df = df .loc [(df .fJetPt >= axis_ptjet_det .GetXmin ()) & (df .fJetPt < axis_ptjet_det .GetXmax ()) &
440- (df .fPt >= axis_pthf_det .GetXmin ()) & (df .fPt < axis_pthf_det .GetXmax ()) &
441- (df [f'{ var } ' ] >= axis_var_det .GetXmin ()) & (df [f'{ var } ' ] < axis_var_det .GetXmax ())]
442- fill_hist (h_effkine [('gen' , 'cut' , var )], df [['fJetPt_gen' , 'fPt ' , f'{ var } _gen' ]])
445+ # df = df.loc[(df.fJetPt_gen >= axis_ptjet_gen.GetXmin()) & (df.fJetPt_gen < axis_ptjet_gen.GetXmax()) &
446+ # (df.fPt_gen >= axis_pthf_gen.GetXmin()) & (df.fPt_gen < axis_pthf_gen.GetXmax()) &
447+ # (df[f'{var}_gen'] >= axis_var_gen.GetXmin()) & (df[f'{var}_gen'] < axis_var_gen.GetXmax())]
448+ fill_hist (h_effkine [('gen' , 'nocuts' , var )], df [['fJetPt_gen' , 'fPt_gen ' , f'{ var } _gen' ]])
449+ # df = df.loc[(df.fJetPt >= axis_ptjet_det.GetXmin()) & (df.fJetPt < axis_ptjet_det.GetXmax()) &
450+ # (df.fPt >= axis_pthf_det.GetXmin()) & (df.fPt < axis_pthf_det.GetXmax()) &
451+ # (df[f'{var}'] >= axis_var_det.GetXmin()) & (df[f'{var}'] < axis_var_det.GetXmax())]
452+ fill_hist (h_effkine [('gen' , 'cut' , var )], df [['fJetPt_gen' , 'fPt_gen ' , f'{ var } _gen' ]])
0 commit comments