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")+ |
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; |
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 |
|
|
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 |
|
|
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") |
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++; |
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++; |
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; |