148 |
|
return false; |
149 |
|
} |
150 |
|
static inline double getCaloCompatabilitySlowly(mithep::Muon* iMuon,bool iEMSpecial, bool iCorrectedHCAL) { |
151 |
– |
//if(fpion_em_etaEmi == 0) { |
151 |
|
std::cout << "Warning Loading Compatability Slowly" << std::endl; |
152 |
< |
TFile* lPion_templates = new TFile("MitCommon/MuonTools/data/PionCaloTemplate.root","READ"); |
153 |
< |
TFile* lMuon_templates = new TFile("MitCommon/MuonTools/data/MuonCaloTemplate.root","READ"); |
154 |
< |
TH2D* lpion_em_etaEmi = (TH2D*) lPion_templates->Get("em_etaEmi"); |
155 |
< |
TH2D* lpion_had_etaEmi = (TH2D*) lPion_templates->Get("had_etaEmi"); |
156 |
< |
TH2D* lpion_had_etaTmi = (TH2D*) lPion_templates->Get("had_etaTmi"); |
157 |
< |
TH2D* lpion_em_etaB = (TH2D*) lPion_templates->Get("em_etaB") ; |
158 |
< |
TH2D* lpion_had_etaB = (TH2D*) lPion_templates->Get("had_etaB") ; |
159 |
< |
TH2D* lpion_ho_etaB = (TH2D*) lPion_templates->Get("ho_etaB") ; |
160 |
< |
TH2D* lpion_had_etaTpl = (TH2D*) lPion_templates->Get("had_etaTpl"); |
161 |
< |
TH2D* lpion_em_etaEpl = (TH2D*) lPion_templates->Get("em_etaEpl") ; |
162 |
< |
TH2D* lpion_had_etaEpl = (TH2D*) lPion_templates->Get("had_etaEpl"); |
163 |
< |
TH2D* lmuon_em_etaEmi = (TH2D*) lMuon_templates->Get("em_etaEmi") ; |
164 |
< |
TH2D* lmuon_had_etaEmi = (TH2D*) lMuon_templates->Get("had_etaEmi"); |
165 |
< |
TH2D* lmuon_had_etaTmi = (TH2D*) lMuon_templates->Get("had_etaTmi"); |
166 |
< |
TH2D* lmuon_em_etaB = (TH2D*) lMuon_templates->Get("em_etaB") ; |
167 |
< |
TH2D* lmuon_had_etaB = (TH2D*) lMuon_templates->Get("had_etaB") ; |
168 |
< |
TH2D* lmuon_ho_etaB = (TH2D*) lMuon_templates->Get("ho_etaB") ; |
169 |
< |
TH2D* lmuon_had_etaTpl = (TH2D*) lMuon_templates->Get("had_etaTpl"); |
170 |
< |
TH2D* lmuon_em_etaEpl = (TH2D*) lMuon_templates->Get("em_etaEpl"); |
171 |
< |
TH2D* lmuon_had_etaEpl = (TH2D*) lMuon_templates->Get("had_etaEpl"); |
172 |
< |
//} |
173 |
< |
double lEta = -1.; double lP = -1; |
174 |
< |
double lEM = -5.; double lHad = 0; double lHO = 0; |
175 |
< |
lEta = iMuon->Eta(); |
176 |
< |
lP = iMuon->P(); |
177 |
< |
if(lP >= 2000.) lP = 1999.9; |
178 |
< |
if(!iEMSpecial || iMuon->EmEnergy() != 0.) lEM = iMuon->EmEnergy(); |
179 |
< |
lHad = iMuon->HadEnergy(); |
180 |
< |
lHO = iMuon->HoEnergy(); |
181 |
< |
if(lP < 0. ) return 0.5; |
182 |
< |
if(fabs(lEta) > 2.5 ) return 0.5; |
183 |
< |
TH2D* lTMuonHad = NULL; |
184 |
< |
TH2D* lTPionHad = NULL; |
185 |
< |
TH2D* lTMuonHo = NULL; |
186 |
< |
TH2D* lTPionHo = NULL; |
187 |
< |
TH2D* lTMuonEm = NULL; |
188 |
< |
TH2D* lTPionEm = NULL; |
189 |
< |
|
190 |
< |
if(fabs(lEta) >= 1.27) { |
191 |
< |
if(iCorrectedHCAL) lHad *= 1.8/2.2; |
192 |
< |
if(lEta > 0) { |
193 |
< |
lTPionHad = lpion_had_etaEpl; |
194 |
< |
lTMuonHad = lmuon_had_etaEpl; |
195 |
< |
} else { |
196 |
< |
lTPionHad = lpion_had_etaEmi; |
197 |
< |
lTMuonHad = lmuon_had_etaEmi; |
198 |
< |
} |
199 |
< |
} |
200 |
< |
if(fabs(lEta) < 1.27 && fabs(lEta) >= 1.1 ) { |
201 |
< |
if(iCorrectedHCAL) lHad *= (1.8/(-2.2*fabs(lEta)+5.5)); |
202 |
< |
if(lEta > 0) { |
203 |
< |
lTPionHad = lpion_had_etaTpl; |
204 |
< |
lTMuonHad = lmuon_had_etaTpl; |
205 |
< |
} else { |
206 |
< |
lTPionHad = lpion_had_etaTmi; |
207 |
< |
lTMuonHad = lmuon_had_etaTmi; |
208 |
< |
} |
209 |
< |
} |
210 |
< |
if(fabs(lEta) < 1.1) { |
211 |
< |
if(iCorrectedHCAL) lHad *= sin(2*atan(exp(iMuon->Eta()))); |
212 |
< |
lTPionHad = lpion_had_etaB; |
213 |
< |
lTMuonHad = lmuon_had_etaB; |
214 |
< |
} |
215 |
< |
if(lEta > 1.479 ) { |
216 |
< |
lTPionEm = lpion_em_etaEpl; |
217 |
< |
lTMuonEm = lmuon_em_etaEpl; |
218 |
< |
} |
219 |
< |
if(fabs(lEta) <= 1.479) { |
220 |
< |
lTPionEm = lpion_em_etaB; |
221 |
< |
lTMuonEm = lmuon_em_etaB; |
222 |
< |
} |
223 |
< |
if(lEta < -1.479 ) { |
224 |
< |
lTPionEm = lpion_em_etaEmi; |
225 |
< |
lTMuonEm = lmuon_em_etaEmi; |
226 |
< |
} |
227 |
< |
if(fabs(lEta) < 1.28) { |
228 |
< |
lTPionHo = lpion_ho_etaB; |
229 |
< |
lTMuonHo = lmuon_ho_etaB; |
230 |
< |
} |
231 |
< |
|
232 |
< |
double lPBX = 1.; double lPSX = 1.; |
233 |
< |
double lPBY = 1.; double lPSY = 1.; |
234 |
< |
double lPBZ = 1.; double lPSZ = 1.; |
235 |
< |
if(!overflow(lTPionEm, lP,lEM)) lPBX = lTPionEm ->GetBinContent(lTPionEm ->GetXaxis()->FindBin(lP),lTPionEm ->GetYaxis()->FindBin(lEM) ); |
236 |
< |
if(!overflow(lTPionHad,lP,lHad)) lPBY = lTPionHad->GetBinContent(lTPionHad->GetXaxis()->FindBin(lP),lTPionHad->GetYaxis()->FindBin(lHad)); |
237 |
< |
if(!overflow(lTPionHo, lP,lHO)) lPBZ = lTPionHo ->GetBinContent(lTPionHo ->GetXaxis()->FindBin(lP),lTPionHo ->GetYaxis()->FindBin(lHO) ); |
238 |
< |
if(!overflow(lTMuonEm, lP,lEM )) lPSX = lTMuonEm ->GetBinContent(lTMuonEm ->GetXaxis()->FindBin(lP),lTMuonEm ->GetYaxis()->FindBin(lEM) ); |
239 |
< |
if(!overflow(lTMuonHad,lP,lHad)) lPSY = lTMuonHad->GetBinContent(lTMuonHad->GetXaxis()->FindBin(lP),lTMuonHad->GetYaxis()->FindBin(lHad)); |
240 |
< |
if(!overflow(lTMuonHo ,lP,lHO)) lPSZ = lTMuonHo ->GetBinContent(lTMuonHo ->GetXaxis()->FindBin(lP),lTMuonHo ->GetYaxis()->FindBin(lHO) ); |
241 |
< |
|
242 |
< |
if(lPSX == 0. || lPBX == 0. || (lEM <= 0. && !iEMSpecial)) {lPSX = 1.; lPBX = 1.;} |
243 |
< |
if(lPSY == 0. || lPBY == 0. || lHad == 0.) {lPSY = 1.; lPBY = 1.;} |
244 |
< |
if(lPSZ == 0. || lPBZ == 0. || lHO == 0.) {lPSZ = 1.; lPBZ = 1.;} |
245 |
< |
lPion_templates->Close(); |
246 |
< |
lMuon_templates->Close(); |
247 |
< |
if((lPSX*lPSY*lPSZ+lPBX*lPBY*lPBZ) > 0.) return lPSX*lPSY*lPSZ/(lPSX*lPSY*lPSZ+lPBX*lPBY*lPBZ); |
248 |
< |
return 0.5; |
152 |
> |
TFile* lPion_templates = new TFile("MitCommon/MuonTools/data/PionCaloTemplate.root","READ"); |
153 |
> |
TFile* lMuon_templates = new TFile("MitCommon/MuonTools/data/MuonCaloTemplate.root","READ"); |
154 |
> |
TH2D* lpion_em_etaEmi = (TH2D*) lPion_templates->Get("em_etaEmi"); |
155 |
> |
TH2D* lpion_had_etaEmi = (TH2D*) lPion_templates->Get("had_etaEmi"); |
156 |
> |
TH2D* lpion_had_etaTmi = (TH2D*) lPion_templates->Get("had_etaTmi"); |
157 |
> |
TH2D* lpion_em_etaB = (TH2D*) lPion_templates->Get("em_etaB") ; |
158 |
> |
TH2D* lpion_had_etaB = (TH2D*) lPion_templates->Get("had_etaB") ; |
159 |
> |
TH2D* lpion_ho_etaB = (TH2D*) lPion_templates->Get("ho_etaB") ; |
160 |
> |
TH2D* lpion_had_etaTpl = (TH2D*) lPion_templates->Get("had_etaTpl"); |
161 |
> |
TH2D* lpion_em_etaEpl = (TH2D*) lPion_templates->Get("em_etaEpl") ; |
162 |
> |
TH2D* lpion_had_etaEpl = (TH2D*) lPion_templates->Get("had_etaEpl"); |
163 |
> |
TH2D* lmuon_em_etaEmi = (TH2D*) lMuon_templates->Get("em_etaEmi") ; |
164 |
> |
TH2D* lmuon_had_etaEmi = (TH2D*) lMuon_templates->Get("had_etaEmi"); |
165 |
> |
TH2D* lmuon_had_etaTmi = (TH2D*) lMuon_templates->Get("had_etaTmi"); |
166 |
> |
TH2D* lmuon_em_etaB = (TH2D*) lMuon_templates->Get("em_etaB") ; |
167 |
> |
TH2D* lmuon_had_etaB = (TH2D*) lMuon_templates->Get("had_etaB") ; |
168 |
> |
TH2D* lmuon_ho_etaB = (TH2D*) lMuon_templates->Get("ho_etaB") ; |
169 |
> |
TH2D* lmuon_had_etaTpl = (TH2D*) lMuon_templates->Get("had_etaTpl"); |
170 |
> |
TH2D* lmuon_em_etaEpl = (TH2D*) lMuon_templates->Get("em_etaEpl"); |
171 |
> |
TH2D* lmuon_had_etaEpl = (TH2D*) lMuon_templates->Get("had_etaEpl"); |
172 |
> |
|
173 |
> |
double lEta = -1.; double lP = -1; |
174 |
> |
double lEM = -5.; double lHad = 0; double lHO = 0; |
175 |
> |
lEta = iMuon->Eta(); |
176 |
> |
lP = iMuon->P(); |
177 |
> |
if(lP >= 2000.) lP = 1999.9; |
178 |
> |
if(!iEMSpecial || iMuon->EmEnergy() != 0.) lEM = iMuon->EmEnergy(); |
179 |
> |
lHad = iMuon->HadEnergy(); |
180 |
> |
lHO = iMuon->HoEnergy(); |
181 |
> |
if(lP < 0. ) return 0.5; |
182 |
> |
if(fabs(lEta) > 2.5 ) return 0.5; |
183 |
> |
TH2D* lTMuonHad = NULL; |
184 |
> |
TH2D* lTPionHad = NULL; |
185 |
> |
TH2D* lTMuonHo = NULL; |
186 |
> |
TH2D* lTPionHo = NULL; |
187 |
> |
TH2D* lTMuonEm = NULL; |
188 |
> |
TH2D* lTPionEm = NULL; |
189 |
> |
|
190 |
> |
if(fabs(lEta) >= 1.27) { |
191 |
> |
if(iCorrectedHCAL) lHad *= 1.8/2.2; |
192 |
> |
if(lEta > 0) { |
193 |
> |
lTPionHad = lpion_had_etaEpl; |
194 |
> |
lTMuonHad = lmuon_had_etaEpl; |
195 |
> |
} else { |
196 |
> |
lTPionHad = lpion_had_etaEmi; |
197 |
> |
lTMuonHad = lmuon_had_etaEmi; |
198 |
> |
} |
199 |
> |
} |
200 |
> |
if(fabs(lEta) < 1.27 && fabs(lEta) >= 1.1 ) { |
201 |
> |
if(iCorrectedHCAL) lHad *= (1.8/(-2.2*fabs(lEta)+5.5)); |
202 |
> |
if(lEta > 0) { |
203 |
> |
lTPionHad = lpion_had_etaTpl; |
204 |
> |
lTMuonHad = lmuon_had_etaTpl; |
205 |
> |
} else { |
206 |
> |
lTPionHad = lpion_had_etaTmi; |
207 |
> |
lTMuonHad = lmuon_had_etaTmi; |
208 |
> |
} |
209 |
> |
} |
210 |
> |
if(fabs(lEta) < 1.1) { |
211 |
> |
if(iCorrectedHCAL) lHad *= sin(2*atan(exp(iMuon->Eta()))); |
212 |
> |
lTPionHad = lpion_had_etaB; |
213 |
> |
lTMuonHad = lmuon_had_etaB; |
214 |
> |
} |
215 |
> |
if(lEta > 1.479 ) { |
216 |
> |
lTPionEm = lpion_em_etaEpl; |
217 |
> |
lTMuonEm = lmuon_em_etaEpl; |
218 |
> |
} |
219 |
> |
if(fabs(lEta) <= 1.479) { |
220 |
> |
lTPionEm = lpion_em_etaB; |
221 |
> |
lTMuonEm = lmuon_em_etaB; |
222 |
> |
} |
223 |
> |
if(lEta < -1.479 ) { |
224 |
> |
lTPionEm = lpion_em_etaEmi; |
225 |
> |
lTMuonEm = lmuon_em_etaEmi; |
226 |
> |
} |
227 |
> |
if(fabs(lEta) < 1.28) { |
228 |
> |
lTPionHo = lpion_ho_etaB; |
229 |
> |
lTMuonHo = lmuon_ho_etaB; |
230 |
> |
} |
231 |
> |
|
232 |
> |
double lPBX = 1.; double lPSX = 1.; |
233 |
> |
double lPBY = 1.; double lPSY = 1.; |
234 |
> |
double lPBZ = 1.; double lPSZ = 1.; |
235 |
> |
if(!overflow(lTPionEm, lP,lEM)) lPBX = lTPionEm ->GetBinContent(lTPionEm ->GetXaxis()->FindBin(lP),lTPionEm ->GetYaxis()->FindBin(lEM) ); |
236 |
> |
if(!overflow(lTPionHad,lP,lHad)) lPBY = lTPionHad->GetBinContent(lTPionHad->GetXaxis()->FindBin(lP),lTPionHad->GetYaxis()->FindBin(lHad)); |
237 |
> |
if(!overflow(lTPionHo, lP,lHO)) lPBZ = lTPionHo ->GetBinContent(lTPionHo ->GetXaxis()->FindBin(lP),lTPionHo ->GetYaxis()->FindBin(lHO) ); |
238 |
> |
if(!overflow(lTMuonEm, lP,lEM )) lPSX = lTMuonEm ->GetBinContent(lTMuonEm ->GetXaxis()->FindBin(lP),lTMuonEm ->GetYaxis()->FindBin(lEM) ); |
239 |
> |
if(!overflow(lTMuonHad,lP,lHad)) lPSY = lTMuonHad->GetBinContent(lTMuonHad->GetXaxis()->FindBin(lP),lTMuonHad->GetYaxis()->FindBin(lHad)); |
240 |
> |
if(!overflow(lTMuonHo ,lP,lHO)) lPSZ = lTMuonHo ->GetBinContent(lTMuonHo ->GetXaxis()->FindBin(lP),lTMuonHo ->GetYaxis()->FindBin(lHO) ); |
241 |
> |
|
242 |
> |
if(lPSX == 0. || lPBX == 0. || (lEM <= 0. && !iEMSpecial)) {lPSX = 1.; lPBX = 1.;} |
243 |
> |
if(lPSY == 0. || lPBY == 0. || lHad == 0.) {lPSY = 1.; lPBY = 1.;} |
244 |
> |
if(lPSZ == 0. || lPBZ == 0. || lHO == 0.) {lPSZ = 1.; lPBZ = 1.;} |
245 |
> |
lPion_templates->Close(); |
246 |
> |
lMuon_templates->Close(); |
247 |
> |
if((lPSX*lPSY*lPSZ+lPBX*lPBY*lPBZ) > 0.) return lPSX*lPSY*lPSZ/(lPSX*lPSY*lPSZ+lPBX*lPBY*lPBZ); |
248 |
> |
return 0.5; |
249 |
|
} |
250 |
|
static inline float getSegmentCompatability(const mithep::Muon* iMuon) { |
251 |
|
int lNStationsCrossed = 0; |