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.2 by sixie, Wed Dec 21 14:17:12 2011 UTC vs.
Revision 1.5 by sixie, Wed Jan 4 14:39:16 2012 UTC

# Line 212 | Line 212 | Double_t MuonIDMVA::MVAValue(Double_t Mu
212                                                  
213    mva = reader->EvaluateMVA( fMethodname );
214  
215 +  Bool_t printdebug = kFALSE;
216 +  if (printdebug == kTRUE) {
217 +    std::cout << "Debug Muon MVA: "
218 +         << MuPt << " " << MuEta << " --> MVABin " << MVABin << " : "    
219 +         << fMVAVar_MuTkNchi2              << " "
220 +         << fMVAVar_MuGlobalNchi2          << " "
221 +         << fMVAVar_MuNValidHits           << " "
222 +         << fMVAVar_MuNTrackerHits         << " "
223 +         << fMVAVar_MuNPixelHits           << " "  
224 +         << fMVAVar_MuNMatches             << " "
225 +         << fMVAVar_MuD0                   << " "
226 +         << fMVAVar_MuIP3d                 << " "
227 +         << fMVAVar_MuIP3dSig              << " "
228 +         << fMVAVar_MuTrkKink              << " "
229 +         << fMVAVar_MuSegmentCompatibility << " "
230 +         << fMVAVar_MuCaloCompatibility    << " "
231 +         << fMVAVar_MuHadEnergyOverPt      << " "
232 +         << fMVAVar_MuHoEnergyOverPt       << " "
233 +         << fMVAVar_MuEmEnergyOverPt       << " "
234 +         << fMVAVar_MuHadS9EnergyOverPt    << " "
235 +         << fMVAVar_MuHoS9EnergyOverPt     << " "
236 +         << fMVAVar_MuEmS9EnergyOverPt     << " "
237 +         << fMVAVar_MuChargedIso03OverPt   << " "
238 +         << fMVAVar_MuNeutralIso03OverPt   << " "
239 +         << fMVAVar_MuChargedIso04OverPt   << " "
240 +         << fMVAVar_MuNeutralIso04OverPt   << " "
241 +         << " === : === "
242 +         << mva
243 +         << std::endl;
244 +  }
245 +
246    return mva;
247   }
248  
249  
250  
251 < // //--------------------------------------------------------------------------------------------------
252 < // Double_t MuonIDMVA::MVAValue(const Muon *ele, const Vertex *vertex) {
251 > //--------------------------------------------------------------------------------------------------
252 > Double_t MuonIDMVA::MVAValue(const Muon *mu, const Vertex *vertex, MuonTools *fMuonTools,
253 >                             const PFCandidateCol *PFCands,
254 >                             const PileupEnergyDensityCol *PileupEnergyDensity) {
255    
256 < //   if (!fIsInitialized) {
257 < //     std::cout << "Error: MuonIDMVA not properly initialized.\n";
258 < //     return -9999;
259 < //   }
260 <
261 < //   Int_t subdet = 0;
262 < //   if (ele->SCluster()->AbsEta() < 1.0) subdet = 0;
263 < //   else if (ele->SCluster()->AbsEta() < 1.479) subdet = 1;
231 < //   else subdet = 2;
232 < //   Int_t ptBin = 0;
233 < //   if (ele->Pt() > 20.0) ptBin = 1;
256 >  if (!fIsInitialized) {
257 >    std::cout << "Error: MuonIDMVA not properly initialized.\n";
258 >    return -9999;
259 >  }
260 >
261 >  const Track *muTrk=0;
262 >  if(mu->HasTrackerTrk())         { muTrk = mu->TrackerTrk();    }
263 >  else if(mu->HasStandaloneTrk()) { muTrk = mu->StandaloneTrk(); }
264    
265 < //   //set all input variables
266 < //   fMVAVar_EleSigmaIEtaIEta = ele->CoviEtaiEta() ;
267 < //   fMVAVar_EleDEtaIn = ele->DeltaEtaSuperClusterTrackAtVtx();
268 < //   fMVAVar_EleDPhiIn = ele->DeltaPhiSuperClusterTrackAtVtx();
269 < //   fMVAVar_EleHoverE = ele->HadronicOverEm();
270 < //   fMVAVar_EleD0 = ele->BestTrk()->D0Corrected(*vertex);
271 < //   fMVAVar_EleDZ = ele->BestTrk()->DzCorrected(*vertex);
272 < //   fMVAVar_EleFBrem = ele->FBrem();
273 < //   fMVAVar_EleEOverP = ele->ESuperClusterOverP();
274 < //   fMVAVar_EleESeedClusterOverPout = ele->ESeedClusterOverPout();
275 < //   if (!TMath::IsNaN(ele->SCluster()->Seed()->CoviPhiiPhi())) fMVAVar_EleSigmaIPhiIPhi = TMath::Sqrt(ele->SCluster()->Seed()->CoviPhiiPhi());
276 < //   else fMVAVar_EleSigmaIPhiIPhi = ele->CoviEtaiEta();
277 < //   fMVAVar_EleNBrem = ele->NumberOfClusters() - 1;
278 < //   fMVAVar_EleOneOverEMinusOneOverP = (1.0/(ele->SCluster()->Energy())) - 1.0 / ele->BestTrk()->P();
279 < //   fMVAVar_EleESeedClusterOverPIn = ele->ESeedClusterOverPIn();
280 < //   fMVAVar_EleIP3d = ele->Ip3dPV();
281 < //   fMVAVar_EleIP3dSig = ele->Ip3dPVSignificance();
282 <
283 < //   Double_t mva = -9999;  
284 < //   TMVA::Reader *reader = 0;
285 < //   Int_t MVABin = -1;
286 < //   if (subdet == 0 && ptBin == 0) MVABin = 0;
287 < //   if (subdet == 1 && ptBin == 0) MVABin = 1;
288 < //   if (subdet == 2 && ptBin == 0) MVABin = 2;
289 < //   if (subdet == 0 && ptBin == 1) MVABin = 3;
290 < //   if (subdet == 1 && ptBin == 1) MVABin = 4;
291 < //   if (subdet == 2 && ptBin == 1) MVABin = 5;
292 < //   assert(MVABin >= 0 && MVABin <= 5);
293 < //   reader = fTMVAReader[MVABin];
265 >  Double_t muNchi2 = 0.0;
266 >  if(mu->HasGlobalTrk())          { muNchi2 = mu->GlobalTrk()->RChi2();     }
267 >  else if(mu->HasStandaloneTrk()) { muNchi2 = mu->StandaloneTrk()->RChi2(); }
268 >  else if(mu->HasTrackerTrk())    { muNchi2 = mu->TrackerTrk()->RChi2();    }
269 >
270 >  Double_t ChargedIso03 = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.1, 99999, 0.3, 0.0, 0.0);
271 >  Double_t NeutralIso03_05Threshold = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.0, 0.5, 0.3, 0.0, 0.0);
272 >  Double_t ChargedIso04 = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.1, 99999, 0.4, 0.0, 0.0);
273 >  Double_t NeutralIso04_05Threshold = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.0, 0.5, 0.4, 0.0, 0.0);
274 >
275 >  Double_t Rho = 0;
276 >  if (!(TMath::IsNaN(PileupEnergyDensity->At(0)->Rho()) || isinf(PileupEnergyDensity->At(0)->Rho()))) Rho = PileupEnergyDensity->At(0)->Rho();
277 >
278 >  Int_t subdet = 0;
279 >  if (fabs(muTrk->Eta()) < 1.479) subdet = 0;
280 >  else subdet = 1;
281 >  Int_t ptBin = 0;
282 >  if (muTrk->Pt() > 14.5) ptBin = 1;
283 >  if (muTrk->Pt() > 20.0) ptBin = 2;
284 >
285 >  //set all input variables
286 >  fMVAVar_MuTkNchi2              = muTrk->RChi2();
287 >  fMVAVar_MuGlobalNchi2          = muNchi2;
288 >  fMVAVar_MuNValidHits           = mu->NValidHits();
289 >  fMVAVar_MuNTrackerHits         = muTrk->NHits();
290 >  fMVAVar_MuNPixelHits           = muTrk->NPixelHits();
291 >  fMVAVar_MuNMatches             = mu->NMatches();
292 >  fMVAVar_MuD0                   = muTrk->D0Corrected(*vertex);
293 >  fMVAVar_MuIP3d                 = mu->Ip3dPV();
294 >  fMVAVar_MuIP3dSig              = mu->Ip3dPVSignificance();
295 >  fMVAVar_MuTrkKink              = mu->TrkKink();
296 >  fMVAVar_MuSegmentCompatibility = fMuonTools->GetSegmentCompatability(mu);
297 >  fMVAVar_MuCaloCompatibility    = fMuonTools->GetCaloCompatability(mu, kTRUE, kTRUE);
298 >  fMVAVar_MuHadEnergyOverPt      = (mu->HadEnergy() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuHadEnergy,muTrk->Eta()))/muTrk->Pt();
299 >  fMVAVar_MuHoEnergyOverPt       = (mu->HoEnergy() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuHoEnergy,muTrk->Eta()))/muTrk->Pt();
300 >  fMVAVar_MuEmEnergyOverPt       = (mu->EmEnergy() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuEmEnergy,muTrk->Eta()))/muTrk->Pt();
301 >  fMVAVar_MuHadS9EnergyOverPt    = (mu->HadS9Energy() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuHadS9Energy,muTrk->Eta()))/muTrk->Pt();
302 >  fMVAVar_MuHoS9EnergyOverPt     = (mu->HoS9Energy() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuHoS9Energy,muTrk->Eta()))/muTrk->Pt();
303 >  fMVAVar_MuEmS9EnergyOverPt     = (mu->EmS9Energy() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuEmS9Energy,muTrk->Eta()))/muTrk->Pt();
304 >  fMVAVar_MuChargedIso03OverPt   = (ChargedIso03 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuChargedIso03,muTrk->Eta()))/muTrk->Pt();
305 >  fMVAVar_MuNeutralIso03OverPt   = (NeutralIso03_05Threshold - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralIso03,muTrk->Eta()))/muTrk->Pt();
306 >  fMVAVar_MuChargedIso04OverPt   = (ChargedIso04 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuChargedIso04,muTrk->Eta()))/muTrk->Pt();
307 >  fMVAVar_MuNeutralIso04OverPt   = (NeutralIso04_05Threshold - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralIso04,muTrk->Eta()))/muTrk->Pt();
308 >
309 >  Double_t mva = -9999;  
310 >  TMVA::Reader *reader = 0;
311 >
312 >  Int_t MVABin = -1;
313 >  if (subdet == 0 && ptBin == 0) MVABin = 0;
314 >  if (subdet == 1 && ptBin == 0) MVABin = 1;
315 >  if (subdet == 0 && ptBin == 1) MVABin = 2;
316 >  if (subdet == 1 && ptBin == 1) MVABin = 3;
317 >  if (subdet == 0 && ptBin == 2) MVABin = 4;
318 >  if (subdet == 1 && ptBin == 2) MVABin = 5;
319 >  assert(MVABin >= 0 && MVABin <= 5);
320 >  reader = fTMVAReader[MVABin];
321                                                  
322 < //   mva = reader->EvaluateMVA( fMethodname );
322 >  mva = reader->EvaluateMVA( fMethodname );
323 >
324 >  Bool_t printdebug = kFALSE;
325 >  if (printdebug == kTRUE) {
326 >    std::cout << "Debug Muon MVA: "
327 >              << mu->Pt() << " " << mu->Eta() << " " << mu->Phi() << " : "
328 >              << muTrk->Pt() << " " << muTrk->Eta() << " --> MVABin " << MVABin << " : "    
329 >              << fMVAVar_MuTkNchi2              << " "
330 >              << fMVAVar_MuGlobalNchi2          << " "
331 >              << fMVAVar_MuNValidHits           << " "
332 >              << fMVAVar_MuNTrackerHits         << " "
333 >              << fMVAVar_MuNPixelHits           << " "  
334 >              << fMVAVar_MuNMatches             << " "
335 >              << fMVAVar_MuD0                   << " "
336 >              << fMVAVar_MuIP3d                 << " "
337 >              << fMVAVar_MuIP3dSig              << " "
338 >              << fMVAVar_MuTrkKink              << " "
339 >              << fMVAVar_MuSegmentCompatibility << " "
340 >              << fMVAVar_MuCaloCompatibility    << " "
341 >              << fMVAVar_MuHadEnergyOverPt      << " "
342 >              << fMVAVar_MuHoEnergyOverPt       << " "
343 >              << fMVAVar_MuEmEnergyOverPt       << " "
344 >              << fMVAVar_MuHadS9EnergyOverPt    << " "
345 >              << fMVAVar_MuHoS9EnergyOverPt     << " "
346 >              << fMVAVar_MuEmS9EnergyOverPt     << " "
347 >              << fMVAVar_MuChargedIso03OverPt   << " "
348 >              << fMVAVar_MuNeutralIso03OverPt   << " "
349 >              << fMVAVar_MuChargedIso04OverPt   << " "
350 >              << fMVAVar_MuNeutralIso04OverPt   << " "
351 >              << " === : === "
352 >              << mva
353 >              << std::endl;
354 >  }
355  
356 < //   return mva;
357 < // }
356 >  return mva;
357 > }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines