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.6 by sixie, Wed Jan 4 16:28:17 2012 UTC vs.
Revision 1.7 by sixie, Mon Jan 23 20:05:41 2012 UTC

# Line 114 | Line 114 | void MuonIDMVA::Initialize( TString meth
114        fTMVAReader[i]->AddVariable( "NeutralIso04OverPt",   &fMVAVar_MuNeutralIso04OverPt    );      
115      }
116      
117 +    if (type == kIDIsoCombinedDetIso) {
118 +      fTMVAReader[i]->AddVariable( "TkNchi2",              &fMVAVar_MuTkNchi2               );
119 +      fTMVAReader[i]->AddVariable( "GlobalNchi2",          &fMVAVar_MuGlobalNchi2           );
120 +      fTMVAReader[i]->AddVariable( "NValidHits",           &fMVAVar_MuNValidHits            );
121 +      fTMVAReader[i]->AddVariable( "NTrackerHits",         &fMVAVar_MuNTrackerHits          );
122 +      fTMVAReader[i]->AddVariable( "NPixelHits",           &fMVAVar_MuNPixelHits            );
123 +      fTMVAReader[i]->AddVariable( "NMatches",             &fMVAVar_MuNMatches              );
124 +      fTMVAReader[i]->AddVariable( "D0",                   &fMVAVar_MuD0                    );      
125 +      fTMVAReader[i]->AddVariable( "IP3d",                 &fMVAVar_MuIP3d                  );      
126 +      fTMVAReader[i]->AddVariable( "IP3dSig",              &fMVAVar_MuIP3dSig               );      
127 +      fTMVAReader[i]->AddVariable( "TrkKink",              &fMVAVar_MuTrkKink               );      
128 +      fTMVAReader[i]->AddVariable( "SegmentCompatibility", &fMVAVar_MuSegmentCompatibility  );      
129 +      fTMVAReader[i]->AddVariable( "CaloCompatibility",    &fMVAVar_MuCaloCompatibility     );      
130 +      fTMVAReader[i]->AddVariable( "HadEnergyOverPt",      &fMVAVar_MuHadEnergyOverPt       );      
131 +      fTMVAReader[i]->AddVariable( "EmEnergyOverPt",       &fMVAVar_MuEmEnergyOverPt        );      
132 +      fTMVAReader[i]->AddVariable( "HadS9EnergyOverPt",    &fMVAVar_MuHadS9EnergyOverPt     );      
133 +      fTMVAReader[i]->AddVariable( "EmS9EnergyOverPt",     &fMVAVar_MuEmS9EnergyOverPt      );      
134 +      fTMVAReader[i]->AddVariable( "TrkIso03OverPt",       &fMVAVar_MuTrkIso03OverPt        );
135 +      fTMVAReader[i]->AddVariable( "EMIso03OverPt",        &fMVAVar_MuEMIso03OverPt         );
136 +      fTMVAReader[i]->AddVariable( "HadIso03OverPt",       &fMVAVar_MuHadIso03OverPt        );
137 +      fTMVAReader[i]->AddVariable( "TrkIso05OverPt",       &fMVAVar_MuTrkIso05OverPt        );
138 +      fTMVAReader[i]->AddVariable( "EMIso05OverPt",        &fMVAVar_MuEMIso05OverPt         );
139 +      fTMVAReader[i]->AddVariable( "HadIso05OverPt",       &fMVAVar_MuHadIso05OverPt        );
140 +    
141 +    }
142 +    
143      if (i==0) fTMVAReader[i]->BookMVA(fMethodname , Subdet0Pt10To14p5Weights );
144      if (i==1) fTMVAReader[i]->BookMVA(fMethodname , Subdet1Pt10To14p5Weights );
145      if (i==2) fTMVAReader[i]->BookMVA(fMethodname , Subdet0Pt14p5To20Weights );
# Line 247 | Line 273 | Double_t MuonIDMVA::MVAValue(Double_t Mu
273   }
274  
275  
276 + //--------------------------------------------------------------------------------------------------
277 + Double_t MuonIDMVA::MVAValue(Double_t MuPt , Double_t MuEta,
278 +                             Double_t                   MuTkNchi2,
279 +                             Double_t                   MuGlobalNchi2,
280 +                             Double_t                   MuNValidHits,
281 +                             Double_t                   MuNTrackerHits,
282 +                             Double_t                   MuNPixelHits,
283 +                             Double_t                   MuNMatches,
284 +                             Double_t                   MuD0,
285 +                             Double_t                   MuIP3d,
286 +                             Double_t                   MuIP3dSig,
287 +                             Double_t                   MuTrkKink,
288 +                             Double_t                   MuSegmentCompatibility,
289 +                             Double_t                   MuCaloCompatibility,
290 +                             Double_t                   MuHadEnergyOverPt,
291 +                             Double_t                   MuHoEnergyOverPt,
292 +                             Double_t                   MuEmEnergyOverPt,
293 +                             Double_t                   MuHadS9EnergyOverPt,
294 +                             Double_t                   MuHoS9EnergyOverPt,
295 +                             Double_t                   MuEmS9EnergyOverPt,
296 +                             Double_t                   MuTrkIso03OverPt,
297 +                             Double_t                   MuEMIso03OverPt,
298 +                             Double_t                   MuHadIso03OverPt,
299 +                             Double_t                   MuTrkIso05OverPt,
300 +                             Double_t                   MuEMIso05OverPt,
301 +                             Double_t                   MuHadIso05OverPt,
302 +                             Bool_t                     printDebug                            
303 +  ) {
304 +  
305 +  if (!fIsInitialized) {
306 +    std::cout << "Error: MuonIDMVA not properly initialized.\n";
307 +    return -9999;
308 +  }
309 +
310 +  Int_t subdet = 0;
311 +  if (fabs(MuEta) < 1.479) subdet = 0;
312 +  else subdet = 1;
313 +  Int_t ptBin = 0;
314 +  if (MuPt > 14.5) ptBin = 1;
315 +  if (MuPt > 20.0) ptBin = 2;
316 +
317 +  
318 +  //set all input variables
319 +  fMVAVar_MuTkNchi2              = MuTkNchi2;
320 +  fMVAVar_MuGlobalNchi2          = MuGlobalNchi2;
321 +  fMVAVar_MuNValidHits           = MuNValidHits;
322 +  fMVAVar_MuNTrackerHits         = MuNTrackerHits;
323 +  fMVAVar_MuNPixelHits           = MuNPixelHits;  
324 +  fMVAVar_MuNMatches             = MuNMatches;
325 +  fMVAVar_MuD0                   = MuD0;
326 +  fMVAVar_MuIP3d                 = MuIP3d;
327 +  fMVAVar_MuIP3dSig              = MuIP3dSig;
328 +  fMVAVar_MuTrkKink              = MuTrkKink;
329 +  fMVAVar_MuSegmentCompatibility = MuSegmentCompatibility;
330 +  fMVAVar_MuCaloCompatibility    = MuCaloCompatibility;
331 +  fMVAVar_MuHadEnergyOverPt      = MuHadEnergyOverPt;
332 +  fMVAVar_MuHoEnergyOverPt       = MuHoEnergyOverPt;
333 +  fMVAVar_MuEmEnergyOverPt       = MuEmEnergyOverPt;
334 +  fMVAVar_MuHadS9EnergyOverPt    = MuHadS9EnergyOverPt;
335 +  fMVAVar_MuHoS9EnergyOverPt     = MuHoS9EnergyOverPt;
336 +  fMVAVar_MuEmS9EnergyOverPt     = MuEmS9EnergyOverPt;
337 +  fMVAVar_MuTrkIso03OverPt       = MuTrkIso03OverPt;
338 +  fMVAVar_MuEMIso03OverPt        = MuEMIso03OverPt;
339 +  fMVAVar_MuHadIso03OverPt       = MuHadIso03OverPt;
340 +  fMVAVar_MuTrkIso05OverPt       = MuTrkIso05OverPt;
341 +  fMVAVar_MuEMIso05OverPt        = MuEMIso05OverPt;
342 +  fMVAVar_MuHadIso05OverPt       = MuHadIso05OverPt;
343 +
344 +  Double_t mva = -9999;  
345 +  TMVA::Reader *reader = 0;
346 +
347 +  Int_t MVABin = -1;
348 +  if (subdet == 0 && ptBin == 0) MVABin = 0;
349 +  if (subdet == 1 && ptBin == 0) MVABin = 1;
350 +  if (subdet == 0 && ptBin == 1) MVABin = 2;
351 +  if (subdet == 1 && ptBin == 1) MVABin = 3;
352 +  if (subdet == 0 && ptBin == 2) MVABin = 4;
353 +  if (subdet == 1 && ptBin == 2) MVABin = 5;
354 +  assert(MVABin >= 0 && MVABin <= 5);
355 +  reader = fTMVAReader[MVABin];
356 +                                                
357 +  mva = reader->EvaluateMVA( fMethodname );
358 +
359 +  if (printDebug) {
360 +    std::cout << "Debug Muon MVA: "
361 +         << MuPt << " " << MuEta << " --> MVABin " << MVABin << " : "    
362 +         << fMVAVar_MuTkNchi2              << " "
363 +         << fMVAVar_MuGlobalNchi2          << " "
364 +         << fMVAVar_MuNValidHits           << " "
365 +         << fMVAVar_MuNTrackerHits         << " "
366 +         << fMVAVar_MuNPixelHits           << " "  
367 +         << fMVAVar_MuNMatches             << " "
368 +         << fMVAVar_MuD0                   << " "
369 +         << fMVAVar_MuIP3d                 << " "
370 +         << fMVAVar_MuIP3dSig              << " "
371 +         << fMVAVar_MuTrkKink              << " "
372 +         << fMVAVar_MuSegmentCompatibility << " "
373 +         << fMVAVar_MuCaloCompatibility    << " "
374 +         << fMVAVar_MuHadEnergyOverPt      << " "
375 +         << fMVAVar_MuHoEnergyOverPt       << " "
376 +         << fMVAVar_MuEmEnergyOverPt       << " "
377 +         << fMVAVar_MuHadS9EnergyOverPt    << " "
378 +         << fMVAVar_MuHoS9EnergyOverPt     << " "
379 +         << fMVAVar_MuEmS9EnergyOverPt     << " "
380 +         << fMVAVar_MuTrkIso03OverPt   << " "
381 +         << fMVAVar_MuEMIso03OverPt   << " "
382 +         << fMVAVar_MuHadIso03OverPt   << " "
383 +         << fMVAVar_MuTrkIso05OverPt   << " "
384 +         << fMVAVar_MuEMIso05OverPt   << " "
385 +         << fMVAVar_MuHadIso05OverPt   << " "
386 +         << " === : === "
387 +         << mva
388 +         << std::endl;
389 +  }
390 +
391 +  return mva;
392 + }
393 +
394 +
395  
396   //--------------------------------------------------------------------------------------------------
397   Double_t MuonIDMVA::MVAValue(const Muon *mu, const Vertex *vertex, MuonTools *fMuonTools,
# Line 268 | Line 413 | Double_t MuonIDMVA::MVAValue(const Muon
413    else if(mu->HasStandaloneTrk()) { muNchi2 = mu->StandaloneTrk()->RChi2(); }
414    else if(mu->HasTrackerTrk())    { muNchi2 = mu->TrackerTrk()->RChi2();    }
415  
416 <  Double_t ChargedIso03 = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.1, 99999, 0.3, 0.0, 0.0);
417 <  Double_t NeutralIso03_05Threshold = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.0, 0.5, 0.3, 0.0, 0.0);
418 <  Double_t ChargedIso04 = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.1, 99999, 0.4, 0.0, 0.0);
419 <  Double_t NeutralIso04_05Threshold = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.0, 0.5, 0.4, 0.0, 0.0);
420 <
416 >  Double_t ChargedIso03 = 0;
417 >  Double_t NeutralIso03_05Threshold = 0;
418 >  Double_t ChargedIso04 = 0;
419 >  Double_t NeutralIso04_05Threshold = 0;
420 >  ChargedIso03 = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.1, 99999, 0.3, 0.0, 0.0);
421 >  NeutralIso03_05Threshold = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.0, 0.5, 0.3, 0.0, 0.0);
422 >  ChargedIso04 = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.1, 99999, 0.4, 0.0, 0.0);
423 >  NeutralIso04_05Threshold = IsolationTools::PFMuonIsolation(mu, PFCands, vertex, 0.0, 0.5, 0.4, 0.0, 0.0);
424 >  
425    Double_t Rho = 0;
426    if (!(TMath::IsNaN(PileupEnergyDensity->At(0)->Rho()) || isinf(PileupEnergyDensity->At(0)->Rho()))) Rho = PileupEnergyDensity->At(0)->Rho();
427  
# Line 306 | Line 455 | Double_t MuonIDMVA::MVAValue(const Muon
455    fMVAVar_MuNeutralIso03OverPt   = (NeutralIso03_05Threshold - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralIso03,muTrk->Eta()))/muTrk->Pt();
456    fMVAVar_MuChargedIso04OverPt   = (ChargedIso04 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuChargedIso04,muTrk->Eta()))/muTrk->Pt();
457    fMVAVar_MuNeutralIso04OverPt   = (NeutralIso04_05Threshold - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralIso04,muTrk->Eta()))/muTrk->Pt();
458 +  fMVAVar_MuTrkIso03OverPt       = (mu->IsoR03SumPt() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuTrkIso03,muTrk->Eta()))/muTrk->Pt();
459 +  fMVAVar_MuEMIso03OverPt        = (mu->IsoR03EmEt() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuEMIso03,muTrk->Eta()))/muTrk->Pt();
460 +  fMVAVar_MuHadIso03OverPt       = (mu->IsoR03HadEt() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuHadIso03,muTrk->Eta()))/muTrk->Pt();
461 +  fMVAVar_MuTrkIso05OverPt       = (mu->IsoR05SumPt() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuTrkIso05,muTrk->Eta()))/muTrk->Pt();
462 +  fMVAVar_MuEMIso05OverPt        = (mu->IsoR05EmEt() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuEMIso05,muTrk->Eta()))/muTrk->Pt();
463 +  fMVAVar_MuHadIso05OverPt       = (mu->IsoR05HadEt() - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuHadIso05,muTrk->Eta()))/muTrk->Pt();
464  
465    Double_t mva = -9999;  
466    TMVA::Reader *reader = 0;
# Line 348 | Line 503 | Double_t MuonIDMVA::MVAValue(const Muon
503                << fMVAVar_MuNeutralIso03OverPt   << " "
504                << fMVAVar_MuChargedIso04OverPt   << " "
505                << fMVAVar_MuNeutralIso04OverPt   << " "
506 +              << fMVAVar_MuTrkIso03OverPt   << " "
507 +              << fMVAVar_MuEMIso03OverPt   << " "
508 +              << fMVAVar_MuHadIso03OverPt   << " "
509 +              << fMVAVar_MuTrkIso05OverPt   << " "
510 +              << fMVAVar_MuEMIso05OverPt   << " "
511 +              << fMVAVar_MuHadIso05OverPt   << " "
512                << " === : === "
513                << mva
514                << std::endl;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines