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

Comparing UserCode/MitPhysics/Utils/src/MVATools.cc (file contents):
Revision 1.17 by fabstoec, Thu Aug 2 12:30:55 2012 UTC vs.
Revision 1.18 by fabstoec, Thu Aug 2 13:57:32 2012 UTC

# Line 89 | Line 89 | void MVATools::InitializeMVA(MVATools::I
89    TString BarrelWeights;
90    TString EndcapWeights;
91  
92  std::vector<std::string> varNames;  // tmp vector to push_back variable names
92    varNames.resize(0);
93    
94    switch (type) {
95      
96 +  case k2011IdMVA_HZg:
97 +
98 +    EndcapWeights =  (gSystem->Getenv("CMSSW_BASE")+
99 +                      TString("/src/MitPhysics/data/")+
100 +                      TString("PhotonId_lowPt_EE_BDTG.")+
101 +                      TString("weights.xml"));
102 +    BarrelWeights =  (gSystem->Getenv("CMSSW_BASE")+
103 +                      TString("/src/MitPhysics/data/")+
104 +                      TString("PhotonId_lowPt_EB_BDTG.")+
105 +                      TString("weights.xml"));
106 +
107 +
108 +    varNames.push_back("sigieie");
109 +    varNames.push_back("covieip");
110 +    varNames.push_back("s4r"    );
111 +    varNames.push_back("r9"     );
112 +    varNames.push_back("sigeta" );
113 +    varNames.push_back("sigphi" );
114 +    varNames.push_back("pfgios" );
115 +    varNames.push_back("pfciso" );
116 +    varNames.push_back("rho"    );
117 +    varNames.push_back("sceta"  );
118 +    varNames.push_back("rawe"   );
119 +
120 +    mvaVars.resize(varNames.size());
121 +
122 +    std::cout<<"  Adding stuff here.... "<<std::endl;
123 +
124 +    for( unsigned int iV = 0; iV < mvaVars.size(); ++iV) {      
125 +      mvaVarMapEB.insert(  std::pair<std::string,unsigned int>(varNames[iV], iV) );
126 +      mvaVarMapEE.insert(  std::pair<std::string,unsigned int>(varNames[iV], iV) );
127 +    }
128 +    
129 +    std::cout<<"  ... done "<<std::endl;
130 +
131 +    break;
132 +
133    case k2011IdMVA:
134  
135      EndcapWeights =  (gSystem->Getenv("CMSSW_BASE")+
# Line 121 | Line 157 | void MVATools::InitializeMVA(MVATools::I
157      varNames.push_back("PhiWidth"   );
158  
159      for( unsigned int iV = 0; iV < mvaVars.size(); ++iV) {      
160 <      mvaVarMapEB.insert(  std::pair<std::string,float*>(varNames[iV], &(mvaVars[iV]))  );
161 <      mvaVarMapEE.insert(  std::pair<std::string,float*>(varNames[iV], &(mvaVars[iV]))  );
160 >      mvaVarMapEB.insert(  std::pair<std::string,unsigned int>(varNames[iV], iV) );
161 >      mvaVarMapEE.insert(  std::pair<std::string,unsigned int>(varNames[iV], iV) );
162      }
163      
164      break;
# Line 154 | Line 190 | void MVATools::InitializeMVA(MVATools::I
190      varNames.push_back("ph.idmva_PsEffWidthSigmaRR"   );
191  
192      for( unsigned int iV = 0; iV < mvaVars.size() - 1; ++iV) {
193 <      mvaVarMapEB.insert(  std::pair<std::string,float*>(varNames[iV], &(mvaVars[iV]))  );
194 <      mvaVarMapEE.insert(  std::pair<std::string,float*>(varNames[iV], &(mvaVars[iV]))  );
193 >      mvaVarMapEB.insert(  std::pair<std::string,unsigned int>(varNames[iV], iV) );
194 >      mvaVarMapEE.insert(  std::pair<std::string,unsigned int>(varNames[iV], iV) );
195      }
196      
197      // pre-shower only used for Endcaps
198 <    mvaVarMapEE.insert( std::pair<std::string,float*> ( varNames[mvaVars.size() - 1], &(mvaVars[mvaVars.size() - 1]) ) );
198 >    mvaVarMapEE.insert( std::pair<std::string,unsigned int> ( varNames[mvaVars.size() - 1], mvaVars.size() - 1) );
199  
200      break;
201      
# Line 171 | Line 207 | void MVATools::InitializeMVA(MVATools::I
207  
208  
209    // looping over both maps and adding Vars to BDT readers
210 <  for(std::map<std::string,float*>::const_iterator it = mvaVarMapEB.begin(); it != mvaVarMapEB.end(); ++it)
211 <    fReaderBarrel -> AddVariable( (it->first).c_str(), it->second);  
212 <  for(std::map<std::string,float*>::const_iterator it = mvaVarMapEE.begin(); it != mvaVarMapEE.end(); ++it)
213 <    fReaderEndcap -> AddVariable( (it->first).c_str(), it->second);
214 <  
210 >  for( unsigned int iV = 0; iV < varNames.size(); ++iV ){
211 >    std::map<std::string,unsigned int>::const_iterator it = mvaVarMapEB.find(varNames[iV]);
212 >    if ( it != mvaVarMapEB.end() )
213 >      fReaderBarrel -> AddVariable( (it->first).c_str(), &(mvaVars[it->second]));
214 >    it = mvaVarMapEE.find(varNames[iV]);
215 >    if ( it != mvaVarMapEE.end() )
216 >      fReaderEndcap -> AddVariable( (it->first).c_str(), &(mvaVars[it->second]));
217 >  }
218 >
219    fReaderEndcap->BookMVA("BDT method",EndcapWeights);
220    fReaderBarrel->BookMVA("BDT method",BarrelWeights);
221    
# Line 427 | Line 467 | Double_t MVATools::GetMVAbdtValue(const
467    // check if it's a Barrel or EE photon
468    bool isBarrel = ( p->SCluster()->AbsEta() < 1.5 );
469  
470 <  std::map<std::string,float*>* theVars = ( isBarrel ? &mvaVarMapEB : &mvaVarMapEB );  
471 <
470 >  std::map<std::string,unsigned int>* theVars = ( isBarrel ? &mvaVarMapEB : &mvaVarMapEB );  
471 >  
472    // loop over all the variables in the map... and keep count (to make sure we have filled all variables)
473    unsigned int varCounter = 0;
474 <  for( std::map<std::string,float*>::const_iterator iV = theVars->begin(); iV != theVars->end(); ++iV ) {
475 <
474 >  for( std::map<std::string,unsigned int>::const_iterator iV = theVars->begin(); iV != theVars->end(); ++iV ) {
475 >    
476      TString theVarName  = TString(iV->first);  
477 <    float* theVarValue = iV->second;           // pointer to the variable...
477 >    float* theVarValue  = &(mvaVars[iV->second]);           // pointer to the variable...
478      
479      if(
480         !theVarName.CompareTo("HoE")
# Line 442 | Line 482 | Double_t MVATools::GetMVAbdtValue(const
482        (*theVarValue) = p->HadOverEm();
483        varCounter++;
484      } else if (
485 <               !theVarName.CompareTo("covIEtaIEta") || !theVarName.CompareTo("ph.sigietaieta")
485 >               !theVarName.CompareTo("covIEtaIEta") || !theVarName.CompareTo("ph.sigietaieta") || !theVarName.CompareTo("sigieie")
486                 ) {
487        (*theVarValue) = p->CoviEtaiEta();
488        varCounter++;
489      } else if (
490 <               !theVarName.CompareTo("R9") || !theVarName.CompareTo("ph.r9")
490 >               !theVarName.CompareTo("R9") || !theVarName.CompareTo("ph.r9") || !theVarName.CompareTo("r9")
491                 ) {
492        (*theVarValue) = p->R9();
493        varCounter++;
494      } else if (
495 <               !theVarName.CompareTo("ScEta") || !theVarName.CompareTo("ph.sceta")
495 >               !theVarName.CompareTo("ScEta") || !theVarName.CompareTo("ph.sceta") || !theVarName.CompareTo("sceta")
496                 ) {
497        (*theVarValue) = p->SCluster()->Eta();
498        varCounter++;
# Line 502 | Line 542 | Double_t MVATools::GetMVAbdtValue(const
542        (*theVarValue) = vtxCol->GetEntries();
543        varCounter++;
544      } else if (
545 <               !theVarName.CompareTo("EtaWidth") || !!theVarName.CompareTo("ph.scetawidth")
545 >               !theVarName.CompareTo("EtaWidth") || !theVarName.CompareTo("ph.scetawidth") || !theVarName.CompareTo("sigeta")
546                 ) {
547        (*theVarValue) = p->EtaWidth();
548        varCounter++;
549      } else if (
550 <               !theVarName.CompareTo("PhiWidth") || !!theVarName.CompareTo("ph.scphiwidth")
550 >               !theVarName.CompareTo("PhiWidth") || !theVarName.CompareTo("ph.scphiwidth") || !theVarName.CompareTo("sigphi")
551                 ) {
552        (*theVarValue) = p->PhiWidth();
553        varCounter++;
554  
555      } else if (
556 <               !theVarName.CompareTo("ph.idmva_CoviEtaiPhi")
556 >               !theVarName.CompareTo("ph.idmva_CoviEtaiPhi") || !theVarName.CompareTo("covieip")
557                 ) {
558        (*theVarValue) = p->SCluster()->Seed()->CoviEtaiPhi();
559        varCounter++;
560      } else if (
561 <               !theVarName.CompareTo("ph.idmva_s4ratio")
561 >               !theVarName.CompareTo("ph.idmva_s4ratio") || !theVarName.CompareTo("s4r")
562                 ) {
563        (*theVarValue) = p->S4Ratio();
564        varCounter++;
565      } else if (
566 <               !theVarName.CompareTo("ph.idmva_GammaIso")
566 >               !theVarName.CompareTo("ph.idmva_GammaIso") || !theVarName.CompareTo("pfgiso")
567                 ) {
568        (*theVarValue) = IsolationTools::PFGammaIsolation(p,0.3,0,fPFCands);
569        varCounter++;
570      } else if (
571 <               !theVarName.CompareTo("ph.idmva_ChargedIso_selvtx")
571 >               !theVarName.CompareTo("ph.idmva_ChargedIso_selvtx") || !theVarName.CompareTo("pfciso")
572                 ) {
573        (*theVarValue) = IsolationTools::PFChargedIsolation(p,vtx,0.3,0,fPFCands);
574        varCounter++;
# Line 543 | Line 583 | Double_t MVATools::GetMVAbdtValue(const
583                 ) {
584        (*theVarValue) = p->EffSigmaRR();
585        varCounter++;
586 +    } else if (
587 +               !theVarName.CompareTo("rawe")
588 +               ) {
589 +      (*theVarValue) = p->SCluster()->RawEnergy();
590 +      varCounter++;
591      } else {
592        // a variable is not know... copmplain!
593        std::cerr<<" ERROR: MVA Evaluation called with unknown variable name >"<<theVarName<<">."<<std::endl;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines