ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/interface/MuonTools.h
(Generate patch)

Comparing UserCode/MitPhysics/Utils/interface/MuonTools.h (file contents):
Revision 1.1 by pharris, Mon Nov 3 16:43:51 2008 UTC vs.
Revision 1.2 by ceballos, Tue Nov 11 21:21:28 2008 UTC

# Line 148 | Line 148 | namespace mithep {
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;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines