ATLAS Offline Software
HIJetHistoTools.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
2 
3 from JetMonitoring.JetMonitoringConf import JetKinematicHistos, HistosForJetSelection, LeadingJetsRelations, HIEfficiencyResponseHistos, HIJetUEMonitoring
4 
5 from JetMonitoring.JetHistoManager import jetHistoManager as jhm
6 from JetMonitoring.JetAttributeHistoManager import attributeHistoManager
7 from 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.
12 compactSpecification = {
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 :
64 caloSamples =["PreSamplerB", "EMB1", "EMB2", "EMB3", "PreSamplerE", "EME1", "EME2", "EME3", "HEC0", "HEC1", "HEC2", "HEC3", "TileBar0", "TileBar1", "TileBar2", "TileGap1", "TileGap2", "TileGap3", "TileExt0", "TileExt1", "TileExt2", "FCAL0", "FCAL1", "FCAL2", ]
65 for 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
71 attributeHistoManager.buildKnownTools(compactSpecification)
72 
73 
74 # Jet histogramming tools
75 jhm.addTool( JetKinematicHistos("allkinematics",PlotOccupancy=True, PlotAveragePt=True, PlotNJet=True , PlotNConstit = True) )
76 jhm.addTool( JetKinematicHistos("basickinematics") )
77 #jhm.addTool( JetKinematicHistos("basickinematics_emscale", JetScale="JetEMScaleMomentum") )
78 #jhm.addTool( JetKinematicHistos("basickinematics_constscale", JetScale="JetConstitScaleMomentum") )
79 
80 jhm.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 
92 jhm.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
146 jhm.addTool( HistosForJetSelection("alljets", SelectionType=0) )
147 jhm.addTool( HistosForJetSelection("leadingjet", SelectionType=1) )
148 jhm.addTool( HistosForJetSelection("subleadingjet", SelectionType=2) )
149 
150 
151 jhm.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.
256 def 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 
HIJetHistoTools.selectionAndHistos
def selectionAndHistos(selectType, histos, selectionName="", histoNameSuffix="", **otherArgs)
Definition: HIJetHistoTools.py:256