ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/src/MuonIDMod.cc
(Generate patch)

Comparing UserCode/MitPhysics/Mods/src/MuonIDMod.cc (file contents):
Revision 1.75 by ceballos, Fri May 4 21:47:03 2012 UTC vs.
Revision 1.84 by ceballos, Fri Jun 15 11:58:54 2012 UTC

# Line 30 | Line 30 | ClassImp(mithep::MuonIDMod)
30    fCaloIsolationCut(3.0),
31    fCombIsolationCut(0.15),
32    fCombRelativeIsolationCut(0.15),
33 <  fPFIsolationCut(-1.0),
33 >  fPFIsolationCut(-999.0),
34    fMuonPtMin(10),
35    fApplyD0Cut(kTRUE),
36    fApplyDZCut(kTRUE),
# Line 54 | Line 54 | ClassImp(mithep::MuonIDMod)
54    fPileupEnergyDensity(0),
55    fMuonTools(0),
56    fMuonIDMVA(0),
57  fMuonMVAWeights_Subdet0Pt10To14p5(""),
58  fMuonMVAWeights_Subdet1Pt10To14p5(""),
59  fMuonMVAWeights_Subdet0Pt14p5To20(""),
60  fMuonMVAWeights_Subdet1Pt14p5To20(""),
61  fMuonMVAWeights_Subdet0Pt20ToInf(""),
62  fMuonMVAWeights_Subdet1Pt20ToInf(""),
57    fTheRhoType(RhoUtilities::DEFAULT)
58   {
59    // Constructor.
# Line 80 | Line 74 | void MuonIDMod::Process()
74    LoadEventObject(fTrackName, fTracks);
75    LoadEventObject(fPFCandidatesName, fPFCandidates);
76    if(fMuIsoType == kTrackCaloSliding ||
77 <     fMuIsoType == kCombinedRelativeConeAreaCorrected ||
78 <     fMuIsoType == kPFIsoEffectiveAreaCorrected ||
77 >     fMuIsoType == kCombinedRelativeConeAreaCorrected ||        
78 >     fMuIsoType == kPFIsoEffectiveAreaCorrected ||
79       fMuIsoType == kMVAIso_BDTG_IDIso ||
80       fMuIsoType == kIsoRingsV0_BDTG_Iso ||
81       fMuIsoType == kIsoDeltaR
# Line 166 | Line 160 | void MuonIDMod::Process()
160            eta = TMath::Abs(mu->TrackerTrk()->Eta());
161          }
162          break;
163 +      case kGlobalOnly:
164 +        pass = mu->HasGlobalTrk();
165 +        if (pass && mu->TrackerTrk()) {
166 +          pt  = mu->TrackerTrk()->Pt();
167 +          eta = TMath::Abs(mu->TrackerTrk()->Eta());
168 +        }
169 +        else {
170 +          pt  = mu->Pt();
171 +          eta = TMath::Abs(mu->Eta());
172 +        }
173 +        break;
174        default:
175          break;
176      }
# Line 179 | Line 184 | void MuonIDMod::Process()
184      if (eta >= fEtaCut)
185        continue;
186  
182
183    //***********************************************************************************************
184    //Debug Info For Lepton MVA
185    //***********************************************************************************************
186    if( fPrintMVADebugInfo &&
187        (fMuIsoType == kMVAIso_BDTG_IDIso || fMuIDType == kMVAID_BDTG_IDIso)
188      ) {
189      cout << "Event: " << GetEventHeader()->RunNum() << " " << GetEventHeader()->LumiSec() << " "
190           << GetEventHeader()->EvtNum() << " : Rho = " << fPileupEnergyDensity->At(0)->Rho()
191           << " : Muon " << i << " "
192           << endl;
193      fMuonIDMVA->MVAValue(mu,fVertices->At(0),fMuonTools,fPFCandidates,fPileupEnergyDensity,kTRUE);
194    }
195    //***********************************************************************************************
196
197
187      Double_t RChi2 = 0.0;
188      if     (mu->HasGlobalTrk()) {
189        RChi2 = mu->GlobalTrk()->Chi2()/mu->GlobalTrk()->Ndof();
# Line 228 | Line 217 | void MuonIDMod::Process()
217                   mu->Quality().Quality(MuonQuality::GlobalMuonPromptTight);
218          break;
219        case kTight:
220 <        idpass = mu->BestTrk() !=  0 &&
221 <                 mu->Quality().Quality(MuonQuality::TMOneStationTight) &&
222 <                 mu->Quality().Quality(MuonQuality::TM2DCompatibilityTight) &&
223 <                 mu->BestTrk()->NHits() > 10 &&
224 <                 RChi2 < 10.0 &&
236 <                 mu->Quality().Quality(MuonQuality::GlobalMuonPromptTight);
220 >        idpass = mu->BestTrk() != 0 &&
221 >                 mu->NTrkLayersHit() > 5 &&
222 >                 mu->IsPFMuon() == kTRUE &&
223 >                 mu->BestTrk()->NPixelHits() > 0 &&
224 >                 RChi2 < 10.0;
225          break;
226 +      // 2012 WW analysis for 42x (there is no PFMuon link)
227        case kWWMuIdV1:
228          idpass = mu->BestTrk() != 0 &&
229 <                 mu->BestTrk()->NHits() > 10 &&
229 >                 mu->NTrkLayersHit() > 5 &&
230                   mu->BestTrk()->NPixelHits() > 0 &&
231                   mu->BestTrk()->PtErr()/mu->BestTrk()->Pt() < 0.1 &&
232 <                 RChi2 < 10.0 &&
244 <                (mu->NSegments() > 1 || mu->NMatches() > 1) &&
245 <                 mu->Quality().Quality(MuonQuality::GlobalMuonPromptTight);
232 >                 mu->TrkKink() < 20.0;
233          break;
234 +      // 2010 WW analysis
235        case kWWMuIdV2:
236          idpass = mu->BestTrk() != 0 &&
237                   mu->BestTrk()->NHits() > 10 &&
238                   mu->BestTrk()->NPixelHits() > 0 &&
239                   mu->BestTrk()->PtErr()/mu->BestTrk()->Pt() < 0.1;
240          break;
241 +      // 2011 WW analysis
242        case kWWMuIdV3:
243          idpass = mu->BestTrk() != 0 &&
244                   mu->BestTrk()->NHits() > 10 &&
# Line 257 | Line 246 | void MuonIDMod::Process()
246                   mu->BestTrk()->PtErr()/mu->BestTrk()->Pt() < 0.1 &&
247                   mu->TrkKink() < 20.0;
248          break;
249 +      // 2012 WW analysis
250 +      case kWWMuIdV4:
251 +        idpass = mu->BestTrk() != 0 &&
252 +                 mu->NTrkLayersHit() > 5 &&
253 +                 mu->IsPFMuon() == kTRUE &&
254 +                 mu->BestTrk()->NPixelHits() > 0 &&
255 +                 mu->BestTrk()->PtErr()/mu->BestTrk()->Pt() < 0.1 &&
256 +                 mu->TrkKink() < 20.0;
257 +        break;
258        case kMVAID_BDTG_IDIso:
259          {
260            Bool_t passDenominatorM2 = (mu->BestTrk() != 0 &&
# Line 299 | Line 297 | void MuonIDMod::Process()
297        case RhoUtilities::MIT_RHO_RANDOM_HIGH_ETA:
298          Rho = rho->RhoRandom();
299          break;
300 +      case RhoUtilities::CMS_RHO_RHOKT6PFJETS:
301 +        Rho = rho->RhoKt6PFJets();
302 +        break;
303        default:
304          Rho = rho->Rho();
305        }
# Line 329 | Line 330 | void MuonIDMod::Process()
330            if (totalIso < (mu->Pt()*theIsoCut)) isocut = kTRUE;
331          }
332          break;
333 <      case kTrackCaloSlidingNoCorrection:
333 >    case kTrackCaloSlidingNoCorrection:
334          {
335            Double_t totalIso =  1.0 * mu->IsoR03SumPt() +
336                                 1.0 * mu->IsoR03EmEt()  +
# Line 343 | Line 344 | void MuonIDMod::Process()
344            if (totalIso < (mu->Pt()*theIsoCut)) isocut = kTRUE;
345          }
346          break;
347 <      case kCombinedRelativeConeAreaCorrected:
348 <        {
349 <          //const PileupEnergyDensity *rho =  fPileupEnergyDensity->At(0); // Fabian: made Rho customable
350 <          Double_t totalIso =  mu->IsoR03SumPt() + mu->IsoR03EmEt() + mu->IsoR03HadEt() - Rho * TMath::Pi() * 0.3 * 0.3 ;
351 <          double theIsoCut = fCombRelativeIsolationCut;
352 <          if (totalIso < (mu->Pt()*theIsoCut)) isocut = kTRUE;
353 <        }
354 <        break;          
355 <    case kCombinedRelativeEffectiveAreaCorrected:
356 <      {
357 <        Double_t tmpRho = Rho;   // Fabian: made the Rho type customable.
358 <        //if (!(TMath::IsNaN(fPileupEnergyDensity->At(0)->Rho()) || std::isinf(fPileupEnergyDensity->At(0)->Rho())))
359 <        //tmpRho = fPileupEnergyDensity->At(0)->Rho();
347 >    case kCombinedRelativeConeAreaCorrected:    
348 >      {          
349 >        //const PileupEnergyDensity *rho =  fPileupEnergyDensity->At(0); // Fabian: made Rho customable          
350 >        Double_t totalIso =  mu->IsoR03SumPt() + mu->IsoR03EmEt() + mu->IsoR03HadEt() - Rho * TMath::Pi() * 0.3 * 0.3 ;          
351 >        double theIsoCut = fCombRelativeIsolationCut;    
352 >        if (totalIso < (mu->Pt()*theIsoCut)) isocut = kTRUE;    
353 >      }          
354 >      break;    
355 >    case kCombinedRelativeEffectiveAreaCorrected:        
356 >      {          
357 >        Double_t tmpRho = Rho;   // Fabian: made the Rho type customable.        
358 >        //if (!(TMath::IsNaN(fPileupEnergyDensity->At(0)->Rho()) || std::isinf(fPileupEnergyDensity->At(0)->Rho())))    
359 >        //tmpRho = fPileupEnergyDensity->At(0)->Rho();  
360          
361 <          isocut = ( mu->IsoR03SumPt() + mu->IsoR03EmEt() + mu->IsoR03HadEt()
362 <                     -  tmpRho*MuonTools::MuonEffectiveArea(MuonTools::kMuEMIso03, mu->Eta())
363 <                     -  tmpRho*MuonTools::MuonEffectiveArea(MuonTools::kMuHadIso03, mu->Eta())
364 <            ) < (mu->Pt()* 0.40);
365 <        }
366 <        break;          
367 <      case kPFIso:
368 <        {
369 <          Double_t pfIsoCutValue = 9999;
370 <          if(fPFIsolationCut > 0){
371 <            pfIsoCutValue = fPFIsolationCut;
372 <          } else {
373 <            if (mu->AbsEta() < 1.479) {
374 <              if (mu->Pt() > 20) {
375 <                pfIsoCutValue = 0.13;
376 <              } else {
377 <                pfIsoCutValue = 0.06;
377 <              }
378 <            } else {
379 <              if (mu->Pt() > 20) {
380 <                pfIsoCutValue = 0.09;
381 <              } else {
382 <                pfIsoCutValue = 0.05;
383 <              }
361 >        isocut = ( mu->IsoR03SumPt() + mu->IsoR03EmEt() + mu->IsoR03HadEt()      
362 >                   -  tmpRho*MuonTools::MuonEffectiveArea(MuonTools::kMuEMIso03, mu->Eta())      
363 >                   -  tmpRho*MuonTools::MuonEffectiveArea(MuonTools::kMuHadIso03, mu->Eta())    
364 >                   ) < (mu->Pt()* 0.40);        
365 >      }          
366 >      break;
367 >    case kPFIso:
368 >      {
369 >        Double_t pfIsoCutValue = 9999;
370 >        if(fPFIsolationCut > 0){
371 >          pfIsoCutValue = fPFIsolationCut;
372 >        } else {
373 >          if (mu->AbsEta() < 1.479) {
374 >            if (mu->Pt() > 20) {
375 >              pfIsoCutValue = 0.13;
376 >            } else {
377 >              pfIsoCutValue = 0.06;
378              }
379 <          }
380 <          Double_t totalIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.1, 1.0, 0.3, 0.0, fIntRadius);
381 <          if (totalIso < (mu->Pt()*pfIsoCutValue) )
382 <            isocut = kTRUE;
379 >          } else {
380 >            if (mu->Pt() > 20) {
381 >              pfIsoCutValue = 0.09;
382 >            } else {
383 >              pfIsoCutValue = 0.05;
384 >            }
385 >          }
386          }
387 <        break;
388 <      case kPFRadialIso:
389 <        {
390 <          Double_t pfIsoCutValue = 9999;
391 <          if(fPFIsolationCut > 0){
392 <            pfIsoCutValue = fPFIsolationCut;
393 <          } else {
394 <            if (mu->Pt() > 20) {
395 <              pfIsoCutValue = 0.10;
396 <            } else {
387 >        Double_t totalIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.1, 1.0, 0.3, 0.0, fIntRadius);
388 >        if (totalIso < (mu->Pt()*pfIsoCutValue) )
389 >          isocut = kTRUE;
390 >      }
391 >      break;
392 >    case kPFRadialIso:
393 >      {
394 >        Double_t pfIsoCutValue = 9999;
395 >        if(fPFIsolationCut > 0){
396 >          pfIsoCutValue = fPFIsolationCut;
397 >        } else {
398 >          if (mu->Pt() > 20) {
399 >            pfIsoCutValue = 0.10;
400 >          } else {
401                pfIsoCutValue = 0.05;
402              }
403            }
# Line 404 | Line 405 | void MuonIDMod::Process()
405            if (totalIso < (mu->Pt()*pfIsoCutValue) )
406              isocut = kTRUE;
407          }
408 <        break;
409 <      case kPFIsoEffectiveAreaCorrected:
410 <        {
411 <          Double_t pfIsoCutValue = 9999;
412 <          if(fPFIsolationCut > 0){
413 <            pfIsoCutValue = fPFIsolationCut;
414 <          } else {
415 <            pfIsoCutValue = fPFIsolationCut; //leave it like this for now
416 <          }
417 <          Double_t EffectiveAreaCorrectedPFIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.1, 1.0, 0.3, 0.0, fIntRadius)
418 <            - Rho * MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralIso03, mu->Eta());
419 <          //- fPileupEnergyDensity->At(0)->Rho() * MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralIso03, mu->Eta());  // Fabian: made Rho-type customable
420 <          isocut = EffectiveAreaCorrectedPFIso < (mu->Pt() * pfIsoCutValue);
421 <          break;
422 <        }
423 <      case kPFIsoNoL:
408 >      break;
409 >    case kPFIsoEffectiveAreaCorrected:  
410 >      {          
411 >        Double_t pfIsoCutValue = 9999;  
412 >        if(fPFIsolationCut > 0){        
413 >          pfIsoCutValue = fPFIsolationCut;      
414 >        } else {        
415 >          pfIsoCutValue = fPFIsolationCut; //leave it like this for now          
416 >        }        
417 >        Double_t EffectiveAreaCorrectedPFIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.1, 1.0, 0.3, 0.0, fIntRadius)    
418 >          - Rho * MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralIso03, mu->Eta());  
419 >        //- fPileupEnergyDensity->At(0)->Rho() * MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralIso03, mu->Eta());  // Fabian: made Rho-type customable      
420 >        isocut = EffectiveAreaCorrectedPFIso < (mu->Pt() * pfIsoCutValue);      
421 >        break;  
422 >      }
423 >      
424 >      
425 >    case kPFIsoNoL:
426          {
427            fNonIsolatedMuons     = GetObjThisEvt<MuonCol>(fNonIsolatedMuonsName);
428            fNonIsolatedElectrons = GetObjThisEvt<ElectronCol>(fNonIsolatedElectronsName);
# Line 450 | Line 453 | void MuonIDMod::Process()
453        case kMVAIso_BDTG_IDIso:
454        {
455  
453        // **************************************************************************
454        // Don't use effective area correction denominator. Instead use the old one.
455        // **************************************************************************
456
457        //         Double_t tmpRho = 0;
458        //         if (!(TMath::IsNaN(fPileupEnergyDensity->At(0)->Rho()) || isinf(fPileupEnergyDensity->At(0)->Rho())))
459        //           tmpRho = fPileupEnergyDensity->At(0)->Rho();
460        
461        //         isocut = ( mu->IsoR03SumPt() + mu->IsoR03EmEt() + mu->IsoR03HadEt()
462        //                    -  tmpRho*MuonTools::MuonEffectiveArea(MuonTools::kMuEMIso03, mu->Eta())
463        //                    -  tmpRho*MuonTools::MuonEffectiveArea(MuonTools::kMuHadIso03, mu->Eta())
464        //           ) < (mu->Pt()* 0.40);
465        
456          Double_t totalIso =  IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.1, 1.0, 0.3, 0.0, fIntRadius);
457          isocut = (totalIso < (mu->Pt()*0.4));
458  
# Line 538 | Line 528 | void MuonIDMod::SlaveBegin()
528    ReqEventObject(fTrackName, fTracks, kTRUE);
529    ReqEventObject(fPFCandidatesName, fPFCandidates, kTRUE);
530    if (fMuonIsoType.CompareTo("TrackCaloSliding") == 0
531 <      || fMuonIsoType.CompareTo("CombinedRelativeConeAreaCorrected") == 0
532 <      || fMuonIsoType.CompareTo("CombinedRelativeEffectiveAreaCorrected") == 0
531 >      || fMuonIsoType.CompareTo("CombinedRelativeConeAreaCorrected") == 0        
532 >      || fMuonIsoType.CompareTo("CombinedRelativeEffectiveAreaCorrected") == 0  
533        || fMuonIsoType.CompareTo("PFIsoEffectiveAreaCorrected") == 0
534        || fMuonIsoType.CompareTo("MVA_BDTG_IDIso") == 0
535        || fMuonIsoType.CompareTo("IsoRingsV0_BDTG_Iso") == 0
# Line 563 | Line 553 | void MuonIDMod::SlaveBegin()
553      fMuIDType = kWWMuIdV2;
554    else if (fMuonIDType.CompareTo("WWMuIdV3") == 0)
555      fMuIDType = kWWMuIdV3;
556 +  else if (fMuonIDType.CompareTo("WWMuIdV4") == 0)
557 +    fMuIDType = kWWMuIdV4;
558    else if (fMuonIDType.CompareTo("NoId") == 0)
559      fMuIDType = kNoId;
560    else if (fMuonIDType.CompareTo("Custom") == 0) {
# Line 586 | Line 578 | void MuonIDMod::SlaveBegin()
578      fMuIsoType = kTrackCaloSliding;
579    else if (fMuonIsoType.CompareTo("TrackCaloSlidingNoCorrection") == 0)
580      fMuIsoType = kTrackCaloSlidingNoCorrection;
581 <  else if (fMuonIsoType.CompareTo("CombinedRelativeConeAreaCorrected") == 0)
582 <    fMuIsoType = kCombinedRelativeConeAreaCorrected;
583 <  else if (fMuonIsoType.CompareTo("CombinedRelativeEffectiveAreaCorrected") == 0)
581 >  else if (fMuonIsoType.CompareTo("CombinedRelativeConeAreaCorrected") == 0)    
582 >    fMuIsoType = kCombinedRelativeConeAreaCorrected;    
583 >  else if (fMuonIsoType.CompareTo("CombinedRelativeEffectiveAreaCorrected") == 0)        
584      fMuIsoType = kCombinedRelativeEffectiveAreaCorrected;
585    else if (fMuonIsoType.CompareTo("PFIso") == 0)
586      fMuIsoType = kPFIso;
587    else if (fMuonIsoType.CompareTo("PFRadialIso") == 0)
588      fMuIsoType = kPFRadialIso;
589 <  else if (fMuonIsoType.CompareTo("PFIsoEffectiveAreaCorrected") == 0)
589 >  else if (fMuonIsoType.CompareTo("PFIsoEffectiveAreaCorrected") == 0)  
590      fMuIsoType = kPFIsoEffectiveAreaCorrected;
591    else if (fMuonIsoType.CompareTo("PFIsoNoL") == 0)
592      fMuIsoType = kPFIsoNoL;
# Line 631 | Line 623 | void MuonIDMod::SlaveBegin()
623      fMuClassType = kCaloMuon;
624    else if (fMuonClassType.CompareTo("TrackerBased") == 0)
625      fMuClassType = kTrackerBased;
626 +  else if (fMuonClassType.CompareTo("GlobalOnly") == 0)
627 +    fMuClassType = kGlobalOnly;
628    else {
629      SendError(kAbortAnalysis, "SlaveBegin",
630                "The specified muon class %s is not defined.",
# Line 644 | Line 638 | void MuonIDMod::SlaveBegin()
638      fMuonTools = new MuonTools();
639      fMuonIDMVA = new MuonIDMVA();
640      fMuonIDMVA->Initialize("BDTG method",
641 <                           fMuonMVAWeights_Subdet0Pt10To14p5,
642 <                           fMuonMVAWeights_Subdet1Pt10To14p5,
643 <                           fMuonMVAWeights_Subdet0Pt14p5To20,
644 <                           fMuonMVAWeights_Subdet1Pt14p5To20,
645 <                           fMuonMVAWeights_Subdet0Pt20ToInf,
646 <                           fMuonMVAWeights_Subdet1Pt20ToInf,
647 <                           MuonIDMVA::kIDIsoCombinedDetIso);
641 >                           string((getenv("CMSSW_BASE")+string("/src/MitPhysics/data/MuonMVAWeights/BarrelPtBin0_IDIsoCombined_BDTG.weights.xml"))),
642 >                           string((getenv("CMSSW_BASE")+string("/src/MitPhysics/data/MuonMVAWeights/EndcapPtBin0_IDIsoCombined_BDTG.weights.xml"))),
643 >                           string((getenv("CMSSW_BASE")+string("/src/MitPhysics/data/MuonMVAWeights/BarrelPtBin1_IDIsoCombined_BDTG.weights.xml"))),
644 >                           string((getenv("CMSSW_BASE")+string("/src/MitPhysics/data/MuonMVAWeights/EndcapPtBin1_IDIsoCombined_BDTG.weights.xml"))),
645 >                           string((getenv("CMSSW_BASE")+string("/src/MitPhysics/data/MuonMVAWeights/BarrelPtBin2_IDIsoCombined_BDTG.weights.xml"))),
646 >                           string((getenv("CMSSW_BASE")+string("/src/MitPhysics/data/MuonMVAWeights/EndcapPtBin2_IDIsoCombined_BDTG.weights.xml"))),
647 >                           MuonIDMVA::kIDIsoCombinedDetIso,
648 >                           fTheRhoType);
649    }
650    else if(fMuIsoType == kIsoRingsV0_BDTG_Iso) {
651      std::vector<std::string> muonidiso_weightfiles;
# Line 665 | Line 660 | void MuonIDMod::SlaveBegin()
660      fMuonIDMVA->Initialize("MuonIso_BDTG_IsoRings",
661                         MuonIDMVA::kIsoRingsV0,
662                         kTRUE,
663 <                       muonidiso_weightfiles);
663 >                       muonidiso_weightfiles,
664 >                       fTheRhoType);
665    }
666    else if(fMuIsoType == kIsoDeltaR) {
667      std::vector<std::string> muonidiso_weightfiles;
# Line 678 | Line 674 | void MuonIDMod::SlaveBegin()
674      fMuonIDMVA->Initialize("muonHZZ2012IsoDRMVA",
675                         MuonIDMVA::kIsoDeltaR,
676                         kTRUE,
677 <                       muonidiso_weightfiles);
677 >                       muonidiso_weightfiles,
678 >                       fTheRhoType);
679    }
680  
681   }
# Line 727 | Line 724 | Bool_t MuonIDMod::PassMuonIsoRingsV0_BDT
724                                                const PileupEnergyDensityCol *PileupEnergyDensity) const
725   {
726  
727 +  Bool_t isDebug = kFALSE;
728    const Track *muTrk=0;
729    if(mu->HasTrackerTrk())         { muTrk = mu->TrackerTrk();    }
730    else if(mu->HasStandaloneTrk()) { muTrk = mu->StandaloneTrk(); }
# Line 734 | Line 732 | Bool_t MuonIDMod::PassMuonIsoRingsV0_BDT
732    ElectronOArr *tempElectrons = new  ElectronOArr;
733    MuonOArr     *tempMuons     = new  MuonOArr;
734    Double_t MVAValue = fMuonIDMVA->MVAValue(mu,vertex,fMuonTools,fPFCandidates,
735 <                      PileupEnergyDensity,MuonTools::kMuEAFall11MC,tempElectrons,tempMuons,kFALSE);
735 >                      PileupEnergyDensity,MuonTools::kMuEAFall11MC,tempElectrons,tempMuons,isDebug);
736    delete tempElectrons;
737    delete tempMuons;
738  
739    Int_t MVABin = fMuonIDMVA->GetMVABin(muTrk->Eta(), muTrk->Pt(), mu->IsGlobalMuon(), mu->IsTrackerMuon());
740  
741 <  Double_t MVACut = -999;
742 <  if      (MVABin == 0) MVACut = -0.593;
743 <  else if (MVABin == 1) MVACut =  0.337;
744 <  else if (MVABin == 2) MVACut = -0.767;
745 <  else if (MVABin == 3) MVACut =  0.410;
746 <  else if (MVABin == 4) MVACut = -0.989;
747 <  else if (MVABin == 5) MVACut = -0.995;
741 >  Double_t MVACut = -1.0;
742 >  Double_t eta = mu->AbsEta();
743 >  if     (mu->Pt() <  20 && eta <  1.479) MVACut = 0.86;
744 >  else if(mu->Pt() <  20 && eta >= 1.479) MVACut = 0.82;
745 >  else if(mu->Pt() >= 20 && eta <  1.479) MVACut = 0.82;
746 >  else if(mu->Pt() >= 20 && eta >= 1.479) MVACut = 0.86;
747 >
748 >  if(fPFIsolationCut > -1.0) MVACut = fPFIsolationCut;
749 >
750 >  if(isDebug == kTRUE){
751 >    printf("PassMuonIsoRingsV0_BDTG_IsoDebug: %d, pt, eta = %f, %f, rho = %f(%f) : RingsMVA = %f, bin: %d\n",
752 >           GetEventHeader()->EvtNum(),mu->Pt(), mu->Eta(),
753 >           fPileupEnergyDensity->At(0)->Rho(),fPileupEnergyDensity->At(0)->RhoKt6PFJets(),MVAValue,MVABin);
754 >  }
755  
756    if (MVAValue > MVACut) return kTRUE;
757    return kFALSE;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines