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.11 by pharris, Mon May 14 09:42:27 2012 UTC vs.
Revision 1.14 by bendavid, Tue May 29 17:09:02 2012 UTC

# Line 58 | Line 58 | void JetIDMVA::Initialize( JetIDMVA::Cut
58    fIsInitialized = kTRUE;
59    fType          = iType;
60    fCutType       = iCutType;
61 +  
62 +  std::string lCutId = "JetIdParams";
63 +  if(fType == k42)  lCutId = "PuJetIdOptMVA_wp";
64 +  if(fType == k52)  lCutId = "full_5x_wp";
65 +  if(fType == kCut) lCutId = "PuJetIdCutBased_wp";
66 +  //Load Cut Matrix
67 +  edm::ParameterSet lDefConfig = edm::readPSetsFrom(iCutFileName.Data())->getParameter<edm::ParameterSet>("JetIdParams");
68 +  edm::ParameterSet lConfig    = edm::readPSetsFrom(iCutFileName.Data())->getParameter<edm::ParameterSet>(lCutId);
69 +  std::string lCutType = "Tight";
70 +  if(fCutType == kMedium) lCutType = "Medium";
71 +  if(fCutType == kLoose ) lCutType = "Loose";
72 +  if(fCutType == kMET   ) lCutType = "MET";
73 +  if(fType != kCut) {
74 +    std::string lLowPtCut = "MET";
75 +    std::vector<double> lPt010  = lDefConfig.getParameter<std::vector<double> >(("Pt010_" +lLowPtCut).c_str());
76 +    std::vector<double> lPt1020 = lConfig.getParameter<std::vector<double> >(("Pt1020_"+lCutType).c_str());
77 +    std::vector<double> lPt2030 = lConfig.getParameter<std::vector<double> >(("Pt2030_"+lCutType).c_str());
78 +    std::vector<double> lPt3050 = lConfig.getParameter<std::vector<double> >(("Pt3050_"+lCutType).c_str());
79 +    for(int i0 = 0; i0 < 4; i0++) fMVACut[0][i0] = lPt010 [i0];
80 +    for(int i0 = 0; i0 < 4; i0++) fMVACut[1][i0] = lPt1020[i0];
81 +    for(int i0 = 0; i0 < 4; i0++) fMVACut[2][i0] = lPt2030[i0];
82 +    for(int i0 = 0; i0 < 4; i0++) fMVACut[3][i0] = lPt3050[i0];
83 +  }
84 +  if(fType == kCut) {
85 +    for(int i0 = 0; i0 < 2; i0++) {
86 +      std::string lFullCutType = lCutType;
87 +      if(i0 == 0) lFullCutType = "BetaStar"+ lCutType;
88 +      if(i0 == 1) lFullCutType = "RMS"     + lCutType;
89 +      std::vector<double> pt010  = lConfig.getParameter<std::vector<double> >(("Pt010_" +lFullCutType).c_str());
90 +      std::vector<double> pt1020 = lConfig.getParameter<std::vector<double> >(("Pt1020_"+lFullCutType).c_str());
91 +      std::vector<double> pt2030 = lConfig.getParameter<std::vector<double> >(("Pt2030_"+lFullCutType).c_str());
92 +      std::vector<double> pt3050 = lConfig.getParameter<std::vector<double> >(("Pt3050_"+lFullCutType).c_str());
93 +      if(i0 == 0) {
94 +        for(int i2 = 0; i2 < 4; i2++) fBetaStarCut[0][i2] = pt010 [i2];
95 +        for(int i2 = 0; i2 < 4; i2++) fBetaStarCut[1][i2] = pt1020[i2];
96 +        for(int i2 = 0; i2 < 4; i2++) fBetaStarCut[2][i2] = pt2030[i2];
97 +        for(int i2 = 0; i2 < 4; i2++) fBetaStarCut[3][i2] = pt3050[i2];
98 +      }
99 +      if(i0 == 1) {
100 +        for(int i2 = 0; i2 < 4; i2++) fRMSCut[0][i2] = pt010 [i2];
101 +        for(int i2 = 0; i2 < 4; i2++) fRMSCut[1][i2] = pt1020[i2];
102 +        for(int i2 = 0; i2 < 4; i2++) fRMSCut[2][i2] = pt2030[i2];
103 +        for(int i2 = 0; i2 < 4; i2++) fRMSCut[3][i2] = pt3050[i2];
104 +      }
105 +    }
106 +    return;
107 +  }
108 +  
109 +  
110    fLowPtReader   = 0;
111    fLowPtReader   = new TMVA::Reader( "!Color:!Silent:Error" );  
112    fLowPtReader->AddVariable( "nvtx"     , &fNVtx      );
# Line 134 | Line 183 | void JetIDMVA::Initialize( JetIDMVA::Cut
183    std::cout << "Jet ID MVA Initialization\n";
184    std::cout << "MethodName : " << fLowPtMethodName << " , type == " << fType << std::endl;
185  
137  std::string lCutId = "JetIdParams";
138  if(fType == k42) lCutId = "PuJetIdOptMVA_wp";
139  if(fType == k52) lCutId = "full_5x_wp";
140  //Load Cut Matrix
141  edm::ParameterSet lDefConfig = edm::readPSetsFrom(iCutFileName.Data())->getParameter<edm::ParameterSet>("JetIdParams");
142  edm::ParameterSet lConfig    = edm::readPSetsFrom(iCutFileName.Data())->getParameter<edm::ParameterSet>(lCutId);
143  std::string lCutType = "Tight";
144  if(fCutType == kMedium) lCutType = "Medium";
145  if(fCutType == kLoose ) lCutType = "Loose";
146  if(fCutType == kMET   ) lCutType = "MET";
147  std::string lLowPtCut = "MET";
148  std::vector<double> lPt010  = lDefConfig.getParameter<std::vector<double> >(("Pt010_" +lLowPtCut).c_str());
149  std::vector<double> lPt1020 = lConfig.getParameter<std::vector<double> >(("Pt1020_"+lCutType).c_str());
150  std::vector<double> lPt2030 = lConfig.getParameter<std::vector<double> >(("Pt2030_"+lCutType).c_str());
151  std::vector<double> lPt3050 = lConfig.getParameter<std::vector<double> >(("Pt3050_"+lCutType).c_str());
152  for(int i0 = 0; i0 < 4; i0++) fMVACut[0][i0] = lPt010 [i0];
153  for(int i0 = 0; i0 < 4; i0++) fMVACut[1][i0] = lPt1020[i0];
154  for(int i0 = 0; i0 < 4; i0++) fMVACut[2][i0] = lPt2030[i0];
155  for(int i0 = 0; i0 < 4; i0++) fMVACut[3][i0] = lPt3050[i0];
156  //std::cout << " Working Points : << " << std::endl;
157  //for(int i0 = 0; i0 < 4; i0++) for(int i1 = 0; i1 < 4; i1++)
158  //  std::cout << " ==> " << i0 << " -- " << i1 << " -- " << fMVACut[i0][i1] << std::endl;
186   }
187  
188   //--------------------------------------------------------------------------------------------------
# Line 236 | Line 263 | Bool_t JetIDMVA::pass(const PFJet *iJet,
263    return true;
264   }
265   //--------------------------------------------------------------------------------------------------
266 + Bool_t JetIDMVA::passCut(const PFJet *iJet,const Vertex *iVertex,const VertexCol *iVertices) {
267 +  if(!JetTools::passPFLooseId(iJet))                 return false;
268 +  if(iJet->Pt()        < fJetPtMin) return false;
269 +  if(fabs(iJet->Eta()) > 4.99)      return false;
270 +  //if(fType == kCut) passCut(iJet,iVertex,iVertices);
271 +
272 +  double lPt = iJet->Pt();
273 +  int lPtId = 0;
274 +  if(lPt > 10 && lPt < 20) lPtId = 1;
275 +  if(lPt > 20 && lPt < 30) lPtId = 2;
276 +  if(lPt > 30                   ) lPtId = 3;
277 +  
278 +  int lEtaId = 0;
279 +  if(fabs(iJet->Eta()) > 2.5  && fabs(iJet->Eta()) < 2.75) lEtaId = 1;
280 +  if(fabs(iJet->Eta()) > 2.75 && fabs(iJet->Eta()) < 3.0 ) lEtaId = 2;
281 +  if(fabs(iJet->Eta()) > 3.0  && fabs(iJet->Eta()) < 5.0 ) lEtaId = 3;
282 +  float betaStarModified = JetTools::betaStarClassic(iJet,iVertex,iVertices)/log(iVertices ->GetEntries()-0.64);
283 +  float dR2Mean          = JetTools::dR2Mean(iJet,-1);
284 +  
285 +  if(betaStarModified < fBetaStarCut[lPtId][lEtaId] &&
286 +     dR2Mean          < fRMSCut     [lPtId][lEtaId]
287 +     ) return true;
288 +  
289 +  return false;
290 + }
291 + //--------------------------------------------------------------------------------------------------
292   Bool_t JetIDMVA::pass(const PFJet *iJet,const Vertex *iVertex,const VertexCol *iVertices) {
293    if(!JetTools::passPFLooseId(iJet))                 return false;
294    if(iJet->Pt()        < fJetPtMin) return false;
295    if(fabs(iJet->Eta()) > 4.99)      return false;
296 +  if(fType == kCut) return passCut(iJet,iVertex,iVertices);
297    double lMVA = MVAValue(iJet,iVertex,iVertices);
298    
299    int lPtId = 0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines