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

Comparing UserCode/MitPhysics/Utils/src/MuonIDMVA.cc (file contents):
Revision 1.9 by sixie, Tue Apr 24 12:48:30 2012 UTC vs.
Revision 1.13 by ceballos, Fri May 4 21:56:29 2012 UTC

# Line 87 | Line 87 | void MuonIDMVA::Initialize(  std::string
87    UInt_t ExpectedNBins = 0;
88    if (!fUseBinnedVersion) {
89      ExpectedNBins = 1;
90 <  } else if (type == kV2
90 >  } else if    (type == kV2
91               || type == kV3
92               || type == kV8
93               || type == kIDIsoCombinedDetIso
# Line 96 | Line 96 | void MuonIDMVA::Initialize(  std::string
96               || type == kIDIsoCombinedIsoRingsV0
97      ) {
98      ExpectedNBins = 6;
99 <  }
99 >  } else if (type == kIsoDeltaR){
100 >    ExpectedNBins = 4;
101 >  }
102 >
103    fNMVABins = ExpectedNBins;
104  
105    //Check number of weight files given
# Line 230 | Line 233 | void MuonIDMVA::Initialize(  std::string
233        tmpTMVAReader->AddVariable( "NeutralHadronIso_DR0p3To0p4",   &fMVAVar_NeutralHadronIso_DR0p3To0p4  );
234        tmpTMVAReader->AddVariable( "NeutralHadronIso_DR0p4To0p5",   &fMVAVar_NeutralHadronIso_DR0p4To0p5  );
235      }
236 +
237 +    if (type == kIsoDeltaR) {
238 +      tmpTMVAReader->AddVariable("PFCharged",                     &fMVAVar_MuRelIsoPFCharged       );
239 +      tmpTMVAReader->AddVariable("PFNeutral",                     &fMVAVar_MuRelIsoPFNeutral       );
240 +      tmpTMVAReader->AddVariable("PFPhotons",                     &fMVAVar_MuRelIsoPFPhotons       );
241 +      tmpTMVAReader->AddVariable("SumDeltaR",                     &fMVAVar_MuDeltaRSum             );
242 +      tmpTMVAReader->AddVariable("DeltaRMean",                    &fMVAVar_MuDeltaRMean            );
243 +      tmpTMVAReader->AddVariable("Density",                       &fMVAVar_MuDensity               );
244 +    }
245      
246      tmpTMVAReader->BookMVA(fMethodname , weightsfiles[i] );
247      std::cout << "MVABin " << i << " : MethodName = " << fMethodname
# Line 281 | Line 293 | UInt_t MuonIDMVA::GetMVABin( double eta,
293        }
294      }
295  
296 +    if (fMVAType == MuonIDMVA::kIsoDeltaR){
297 +      if (pt <  20 && fabs(eta) <  1.479) bin = 0;
298 +      if (pt <  20 && fabs(eta) >= 1.479) bin = 1;
299 +      if (pt >= 20 && fabs(eta) <  1.479) bin = 2;
300 +      if (pt >= 20 && fabs(eta) >= 1.479) bin = 3;
301 +    }
302 +
303      return bin;
304   }
305  
# Line 831 | Line 850 | Double_t MuonIDMVA::MVAValue(const Muon
850    Double_t tmpNeutralHadronIso_DR0p3To0p4  = 0;
851    Double_t tmpNeutralHadronIso_DR0p4To0p5  = 0;
852  
853 +  Double_t tmpMuDeltaRMean = 0;
854 +  Double_t tmpMuDeltaRSum = 0;
855 +  Double_t tmpMuDensity = 0;
856 +  Double_t tmpMuNPFCand = 0;
857 +
858    for (UInt_t p=0; p<PFCands->GetEntries();p++) {  
859      const PFCandidate *pf = PFCands->At(p);
860        
# Line 848 | Line 872 | Double_t MuonIDMVA::MVAValue(const Muon
872        //************************************************************
873        // Lepton Footprint Removal
874        //************************************************************            
875 <      for (UInt_t q=0; q < goodElectrons->GetEntries() ; ++q) {
876 <        //if pf candidate matches an electron passing ID cuts, then veto it
877 <        if(pf->GsfTrk() && goodElectrons->At(q)->GsfTrk() &&
878 <           pf->GsfTrk() == goodElectrons->At(q)->GsfTrk()) IsLeptonFootprint = kTRUE;
879 <        if(pf->TrackerTrk() && goodElectrons->At(q)->TrackerTrk() &&
880 <           pf->TrackerTrk() == goodElectrons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE;
881 <        //if pf candidate lies in veto regions of electron passing ID cuts, then veto it
882 <        if(pf->BestTrk() && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479
883 <           && MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.015) IsLeptonFootprint = kTRUE;
884 <        if(pf->PFType() == PFCandidate::eGamma && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479 &&
885 <           MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.08) IsLeptonFootprint = kTRUE;
875 >      if(goodElectrons) {
876 >        for (UInt_t q=0; q < goodElectrons->GetEntries() ; ++q) {
877 >          //if pf candidate matches an electron passing ID cuts, then veto it
878 >          if(pf->GsfTrk() && goodElectrons->At(q)->GsfTrk() &&
879 >             pf->GsfTrk() == goodElectrons->At(q)->GsfTrk()) IsLeptonFootprint = kTRUE;
880 >          if(pf->TrackerTrk() && goodElectrons->At(q)->TrackerTrk() &&
881 >             pf->TrackerTrk() == goodElectrons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE;
882 >          //if pf candidate lies in veto regions of electron passing ID cuts, then veto it
883 >          if(pf->BestTrk() && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479
884 >             && MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.015) IsLeptonFootprint = kTRUE;
885 >          if(pf->PFType() == PFCandidate::eGamma && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479 &&
886 >             MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.08) IsLeptonFootprint = kTRUE;
887 >        }
888        }
889 <      for (UInt_t q=0; q < goodMuons->GetEntries() ; ++q) {
890 <        //if pf candidate matches an muon passing ID cuts, then veto it
891 <        if(pf->TrackerTrk() && goodMuons->At(q)->TrackerTrk() &&
892 <           pf->TrackerTrk() == goodMuons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE;
893 <        //if pf candidate lies in veto regions of muon passing ID cuts, then veto it
894 <        if(pf->BestTrk() && MathUtils::DeltaR(goodMuons->At(q)->Mom(), pf->Mom()) < 0.01) IsLeptonFootprint = kTRUE;
889 >      if(goodMuons) {
890 >        for (UInt_t q=0; q < goodMuons->GetEntries() ; ++q) {
891 >          //if pf candidate matches an muon passing ID cuts, then veto it
892 >          if(pf->TrackerTrk() && goodMuons->At(q)->TrackerTrk() &&
893 >             pf->TrackerTrk() == goodMuons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE;
894 >          //if pf candidate lies in veto regions of muon passing ID cuts, then veto it
895 >          if(pf->BestTrk() && MathUtils::DeltaR(goodMuons->At(q)->Mom(), pf->Mom()) < 0.01) IsLeptonFootprint = kTRUE;
896 >        }
897        }
898  
899        if (!IsLeptonFootprint) {
# Line 905 | Line 933 | Double_t MuonIDMVA::MVAValue(const Muon
933             if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += pf->Pt();
934             if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += pf->Pt();
935           }
936 +
937 +         if (dr < 0.5) {
938 +           tmpMuNPFCand++;
939 +           tmpMuDeltaRMean += dr;
940 +           tmpMuDeltaRSum  += dr;
941 +           tmpMuDensity    += pf->Pt() / dr;
942 +         }
943        } //not lepton footprint
944      } //in 1.0 dr cone
945    } //loop over PF candidates
946    
947 <  Double_t fMVAVar_ChargedIso_DR0p0To0p1  = 0;
948 <  Double_t fMVAVar_ChargedIso_DR0p1To0p2  = 0;
949 <  Double_t fMVAVar_ChargedIso_DR0p2To0p3  = 0;
950 <  Double_t fMVAVar_ChargedIso_DR0p3To0p4  = 0;
951 <  Double_t fMVAVar_ChargedIso_DR0p4To0p5  = 0;
952 <  Double_t fMVAVar_GammaIso_DR0p0To0p1  = 0;
953 <  Double_t fMVAVar_GammaIso_DR0p1To0p2  = 0;
954 <  Double_t fMVAVar_GammaIso_DR0p2To0p3  = 0;
955 <  Double_t fMVAVar_GammaIso_DR0p3To0p4  = 0;
956 <  Double_t fMVAVar_GammaIso_DR0p4To0p5  = 0;
957 <  Double_t fMVAVar_NeutralHadronIso_DR0p0To0p1  = 0;
958 <  Double_t fMVAVar_NeutralHadronIso_DR0p1To0p2  = 0;
959 <  Double_t fMVAVar_NeutralHadronIso_DR0p2To0p3  = 0;
960 <  Double_t fMVAVar_NeutralHadronIso_DR0p3To0p4  = 0;
961 <  Double_t fMVAVar_NeutralHadronIso_DR0p4To0p5  = 0;
947 > //   Double_t fMVAVar_ChargedIso_DR0p0To0p1  = 0;
948 > //   Double_t fMVAVar_ChargedIso_DR0p1To0p2  = 0;
949 > //   Double_t fMVAVar_ChargedIso_DR0p2To0p3  = 0;
950 > //   Double_t fMVAVar_ChargedIso_DR0p3To0p4  = 0;
951 > //   Double_t fMVAVar_ChargedIso_DR0p4To0p5  = 0;
952 > //   Double_t fMVAVar_GammaIso_DR0p0To0p1  = 0;
953 > //   Double_t fMVAVar_GammaIso_DR0p1To0p2  = 0;
954 > //   Double_t fMVAVar_GammaIso_DR0p2To0p3  = 0;
955 > //   Double_t fMVAVar_GammaIso_DR0p3To0p4  = 0;
956 > //   Double_t fMVAVar_GammaIso_DR0p4To0p5  = 0;
957 > //   Double_t fMVAVar_NeutralHadronIso_DR0p0To0p1  = 0;
958 > //   Double_t fMVAVar_NeutralHadronIso_DR0p1To0p2  = 0;
959 > //   Double_t fMVAVar_NeutralHadronIso_DR0p2To0p3  = 0;
960 > //   Double_t fMVAVar_NeutralHadronIso_DR0p3To0p4  = 0;
961 > //   Double_t fMVAVar_NeutralHadronIso_DR0p4To0p5  = 0;
962  
963 <  fMVAVar_ChargedIso_DR0p0To0p1   = TMath::Min((tmpChargedIso_DR0p0To0p1)/mu->Pt(), 2.5);
964 <  fMVAVar_ChargedIso_DR0p1To0p2   = TMath::Min((tmpChargedIso_DR0p1To0p2)/mu->Pt(), 2.5);
963 >  fMVAVar_ChargedIso_DR0p0To0p1 = TMath::Min((tmpChargedIso_DR0p0To0p1)/mu->Pt(), 2.5);
964 >  fMVAVar_ChargedIso_DR0p1To0p2 = TMath::Min((tmpChargedIso_DR0p1To0p2)/mu->Pt(), 2.5);
965    fMVAVar_ChargedIso_DR0p2To0p3 = TMath::Min((tmpChargedIso_DR0p2To0p3)/mu->Pt(), 2.5);
966    fMVAVar_ChargedIso_DR0p3To0p4 = TMath::Min((tmpChargedIso_DR0p3To0p4)/mu->Pt(), 2.5);
967    fMVAVar_ChargedIso_DR0p4To0p5 = TMath::Min((tmpChargedIso_DR0p4To0p5)/mu->Pt(), 2.5);
# Line 940 | Line 975 | Double_t MuonIDMVA::MVAValue(const Muon
975    fMVAVar_NeutralHadronIso_DR0p2To0p3 = TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p2To0p3 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p2To0p3, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
976    fMVAVar_NeutralHadronIso_DR0p3To0p4 = TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p3To0p4 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p3To0p4, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
977    fMVAVar_NeutralHadronIso_DR0p4To0p5 = TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p4To0p5 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p4To0p5, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
943  
978  
979 +  // Variables for dR MVA
980 +  fMVAVar_MuRelIsoPFCharged  = 0.;
981 +  fMVAVar_MuRelIsoPFCharged += TMath::Min((tmpChargedIso_DR0p0To0p1)/mu->Pt(), 2.5);
982 +  fMVAVar_MuRelIsoPFCharged += TMath::Min((tmpChargedIso_DR0p1To0p2)/mu->Pt(), 2.5);
983 +  fMVAVar_MuRelIsoPFCharged += TMath::Min((tmpChargedIso_DR0p2To0p3)/mu->Pt(), 2.5);
984 +  fMVAVar_MuRelIsoPFCharged += TMath::Min((tmpChargedIso_DR0p3To0p4)/mu->Pt(), 2.5);
985 +  fMVAVar_MuRelIsoPFCharged += TMath::Min((tmpChargedIso_DR0p4To0p5)/mu->Pt(), 2.5);
986 +  
987 +  fMVAVar_MuRelIsoPFNeutral  = 0.;
988 +  fMVAVar_MuRelIsoPFNeutral += TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p0To0p1 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p0To0p1, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
989 +  fMVAVar_MuRelIsoPFNeutral += TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p1To0p2 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p1To0p2, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
990 +  fMVAVar_MuRelIsoPFNeutral += TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p2To0p3 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p2To0p3, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
991 +  fMVAVar_MuRelIsoPFNeutral += TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p3To0p4 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p3To0p4, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
992 +  fMVAVar_MuRelIsoPFNeutral += TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p4To0p5 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p4To0p5, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
993 +
994 +  fMVAVar_MuRelIsoPFPhotons  = 0.;
995 +  fMVAVar_MuRelIsoPFPhotons += TMath::Max(TMath::Min((tmpGammaIso_DR0p0To0p1 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuGammaIsoDR0p0To0p1, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
996 +  fMVAVar_MuRelIsoPFPhotons += TMath::Max(TMath::Min((tmpGammaIso_DR0p1To0p2 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuGammaIsoDR0p1To0p2, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
997 +  fMVAVar_MuRelIsoPFPhotons += TMath::Max(TMath::Min((tmpGammaIso_DR0p2To0p3 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuGammaIsoDR0p2To0p3, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
998 +  fMVAVar_MuRelIsoPFPhotons += TMath::Max(TMath::Min((tmpGammaIso_DR0p3To0p4 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuGammaIsoDR0p3To0p4, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
999 +  fMVAVar_MuRelIsoPFPhotons += TMath::Max(TMath::Min((tmpGammaIso_DR0p4To0p5 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuGammaIsoDR0p4To0p5, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0);
1000 +
1001 +  fMVAVar_MuDeltaRMean      = tmpMuDeltaRMean/TMath::Max(1.0,tmpMuNPFCand);
1002 +  fMVAVar_MuDeltaRSum       = tmpMuDeltaRSum;
1003 +  fMVAVar_MuDensity         = tmpMuDensity;
1004  
1005    Double_t mva = -9999;  
1006    TMVA::Reader *reader = 0;
# Line 975 | Line 1034 | Double_t MuonIDMVA::MVAValue(const Muon
1034                << " MuHadS9Energy " << fMVAVar_MuHadS9Energy    
1035                << " MuEmS9Energy " << fMVAVar_MuEmS9Energy    
1036                << " eta " << fMVAVar_MuEta  
1037 <              << " pt " << fMVAVar_MuPt << std::endl;
1038 <    
1037 >              << " pt " << fMVAVar_MuPt
1038 >              << " isoInfo: ";
1039      std::cout << fMVAVar_ChargedIso_DR0p0To0p1 << " "
1040                << fMVAVar_ChargedIso_DR0p1To0p2 << " "
1041                << fMVAVar_ChargedIso_DR0p2To0p3 << " "
# Line 991 | Line 1050 | Double_t MuonIDMVA::MVAValue(const Muon
1050                << fMVAVar_NeutralHadronIso_DR0p1To0p2 << " "
1051                << fMVAVar_NeutralHadronIso_DR0p2To0p3 << " "
1052                << fMVAVar_NeutralHadronIso_DR0p3To0p4 << " "
1053 <              << fMVAVar_NeutralHadronIso_DR0p4To0p5 << " "
1054 <              << std::endl;
1055 <    std::cout << "MVA: " << mva
1053 >              << fMVAVar_NeutralHadronIso_DR0p4To0p5;
1054 >    std::cout << " MuRelIsoPFCharged: " << fMVAVar_MuRelIsoPFCharged
1055 >              << " MuRelIsoPFNeutral: " << fMVAVar_MuRelIsoPFNeutral
1056 >              << " MuRelIsoPFPhotons: " << fMVAVar_MuRelIsoPFPhotons
1057 >              << " MuDeltaRMean: "      << fMVAVar_MuDeltaRMean
1058 >              << " MuDeltaRMean: "      << fMVAVar_MuDeltaRMean
1059 >              << " MuDensity: "         << fMVAVar_MuDensity;        
1060 >    std::cout << " MVA: " << mva
1061                << std::endl;
1062    }
1063  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines