ATLAS Offline Software
Loading...
Searching...
No Matches
HIJetHistoTools.py
Go to the documentation of this file.
1# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
2
3from JetMonitoring.JetMonitoringConf import JetKinematicHistos, HistosForJetSelection, LeadingJetsRelations, HIEfficiencyResponseHistos, HIJetUEMonitoring
4
5from JetMonitoring.JetHistoManager import jetHistoManager as jhm
6from JetMonitoring.JetAttributeHistoManager import attributeHistoManager
7from JetMonitoring.HistoDefinitionHelpers import createHistoDefTool as hdef
8
9# The dict below defines default specification to plot Jet attributes.
10# Specifications are given in a 1-line compact format.
11# They are then automatically converted to proper JetAttributeHisto tools below.
12compactSpecification = {
13
14 # 1D Histo format is
15 # "histoname" : ( binning, attributeInfo )
16 # where
17 # - binning is ("title;labelx;labely", nbins, xlow, xup) as in TH1 ctor
18 # - attributeInfo is ("attribute", "attribute type") or ("attribute", "attribute type", "gev")
19 #
20
21#
22# Jet moments added from https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/Run2JetMoments/
23#
24
25#
26 "pt" : (("Jet Pt;Pt [MeV];", 100, 0, 200) , ("pt","float","gev" ) ),
27 "Width" : (("Jet Width;Width;", 50, 0, 1.0) , ("Width","float" ) ),
28# "Width15" : (("Jet Width;Width;", 50, 0, 1.5) , ("Width","float" ) ),
29 "EMFrac" : (("EM Fraction;EM fraction;", 50, -0.1, 1.4), ("EMFrac", "float") ),
30 "HECFrac" : (("HEC Fraction;HEC fraction;", 50, -0.1, 1.4), ("HECFrac", "float") ),
31 "Timing" : (("Jet Time info;Time;", 40, -20, 20) , ("Timing", "float") ),
32 "LArQuality" : (("LAr quality;Energy;", 50, -0.4, 1.2), ("LArQuality", "float") ),
33 "ptN" : (("Jet Pt;Pt [GeV];", 250, 0., 5000.) , ("pt","float","gev" ) ),
34 "SumPtTrkPt1000" : (("Sum Pt of all tracks above 1GeV:SumPt;", 100,0,200), ("SumPtTrkPt1000", "vector<float>", "gev") ),
35
36 "AverageLArQF" : (("Average LAr QF;AverageLArQF;",100,0, 65535), ("AverageLArQF", "float") ),
37 "HECQuality" : (("HEC Quality;HEC Quality;",50,-0.1, 1.4), ("HECQuality", "float") ),
38 "FracSamplingMax" : (("FracSamplingMax; FracSamplingMax;",50,-0.1, 1.2), ("FracSamplingMax", "float") ),
39 # binning optimisation from Emma Tolley
40 #"FracSamplingMaxIndex" : (("FracSamplingMaxIndex; FracSamplingMaxIndex;",23,0,23), ("FracSamplingMaxIndex", "int") ),
41 "FracSamplingMaxIndex" : (("FracSamplingMaxIndex; FracSamplingMaxIndex;",24,0,24), ("FracSamplingMaxIndex", "int") ),
42 "N90Constituents" : (("N90Constituents; N90Constituents;",15,0,15), ("N90Constituents", "float") ),
43
44 # 2D Histo format is
45 # "histoname" : ( binning, attributeInfo1, attributeInfo2 )
46 # where
47 # - binning is ("title;labelx;labely", nbins, xlow, xup, nbinsy, ylow, yup) as in TH2 ctor
48 # - attributeInfo is ("attribute", "attribute type") or ("attribute", "attribute type", "gev")
49
50
51 "JetUnsubtractedScaleMomentum_pt" : (("JetUnsubtractedScaleMomentum p_{T}; p_{T} [MeV];",100,0,300000),("JetUnsubtractedScaleMomentum_pt","float")),
52 "JetUnsubtractedScaleMomentum_eta" : (("JetUnsubtractedScaleMomentum eta; #eta;",50,-6,6),("JetUnsubtractedScaleMomentum_eta","float")),
53 "JetUnsubtractedScaleMomentum_phi" : (("JetUnsubtractedScaleMomentum phi; #phi;",50,-3.3,3.3),("JetUnsubtractedScaleMomentum_phi","float")),
54 "JetUnsubtractedScaleMomentum_m" : (("JetUnsubtractedScaleMomentum m; Mass [MeV];",50,0,100000),("JetUnsubtractedScaleMomentum_m","float")),
55 "JetSubtractedScaleMomentum_pt" : (("JetSubtractedScaleMomentum p_{T}; p_{T} [MeV];",50,-5000,100000),("JetSubtractedScaleMomentum_pt","float")),
56 "JetSubtractedScaleMomentum_eta" : (("JetSubtractedScaleMomentum eta; #eta;",50,-6,6),("JetSubtractedScaleMomentum_eta","float")),
57 "JetSubtractedScaleMomentum_phi" : (("JetSubtractedScaleMomentum phi; #phi;",50,-3.3,3.3),("JetSubtractedScaleMomentum_phi","float")),
58 "JetSubtractedScaleMomentum_m" : (("JetSubtractedScaleMomentum m; Mass [MeV];",25,-5000,50000),("JetSubtractedScaleMomentum_m","float")),
59 "MaxOverMean" : (("MaxOverMean; MaxOverMean;",50,0,20),("MaxOverMean","float")),
60 "MaxConstituentET" : (("MaxConstituentET; E_{T} [MeV];",100,0,10000),("MaxConstituentET","float")),
61 }
62
63# then fill the pers calo sampling attributes one by one :
64caloSamples =["PreSamplerB", "EMB1", "EMB2", "EMB3", "PreSamplerE", "EME1", "EME2", "EME3", "HEC0", "HEC1", "HEC2", "HEC3", "TileBar0", "TileBar1", "TileBar2", "TileGap1", "TileGap2", "TileGap3", "TileExt0", "TileExt1", "TileExt2", "FCAL0", "FCAL1", "FCAL2", ]
65for i,c in enumerate(caloSamples):
66 compactSpecification[ c ] = ( ("Energy in "+c+";Energy(GeV);",100,-10,1000), ("EnergyPerSampling[%d]"%(i,), "vector<float>", "gev"))
67
68
69# Translate the above specifications into proper histo tools
70# and add them to jhm
71attributeHistoManager.buildKnownTools(compactSpecification)
72
73
74# Jet histogramming tools
75jhm.addTool( JetKinematicHistos("allkinematics",PlotOccupancy=True, PlotAveragePt=True, PlotNJet=True , PlotNConstit = True) )
76jhm.addTool( JetKinematicHistos("basickinematics") )
77#jhm.addTool( JetKinematicHistos("basickinematics_emscale", JetScale="JetEMScaleMomentum") )
78#jhm.addTool( JetKinematicHistos("basickinematics_constscale", JetScale="JetConstitScaleMomentum") )
79
80jhm.addTool( LeadingJetsRelations("leadingjetrel",
81 HistoDef = [
82 hdef('ljrDeltaEta', "#Delta #eta (lead, sublead);#Delta#eta;Entries",100,-10,10 ),
83 hdef('ljrDeltaPhi', "#Delta #Phi (lead, sublead);#Delta#Phi;Entries",100,0,3.142 ),
84 hdef('ljrDeltaR', "#Delta R (lead, sublead);#Delta R;Entries",100,0,10 ),
85 hdef('ljrFrac', "(sublead Pt)/(lead Pt);ratio;Entries",100,0,1. ),
86
87 #hdef('ljrEta1Eta2', "sublead #eta vs lead #eta;lead #eta;sublead #eta",100,-5,5.,100,-5,5 ),
88
89 ]
90 ) )
91
92jhm.addTool( HIEfficiencyResponseHistos("effresponse",
93 HistoDef = [
94 hdef('erhEfficiencyR1', "Jet p_{T} Efficiency #DeltaR = 0.1;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
95 hdef('erhEfficiencyR2', "Jet p_{T} Efficiency #DeltaR = 0.2;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
96 hdef('erhEfficiencyR3', "Jet p_{T} Efficiency #DeltaR = 0.3;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
97
98 hdef('erhResponse', "Jet p_{T} Response;Number of jets;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-1,1 ),
99 hdef('erhResponseVsEta', "Jet p_{T} Response vs #eta;#eta of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-5,5 ),
100 hdef('erhResponseVsEta_highpT', "Jet p_{T} Response vs #eta (pT>100 GeV);#eta of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-5,5 ),
101 hdef('erhResponseVsPt', "Jet p_{T} Response vs p_{T};p_{T}^{Truth} of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,0,1000 ),
102
103 hdef('erhDeltaR', "#DeltaR between Jet and closest Truth Jet;#DeltaR;Number of jets",50,0,4 ),
104
105 hdef('erhEfficiencyR1_0_10', "Jet p_{T} Efficiency in 0-10% #DeltaR = 0.1;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
106 hdef('erhEfficiencyR2_0_10', "Jet p_{T} Efficiency in 0-10% #DeltaR = 0.2;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
107 hdef('erhEfficiencyR3_0_10', "Jet p_{T} Efficiency in 0-10% #DeltaR = 0.3;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
108 hdef('erhResponse_0_10', "Jet p_{T} Response in 0-10%;Number of jets;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-1,1 ),
109 hdef('erhResponseVsEta_0_10', "Jet p_{T} Response vs #eta in 0-10%;#eta of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-5,5 ),
110 hdef('erhResponseVsEta_highpT_0_10', "Jet p_{T} Response vs #eta (pT>100 GeV) in 0-10%;#eta of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-5,5 ),
111 hdef('erhResponseVsPt_0_10', "Jet p_{T} Response vs p_{T} in 0-10%;p_{T}^{Truth} of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,0,1000 ),
112
113 hdef('erhEfficiencyR1_10_20', "Jet p_{T} Efficiency in 10-20% #DeltaR = 0.1;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
114 hdef('erhEfficiencyR2_10_20', "Jet p_{T} Efficiency in 10-20% #DeltaR = 0.2;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
115 hdef('erhEfficiencyR3_10_20', "Jet p_{T} Efficiency in 10-20% #DeltaR = 0.3;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
116 hdef('erhResponse_10_20', "Jet p_{T} Response in 10-20%;Number of jets;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-1,1 ),
117 hdef('erhResponseVsEta_10_20', "Jet p_{T} Response vs #eta in 10-20%;#eta of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-5,5 ),
118 hdef('erhResponseVsEta_highpT_10_20', "Jet p_{T} Response vs #eta (pT>100 GeV) in 10-20%;#eta of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-5,5 ),
119 hdef('erhResponseVsPt_10_20', "Jet p_{T} Response vs p_{T} in 10-20%;p_{T}^{Truth} of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,0,1000 ),
120
121 hdef('erhEfficiencyR1_20_40', "Jet p_{T} Efficiency in 20-40% #DeltaR = 0.1;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
122 hdef('erhEfficiencyR2_20_40', "Jet p_{T} Efficiency in 20-40% #DeltaR = 0.2;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
123 hdef('erhEfficiencyR3_20_40', "Jet p_{T} Efficiency in 20-40% #DeltaR = 0.3;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
124 hdef('erhResponse_20_40', "Jet p_{T} Response in 20-40%;Number of jets;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-1,1 ),
125 hdef('erhResponseVsEta_20_40', "Jet p_{T} Response vs #eta in 20-40%;#eta of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-5,5 ),
126 hdef('erhResponseVsEta_highpT_20_40', "Jet p_{T} Response vs #eta (pT>100 GeV) in 20-40%;#eta of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-5,5 ),
127 hdef('erhResponseVsPt_20_40', "Jet p_{T} Response vs p_{T} in 20-40%;p_{T}^{Truth} of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,0,1000 ),
128
129 hdef('erhEfficiencyR1_60_100', "Jet p_{T} Efficiency in 60-100% #DeltaR = 0.1;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
130 hdef('erhEfficiencyR2_60_100', "Jet p_{T} Efficiency in 60-100% #DeltaR = 0.2;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
131 hdef('erhEfficiencyR3_60_100', "Jet p_{T} Efficiency in 60-100% #DeltaR = 0.3;p_{T}^{Truth} (GeV);Efficiency",50,0,100 ),
132 hdef('erhResponse_60_100', "Jet p_{T} Response in 60-100%;Number of jets;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-1,1 ),
133 hdef('erhResponseVsEta_60_100', "Jet p_{T} Response vs #eta in 60-100%;#eta of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-5,5 ),
134 hdef('erhResponseVsEta_highpT_60_100', "Jet p_{T} Response vs #eta (pT>100 GeV) in 60-100%;#eta of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-5,5 ),
135 hdef('erhResponseVsPt_60_100', "Jet p_{T} Response vs p_{T} in 60-100%;p_{T}^{Truth} of jet;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,0,1000 ),
136
137
138 hdef('erhResponse_RP', "Jet p_{T} Response vs #Psi_{2}; #Psi_{2};#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-3.3,3.3 ),
139 hdef('erhResponse_2Dphi', "Jet p_{T} Response vs 2|#phi-#Psi_{2}|; 2|#phi - #Psi_{2}|;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,0,3.3 ),
140 hdef('erhResponse_highpT_RP', "Jet p_{T} Response vs #Psi_{2} (pT>100 GeV); #Psi_{2};#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,-3.3,3.3 ),
141 hdef('erhResponse_highpT_2Dphi', "Jet p_{T} Response vs 2|#phi-#Psi_{2}| (pT>100 GeV); 2|#phi - #Psi_{2}|;#frac{p_{T}^{Jet} - p_{T}^{Truth}}{p_{T}^{Truth}}",50,0,3.3 ),
142 ]
143 ) )
144
145# Selection tools
146jhm.addTool( HistosForJetSelection("alljets", SelectionType=0) )
147jhm.addTool( HistosForJetSelection("leadingjet", SelectionType=1) )
148jhm.addTool( HistosForJetSelection("subleadingjet", SelectionType=2) )
149
150
151jhm.addTool( HIJetUEMonitoring("centrality",
152 HistoDef = [
153 hdef('FCalET', "FCalET; FCal ET [TeV]; entries",50,0,10),
154 hdef('SubtractedET_Centrality', "UnsubScMomentum-SubScMomentum vs FCalET; FCal ET [TeV]; SubtractedET [GeV]",50,0,10),
155 hdef('2dSubtractedET_Centrality', "UnsubScMomentum-SubScMomentum vs FCalET; FCal ET [TeV]; SubtractedET [GeV]",50,0,10,50,0,250 ),
156
157 hdef('2dSubtractedET_pT', "UnsubScMomentum-SubScMomentum vs pT; jet pT [GeV]; SubtractedET [GeV]",100,0,1000,50,0,250 ),
158
159 hdef('2dSubtractedET_Expected_Centrality', "(UnsubScMomentum-SubScMomentum)/Expected vs FCalET; FCal ET [TeV]; (A^{Jet}/A^{FCal})xSubtractedET/FCalET",50,0,10,100,0,5 ),
160
161 hdef('2dSubtractedET_Expected_eta', "(UnsubScMomentum-SubScMomentum)/Expected vs #eta; #eta; (A^{Jet}/A^{FCal})xSubtractedET/FCalET",50,-6,6,100,0,5 ),
162 hdef('SubtractedET_Expected_eta', "(UnsubScMomentum-SubScMomentum)/Expected vs #eta; #eta; (A^{Jet}/A^{FCal})xSubtractedET/FCalET",50,-6,6 ),
163
164 hdef('2dSubtractedET_2Dphi', "UnsubScMomentum-SubScMomentum vs 2|#phi-#Psi_{2}|; 2|#phi-#Psi_{2}|; SubtractedET [GeV]",25,0,3.3, 50,0,250 ),
165
166 hdef('SubtractedET_eta', "UnsubScMomentum-SubScMomentum vs #eta; #eta; SubtractedET [GeV]",50,-6,6 ),
167 hdef('SubtractedET_pt', "UnsubScMomentum-SubScMomentum vs p_{T}; p_{T} [GeV]; SubtractedET [GeV]",100,0,1000 ),
168
169 hdef('SubtractedET_2Dphi', "UnsubScMomentum-SubScMomentum vs 2|#phi-#Psi_{2}|; 2|#phi-#Psi_{2}|; SubtractedET [GeV]",25,0,3.3 ),
170
171# 0-10 %
172 hdef('JetUnsubtractedScaleMomentum_pt_0_10', "JetUnsubtractedScaleMomentum p_{T} - 0-10%;p_{T} [GeV]",100,0,300 ),
173 hdef('JetUnsubtractedScaleMomentum_eta_0_10', "JetUnsubtractedScaleMomentum eta - 0-10%; #eta",50,-6,6 ),
174 hdef('JetUnsubtractedScaleMomentum_phi_0_10', "JetUnsubtractedScaleMomentum phi - 0-10%; #phi",50,-3.3,3.3 ),
175 hdef('JetUnsubtractedScaleMomentum_m_0_10', "JetUnsubtractedScaleMomentum m - 0-10%; Mass [GeV]",50,0,100 ),
176 hdef('JetSubtractedScaleMomentum_pt_0_10', "JetSubtractedScaleMomentum p_{T} - 0-10%;p_{T} [GeV]",50,0,100 ),
177 hdef('JetSubtractedScaleMomentum_eta_0_10', "JetSubtractedScaleMomentum eta - 0-10%; #eta",50,-6,6 ),
178 hdef('JetSubtractedScaleMomentum_phi_0_10', "JetSubtractedScaleMomentum phi - 0-10%; #phi",50,-3.3,3.3 ),
179 hdef('JetSubtractedScaleMomentum_m_0_10', "JetSubtractedScaleMomentum m - 0-10%; Mass [GeV]",25,0,50 ),
180
181 hdef('2dSubtractedET_Expected_eta_0_10', "(UnsubScMomentum-SubScMomentum)/Expected vs #eta - 0-10%; #eta; (A^{Jet}/A^{FCal})xSubtractedET/FCalET",50,-6,6,100,0,5 ),
182 hdef('SubtractedET_Expected_eta_0_10', "(UnsubScMomentum-SubScMomentum)/Expected vs #eta - 0-10%; #eta; (A^{Jet}/A^{FCal})xSubtractedET/FCalET",50,-6,6 ),
183
184 hdef('2dSubtractedET_2Dphi_0_10', "UnsubScMomentum-SubScMomentum vs 2|#phi-#Psi_{2}| - 0-10%; 2|#phi-#Psi_{2}|; SubtractedET [GeV]",25,0,3.3, 40,0,200 ),
185
186 hdef('SubtractedET_eta_0_10', "UnsubScMomentum-SubScMomentum vs #eta - 0-10%; #eta; SubtractedET [GeV]",50,-6,6 ),
187 hdef('SubtractedET_pt_0_10', "UnsubScMomentum-SubScMomentum vs p_{T} - 0-10%; p_{T} [GeV]; SubtractedET [GeV]",100,0,1000 ),
188
189 hdef('SubtractedET_2Dphi_0_10', "UnsubScMomentum-SubScMomentum vs 2|#phi-#Psi_{2}| - 0-10%; 2|#phi-#Psi_{2}|; SubtractedET [GeV]",25,0,3.3 ),
190
191# 10-20 %
192 hdef('JetUnsubtractedScaleMomentum_pt_10_20', "JetUnsubtractedScaleMomentum p_{T} - 10-20%;p_{T} [GeV]",100,0,300 ),
193 hdef('JetUnsubtractedScaleMomentum_eta_10_20', "JetUnsubtractedScaleMomentum eta - 10-20%; #eta",50,-6,6 ),
194 hdef('JetUnsubtractedScaleMomentum_phi_10_20', "JetUnsubtractedScaleMomentum phi - 10-20%; #phi",50,-3.3,3.3 ),
195 hdef('JetUnsubtractedScaleMomentum_m_10_20', "JetUnsubtractedScaleMomentum m - 10-20%; Mass [GeV]",50,0,100 ),
196 hdef('JetSubtractedScaleMomentum_pt_10_20', "JetSubtractedScaleMomentum p_{T} - 10-20%;p_{T} [GeV]",50,0,100 ),
197 hdef('JetSubtractedScaleMomentum_eta_10_20', "JetSubtractedScaleMomentum eta - 10-20%; #eta",50,-6,6 ),
198 hdef('JetSubtractedScaleMomentum_phi_10_20', "JetSubtractedScaleMomentum phi - 10-20%; #phi",50,-3.3,3.3 ),
199 hdef('JetSubtractedScaleMomentum_m_10_20', "JetSubtractedScaleMomentum m - 10-20%; Mass [GeV]",25,0,50 ),
200
201 hdef('2dSubtractedET_Expected_eta_10_20', "(UnsubScMomentum-SubScMomentum)/Expected vs #eta - 10-20%; #eta; (A^{Jet}/A^{FCal})xSubtractedET/FCalET",50,-6,6,100,0,5 ),
202 hdef('SubtractedET_Expected_eta_10_20', "(UnsubScMomentum-SubScMomentum)/Expected vs #eta - 10-20%; #eta; (A^{Jet}/A^{FCal})xSubtractedET/FCalET",50,-6,6 ),
203
204 hdef('2dSubtractedET_2Dphi_10_20', "UnsubScMomentum-SubScMomentum vs 2|#phi-#Psi_{2}| - 10-20%; 2|#phi-#Psi_{2}|; SubtractedET [GeV]",25,0,3.3, 40,0,200 ),
205
206 hdef('SubtractedET_eta_10_20', "UnsubScMomentum-SubScMomentum vs #eta - 10-20%; #eta; SubtractedET [GeV]",50,-6,6 ),
207 hdef('SubtractedET_pt_10_20', "UnsubScMomentum-SubScMomentum vs p_{T} - 10-20%; p_{T} [GeV]; SubtractedET [GeV]",100,0,1000 ),
208
209 hdef('SubtractedET_2Dphi_10_20', "UnsubScMomentum-SubScMomentum vs 2|#phi-#Psi_{2}| - 10-20%; 2|#phi-#Psi_{2}|; SubtractedET [GeV]",25,0,3.3 ),
210
211# 20-40 %
212 hdef('JetUnsubtractedScaleMomentum_pt_20_40', "JetUnsubtractedScaleMomentum p_{T} - 20-40%;p_{T} [GeV]",100,0,300 ),
213 hdef('JetUnsubtractedScaleMomentum_eta_20_40', "JetUnsubtractedScaleMomentum eta - 20-40%; #eta",50,-6,6 ),
214 hdef('JetUnsubtractedScaleMomentum_phi_20_40', "JetUnsubtractedScaleMomentum phi - 20-40%; #phi",50,-3.3,3.3 ),
215 hdef('JetUnsubtractedScaleMomentum_m_20_40', "JetUnsubtractedScaleMomentum m - 20-40%; Mass [GeV]",50,0,100 ),
216 hdef('JetSubtractedScaleMomentum_pt_20_40', "JetSubtractedScaleMomentum p_{T} - 20-40%;p_{T} [GeV]",50,0,100 ),
217 hdef('JetSubtractedScaleMomentum_eta_20_40', "JetSubtractedScaleMomentum eta - 20-40%; #eta",50,-6,6 ),
218 hdef('JetSubtractedScaleMomentum_phi_20_40', "JetSubtractedScaleMomentum phi - 20-40%; #phi",50,-3.3,3.3 ),
219 hdef('JetSubtractedScaleMomentum_m_20_40', "JetSubtractedScaleMomentum m - 20-40%; Mass [GeV]",25,0,50 ),
220
221 hdef('2dSubtractedET_Expected_eta_20_40', "(UnsubScMomentum-SubScMomentum)/Expected vs #eta - 20-40%; #eta; (A^{Jet}/A^{FCal})xSubtractedET/FCalET",50,-6,6,100,0,5 ),
222 hdef('SubtractedET_Expected_eta_20_40', "(UnsubScMomentum-SubScMomentum)/Expected vs #eta - 20-40%; #eta; (A^{Jet}/A^{FCal})xSubtractedET/FCalET",50,-6,6 ),
223
224 hdef('2dSubtractedET_2Dphi_20_40', "UnsubScMomentum-SubScMomentum vs 2|#phi-#Psi_{2}| - 20-40%; 2|#phi-#Psi_{2}|; SubtractedET [GeV]",25,0,3.3, 40,0,200 ),
225
226 hdef('SubtractedET_eta_20_40', "UnsubScMomentum-SubScMomentum vs #eta - 20-40%; #eta; SubtractedET [GeV]",50,-6,6 ),
227 hdef('SubtractedET_pt_20_40', "UnsubScMomentum-SubScMomentum vs p_{T} - 20-40%; p_{T} [GeV]; SubtractedET [GeV]",100,0,1000 ),
228
229 hdef('SubtractedET_2Dphi_20_40', "UnsubScMomentum-SubScMomentum vs 2|#phi-#Psi_{2}| - 20-40%; 2|#phi-#Psi_{2}|; SubtractedET [GeV]",25,0,3.3 ),
230# 60-100 %
231 hdef('JetUnsubtractedScaleMomentum_pt_60_100', "JetUnsubtractedScaleMomentum p_{T} - 60-100%;p_{T} [GeV]",100,0,300 ),
232 hdef('JetUnsubtractedScaleMomentum_eta_60_100', "JetUnsubtractedScaleMomentum eta - 60-100%; #eta",50,-6,6 ),
233 hdef('JetUnsubtractedScaleMomentum_phi_60_100', "JetUnsubtractedScaleMomentum phi - 60-100%; #phi",50,-3.3,3.3 ),
234 hdef('JetUnsubtractedScaleMomentum_m_60_100', "JetUnsubtractedScaleMomentum m - 60-100%; Mass [GeV]",50,0,100 ),
235 hdef('JetSubtractedScaleMomentum_pt_60_100', "JetSubtractedScaleMomentum p_{T} - 60-100%;p_{T} [GeV]",50,0,100 ),
236 hdef('JetSubtractedScaleMomentum_eta_60_100', "JetSubtractedScaleMomentum eta - 60-100%; #eta",50,-6,6 ),
237 hdef('JetSubtractedScaleMomentum_phi_60_100', "JetSubtractedScaleMomentum phi - 60-100%; #phi",50,-3.3,3.3 ),
238 hdef('JetSubtractedScaleMomentum_m_60_100', "JetSubtractedScaleMomentum m - 60-100%; Mass [GeV]",25,0,50 ),
239
240 hdef('2dSubtractedET_Expected_eta_60_100', "(UnsubScMomentum-SubScMomentum)/Expected vs #eta - 60-100%; #eta; (A^{Jet}/A^{FCal})xSubtractedET/FCalET",50,-6,6,100,0,5 ),
241 hdef('SubtractedET_Expected_eta_60_100', "(UnsubScMomentum-SubScMomentum)/Expected vs #eta - 60-100%; #eta; (A^{Jet}/A^{FCal})xSubtractedET/FCalET",50,-6,6 ),
242
243 hdef('2dSubtractedET_2Dphi_60_100', "UnsubScMomentum-SubScMomentum vs 2|#phi-#Psi_{2}| - 60-100%; 2|#phi-#Psi_{2}|; SubtractedET [GeV]",25,0,3.3, 40,0,200 ),
244
245 hdef('SubtractedET_eta_60_100', "UnsubScMomentum-SubScMomentum vs #eta - 60-100%; #eta; SubtractedET [GeV]",50,-6,6 ),
246 hdef('SubtractedET_pt_60_100', "UnsubScMomentum-SubScMomentum vs p_{T} - 60-100%; p_{T} [GeV]; SubtractedET [GeV]",100,0,1000 ),
247
248 hdef('SubtractedET_2Dphi_60_100', "UnsubScMomentum-SubScMomentum vs 2|#phi-#Psi_{2}| - 60-100%; 2|#phi-#Psi_{2}|; SubtractedET [GeV]",25,0,3.3 ),
249
250 ]
251 ))
252
253#**************************************
254#**************************************
255# a helper function to combine selection with histo tools.
256def selectionAndHistos( selectType, histos, selectionName="", histoNameSuffix="",**otherArgs):
257
258 if isinstance(selectType, str):
259 # interpret selectType as a string. For ex "20000<pt<500000" or "subleadingjet"
260 tool = jhm.tool(selectType)
261 if issubclass( tool.__class__ , HistosForJetSelection):
262 # we're done.
263 selTool = tool
264 else:
265 # assume we have or need an attribute selector
266 attSel = tool
267 if tool is None:
268 attSel = attributeHistoManager.addSelector(selectType)
269 # and we rebuild a HistosForJetSelection in any case.
270 if histoNameSuffix=="" : histoNameSuffix = attSel.getName()
271 selTool = HistosForJetSelection("hjsel_"+attSel.getName(), SelectionType=3,
272 JetSelectorTool = attSel ,
273 HistoTitleSuffix = ' ('+selectType+')',
274 HistoNameSuffix = histoNameSuffix)
275 else:
276 selTool = selectType
277
278 if selTool is None :
279 print ("ERROR can't build histo tool for a jet selection. Uknown or wrong selection request :",selectType , selTool)
280 return None
281
282 if selectionName != "":
283 selTool = selTool.clone(selectionName)
284
285 interpretedTools = []
286 for h in histos:
287 if isinstance(h,str):
288 h = jhm.tool(h)
289 interpretedTools.append(h)
290
291 selTool.HistoTools = interpretedTools
292
293 # set other args if any:
294 for k,v in otherArgs.items():
295 setattr(selTool, k, v)
296 return selTool
297
298
Fills a list of histograms on a selected subset of a JetContainer.
A tool producing basic jet kinematics histogramms.
selectionAndHistos(selectType, histos, selectionName="", histoNameSuffix="", **otherArgs)