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.3 by fabstoec, Tue Oct 18 11:27:19 2011 UTC vs.
Revision 1.13 by mingyang, Tue May 29 21:20:12 2012 UTC

# Line 4 | Line 4
4   #include "MitPhysics/Utils/interface/MVATools.h"
5   #include "MitPhysics/Utils/interface/ElectronTools.h"
6   #include "MitPhysics/Utils/interface/IsolationTools.h"
7 + #include "MitAna/DataTree/interface/PFCandidateCol.h"
8   #include "MitAna/DataTree/interface/StableData.h"
9 + #include <TMath.h>
10   #include <TFile.h>
11   #include <TRandom3.h>
12   #include "TMVA/Tools.h"//MVA
13   #include "TMVA/Reader.h"//MVA
14  
15 +
16   ClassImp(mithep::MVATools)
17  
18   using namespace mithep;
# Line 20 | Line 23 | MVATools::MVATools():
23    fReaderEndcap(0),
24    fReaderBarrel(0),
25    
26 <  //MVA variables 0
26 >  //MVA Variables v4
27    HoE(0),
28    covIEtaIEta(0),
29 <  tIso1(0),
30 <  tIso3(0),
31 <  tIso2(0),
29 >  tIso1abs(0),
30 >  tIso3abs(0),
31 >  tIso2abs(0),
32    R9(0),
33    
34 <  //MVA variables 1
35 <  RelIsoEcal(0),
33 <  RelIsoHcal(0),
34 <  
34 >  absIsoEcal(0),
35 >  absIsoHcal(0),
36    RelEMax(0),
37    RelETop(0),
38    RelEBottom(0),
# Line 44 | Line 45 | MVATools::MVATools():
45    RelE2x5Right(0),
46    RelE5x5(0),
47    
47  //MVA variables 2
48    EtaWidth(0),
49    PhiWidth(0),
50 <  CoviEtaiPhi(0),
50 >  CoviEtaiPhi(0),
51    CoviPhiiPhi(0),
52  RelPreshowerEnergy(0)
52    
53 +  NVertexes(0),
54 +  RelPreshowerEnergy(0),
55 +
56 +  //MVA v2 and v1
57 +  RelIsoEcal(0),
58 +  RelIsoHcal(0),
59 +  tIso1(0),
60 +  tIso3(0),
61 +  tIso2(0),
62 +  ScEta(0.)
63   {
64    // Constructor.
65   }
# Line 69 | Line 78 | void MVATools::InitializeMVA(int Variabl
78    readers[1]  = fReaderBarrel;  
79    
80    for (UInt_t i=0; i<2; ++i) {
81 <    
81 >
82      if(VariableType==0||VariableType==1||VariableType==2){
83        readers[i]->AddVariable( "HoE", &HoE );
84        readers[i]->AddVariable( "covIEtaIEta", &covIEtaIEta );
# Line 79 | Line 88 | void MVATools::InitializeMVA(int Variabl
88        readers[i]->AddVariable( "R9", &R9 );
89      }
90      
91 +    if(VariableType==3||VariableType==4){
92 +      readers[i]->AddVariable( "HoE", &HoE );
93 +      readers[i]->AddVariable( "covIEtaIEta", &covIEtaIEta );
94 +      readers[i]->AddVariable( "tIso1abs", &tIso1abs );
95 +      readers[i]->AddVariable( "tIso3abs", &tIso3abs );
96 +      readers[i]->AddVariable( "tIso2abs", &tIso2abs );
97 +      readers[i]->AddVariable( "R9", &R9 );
98 +    }
99 +    
100      if(VariableType==1||VariableType==2){
101 <      readers[i]->AddVariable( "RelIsoEcal", &RelIsoEcal);
102 <      readers[i]->AddVariable( "RelIsoHcal", &RelIsoHcal);
103 <      readers[i]->AddVariable( "RelEMax", &RelEMax);
104 <      readers[i]->AddVariable( "RelETop",&RelETop);
105 <      readers[i]->AddVariable( "RelEBottom", &RelEBottom);
101 >      readers[i]->AddVariable( "RelIsoEcal", &RelIsoEcal );
102 >      readers[i]->AddVariable( "RelIsoHcal", &RelIsoHcal );
103 >      readers[i]->AddVariable( "RelEMax", &RelEMax );
104 >      readers[i]->AddVariable( "RelETop", &RelETop );
105 >      readers[i]->AddVariable( "RelEBottom", &RelEBottom );
106 >      readers[i]->AddVariable( "RelELeft", &RelELeft );
107 >      readers[i]->AddVariable( "RelERight", &RelERight );
108 >      readers[i]->AddVariable( "RelE2x5Max", &RelE2x5Max );
109 >      readers[i]->AddVariable( "RelE2x5Top", &RelE2x5Top );
110 >      readers[i]->AddVariable( "RelE2x5Bottom", &RelE2x5Bottom );
111 >      readers[i]->AddVariable( "RelE2x5Left", &RelE2x5Left );
112 >      readers[i]->AddVariable( "RelE2x5Right", &RelE2x5Right );
113 >      readers[i]->AddVariable( "RelE5x5", &RelE5x5 );
114 >    }
115 >    
116 >    if(VariableType==3||VariableType==4){
117 >      readers[i]->AddVariable( "absIsoEcal", &absIsoEcal );
118 >      readers[i]->AddVariable( "absIsoHcal", &absIsoHcal );
119 >      readers[i]->AddVariable( "RelEMax", &RelEMax );
120 >      readers[i]->AddVariable( "RelETop", &RelEBottom);
121 >      readers[i]->AddVariable( "RelEBottom", &RelEBottom );
122        readers[i]->AddVariable( "RelELeft", &RelELeft );
123 <      readers[i]->AddVariable( "RelERight", &RelERight);
123 >      readers[i]->AddVariable( "RelERight", &RelERight );
124        readers[i]->AddVariable( "RelE2x5Max", &RelE2x5Max );
125        readers[i]->AddVariable( "RelE2x5Top", &RelE2x5Top );
126        readers[i]->AddVariable( "RelE2x5Bottom", &RelE2x5Bottom );
# Line 95 | Line 129 | void MVATools::InitializeMVA(int Variabl
129        readers[i]->AddVariable( "RelE5x5", &RelE5x5 );
130      }
131      
132 <    if(VariableType==2){
132 >    if(VariableType==2||VariableType==3||VariableType==4){
133        readers[i]->AddVariable( "EtaWidth", &EtaWidth );
134        readers[i]->AddVariable( "PhiWidth", &PhiWidth );
135        readers[i]->AddVariable( "CoviEtaiPhi", &CoviEtaiPhi );
136        readers[i]->AddVariable( "CoviPhiiPhi", &CoviPhiiPhi );
137 +      if(VariableType==4){
138 +        readers[i]->AddVariable( "NVertexes", &NVertexes );
139 +      }
140        if(i==0){
141          readers[i]->AddVariable( "RelPreshowerEnergy", &RelPreshowerEnergy );
142        }
143      }
144 +
145 +    if(VariableType==6){
146 +      readers[i]->AddVariable( "HoE", &HoE );
147 +      readers[i]->AddVariable( "covIEtaIEta", &covIEtaIEta );
148 +      readers[i]->AddVariable( "tIso1abs", &tIso1abs );
149 +      readers[i]->AddVariable( "tIso3abs", &tIso3abs );
150 +      readers[i]->AddVariable( "tIso2abs", &tIso2abs );
151 +      readers[i]->AddVariable( "R9", &R9 );
152 +      readers[i]->AddVariable( "absIsoEcal", &absIsoEcal );
153 +      readers[i]->AddVariable( "absIsoHcal", &absIsoHcal );
154 +      readers[i]->AddVariable( "RelE5x5", &RelE5x5 );
155 +      readers[i]->AddVariable( "EtaWidth", &EtaWidth );
156 +      readers[i]->AddVariable( "PhiWidth", &PhiWidth );
157 +      readers[i]->AddVariable( "CoviEtaiPhi", &CoviEtaiPhi );
158 +      readers[i]->AddVariable( "CoviPhiiPhi", &CoviPhiiPhi );
159 +      readers[i]->AddVariable( "NVertexes", &NVertexes );
160 +      if(i==0){
161 +      readers[i]->AddVariable( "RelPreshowerEnergy", &RelPreshowerEnergy );
162 +      }
163 +    }
164 +    
165 +    if(VariableType==7){
166 +      readers[i]->AddVariable( "HoE", &HoE );
167 +      readers[i]->AddVariable( "covIEtaIEta", &covIEtaIEta );
168 +      readers[i]->AddVariable( "tIso1abs", &tIso1abs );
169 +      readers[i]->AddVariable( "tIso3abs", &tIso3abs );
170 +      readers[i]->AddVariable( "tIso2abs", &tIso2abs );
171 +      readers[i]->AddVariable( "R9", &R9 );
172 +      readers[i]->AddVariable( "absIsoEcal", &absIsoEcal );
173 +      readers[i]->AddVariable( "absIsoHcal", &absIsoHcal );
174 +      readers[i]->AddVariable( "NVertexes", &NVertexes );
175 +      readers[i]->AddVariable( "ScEta", &ScEta );
176 +    }    
177 +
178 +    if(VariableType==10){
179 +      readers[i]->AddVariable( "HoE", &HoE );
180 +      readers[i]->AddVariable( "covIEtaIEta", &covIEtaIEta );
181 +      readers[i]->AddVariable( "tIso1abs", &tIso1abs );
182 +      readers[i]->AddVariable( "tIso3abs", &tIso3abs );
183 +      readers[i]->AddVariable( "tIso2abs", &tIso2abs );
184 +      readers[i]->AddVariable( "R9", &R9 );
185 +      readers[i]->AddVariable( "absIsoEcal", &absIsoEcal );
186 +      readers[i]->AddVariable( "absIsoHcal", &absIsoHcal );
187 +      readers[i]->AddVariable( "NVertexes", &NVertexes );
188 +      readers[i]->AddVariable( "ScEta", &ScEta );
189 +      readers[i]->AddVariable( "EtaWidth", &EtaWidth );
190 +      readers[i]->AddVariable( "PhiWidth", &PhiWidth );      
191 +    }    
192 +
193 +    if(VariableType==1201){
194 +      readers[i]->AddVariable( "myphoton_pfchargedisogood03", &myphoton_pfchargedisogood03);
195 +      readers[i]->AddVariable( "myphoton_pfchargedisobad03", &myphoton_pfchargedisobad03);
196 +      readers[i]->AddVariable( "myphoton_pfphotoniso03", &myphoton_pfphotoniso03 );
197 +      readers[i]->AddVariable( "myphoton_sieie", &myphoton_sieie );
198 +      readers[i]->AddVariable( "myphoton_sieip", &myphoton_sieip );
199 +      readers[i]->AddVariable( "myphoton_etawidth", &myphoton_etawidth );
200 +      readers[i]->AddVariable( "myphoton_phiwidth", &myphoton_phiwidth );
201 +      readers[i]->AddVariable( "myphoton_r9", &myphoton_r9 );
202 +      readers[i]->AddVariable( "myphoton_s4ratio", &myphoton_s4ratio );
203 +      readers[i]->AddVariable( "myphoton_SCeta", &myphoton_SCeta );
204 +      readers[i]->AddVariable( "event_rho", &event_rho );
205 +      if(i==0){
206 +        readers[i]->AddVariable( "myphoton_ESEffSigmaRR", &myphoton_ESEffSigmaRR);
207 +      }
208 +    }
209 +    
210    }
211    
212    fReaderEndcap->BookMVA("BDT method",EndcapWeights);
213    fReaderBarrel->BookMVA("BDT method",BarrelWeights);
214 <
214 >  
215    assert(fReaderEndcap);
216    assert(fReaderBarrel);
217    
218   }
219  
220 < //--------------------------------------------------------------------------------------------------
220 > Bool_t MVATools::PassMVASelection(const Photon* p,const Vertex* vtx,const TrackCol* trackCol,const VertexCol* vtxCol,Double_t _tRho,Float_t bdtCutBarrel, Float_t bdtCutEndcap, const ElectronCol* els, Bool_t applyElectronVeto) {
221 >  
222 >  //initilize the bool value
223 >  PassMVA=kFALSE;
224 >  
225 >  Float_t photon_bdt =  MVATools::GetMVAbdtValue_2011(p,vtx,trackCol,vtxCol, _tRho, els, applyElectronVeto);
226 >  
227 >  if (isbarrel) {
228 >    if(bdt>bdtCutBarrel){
229 >      PassMVA=kTRUE;    
230 >    }
231 >  }
232 >  else {
233 >    if(bdt>bdtCutEndcap){
234 >      PassMVA=kTRUE;    
235 >    }
236 >  }
237 >  return PassMVA;
238 > }
239  
240 < Bool_t MVATools::PassMVASelection(const Photon* p,const Vertex* vtx,const TrackCol* trackCol,const VertexCol* vtxCol,Double_t _tRho,const ElectronCol* els,double MVAPtMin, Float_t bdtCutBarrel, Float_t bdtCutEndcap, Bool_t applyEleVeto) {
240 > //---------------------------------------------------------------------------------
241 > Int_t MVATools::PassElectronVetoInt(const Photon* p, const ElectronCol* els) {
242    
243    // these values are taken from the H2GGlobe code... (actually from Marco/s mail)
244    float cic4_allcuts_temp_sublead[] = {
# Line 129 | Line 251 | Bool_t MVATools::PassMVASelection(const
251      1.,          0.062,       0.97,        0.97,
252      1.5,         1.5,         1.5,         1.5 };  // the last line is PixelmatchVeto and un-used
253    
132  
254    //initilize the bool value
255 <  PassMVA=kFALSE;
135 <  PassElecVeto=kFALSE;
136 <  //Bool_t PassElecVeto=PhotonTools::PassElectronVeto(p,els);
255 >  PassElecVetoInt=0;
256    
257 +  dRTrack = PhotonTools::ElectronVetoCiC(p, els);
258 +  
259 +  ScEta_MVA=p->SCluster()->Eta();
260 +  
261 +  isbarrel = (fabs(ScEta_MVA)<1.4442);
262 +
263 +  R9 = p->R9();
264 +  //R9 = p->E33()/p->SCluster()->RawEnergy();
265 +  
266 +  // check which category it is ...
267 +  _tCat = 1;
268 +  if ( !isbarrel ) _tCat = 3;
269 +  if ( R9 < 0.94 ) _tCat++;
270 +  
271 +  //Electron Veto
272 +  if(dRTrack > cic4_allcuts_temp_sublead[_tCat-1+6*4]){
273 +    PassElecVetoInt=1;
274 +  }
275 +  
276 +  return  PassElecVetoInt;
277 +  
278 + }
279 +
280 + //--------------------------------------------------------------------------------------------------
281 +
282 + Float_t MVATools::GetMVAbdtValue_2012_globe(const Photon* p,const Vertex* vtx,const TrackCol* trackCol,const VertexCol* vtxCol,Double_t _tRho, const PFCandidateCol *fPFCands,Bool_t applyNewScale,const ElectronCol* els,Bool_t applyElectronVeto) {
283    
284    //get the variables used to compute MVA variables
285    ecalIso3 = p->EcalRecHitIsoDr03();
# Line 143 | Line 288 | Bool_t MVATools::PassMVASelection(const
288    
289    wVtxInd = 0;
290    
291 <  trackIso1 = IsolationTools::CiCTrackIsolation(p,vtx, 0.3, 0.02, 0.0, 0.0, 0.1, 1.0, trackCol, NULL, NULL, (!applyEleVeto ? els : NULL) );//Question Ming:whyfPV->At(0) instead of selected vertex using ranking method?
292 <  
148 <  // track iso only
149 <  trackIso3 = IsolationTools::CiCTrackIsolation(p,vtx, 0.3, 0.02, 0.0, 0.0, 0.1, 1.0, trackCol, NULL, NULL, (!applyEleVeto ? els : NULL));
150 <  
291 >  trackIso1 = IsolationTools::CiCTrackIsolation(p,vtx, 0.3, 0.02, 0.0, 0.0, 0.1, 1.0, trackCol, NULL, NULL, (!applyElectronVeto ? els : NULL) );//Question Ming:whyfPV->At(0) instead of selected vertex using ranking method?
292 >    
293    // track iso worst vtx
294 <  trackIso2 = IsolationTools::CiCTrackIsolation(p,vtx, 0.4, 0.02, 0.0, 0.0, 0.1, 1.0, trackCol, &wVtxInd,vtxCol, (!applyEleVeto ? els : NULL));
294 >  trackIso2 = IsolationTools::CiCTrackIsolation(p,vtx, 0.4, 0.02, 0.0, 0.0, 0.1, 1.0, trackCol, &wVtxInd,vtxCol, (!applyElectronVeto ? els : NULL) );
295    
296    combIso1 = ecalIso3+hcalIso4+trackIso1 - 0.17*_tRho;
297    combIso2 = ecalIso4+hcalIso4+trackIso2 - 0.52*_tRho;
298    
299    RawEnergy = p->SCluster()->RawEnergy();
300    
301 <  dRTrack = PhotonTools::ElectronVetoCiC(p, els);
301 >  ScEta = p->SCluster()->Eta();
302    
303 <  //compute MVA variables 0
162 <  HoE = p->HadOverEm();
163 <  covIEtaIEta = p->CoviEtaiEta();
303 >  //mva varialbes v1 and v2
304    tIso1 = (combIso1) *50./p->Et();
305 <  tIso3 = (trackIso3)*50./p->Et();
305 >  tIso3 = (trackIso1)*50./p->Et();
306    tIso2 = (combIso2) *50./(p->MomVtx(vtxCol->At(wVtxInd)->Position()).Pt());
167  R9 = p->R9();
168  
169  //newly added MVA variables 1
307    RelIsoEcal=(ecalIso3-0.17*_tRho)/p->Et();
308    RelIsoHcal=(hcalIso4-0.17*_tRho)/p->Et();
309 <  
309 >
310 >  //compute mva variables for v3
311 >  HoE = p->HadOverEm();
312 >  covIEtaIEta = p->CoviEtaiEta();
313 >  tIso1abs = combIso1;
314 >  tIso3abs = trackIso1;
315 >  tIso2abs = combIso2;
316 >  R9 = p->R9();
317 >
318 >  absIsoEcal=(ecalIso3-0.17*_tRho);
319 >  absIsoHcal=(hcalIso4-0.17*_tRho);
320    RelEMax=p->SCluster()->Seed()->EMax()/RawEnergy;
321    RelETop=p->SCluster()->Seed()->ETop()/RawEnergy;
322    RelEBottom=p->SCluster()->Seed()->EBottom()/RawEnergy;
# Line 182 | Line 329 | Bool_t MVATools::PassMVASelection(const
329    RelE2x5Right=p->SCluster()->Seed()->E2x5Right()/RawEnergy;
330    RelE5x5=p->SCluster()->Seed()->E5x5()/RawEnergy;
331    
332 <  //newly added MVA variables 2
333 <  EtaWidth=p->SCluster()->EtaWidth();
187 <  PhiWidth=p->SCluster()->PhiWidth();
332 >  EtaWidth=p->EtaWidth();
333 >  PhiWidth=p->PhiWidth();
334    CoviEtaiPhi=p->SCluster()->Seed()->CoviEtaiPhi();
335    CoviPhiiPhi=p->SCluster()->Seed()->CoviPhiiPhi();
336 +
337    RelPreshowerEnergy=p->SCluster()->PreshowerEnergy()/RawEnergy;
338 +  NVertexes=vtxCol->GetEntries();
339    
340    //spectator variables
341    Pt_MVA=p->Pt();
342    ScEta_MVA=p->SCluster()->Eta();
343 <  
343 >
344 >  //
345 >
346    isbarrel = (fabs(ScEta_MVA)<1.4442);
347    
348 <  // check which category it is ...
349 <  _tCat = 1;
350 <  if ( !isbarrel ) _tCat = 3;
351 <  if ( R9 < 0.94 ) _tCat++;
352 <  
353 <  //Electron Veto (made electron Veto optinal (Fabian) )
354 <  if(dRTrack > cic4_allcuts_temp_sublead[_tCat-1+6*4] || !applyEleVeto ){
355 <    PassElecVeto=kTRUE;
348 >  //variable 1201
349 >  myphoton_pfchargedisogood03=IsolationTools::PFChargedIsolation(p,vtx,0.3,0,fPFCands);
350 >  myphoton_pfchargedisobad03=IsolationTools::PFChargedIsolation(p,vtx,0.3,0,fPFCands,&wVtxInd,vtxCol);
351 >  myphoton_pfphotoniso03=IsolationTools::PFGammaIsolation(p,0.3,0,fPFCands);
352 >  myphoton_sieie=covIEtaIEta;
353 >  myphoton_sieip=CoviEtaiPhi;
354 >  myphoton_etawidth=EtaWidth;
355 >  myphoton_phiwidth=PhiWidth;
356 >  myphoton_r9=R9;
357 >  myphoton_s4ratio=p->SCluster()->Seed()->E2x2()/p->SCluster()->Seed()->E5x5();
358 >  myphoton_SCeta=ScEta_MVA;
359 >  event_rho= _tRho;
360 >
361 >  myphoton_ESEffSigmaRR=-99;
362 >
363 >  if(!isbarrel){
364 >    myphoton_ESEffSigmaRR=float(sqrt((p->SCluster()->PsEffWidthSigmaXX())*(p->SCluster()->PsEffWidthSigmaXX())+(p->SCluster()->PsEffWidthSigmaYY())*(p->SCluster()->PsEffWidthSigmaYY())));
365    }
366 <  
367 <  if(PassElecVeto && Pt_MVA>MVAPtMin && ((fabs(ScEta_MVA)<1.4442)||(fabs(ScEta_MVA)>1.566 && fabs(ScEta_MVA)<2.5)) && tIso1<250 && tIso2<250 && tIso3<250){
368 <    
369 <    if (isbarrel) {
211 <      reader = fReaderBarrel;
366 >
367 >  if(applyNewScale){
368 >    if(isbarrel){
369 >      myphoton_s4ratio=1.0055*myphoton_s4ratio;
370      }
371 <    else {
372 <      reader = fReaderEndcap;
371 >    if(!isbarrel){
372 >      myphoton_s4ratio=1.0085*myphoton_s4ratio;
373 >      myphoton_ESEffSigmaRR=1.04*myphoton_ESEffSigmaRR;
374      }
216    
217    bdt = reader->EvaluateMVA( "BDT method" );
218    
219    if (isbarrel) {
220      if(bdt>bdtCutBarrel){
221        PassMVA=kTRUE;  
222      }
223    }
224    else {
225      if(bdt>bdtCutEndcap){
226        PassMVA=kTRUE;  
227      }
228    }
229
375    }
231
232  return PassMVA;
233 }
234
235 //---------------------------------------------------------------------------------
236 Int_t MVATools::PassElectronVetoInt(const Photon* p, const ElectronCol* els) {
237  
238  // these values are taken from the H2GGlobe code... (actually from Marco/s mail)
239  float cic4_allcuts_temp_sublead[] = {
240    3.8,         2.2,         1.77,        1.29,
241    11.7,        3.4,         3.9,         1.84,
242    3.5,         2.2,         2.3,         1.45,
243    0.0106,      0.0097,      0.028,       0.027,
244    0.082,       0.062,       0.065,       0.048,
245    0.94,        0.36,        0.94,        0.32,
246    1.,          0.062,       0.97,        0.97,
247    1.5,         1.5,         1.5,         1.5 };  // the last line is PixelmatchVeto and un-used
248  
249  //initilize the bool value
250  PassElecVetoInt=0;
376    
377 <  dRTrack = PhotonTools::ElectronVetoCiC(p, els);
378 <  
379 <  ScEta_MVA=p->SCluster()->Eta();
377 >  if (isbarrel) {
378 >    reader = fReaderBarrel;
379 >  }
380 >  else {
381 >    reader = fReaderEndcap;
382 >  }
383    
384 <  isbarrel = (fabs(ScEta_MVA)<1.4442);
384 >  assert(reader);
385  
386 <  R9 = p->R9();
386 >  bdt = reader->EvaluateMVA("BDT method");
387 >
388 >  /* printf("HoE: %f\n",HoE);
389 >  printf("covIEtaIEta: %f\n",covIEtaIEta);
390 >  printf("tIso1abs: %f\n",tIso1abs);
391 >  printf("tIso3abs: %f\n",tIso3abs);
392 >  printf("tIso2abs: %f\n",tIso2abs);
393    
394 <  // check which category it is ...
395 <  _tCat = 1;
396 <  if ( !isbarrel ) _tCat = 3;
397 <  if ( R9 < 0.94 ) _tCat++;
394 >  printf("absIsoEcal: %f\n",absIsoEcal);
395 >  printf("absIsoHcal: %f\n",absIsoHcal);
396 >  printf("RelEMax: %f\n",RelEMax);
397 >  printf("RelETop: %f\n",RelETop);
398 >  printf("RelEBottom: %f\n",RelEBottom);
399 >  printf("RelELeft: %f\n",RelELeft);
400 >  printf("RelERight: %f\n",RelERight);
401 >  printf("RelE2x5Max: %f\n",RelE2x5Max);
402 >  printf("RelE2x5Top: %f\n",RelE2x5Top);
403 >  printf("RelE2x5Bottom: %f\n",RelE2x5Bottom);
404 >  printf("RelE2x5Left: %f\n",RelE2x5Left);
405 >  printf("RelE2x5Right;: %f\n",RelE2x5Right);
406 >  printf("RelE5x5: %f\n",RelE5x5);
407    
408 <  //Electron Veto
409 <  if(dRTrack > cic4_allcuts_temp_sublead[_tCat-1+6*4]){
410 <    PassElecVetoInt=1;
411 <  }
408 >  printf("EtaWidth: %f\n",EtaWidth);
409 >  printf("PhiWidth: %f\n",PhiWidth);
410 >  printf("CoviEtaiPhi: %f\n",CoviEtaiPhi);
411 >  printf("CoviPhiiPhi: %f\n",CoviPhiiPhi);
412    
413 <  return  PassElecVetoInt;
413 >  if (!isbarrel) {
414 >    printf("RelPreshowerEnergy: %f\n",RelPreshowerEnergy);
415 >    }*/
416    
417 +  return bdt;
418   }
419  
420 < //--------------------------------------------------------------------------------------------------
275 <
276 < Float_t MVATools::GetMVAbdtValue(const Photon* p,const Vertex* vtx,const TrackCol* trackCol,const VertexCol* vtxCol,Double_t _tRho,const ElectronCol* els) {
420 > Float_t MVATools::GetMVAbdtValue_2011(const Photon* p,const Vertex* vtx,const TrackCol* trackCol,const VertexCol* vtxCol,Double_t _tRho,const ElectronCol* els,Bool_t applyElectronVeto) {
421    
422    //get the variables used to compute MVA variables
423    ecalIso3 = p->EcalRecHitIsoDr03();
# Line 282 | Line 426 | Float_t MVATools::GetMVAbdtValue(const P
426    
427    wVtxInd = 0;
428    
429 <  trackIso1 = IsolationTools::CiCTrackIsolation(p,vtx, 0.3, 0.02, 0.0, 0.0, 0.1, 1.0, trackCol);//Question Ming:whyfPV->At(0) instead of selected vertex using ranking method?
430 <  
287 <  // track iso only
288 <  trackIso3 = IsolationTools::CiCTrackIsolation(p,vtx, 0.3, 0.02, 0.0, 0.0, 0.1, 1.0, trackCol);
289 <  
429 >  trackIso1 = IsolationTools::CiCTrackIsolation(p,vtx, 0.3, 0.02, 0.0, 0.0, 0.1, 1.0, trackCol, NULL, NULL, (!applyElectronVeto ? els : NULL) );//Question Ming:whyfPV->At(0) instead of selected vertex using ranking method?
430 >    
431    // track iso worst vtx
432 <  trackIso2 = IsolationTools::CiCTrackIsolation(p,vtx, 0.4, 0.02, 0.0, 0.0, 0.1, 1.0, trackCol, &wVtxInd,vtxCol);
432 >  trackIso2 = IsolationTools::CiCTrackIsolation(p,vtx, 0.4, 0.02, 0.0, 0.0, 0.1, 1.0, trackCol, &wVtxInd,vtxCol, (!applyElectronVeto ? els : NULL) );
433    
434    combIso1 = ecalIso3+hcalIso4+trackIso1 - 0.17*_tRho;
435    combIso2 = ecalIso4+hcalIso4+trackIso2 - 0.52*_tRho;
436    
437    RawEnergy = p->SCluster()->RawEnergy();
438    
439 <  dRTrack = PhotonTools::ElectronVetoCiC(p, els);
439 >  ScEta = p->SCluster()->Eta();
440    
441 <  //compute MVA variables 0
301 <  HoE = p->HadOverEm();
302 <  covIEtaIEta = p->CoviEtaiEta();
441 >  //mva varialbes v1 and v2
442    tIso1 = (combIso1) *50./p->Et();
443 <  tIso3 = (trackIso3)*50./p->Et();
443 >  tIso3 = (trackIso1)*50./p->Et();
444    tIso2 = (combIso2) *50./(p->MomVtx(vtxCol->At(wVtxInd)->Position()).Pt());
306  R9 = p->R9();
307  
308  //newly added MVA variables 1
445    RelIsoEcal=(ecalIso3-0.17*_tRho)/p->Et();
446    RelIsoHcal=(hcalIso4-0.17*_tRho)/p->Et();
447 <  
447 >
448 >  //compute mva variables for v3
449 >  HoE = p->HadOverEm();
450 >  covIEtaIEta = p->CoviEtaiEta();
451 >  tIso1abs = combIso1;
452 >  tIso3abs = trackIso1;
453 >  tIso2abs = combIso2;
454 >  R9 = p->R9();
455 >
456 >  absIsoEcal=(ecalIso3-0.17*_tRho);
457 >  absIsoHcal=(hcalIso4-0.17*_tRho);
458    RelEMax=p->SCluster()->Seed()->EMax()/RawEnergy;
459    RelETop=p->SCluster()->Seed()->ETop()/RawEnergy;
460    RelEBottom=p->SCluster()->Seed()->EBottom()/RawEnergy;
# Line 321 | Line 467 | Float_t MVATools::GetMVAbdtValue(const P
467    RelE2x5Right=p->SCluster()->Seed()->E2x5Right()/RawEnergy;
468    RelE5x5=p->SCluster()->Seed()->E5x5()/RawEnergy;
469    
470 <  //newly added MVA variables 2
471 <  EtaWidth=p->SCluster()->EtaWidth();
326 <  PhiWidth=p->SCluster()->PhiWidth();
470 >  EtaWidth=p->EtaWidth();
471 >  PhiWidth=p->PhiWidth();
472    CoviEtaiPhi=p->SCluster()->Seed()->CoviEtaiPhi();
473    CoviPhiiPhi=p->SCluster()->Seed()->CoviPhiiPhi();
474 +
475    RelPreshowerEnergy=p->SCluster()->PreshowerEnergy()/RawEnergy;
476 +  NVertexes=vtxCol->GetEntries();
477    
478    //spectator variables
479    Pt_MVA=p->Pt();
480    ScEta_MVA=p->SCluster()->Eta();
481 <  
481 >
482 >  //
483 >
484    isbarrel = (fabs(ScEta_MVA)<1.4442);
485    
486    if (isbarrel) {
# Line 345 | Line 494 | Float_t MVATools::GetMVAbdtValue(const P
494  
495    bdt = reader->EvaluateMVA("BDT method");
496  
497 <  /*  printf("HoE: %f\n",HoE);
497 >  /* printf("HoE: %f\n",HoE);
498    printf("covIEtaIEta: %f\n",covIEtaIEta);
499 <  printf("tIso1: %f\n",tIso1);
500 <  printf("tIso3: %f\n",tIso3);
501 <  printf("tIso2: %f\n",tIso2);
353 <  printf("tIso1: %f\n",tIso1);
354 <  printf("R9: %f\n",R9);
355 <  printf("RelIsoEcal: %f\n",RelIsoEcal);
356 <  printf("RelIsoHcal: %f\n",RelIsoHcal);
499 >  printf("tIso1abs: %f\n",tIso1abs);
500 >  printf("tIso3abs: %f\n",tIso3abs);
501 >  printf("tIso2abs: %f\n",tIso2abs);
502    
503 +  printf("absIsoEcal: %f\n",absIsoEcal);
504 +  printf("absIsoHcal: %f\n",absIsoHcal);
505    printf("RelEMax: %f\n",RelEMax);
506    printf("RelETop: %f\n",RelETop);
507    printf("RelEBottom: %f\n",RelEBottom);
# Line 372 | Line 519 | Float_t MVATools::GetMVAbdtValue(const P
519    printf("CoviEtaiPhi: %f\n",CoviEtaiPhi);
520    printf("CoviPhiiPhi: %f\n",CoviPhiiPhi);
521    
522 <  if (isbarrel) {
522 >  if (!isbarrel) {
523      printf("RelPreshowerEnergy: %f\n",RelPreshowerEnergy);
524      }*/
525    

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines