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

Comparing UserCode/MitPhysics/Utils/src/JetIDMVA.cc (file contents):
Revision 1.14 by bendavid, Tue May 29 17:09:02 2012 UTC vs.
Revision 1.18 by pharris, Wed Jan 16 13:59:06 2013 UTC

# Line 31 | Line 31 | JetIDMVA::JetIDMVA() :
31    fNCharged (0),
32    fNNeutrals(0),
33    fDRMean   (0),
34 +  fPtD      (0),
35    fFrac01   (0),
36    fFrac02   (0),
37    fFrac03   (0),
# Line 60 | Line 61 | void JetIDMVA::Initialize( JetIDMVA::Cut
61    fCutType       = iCutType;
62    
63    std::string lCutId = "JetIdParams";
64 <  if(fType == k42)  lCutId = "PuJetIdOptMVA_wp";
65 <  if(fType == k52)  lCutId = "full_5x_wp";
66 <  if(fType == kCut) lCutId = "PuJetIdCutBased_wp";
67 <  //Load Cut Matrix
64 >  if(fType == k42)     lCutId = "PuJetIdOptMVA_wp";
65 >  if(fType == k52)     lCutId = "full_5x_wp";
66 >  if(fType == kCut)    lCutId = "PuJetIdCutBased_wp";
67 >  if(fType == k53)     lCutId = "full_53x_wp";
68 >  if(fType == k53MET)  lCutId = "met_53x_wp";
69 >
70 > //Load Cut Matrix
71    edm::ParameterSet lDefConfig = edm::readPSetsFrom(iCutFileName.Data())->getParameter<edm::ParameterSet>("JetIdParams");
72    edm::ParameterSet lConfig    = edm::readPSetsFrom(iCutFileName.Data())->getParameter<edm::ParameterSet>(lCutId);
73    std::string lCutType = "Tight";
# Line 110 | Line 114 | void JetIDMVA::Initialize( JetIDMVA::Cut
114    fLowPtReader   = 0;
115    fLowPtReader   = new TMVA::Reader( "!Color:!Silent:Error" );  
116    fLowPtReader->AddVariable( "nvtx"     , &fNVtx      );
117 <  fLowPtReader->AddVariable( "jetPt"    , &fJPt1      );  
118 <  fLowPtReader->AddVariable( "jetEta"   , &fJEta1     );
119 <  fLowPtReader->AddVariable( "jetPhi"   , &fJPhi1     );            
117 >  if(fType != k53) fLowPtReader->AddVariable( "jetPt"    , &fJPt1      );  
118 >  if(fType != k53) fLowPtReader->AddVariable( "jetEta"   , &fJEta1     );
119 >  if(fType != k53) fLowPtReader->AddVariable( "jetPhi"   , &fJPhi1     );            
120    fLowPtReader->AddVariable( "dZ"       , &fJDZ1      );
121 <  fLowPtReader->AddVariable( "d0"       , &fJD01      );
121 >  if(fType != k53 && fType != k53MET) fLowPtReader->AddVariable( "d0"       , &fJD01      );
122    fLowPtReader->AddVariable( "beta"     , &fBeta      );
123    fLowPtReader->AddVariable( "betaStar" , &fBetaStar  );
124    fLowPtReader->AddVariable( "nCharged" , &fNCharged  );
125    fLowPtReader->AddVariable( "nNeutrals", &fNNeutrals );
126 <  fLowPtReader->AddVariable( "dRMean"   , &fDRMean    );
126 >  if(fType != k53 && fType != k53MET) fLowPtReader->AddVariable( "dRMean"   , &fDRMean    );
127 >  if(fType == k53 || fType == k53MET) fLowPtReader->AddVariable( "dR2Mean"  , &fDR2Mean   );
128 >  if(fType == k53 || fType == k53MET) fLowPtReader->AddVariable( "ptD"      , &fPtD       );
129    fLowPtReader->AddVariable( "frac01"   , &fFrac01    );
130    fLowPtReader->AddVariable( "frac02"   , &fFrac02    );
131    fLowPtReader->AddVariable( "frac03"   , &fFrac03    );
132    fLowPtReader->AddVariable( "frac04"   , &fFrac04    );
133    fLowPtReader->AddVariable( "frac05"   , &fFrac05    );
134 +  if(fType == k53) fLowPtReader->AddSpectator( "jetPt"   , &fJPt1      );  
135 +  if(fType == k53) fLowPtReader->AddSpectator( "jetEta"  , &fJEta1     );
136 +  if(fType == k53) fLowPtReader->AddSpectator( "jetPhi"  , &fJPhi1     );  
137    
138    fReader        = 0;
139    fReader        = new TMVA::Reader( "!Color:!Silent:Error" );  
# Line 177 | Line 186 | void JetIDMVA::Initialize( JetIDMVA::Cut
186      fReader->AddSpectator( "jetPt"    , &fJPt1      );  
187      fReader->AddSpectator( "jetEta"   , &fJEta1     );
188    }
189 +  if (fType == k53) {
190 +    fReader->AddVariable( "nvtx"     , &fNVtx      );
191 +    fReader->AddVariable( "dZ"       , &fJDZ1      );
192 +    fReader->AddVariable( "beta"     , &fBeta      );
193 +    fReader->AddVariable( "betaStar" , &fBetaStar  );
194 +    fReader->AddVariable( "nCharged" , &fNCharged  );
195 +    fReader->AddVariable( "nNeutrals", &fNNeutrals );
196 +    fReader->AddVariable( "dR2Mean"  , &fDRMean    );
197 +    fReader->AddVariable( "ptD"      , &fPtD       );
198 +    fReader->AddVariable( "frac01"   , &fFrac01    );
199 +    fReader->AddVariable( "frac02"   , &fFrac02    );
200 +    fReader->AddVariable( "frac03"   , &fFrac03    );
201 +    fReader->AddVariable( "frac04"   , &fFrac04    );
202 +    fReader->AddVariable( "frac05"   , &fFrac05    );
203 +    fReader->AddSpectator( "jetPt"   , &fJPt1      );  
204 +    fReader->AddSpectator( "jetEta"  , &fJEta1     );
205 +    fReader->AddSpectator( "jetPhi"  , &fJPhi1     );  
206 +  }
207 +  if (fType == k53MET) {
208 +    fReader->AddVariable( "nvtx"     , &fNVtx      );
209 +    fReader->AddVariable( "jetPt"    , &fJPt1      );  
210 +    fReader->AddVariable( "jetEta"   , &fJEta1     );
211 +    fReader->AddVariable( "jetPhi"   , &fJPhi1     );  
212 +    fReader->AddVariable( "dZ"       , &fJDZ1      );
213 +    fReader->AddVariable( "beta"     , &fBeta      );
214 +    fReader->AddVariable( "betaStar" , &fBetaStar  );
215 +    fReader->AddVariable( "nCharged" , &fNCharged  );
216 +    fReader->AddVariable( "nNeutrals", &fNNeutrals );
217 +    fReader->AddVariable( "dR2Mean"  , &fDRMean    );
218 +    fReader->AddVariable( "ptD"      , &fPtD       );
219 +    fReader->AddVariable( "frac01"   , &fFrac01    );
220 +    fReader->AddVariable( "frac02"   , &fFrac02    );
221 +    fReader->AddVariable( "frac03"   , &fFrac03    );
222 +    fReader->AddVariable( "frac04"   , &fFrac04    );
223 +    fReader->AddVariable( "frac05"   , &fFrac05    );
224 +  }
225 +  if (fType == kQGP) {
226 +    fReader->AddVariable( "nvtx"      , &fNVtx       );
227 +    fReader->AddVariable( "jetPt"     , &fJPt1       );  
228 +    fReader->AddVariable( "jetEta"    , &fJEta1      );
229 +    fReader->AddVariable( "jetPhi"    , &fJPhi1      );            
230 +    fReader->AddVariable( "beta"      , &fBeta      );
231 +    fReader->AddVariable( "betaStar"  , &fBetaStar  );
232 +    fReader->AddVariable( "nParticles", &fNNeutrals );
233 +    fReader->AddVariable( "nCharged"  , &fNCharged  );
234 +    fReader->AddVariable( "dRMean"    , &fDRMean    );
235 +    fReader->AddVariable( "ptD"       , &fPtD       );
236 +    fReader->AddVariable( "frac01"    , &fFrac01    );
237 +    fReader->AddVariable( "frac02"    , &fFrac02    );
238 +    fReader->AddVariable( "frac03"    , &fFrac03    );
239 +    fReader->AddVariable( "frac04"    , &fFrac04    );
240 +    fReader->AddVariable( "frac05"    , &fFrac05    );
241 +  }
242  
243    fLowPtReader->BookMVA(fLowPtMethodName  , iLowPtWeights );
244    fReader->BookMVA(fHighPtMethodName , iHighPtWeights );
# Line 203 | Line 265 | Double_t JetIDMVA::MVAValue(
265                              Float_t iFrac03  ,
266                              Float_t iFrac04  ,
267                              Float_t iFrac05  ,
268 <                            Float_t iDR2Mean  
268 >                            Float_t iDR2Mean ,
269 >                            Float_t iPtD
270                              ){
271    
272    if(!fIsInitialized) {
# Line 222 | Line 285 | Double_t JetIDMVA::MVAValue(
285    fNCharged  = iNCharged;
286    fNNeutrals = iNNeutrals;
287    fDRMean    = iDRMean;
288 +  fPtD       = iPtD;
289    fFrac01    = iFrac01;
290    fFrac02    = iFrac02;
291    fFrac03    = iFrac03;
# Line 236 | Line 300 | Double_t JetIDMVA::MVAValue(
300    return lMVA;
301   }
302   //--------------------------------------------------------------------------------------------------
303 + Bool_t JetIDMVA::passPt(const PFJet *iJet, FactorizedJetCorrector *iJetCorrector,
304 +                        const PileupEnergyDensityCol *iPileupEnergyDensity,
305 +                        RhoUtilities::RhoType type) {
306 +  if(iJetCorrector == 0) return (iJet->Pt() > fJetPtMin);
307 +  double lPt  = correctedPt(iJet,                  iJetCorrector,iPileupEnergyDensity,type);
308 +  if(lPt < fJetPtMin)                         return false;
309 +  return true;
310 + }
311 + //--------------------------------------------------------------------------------------------------
312   Bool_t JetIDMVA::pass(const PFJet *iJet,const Vertex *iVertex,const VertexCol *iVertices,
313                        FactorizedJetCorrector *iJetCorrector,
314                        const PileupEnergyDensityCol *iPileupEnergyDensity,
# Line 340 | Line 413 | Double_t JetIDMVA::MVAValue(const PFJet
413  
414    fDRMean    = JetTools::dRMean(iJet,-1);
415    fDR2Mean   = JetTools::dR2Mean(iJet,-1);
416 +  fPtD       = JetTools::W(iJet,-1,0);  
417    fFrac01    = JetTools::frac  (iJet,0.1,0. ,-1);
418    fFrac02    = JetTools::frac  (iJet,0.2,0.1,-1);
419    fFrac03    = JetTools::frac  (iJet,0.3,0.2,-1);
# Line 362 | Line 436 | Double_t JetIDMVA::MVAValue(const PFJet
436                << fNCharged  << " "
437                << fNNeutrals << " "
438                << fDRMean    << " "
439 +              << fPtD       << " "
440                << fFrac01    << " "
441                << fFrac02    << " "
442                << fFrac03    << " "
443                << fFrac04    << " "
444                << fFrac05    << " "
445 <              << fDRMean    
445 >              << fDR2Mean    
446                << " === : === "
447                << lMVA << " "    
448                << std::endl;
# Line 395 | Line 470 | Double_t JetIDMVA::MVAValue(const PFJet
470    fBetaStar  = JetTools::betaStar(iJet,iVertex,iVertices,fDZCut);
471    fNCharged  = iJet->ChargedMultiplicity();
472    fNNeutrals = iJet->NeutralMultiplicity();
473 <
473 >  fPtD       = JetTools::W(iJet,-1,0);  
474    fDRMean    = JetTools::dRMean (iJet,-1);
475    fDR2Mean   = JetTools::dR2Mean(iJet,-1);
476    fFrac01    = JetTools::frac   (iJet,0.1,0. ,-1);
# Line 421 | Line 496 | Double_t JetIDMVA::MVAValue(const PFJet
496                << fNCharged  << " "
497                << fNNeutrals << " "
498                << fDRMean    << " "
499 +              << fPtD       << " "
500                << fFrac01    << " "
501                << fFrac02    << " "
502                << fFrac03    << " "
503                << fFrac04    << " "
504                << fFrac05    << " "
505 <              << fDRMean    
505 >              << fDR2Mean    
506                << " === : === "
507                << lMVA << " "    
508                << std::endl;
# Line 434 | Line 510 | Double_t JetIDMVA::MVAValue(const PFJet
510  
511    return lMVA;
512   }
513 + //--------------------------------------------------------------------------------------------------
514 + Double_t* JetIDMVA::QGValue(const PFJet *iJet,const Vertex *iVertex,const VertexCol *iVertices, //Vertex here is the PV
515 +                            FactorizedJetCorrector *iJetCorrector,
516 +                            const PileupEnergyDensityCol *iPileupEnergyDensity,
517 +                            Bool_t printDebug) {
518 +
519 +  Double_t *lId = new double[3];
520 +  lId[0] = -2;
521 +  lId[1] = -2;
522 +  lId[2] = -2;
523 +  if (!fIsInitialized) {
524 +    std::cout << "Error: JetIDMVA not properly initialized.\n";
525 +    return lId;
526 +  }
527 +  if(!JetTools::passPFLooseId(iJet)) return lId;
528 +
529 +  fJPt1       = correctedPt(iJet,iJetCorrector,iPileupEnergyDensity);
530 +  if(fJPt1 < 20) return lId;
531 +
532 +  //set all input variables
533 +  fNVtx       = iVertices->GetEntries();
534 +  fJEta1      = iJet->RawMom().Eta();
535 +  fJPhi1      = iJet->RawMom().Phi();
536 +  fJD01       = JetTools::impactParameter(iJet,iVertex);  
537 +  fJDZ1       = JetTools::impactParameter(iJet,iVertex,true);
538 +  fBeta       = JetTools::Beta(iJet,iVertex,fDZCut);
539 +  fBetaStar   = JetTools::betaStar(iJet,iVertex,iVertices,fDZCut);
540 +  fNCharged   = iJet->ChargedMultiplicity();
541 +  fNNeutrals  = iJet->NeutralMultiplicity();
542 +  fNParticles = fNCharged+fNNeutrals;
543 +  fPtD        = JetTools::W(iJet,-1,0);  
544 +
545 +  fDRMean    = JetTools::dRMean(iJet,-1);
546 +  fDR2Mean   = JetTools::dR2Mean(iJet,-1);
547 +  fFrac01    = JetTools::frac  (iJet,0.1,0. ,-1);
548 +  fFrac02    = JetTools::frac  (iJet,0.2,0.1,-1);
549 +  fFrac03    = JetTools::frac  (iJet,0.3,0.2,-1);
550 +  fFrac04    = JetTools::frac  (iJet,0.4,0.3,-1);
551 +  fFrac05    = JetTools::frac  (iJet,0.5,0.4,-1);
552 +
553 +  double lMVA = 0;
554 +  lId[0] = fReader->EvaluateMulticlass( fHighPtMethodName )[0];
555 +  lId[1] = fReader->EvaluateMulticlass( fHighPtMethodName )[1];
556 +  lId[2] = fReader->EvaluateMulticlass( fHighPtMethodName )[2];
557 +  if (printDebug == kTRUE) {
558 +    std::cout << "Debug Jet MVA: "
559 +              << fNVtx      << " "
560 +              << fJPt1      << " "
561 +              << fJEta1     << " "
562 +              << fJPhi1     << " "
563 +              << fJD01      << " "
564 +              << fJDZ1      << " "
565 +              << fBeta      << " "
566 +              << fBetaStar  << " "
567 +              << fNCharged  << " "
568 +              << fNNeutrals << " "
569 +              << fDRMean    << " "
570 +              << fFrac01    << " "
571 +              << fFrac02    << " "
572 +              << fFrac03    << " "
573 +              << fFrac04    << " "
574 +              << fFrac05    << " "
575 +              << fDRMean    
576 +              << " === : === "
577 +              << lMVA << " "    
578 +              << std::endl;
579 +  }
580 +  return lId;
581 + }
582   Double_t JetIDMVA::correctedPt(const PFJet *iJet, FactorizedJetCorrector *iJetCorrector,
583                                 const PileupEnergyDensityCol *iPUEnergyDensity,
584 <                               RhoUtilities::RhoType type) {
584 >                               RhoUtilities::RhoType type,int iId) {
585    Double_t Rho = 0.0;
586    switch(type) {
587    case RhoUtilities::MIT_RHO_VORONOI_HIGH_ETA:
# Line 468 | Line 613 | Double_t JetIDMVA::correctedPt(const PFJ
613    iJetCorrector->setRho   (Rho);
614    iJetCorrector->setJetA  (iJet->JetArea());
615    iJetCorrector->setJetEMF(-99.0);    
616 <  Double_t correction = iJetCorrector->getCorrection();
616 >  Double_t correction = 1.;
617 >  if(iId < 0 || iId == 100) correction = iJetCorrector->getCorrection();
618 >  std::vector<float> lCorrections; if(iId != -1 && iId != 100) lCorrections = iJetCorrector->getSubCorrections();
619 >  if(iId > -1 && iId < int(lCorrections.size())) correction = lCorrections[iId];
620 >  if(iId == 100) {
621 >    iJetCorrector->setJetEta(rawMom.Eta());
622 >    iJetCorrector->setJetPt (rawMom.Pt());
623 >    iJetCorrector->setJetPhi(rawMom.Phi());
624 >    iJetCorrector->setJetE  (rawMom.E());
625 >    iJetCorrector->setRho   (Rho);
626 >    iJetCorrector->setJetA  (iJet->JetArea());
627 >    iJetCorrector->setJetEMF(-99.0);
628 >    lCorrections = iJetCorrector->getSubCorrections();
629 >    double correction2 = 1;
630 >    correction2 *= lCorrections[0];
631 >    correction = correction-correction2;
632 >  }
633 >
634    return rawMom.Pt()*correction;
635   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines