14 import matplotlib.pyplot
as plt
16 import tensorflow.keras
17 from tensorflow.keras.models
import Sequential
18 from tensorflow.keras.layers
import Dense
19 from tensorflow.keras.layers
import Dropout
20 from tensorflow.keras.utils
import to_categorical
21 from tensorflow.keras.utils
import plot_model
22 from tensorflow.keras
import regularizers
23 from sklearn.metrics
import roc_curve, auc
24 from tensorflow.keras.layers
import Activation
25 from tensorflow.keras
import backend
as K
26 from tensorflow.keras.models
import load_model
32 parser = argparse.ArgumentParser()
33 parser.add_argument(
"-PU",
"--filePU",help=
"input PU file",default=
"root://eoscms.cern.ch//eos/cms/store/group/dpg_hcal/comm_hcal/ISOTRACK/SinglePion_E-50_Eta-0to3_Run3Winter21_112X_PU.root")
34 parser.add_argument(
"-B",
"--ifbarrel",help=
"barrel / endcap",default=
'barrel')
35 parser.add_argument(
"-M",
"--modelname",help=
"model file name",default=
"./models/model.h5")
36 parser.add_argument(
"-O",
"--opfilename",help=
"output text file name",default=
"corrfac_regression.txt")
39 fName1 = parser.parse_args().filePU
40 modeln = parser.parse_args().modelname
41 foutput = parser.parse_args().opfilename
42 barrelflag = parser.parse_args().ifbarrel
47 tree1 = uproot.open(fName1,xrootdsource=dict(chunkbytes=1024**3, limitbytes=1024**3))[
'HcalIsoTrkAnalyzer/CalibTree']
48 print (
"loaded files")
50 branchespu = [
't_Run',
't_Event',
't_nVtx',
't_ieta',
't_iphi',
't_p',
't_pt',
't_gentrackP',
't_eMipDR',
't_eHcal',
't_eHcal10',
't_eHcal30',
't_hmaxNearP',
't_emaxNearP',
't_hAnnular',
't_eAnnular',
't_rhoh']
51 dictpu = tree1.arrays(branches=branchespu)
53 dfspu = pd.DataFrame.from_dict(dictpu)
54 dfspu.columns=branchespu
55 print (
"sample size:",dfspu.shape[0])
61 dfspu[
't_delta']=dfspu[
't_eHcal30']-dfspu[
't_eHcal10']
62 keepvars =[
't_nVtx',
't_ieta',
't_eHcal10',
't_eHcal30',
't_delta',
't_hmaxNearP',
't_emaxNearP',
't_hAnnular',
't_eAnnular',
't_rhoh',
't_pt',
't_eHcal',
't_p',
't_eMipDR']
64 df = dfspu[keepvars].
copy()
65 df[
't_eHcal_xun'] = df[
't_eHcal']
66 df[
't_delta_un'] = df[
't_delta']
67 df[
't_ieta_un'] = df[
't_ieta']
77 if barrelflag==
'barrel':
78 var = [
't_nVtx',
't_ieta',
't_eHcal10',
't_eHcal30',
't_delta',
't_hmaxNearP',
't_emaxNearP',
't_hAnnular',
't_eAnnular',
't_rhoh',
't_pt',
't_eHcal_x',
't_eHcal_y',
't_p',
't_eMipDR',
't_eHcal_xun',
't_delta_un',
't_ieta_un']
79 mina = [20, -15, 17.33086721925065, 17.655660001095384, 0.0, -1.0, -1.0, 0.0, -5.33359869197011, 4.093925265397289, 20.783629520782718, 16.998163268435746, 20.000221125315875, 40.074083721419896, 0.0, 16.998163268435746, 0.0, -15]
80 maxa = [138, 15, 138.26640254695667, 155.83508832909865, 50.9643486259738, 17.140547914961605, 2870.424876287056, 35.727171580074355, 17.763740802183747, 26.38359781195008, 59.169594172331905, 133.07561272289604, 122.8542027361691, 59.977312414583295, 0.9999987781047821, 133.07561272289604, 50.9643486259738, 15]
82 var = [
't_nVtx',
't_ieta',
't_eHcal10',
't_eHcal30',
't_delta',
't_hmaxNearP',
't_emaxNearP',
't_hAnnular',
't_eAnnular',
't_rhoh',
't_pt',
't_eHcal_x',
't_eHcal_y',
't_p',
't_eMipDR',
't_eHcal_xun',
't_delta_un',
't_ieta_un']
83 mina = [20, -27, 20.934556022286415, 27.213239994598553, 0.7803188574616797, -1.0, -1.0, 0.0, -57.422806948423386, 4.435386319143829, 6.013227444563335, 18.5278014652431, 20.00695458613336, 40.00339106433163, 0.0, 18.5278014652431, 0.7803188574616797, -27]
84 maxa = [117, 28, 584.1150933708996, 822.056631873711, 424.1259534251876, 19.999632518345965, 13218.009997109137, 185.96148682758212, 128.60208600759506, 25.911101538538524, 28.928444814127907, 428.99590471945703, 111.25579111767001, 59.98427126709689, 0.9999948740005493, 428.99590471945703, 424.1259534251876, 28]
89 normkey = [
't_nVtx',
't_ieta',
't_eHcal10',
't_eHcal30',
't_delta',
't_hmaxNearP',
't_emaxNearP',
't_hAnnular',
't_eAnnular',
't_rhoh',
't_pt',
't_eHcal']
95 df[i]=
abs(df[i]-mina[k])/(maxa[k] - mina[k])
99 df[
't_eHcal_xun'] = df[
't_eHcal_xun'].
apply(
lambda x: 1.0
if (x==0)
else x)
100 uncorrected_values = df[
't_eHcal_xun'].values
101 print (uncorrected_values.shape)
102 print (
'data vars:',df.keys())
104 X_train = data[:,0:12]
110 model = load_model(modeln)
111 preds = model.predict(X_train,verbose=1)
112 preds = preds.reshape(preds.shape[0])
117 if barrelflag==
'barrel':
124 plt.hist(preds, bins =100, range=(0,100),label=
'predicted enerhy',alpha=0.6)
125 plt.savefig(
'predicted_Edist_'+tag+
'.png')
128 parray = dfspu[
't_p'].values
129 mipdr = dfspu[
't_eMipDR'].values
130 plt.hist(preds/(parray - mipdr), bins =100, range=(0,10),label=
'predicted e/p-ecal',alpha=0.6)
131 plt.savefig(
'predicted_eopdist_'+tag+
'.png')
137 eventnumarray = np.arange(0,X_train.shape[0],1,dtype=int)
138 eventnumarray = eventnumarray.reshape(eventnumarray.shape[0],1)
143 ietaarray = dfspu[
't_ieta'].values
144 ietaarray = ietaarray.reshape(ietaarray.shape[0],1)
147 corrfac = preds/uncorrected_values
148 corrfac = corrfac.reshape(corrfac.shape[0],1)
149 fileo = np.hstack((eventnumarray,ietaarray,corrfac))
151 np.savetxt(foutput, fileo,fmt=[
'%d',
'%d',
'%.10f'])
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Abs< T >::type abs(const T &t)